jiuyiUniapp/service/node_modules/react-devtools-core/dist/standalone.js.map

1 line
3.9 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"standalone.js","mappings":"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","sources":["webpack://react-devtools-core/webpack/runtime/create fake namespace object","webpack://react-devtools-core/webpack/runtime/require chunk loading","webpack://react-devtools-core/../../build/oss-experimental/react-dom/cjs/react-dom-client.production.js","webpack://react-devtools-core/../../build/oss-experimental/react-dom/cjs/react-dom.production.js","webpack://react-devtools-core/../../build/oss-experimental/react-dom/client.js","webpack://react-devtools-core/../../build/oss-experimental/react-dom/index.js","webpack://react-devtools-core/../../build/oss-experimental/react-is/cjs/react-is.production.js","webpack://react-devtools-core/../../build/oss-experimental/react/cjs/react.production.js","webpack://react-devtools-core/../../build/oss-experimental/react/index.js","webpack://react-devtools-core/../../build/oss-experimental/scheduler/cjs/scheduler.production.js","webpack://react-devtools-core/../../build/oss-experimental/scheduler/index.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/import/chrome.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/import/v8cpuFormatter.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/demangle-cpp.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/flamechart.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/math.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/profile.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/utils.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/lib/value-formatters.js","webpack://react-devtools-core/../../node_modules/@elg/speedscope/dist/library/library.js","webpack://react-devtools-core/../../node_modules/clipboard-js/clipboard.js","webpack://react-devtools-core/../../node_modules/css-loader/lib/css-base.js","webpack://react-devtools-core/../../node_modules/error-stack-parser/error-stack-parser.js","webpack://react-devtools-core/../../node_modules/escape-string-regexp/index.js","webpack://react-devtools-core/../../node_modules/jsc-safe-url/index.js","webpack://react-devtools-core/../../node_modules/lru-cache/index.js","webpack://react-devtools-core/../../node_modules/nullthrows/nullthrows.js","webpack://react-devtools-core/../../node_modules/parse-ms/index.js","webpack://react-devtools-core/../../node_modules/pretty-ms/index.js","webpack://react-devtools-core/../../node_modules/process/browser.js","webpack://react-devtools-core/../../node_modules/prop-types/factoryWithThrowingShims.js","webpack://react-devtools-core/../../node_modules/prop-types/index.js","webpack://react-devtools-core/../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://react-devtools-core/../../node_modules/pseudomap/map.js","webpack://react-devtools-core/../../node_modules/pseudomap/pseudomap.js","webpack://react-devtools-core/../../node_modules/shell-quote/index.js","webpack://react-devtools-core/../../node_modules/stackframe/stackframe.js","webpack://react-devtools-core/../../node_modules/style-loader/lib/urls.js","webpack://react-devtools-core/../../node_modules/tabbable/index.js","webpack://react-devtools-core/../src/rpc-wrapper.js","webpack://react-devtools-core/../../node_modules/yallist/yallist.js","webpack://react-devtools-core/./node_modules/ws/index.js","webpack://react-devtools-core/./node_modules/ws/lib/buffer-util.js","webpack://react-devtools-core/./node_modules/ws/lib/constants.js","webpack://react-devtools-core/./node_modules/ws/lib/event-target.js","webpack://react-devtools-core/./node_modules/ws/lib/extension.js","webpack://react-devtools-core/./node_modules/ws/lib/limiter.js","webpack://react-devtools-core/./node_modules/ws/lib/permessage-deflate.js","webpack://react-devtools-core/./node_modules/ws/lib/receiver.js","webpack://react-devtools-core/./node_modules/ws/lib/sender.js","webpack://react-devtools-core/./node_modules/ws/lib/stream.js","webpack://react-devtools-core/./node_modules/ws/lib/validation.js","webpack://react-devtools-core/./node_modules/ws/lib/websocket-server.js","webpack://react-devtools-core/./node_modules/ws/lib/websocket.js","webpack://react-devtools-core/../react-devtools-shared/src/Logger.js","webpack://react-devtools-core/../react-devtools-shared/src/PerformanceLoggingUtils.js","webpack://react-devtools-core/../react-devtools-shared/src/config/DevToolsFeatureFlags.core-oss.js","webpack://react-devtools-core/../react-devtools-shared/src/constants.js","webpack://react-devtools-core/../react-devtools-shared/src/hookNamesCache.js","webpack://react-devtools-core/../react-devtools-timeline/node_modules/regenerator-runtime/runtime.js","webpack://react-devtools-core/../../node_modules/@reach/menu-button/styles.css","webpack://react-devtools-core/../../node_modules/@reach/tooltip/styles.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Button.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ButtonIcon.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Badge.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Components.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableName.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableValue.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Element.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ElementBadges.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ForgetBadge.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/IndexableElementBadges.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElement.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementBadges.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorBoundary.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorsAndWarningsTree.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSharedStyles.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSourcePanel.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementStyleXPlugin.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValue.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValueContextMenuContainer.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/LoadingAnimation.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/OwnersStack.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Skeleton.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Tree.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/reach-ui/Tooltip.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/DevTools.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/shared.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Icon.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ModalDialog.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Profiler.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarEventInfo.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Updaters.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ReactLogo.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/SearchInput.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsShared.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/TabBar.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Toggle.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedBridgeProtocolDialog.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.css","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/root.css","webpack://react-devtools-core/../react-devtools-timeline/src/CanvasPage.css","webpack://react-devtools-core/../react-devtools-timeline/src/EventTooltip.css","webpack://react-devtools-core/../react-devtools-timeline/src/Timeline.css","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineNotSupported.css","webpack://react-devtools-core/../../node_modules/@reach/menu-button/styles.css?4aa3","webpack://react-devtools-core/../../node_modules/@reach/tooltip/styles.css?8c83","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.css?b12c","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.css?1ec2","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Button.css?383a","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ButtonIcon.css?30c2","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Badge.css?c328","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Components.css?79ae","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableName.css?92a0","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableValue.css?2bf1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Element.css?82c3","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ElementBadges.css?5099","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.css?1a22","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ForgetBadge.css?72ed","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/IndexableElementBadges.css?50eb","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElement.css?5430","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementBadges.css?ccff","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorBoundary.css?1f2e","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorsAndWarningsTree.css?be33","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.css?82f8","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSharedStyles.css?6fbb","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSourcePanel.css?8310","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementStyleXPlugin.css?27bb","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.css?6d46","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValue.css?1f8c","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValueContextMenuContainer.css?31e4","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/LoadingAnimation.css?5797","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.css?26f5","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.css?9e2d","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.css?6619","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.css?914d","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.css?12e1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/OwnersStack.css?8cf6","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.css?624b","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Skeleton.css?2fc2","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Tree.css?ae8a","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/reach-ui/Tooltip.css?38f1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/DevTools.css?5040","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/shared.css?5b43","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Icon.css?4510","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ModalDialog.css?4d5b","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.css?e40e","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.css?2601","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.css?e20c","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.css?a0a4","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.css?56ab","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Profiler.css?37fa","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.css?86d1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.css?af5c","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.css?534f","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.css?8ac2","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarEventInfo.css?ddc6","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.css?b0d7","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.css?4cce","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.css?ac6d","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.css?8f33","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.css?4e6f","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Updaters.css?c305","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.css?870f","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ReactLogo.css?0ee5","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/SearchInput.css?47a4","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.css?0de1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsShared.css?eebf","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/TabBar.css?5d6d","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Toggle.css?98d1","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedBridgeProtocolDialog.css?8ed2","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.css?ca5f","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.css?7ba7","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/root.css?561e","webpack://react-devtools-core/../react-devtools-timeline/src/CanvasPage.css?b9cf","webpack://react-devtools-core/../react-devtools-timeline/src/EventTooltip.css?695a","webpack://react-devtools-core/../react-devtools-timeline/src/Timeline.css?1588","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineNotSupported.css?8e0a","webpack://react-devtools-core/../../node_modules/style-loader/lib/addStyles.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/importFile.worker.js","webpack://react-devtools-core/external commonjs \"bufferutil\"","webpack://react-devtools-core/external commonjs \"utf-8-validate\"","webpack://react-devtools-core/external node-commonjs \"crypto\"","webpack://react-devtools-core/external node-commonjs \"events\"","webpack://react-devtools-core/external node-commonjs \"http\"","webpack://react-devtools-core/external node-commonjs \"https\"","webpack://react-devtools-core/external node-commonjs \"net\"","webpack://react-devtools-core/external node-commonjs \"stream\"","webpack://react-devtools-core/external node-commonjs \"tls\"","webpack://react-devtools-core/external node-commonjs \"url\"","webpack://react-devtools-core/external node-commonjs \"util\"","webpack://react-devtools-core/external node-commonjs \"zlib\"","webpack://react-devtools-core/webpack/bootstrap","webpack://react-devtools-core/webpack/runtime/compat get default export","webpack://react-devtools-core/webpack/runtime/define property getters","webpack://react-devtools-core/webpack/runtime/ensure chunk","webpack://react-devtools-core/webpack/runtime/get javascript chunk filename","webpack://react-devtools-core/webpack/runtime/hasOwnProperty shorthand","webpack://react-devtools-core/webpack/runtime/make namespace object","webpack://react-devtools-core/webpack/runtime/nonce","webpack://react-devtools-core/../react-devtools-shared/src/events.js","webpack://react-devtools-core/../react-devtools-shared/src/bridge.js","webpack://react-devtools-core/../react-devtools-shared/src/frontend/types.js","webpack://react-devtools-core/../shared/ReactFeatureFlags.js","webpack://react-devtools-core/../shared/ReactSymbols.js","webpack://react-devtools-core/../react-devtools-shared/src/storage.js","webpack://react-devtools-core/../react-devtools-shared/src/hydration.js","webpack://react-devtools-core/../react-devtools-shared/src/isArray.js","webpack://react-devtools-core/../shared/isArray.js","webpack://react-devtools-core/../react-devtools-shared/src/utils.js","webpack://react-devtools-core/../../node_modules/json5/dist/index.mjs","webpack://react-devtools-core/../react-devtools-shared/src/devtools/utils.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/utils.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ProfilingCache.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ProfilerStore.js","webpack://react-devtools-core/../react-devtools-shared/src/UnsupportedBridgeOperationError.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/store.js","webpack://react-devtools-core/../react-devtools-shared/src/registerDevToolsEventLogger.js","webpack://react-devtools-core/external node-commonjs \"path\"","webpack://react-devtools-core/external node-commonjs \"fs\"","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/context.js","webpack://react-devtools-core/../../node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://react-devtools-core/../src/timer.js","webpack://react-devtools-core/../src/domHelpers.js","webpack://react-devtools-core/../src/createGridComponent.js","webpack://react-devtools-core/../src/createListComponent.js","webpack://react-devtools-core/../../node_modules/react-window/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://react-devtools-core/../src/FixedSizeList.js","webpack://react-devtools-core/../src/shallowDiffers.js","webpack://react-devtools-core/../src/areEqual.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/utils.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/TreeContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Icon.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/constants.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/hooks.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ButtonIcon.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Badge.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/IndexableDisplayName.js","webpack://react-devtools-core/../../node_modules/@reach/utils/can-use-dom/dist/reach-utils-can-use-dom.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/use-isomorphic-layout-effect/dist/reach-utils-use-isomorphic-layout-effect.esm.js","webpack://react-devtools-core/../../node_modules/@reach/auto-id/dist/reach-auto-id.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/owner-document/dist/reach-utils-owner-document.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/make-id/dist/reach-utils-make-id.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/type-check/dist/reach-utils-type-check.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/compose-refs/dist/reach-utils-compose-refs.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/compose-event-handlers/dist/reach-utils-compose-event-handlers.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/use-force-update/dist/reach-utils-use-force-update.esm.js","webpack://react-devtools-core/../../node_modules/@reach/portal/dist/reach-portal.esm.js","webpack://react-devtools-core/../../node_modules/@reach/visually-hidden/dist/reach-visually-hidden.esm.js","webpack://react-devtools-core/../src/index.ts","webpack://react-devtools-core/../../node_modules/@reach/rect/dist/reach-rect.esm.js","webpack://react-devtools-core/../../node_modules/@reach/tooltip/dist/reach-tooltip.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/get-document-dimensions/dist/reach-utils-get-document-dimensions.esm.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/useThemeStyles.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/reach-ui/tooltip.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Toggle.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ForgetBadge.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/IndexableElementBadges.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Element.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectHostNodesToggle.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Button.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ElementBadges.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/cache.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/OwnersListContext.js","webpack://react-devtools-core/../../node_modules/@reach/popover/dist/reach-popover.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/context/dist/reach-utils-context.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/noop/dist/reach-utils-noop.esm.js","webpack://react-devtools-core/../../node_modules/@reach/descendants/dist/reach-descendants.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/is-right-click/dist/reach-utils-is-right-click.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/use-previous/dist/reach-utils-use-previous.esm.js","webpack://react-devtools-core/../../node_modules/@reach/dropdown/dist/reach-dropdown.esm.js","webpack://react-devtools-core/../../node_modules/@reach/menu-button/dist/reach-menu-button.esm.js","webpack://react-devtools-core/../../node_modules/@reach/utils/use-stateful-ref-value/dist/reach-utils-use-stateful-ref-value.esm.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/reach-ui/menu-button.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/OwnersStack.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/SearchInput.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ComponentSearchInput.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/TreeFocusedContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/SelectedTreeHighlight.js","webpack://react-devtools-core/../react-devtools-shared/src/errors/TimeoutError.js","webpack://react-devtools-core/../react-devtools-shared/src/errors/ElementPollingCancellationError.js","webpack://react-devtools-core/../react-devtools-shared/src/backendAPI.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Tree.js","webpack://react-devtools-core/../react-devtools-shared/src/frontend/hooks/useExtensionComponentsPanelVisibility.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/UnsupportedBridgeOperationView.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/ErrorView.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/LoadingAnimation.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/SearchingGitHubIssues.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/githubAPI.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/cache.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/UpdateExistingIssue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/ReportNewIssue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/WorkplaceGroup.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/SuspendingErrorView.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/TimeoutView.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/CaughtErrorView.js","webpack://react-devtools-core/../react-devtools-shared/src/errors/UserError.js","webpack://react-devtools-core/../react-devtools-shared/src/errors/UnknownHookError.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/ErrorBoundary.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ErrorBoundary/index.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ThemeProvider.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/portaledContent.js","webpack://react-devtools-core/../react-devtools-shared/src/inspectedElementMutableSource.js","webpack://react-devtools-core/../react-devtools-shared/src/inspectedElementCache.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorBoundary.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementBadges.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/AutoSizeInput.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableName.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/EditableValue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/utils.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewArrayValue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NewKeyValue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ExpandCollapseToggle.js","webpack://react-devtools-core/../react-devtools-shared/src/dynamicImportCache.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/FetchFileWithCachingContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/HookNamesModuleLoaderContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/constants.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuItem.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenu.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/ContextMenuContainer.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/ContextMenu/useContextMenu.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValueContextMenuContainer.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/KeyValue.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementContextTree.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementErrorsAndWarningsTree.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementPropsTree.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementStateTree.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementStyleXPlugin.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSuspenseToggle.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/context.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/LayoutViewer.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/StyleEditor.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/NativeStyleEditor/index.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Skeleton.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementSourcePanel.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementView.js","webpack://react-devtools-core/../src/sourcemap-codec.ts","webpack://react-devtools-core/../react-devtools-shared/src/hooks/SourceMapConsumer.js","webpack://react-devtools-core/../react-devtools-shared/src/symbolicateSource.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/OpenInEditorButton.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/ViewElementSourceContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElementViewSourceButton.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/InspectedElement.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ModalDialog.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/TabBar.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/ComponentsSettings.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/DebuggingSettings.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/GeneralSettings.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProfilerContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/ProfilerSettings.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Settings/SettingsModal.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Components/Components.js","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineContext.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ClearProfilingDataButton.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/NoCommitData.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/constants.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ChartNode.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraphListItem.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/WhatChanged.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/HoveredFiberInfo.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Tooltip.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitFlamegraph.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitRankedListItem.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/CommitRanked.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RootSelector.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RecordToggle.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/NoProfilingData.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/RecordingInProgress.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/constants.js","webpack://react-devtools-core/../../node_modules/memoize-one/dist/memoize-one.esm.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/geometry.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/Surface.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/layouter.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/View.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/BackgroundColorView.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/utils/clamp.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/utils/scrollState.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/constants.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/HorizontalPanAndZoomView.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/VerticalScrollView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/utils/text.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/resizable/ResizeBarView.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/resizable/ResizableView.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/utils/normalizeWheel.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/useCanvasInteraction.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/vertical-scroll-overflow/withVerticalScrollbarLayout.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollOverflowView.js","webpack://react-devtools-core/../react-devtools-timeline/src/view-base/vertical-scroll-overflow/VerticalScrollBarView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/utils/positioning.js","webpack://react-devtools-core/../react-devtools-timeline/src/utils/formatting.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/ComponentMeasuresView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/utils/moduleFilters.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/utils/colors.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/FlamechartView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/NativeEventsView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/NetworkMeasuresView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/ReactMeasuresView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/SchedulingEventsView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/SnapshotsView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/SuspenseEventsView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/ThrownErrorsView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/TimeAxisMarkersView.js","webpack://react-devtools-core/../react-devtools-timeline/src/content-views/UserTimingMarksView.js","webpack://react-devtools-core/../react-devtools-timeline/src/utils/getBatchRange.js","webpack://react-devtools-core/../react-devtools-timeline/src/utils/useSmartTooltip.js","webpack://react-devtools-core/../react-devtools-timeline/src/EventTooltip.js","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineSearchContext.js","webpack://react-devtools-core/../react-devtools-timeline/src/CanvasPageContextMenu.js","webpack://react-devtools-core/../react-devtools-timeline/src/CanvasPage.js","webpack://react-devtools-core/../react-devtools-timeline/src/constants.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/InvalidProfileError.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/preprocessData.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/readInputData.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/importFile.js","webpack://react-devtools-core/../react-devtools-timeline/src/import-worker/index.js","webpack://react-devtools-core/../react-devtools-timeline/src/timelineCache.js","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineSearchInput.js","webpack://react-devtools-core/../react-devtools-timeline/src/TimelineNotSupported.js","webpack://react-devtools-core/../react-devtools-timeline/src/Timeline.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarEventInfo.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ReloadAndProfileButton.js","webpack://react-devtools-core/../shared/hasOwnProperty.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProfilingImportExportButtons.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitList.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SnapshotSelector.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Updaters.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProcessingData.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/ProfilingNotSupported.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/SidebarSelectedFiberInfo.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/Profiler/Profiler.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/ReactLogo.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedBridgeProtocolDialog.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/UnsupportedVersionDialog.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/WarnIfLegacyBackendDetected.js","webpack://react-devtools-core/../react-devtools-shared/src/devtools/views/DevTools.js","webpack://react-devtools-core/external node-commonjs \"child_process\"","webpack://react-devtools-core/./src/editor.js","webpack://react-devtools-core/./src/standalone.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"loaded\", otherwise not loaded yet\nvar installedChunks = {\n\t610: 1\n};\n\n// no on chunks loaded\n\nvar installChunk = (chunk) => {\n\tvar moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tfor(var i = 0; i < chunkIds.length; i++)\n\t\tinstalledChunks[chunkIds[i]] = 1;\n\n};\n\n// require() chunk loading for javascript\n__webpack_require__.f.require = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\tinstallChunk(require(\"./\" + __webpack_require__.u(chunkId)));\n\t\t} else installedChunks[chunkId] = 1;\n\t}\n};\n\n// no external install chunk\n\n// no HMR\n\n// no HMR manifest","/**\n * @license React\n * react-dom-client.production.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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n REACT_POSTPONE_TYPE = Symbol.for(\"react.postpone\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ASYNC_ITERATOR = Symbol.asyncIterator,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_VIEW_TRANSITION_TYPE:\n return \"ViewTransition\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n fiber = nextRootInstance.nodeType;\n switch (fiber) {\n case 9:\n case 11:\n nextRootInstance = (nextRootInstance = nextRootInstance.documentElement)\n ? (nextRootInstance = nextRootInstance.namespaceURI)\n ? getOwnHostContext(nextRootInstance)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = 8 === fiber ? nextRootInstance.parentNode : nextRootInstance),\n (nextRootInstance = fiber.tagName),\n (fiber = fiber.namespaceURI))\n )\n (fiber = getOwnHostContext(fiber)),\n (nextRootInstance = getChildHostContextProd(fiber, nextRootInstance));\n else\n switch (nextRootInstance) {\n case \"svg\":\n nextRootInstance = 1;\n break;\n case \"math\":\n nextRootInstance = 2;\n break;\n default:\n nextRootInstance = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, nextRootInstance);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 128,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194176;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194176)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n return currentTime + 250;\n case 16:\n case 32:\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194176) && (nextTransitionLane = 128);\n return lane;\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$5 = 31 - clz32(remainingLanes),\n lane = 1 << index$5;\n entanglements[index$5] = 0;\n expirationTimes[index$5] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$5];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$5] = null, index$5 = 0;\n index$5 < hiddenUpdatesForLane.length;\n index$5++\n ) {\n var update = hiddenUpdatesForLane[index$5];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194218);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$6 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$6;\n (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n (root[index$6] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 64;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentSuspenseInstance(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentSuspenseInstance(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[: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][: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\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nvar viewTransitionMutationContext = !1;\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$8 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$9) {\n control = x$9;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$10) {\n control = x$10;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 30:\n return describeBuiltInComponentFrame(\"ViewTransition\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\";\n do\n (info += describeFiber(workInProgress)),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\",\n descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n ),\n currentValue = \"\" + node[valueField];\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n )\n return;\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"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 floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex 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\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"),\n (viewTransitionMutationContext = !0));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n (setValueForStyle(node, styleName$16, styleName),\n (viewTransitionMutationContext = !0));\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\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 !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\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 (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\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 for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar 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 },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n 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 return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n 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 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 modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\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 charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n 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 SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n 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 SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$285;\n if (canUseDOM) {\n var isSupported$jscomp$inline_423 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_423) {\n var element$jscomp$inline_424 = document.createElement(\"div\");\n element$jscomp$inline_424.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_423 =\n \"function\" === typeof element$jscomp$inline_424.oninput;\n }\n JSCompiler_inline_result$jscomp$285 = isSupported$jscomp$inline_423;\n } else JSCompiler_inline_result$jscomp$285 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$285 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle 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\".split(\n \" \"\n );\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n isHidden &&\n null !== update &&\n 3 === sourceFiber.tag &&\n ((parent = sourceFiber.stateNode),\n (isHidden = 31 - clz32(lane)),\n (parent = parent.hiddenUpdates),\n (sourceFiber = parent[isHidden]),\n null === sourceFiber\n ? (parent[isHidden] = [update])\n : sourceFiber.push(update),\n (update.lane = lane | 536870912));\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {},\n valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194176))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$28 in Component)\n void 0 === newProps[propName$28] &&\n (newProps[propName$28] = Component[propName$28]);\n }\n return newProps;\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction getTreeId() {\n var overflow = treeContextOverflow,\n idWithLeadingBit = treeContextId;\n return (\n (idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))).toString(\n 32\n ) + overflow\n );\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 var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; 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}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter$1 = 0,\n thenableState$1 = null,\n globalClientIdCounter$1 = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter$1 = 0;\n thenableState$1 = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n thenableIndexCounter$1 = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter$1 = localIdCounter = 0;\n thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n thenable = trackUsedThenable(thenableState$1, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$33 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$33 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$33 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$33 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 60) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$39) {\n onActionError(actionQueue, node, error$39);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction createEffectInstance() {\n return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n createEffectInstance(),\n create,\n deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (0 === (renderLanes & 42))\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop$2\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber, seedKey, seedValue) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$42 = enqueueUpdate(provider, fiber, lane);\n null !== root$42 &&\n (scheduleUpdateOnFiber(root$42, provider, lane),\n entangleTransitions(root$42, provider, lane));\n provider = createCache();\n null !== seedKey &&\n void 0 !== seedKey &&\n null !== root$42 &&\n provider.data.set(seedKey, seedValue);\n fiber.payload = { cache: provider };\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194176)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: 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 useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 60) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var treeId = getTreeId();\n identifierPrefix = \":\" + identifierPrefix + \"R\" + treeId;\n treeId = localIdCounter++;\n 0 < treeId && (identifierPrefix += \"H\" + treeId.toString(32));\n identifierPrefix += \":\";\n } else\n (treeId = globalClientIdCounter$1++),\n (identifierPrefix =\n \":\" + identifierPrefix + \"r\" + treeId.toString(32) + \":\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: 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: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: 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: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nvar thenableState = null,\n thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction resolveLazy(lazyType) {\n var init = lazyType._init;\n return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return createChild(returnFiber, newChild, lanes);\n }\n if (\n isArrayImpl(newChild) ||\n getIteratorFn(newChild) ||\n \"function\" === typeof newChild[ASYNC_ITERATOR]\n )\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (\n isArrayImpl(newChild) ||\n getIteratorFn(newChild) ||\n \"function\" === typeof newChild[ASYNC_ITERATOR]\n )\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n );\n }\n if (\n isArrayImpl(newChild) ||\n getIteratorFn(newChild) ||\n \"function\" === typeof newChild[ASYNC_ITERATOR]\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenAsyncIteratable(\n returnFiber,\n currentFirstChild,\n newChildrenIterable,\n lanes\n ) {\n var newChildren = newChildrenIterable[ASYNC_ITERATOR]();\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n {\n next: function () {\n return unwrapThenable(newChildren.next());\n }\n },\n lanes\n );\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild[ASYNC_ITERATOR])\n return reconcileChildrenAsyncIteratable(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n if (22 === fiber.tag) {\n if (\n (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary)\n ) {\n var current = fiber.alternate;\n null !== current &&\n null !== current.memoizedState &&\n (shellBoundary = fiber);\n }\n } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n \"$?\" === state.data ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$76) {\n setTimeout(function () {\n throw e$76;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n var currentSourceFiber = sourceFiber.alternate;\n null !== currentSourceFiber &&\n propagateParentContextChanges(\n currentSourceFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n}\nfunction markSuspenseBoundaryShouldCapture(\n suspenseBoundary,\n returnFiber,\n sourceFiber,\n root,\n rootRenderLanes\n) {\n suspenseBoundary.flags |= 65536;\n suspenseBoundary.lanes = rootRenderLanes;\n return suspenseBoundary;\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n (value.$$typeof === REACT_POSTPONE_TYPE &&\n (value = { then: function () {} }),\n \"function\" === typeof value.then)\n ) {\n resetSuspendedComponent(sourceFiber, rootRenderLanes);\n var suspenseBoundary = suspenseHandlerStackCursor.current;\n if (null !== suspenseBoundary) {\n switch (suspenseBoundary.tag) {\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === suspenseBoundary.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (suspenseBoundary.flags &= -257),\n markSuspenseBoundaryShouldCapture(\n suspenseBoundary,\n returnFiber,\n sourceFiber,\n root,\n rootRenderLanes\n ),\n value === noopSuspenseyCommitThenable\n ? (suspenseBoundary.flags |= 16384)\n : ((sourceFiber = suspenseBoundary.updateQueue),\n null === sourceFiber\n ? (suspenseBoundary.updateQueue = new Set([value]))\n : sourceFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (suspenseBoundary.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (suspenseBoundary.flags |= 16384)\n : ((sourceFiber = suspenseBoundary.updateQueue),\n null === sourceFiber\n ? ((sourceFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (suspenseBoundary.updateQueue = sourceFiber))\n : ((returnFiber = sourceFiber.retryQueue),\n null === returnFiber\n ? (sourceFiber.retryQueue = new Set([value]))\n : returnFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, suspenseBoundary.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (suspenseBoundary = suspenseHandlerStackCursor.current),\n null !== suspenseBoundary\n ? (0 === (suspenseBoundary.flags & 65536) &&\n (suspenseBoundary.flags |= 256),\n markSuspenseBoundaryShouldCapture(\n suspenseBoundary,\n returnFiber,\n sourceFiber,\n root,\n rootRenderLanes\n ),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (sourceFiber = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n sourceFiber,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n suspenseBoundary = Error(formatProdErrorMessage(520), { cause: value });\n queueConcurrentError(\n createCapturedValueAtFiber(suspenseBoundary, sourceFiber)\n );\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n sourceFiber = createCapturedValueAtFiber(value, sourceFiber);\n do {\n switch (returnFiber.tag) {\n case 3:\n return (\n (returnFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (returnFiber.lanes |= root),\n (root = createRootErrorUpdate(\n returnFiber.stateNode,\n sourceFiber,\n root\n )),\n enqueueCapturedUpdate(returnFiber, root),\n !1\n );\n case 1:\n if (\n ((value = returnFiber.type),\n (suspenseBoundary = returnFiber.stateNode),\n 0 === (returnFiber.flags & 128) &&\n (\"function\" === typeof value.getDerivedStateFromError ||\n (null !== suspenseBoundary &&\n \"function\" === typeof suspenseBoundary.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(\n suspenseBoundary\n )))))\n )\n return (\n (returnFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (returnFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n returnFiber,\n sourceFiber\n ),\n enqueueCapturedUpdate(returnFiber, rootRenderLanes),\n !1\n );\n }\n returnFiber = returnFiber.return;\n } while (null !== returnFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n nextChildren = nextProps.children,\n nextIsDetached = 0 !== (workInProgress.stateNode._pendingVisibility & 2),\n prevState = null !== current ? current.memoizedState : null;\n markRef(current, workInProgress);\n if (\"hidden\" === nextProps.mode || nextIsDetached) {\n if (0 !== (workInProgress.flags & 128)) {\n nextProps =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextChildren = workInProgress.child = current.child;\n for (nextIsDetached = 0; null !== nextChildren; )\n (nextIsDetached =\n nextIsDetached | nextChildren.lanes | nextChildren.childLanes),\n (nextChildren = nextChildren.sibling);\n workInProgress.childLanes = nextIsDetached & ~nextProps;\n } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (workInProgress.lanes = workInProgress.childLanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n return null;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n if (isHydrating) {\n var nextInstance = nextHydratableInstance,\n JSCompiler_temp$jscomp$0;\n if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n c: {\n JSCompiler_temp$jscomp$0 = nextInstance;\n for (\n nextInstance = rootOrSingletonContext;\n 8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n ) {\n if (!nextInstance) {\n nextInstance = null;\n break c;\n }\n JSCompiler_temp$jscomp$0 = getNextHydratable(\n JSCompiler_temp$jscomp$0.nextSibling\n );\n if (null === JSCompiler_temp$jscomp$0) {\n nextInstance = null;\n break c;\n }\n }\n nextInstance = JSCompiler_temp$jscomp$0;\n }\n null !== nextInstance\n ? ((workInProgress.memoizedState = {\n dehydrated: nextInstance,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n 18,\n null,\n null,\n 0\n )),\n (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n (JSCompiler_temp$jscomp$0.return = workInProgress),\n (workInProgress.child = JSCompiler_temp$jscomp$0),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (JSCompiler_temp$jscomp$0 = !0))\n : (JSCompiler_temp$jscomp$0 = !1);\n }\n JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n }\n nextInstance = workInProgress.memoizedState;\n if (\n null !== nextInstance &&\n ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n )\n return (\n isSuspenseInstanceFallback(nextInstance)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912),\n null\n );\n popSuspenseHandler(workInProgress);\n }\n nextInstance = nextProps.children;\n JSCompiler_temp$jscomp$0 = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextProps = mountSuspenseFallbackChildren(\n workInProgress,\n nextInstance,\n JSCompiler_temp$jscomp$0,\n renderLanes\n )),\n (showFallback = workInProgress.child),\n (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n if (\"number\" === typeof nextProps.unstable_expectedLoadTime)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextProps = mountSuspenseFallbackChildren(\n workInProgress,\n nextInstance,\n JSCompiler_temp$jscomp$0,\n renderLanes\n )),\n (showFallback = workInProgress.child),\n (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress.lanes = 4194304),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n }\n JSCompiler_temp$jscomp$0 = current.memoizedState;\n if (\n null !== JSCompiler_temp$jscomp$0 &&\n ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n null !== nextInstance)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n nextInstance\n )),\n (showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2),\n (nextProps.return = workInProgress),\n (showFallback.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = showFallback));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextInstance))\n ) {\n JSCompiler_temp =\n nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n \"POSTPONE\" !== JSCompiler_temp &&\n ((nextProps = Error(formatProdErrorMessage(419))),\n (nextProps.stack = \"\"),\n (nextProps.digest = JSCompiler_temp),\n queueHydrationError({ value: nextProps, source: null, stack: null }));\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = renderLanes & -renderLanes),\n (nextProps =\n 0 !== (nextProps & 42)\n ? 1\n : getBumpedLaneForHydrationByLane(nextProps)),\n (nextProps =\n 0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n ? 0\n : nextProps),\n 0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n )\n throw (\n ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n \"$?\" === nextInstance.data\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = JSCompiler_temp$jscomp$0.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextInstance.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n ((idStack[idStackIndex++] = treeContextId),\n (idStack[idStackIndex++] = treeContextOverflow),\n (idStack[idStackIndex++] = treeContextProvider),\n (treeContextId = current.id),\n (treeContextOverflow = current.overflow),\n (treeContextProvider = workInProgress)),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (JSCompiler_temp$jscomp$0 = current.child),\n (digest = JSCompiler_temp$jscomp$0.sibling),\n (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags =\n JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n null !== digest\n ? (showFallback = createWorkInProgress(digest, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n (nextProps = showFallback),\n (showFallback = workInProgress.child),\n (nextInstance = current.child.memoizedState),\n null === nextInstance\n ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n null !== JSCompiler_temp$jscomp$0\n ? ((digest = CacheContext._currentValue),\n (JSCompiler_temp$jscomp$0 =\n JSCompiler_temp$jscomp$0.parent !== digest\n ? { parent: digest, pool: digest }\n : JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n (nextInstance = {\n baseLanes: nextInstance.baseLanes | renderLanes,\n cachePool: JSCompiler_temp$jscomp$0\n })),\n (showFallback.memoizedState = nextInstance),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountSuspenseFallbackChildren(\n workInProgress,\n primaryChildren,\n fallbackChildren,\n renderLanes\n) {\n var mode = workInProgress.mode;\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: primaryChildren },\n mode\n );\n fallbackChildren = createFiberFromFragment(\n fallbackChildren,\n mode,\n renderLanes,\n null\n );\n primaryChildren.return = workInProgress;\n fallbackChildren.return = workInProgress;\n primaryChildren.sibling = fallbackChildren;\n workInProgress.child = primaryChildren;\n return fallbackChildren;\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n return createFiberFromOffscreen(offscreenProps, mode, 0, null);\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode\n })\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}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n nextProps = suspenseStackCursor.current;\n if (0 !== (nextProps & 2))\n (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n else {\n if (null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n nextProps &= 1;\n }\n push(suspenseStackCursor, nextProps);\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode\n );\n break;\n case \"backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode\n );\n break;\n case \"together\":\n initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 13:\n var state = workInProgress.memoizedState;\n if (null !== state) {\n if (null !== state.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state = 0 !== (renderLanes & workInProgress.childLanes);\n state ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state) break;\n else return null;\n case 22:\n case 23:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(current, workInProgress, renderLanes)\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n current = workInProgress.pendingProps;\n var lazyComponent = workInProgress.elementType,\n init = lazyComponent._init;\n lazyComponent = init(lazyComponent._payload);\n workInProgress.type = lazyComponent;\n if (\"function\" === typeof lazyComponent)\n shouldConstruct(lazyComponent)\n ? ((current = resolveClassComponentProps(lazyComponent, current)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )));\n else {\n if (void 0 !== lazyComponent && null !== lazyComponent)\n if (\n ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n ) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n } else if (init === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n }\n workInProgress =\n getComponentNameFromType(lazyComponent) || lazyComponent;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (lazyComponent = workInProgress.type),\n (init = resolveClassComponentProps(\n lazyComponent,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n lazyComponent,\n init,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n var nextProps = workInProgress.pendingProps;\n init = workInProgress.memoizedState;\n lazyComponent = init.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n nextProps = nextState.cache;\n pushProvider(workInProgress, CacheContext, nextProps);\n nextProps !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n nextProps = nextState.element;\n if (init.isDehydrated)\n if (\n ((init = {\n element: nextProps,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = init),\n (workInProgress.memoizedState = init),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n break a;\n } else if (nextProps !== lazyComponent) {\n lazyComponent = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError(lazyComponent);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n break a;\n } else\n for (\n nextHydratableInstance = getNextHydratable(\n workInProgress.stateNode.containerInfo.firstChild\n ),\n hydrationParentFiber = workInProgress,\n isHydrating = !0,\n hydrationErrors = null,\n rootOrSingletonContext = !0,\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n nextProps,\n renderLanes\n ),\n workInProgress.child = renderLanes;\n renderLanes;\n\n )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n else {\n resetHydrationState();\n if (nextProps === lazyComponent) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (lazyComponent = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (lazyComponent[internalInstanceKey] = workInProgress),\n (lazyComponent[internalPropsKey] = current),\n setInitialProperties(lazyComponent, renderLanes, current),\n markNodeAsHoistable(lazyComponent),\n (workInProgress.stateNode = lazyComponent))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((lazyComponent = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n ))),\n (lazyComponent = workInProgress.pendingProps.children),\n null !== current || isHydrating\n ? reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n )\n : (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n )),\n markRef(current, workInProgress),\n workInProgress.child\n );\n case 5:\n return (\n null === current &&\n isHydrating &&\n ((lazyComponent = nextHydratableInstance),\n (init = !lazyComponent) ||\n ((lazyComponent = canHydrateInstance(\n lazyComponent,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== lazyComponent\n ? ((workInProgress.stateNode = lazyComponent),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )),\n (rootOrSingletonContext = !1),\n (lazyComponent = !0))\n : (lazyComponent = !1),\n (init = !lazyComponent)),\n init && throwOnHydrationMismatch(workInProgress)),\n pushHostContext(workInProgress),\n (init = workInProgress.type),\n (nextProps = workInProgress.pendingProps),\n (nextState = null !== current ? current.memoizedProps : null),\n (lazyComponent = nextProps.children),\n shouldSetTextContent(init, nextProps)\n ? (lazyComponent = null)\n : null !== nextState &&\n shouldSetTextContent(init, nextState) &&\n (workInProgress.flags |= 32),\n null !== workInProgress.memoizedState &&\n ((init = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = init)),\n markRef(current, workInProgress),\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n workInProgress.child\n );\n case 6:\n return (\n null === current &&\n isHydrating &&\n ((renderLanes = nextHydratableInstance),\n (current = !renderLanes) ||\n ((renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (renderLanes = !0))\n : (renderLanes = !1),\n (current = !renderLanes)),\n current && throwOnHydrationMismatch(workInProgress)),\n null\n );\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (lazyComponent = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n ))\n : reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n ),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (lazyComponent = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 9:\n return (\n (init = workInProgress.type._context),\n (lazyComponent = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n (init = readContext(init)),\n (lazyComponent = lazyComponent(init)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (lazyComponent = readContext(CacheContext)),\n null === current\n ? ((init = peekCacheFromPool()),\n null === init &&\n ((init = workInProgressRoot),\n (nextProps = createCache()),\n (init.pooledCache = nextProps),\n nextProps.refCount++,\n null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n (init = nextProps)),\n (workInProgress.memoizedState = {\n parent: lazyComponent,\n cache: init\n }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, init))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n (init = current.memoizedState),\n (nextProps = workInProgress.memoizedState),\n init.parent !== lazyComponent\n ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n (workInProgress.memoizedState = init),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n init),\n pushProvider(workInProgress, CacheContext, lazyComponent))\n : ((lazyComponent = nextProps.cache),\n pushProvider(workInProgress, CacheContext, lazyComponent),\n lazyComponent !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 30:\n return (\n (lazyComponent = workInProgress.pendingProps),\n (init = workInProgress.stateNode),\n null != lazyComponent.name && \"auto\" !== lazyComponent.name\n ? ((workInProgress.flags |= 2097152),\n null === current &&\n trackAppearingViewTransition(init, lazyComponent.name))\n : null === init.autoName &&\n ((nextProps = workInProgressRoot.identifierPrefix),\n isHydrating\n ? ((nextState = getTreeId()),\n (nextProps = \"\\u00ab\" + nextProps + \"T\" + nextState + \"\\u00bb\"))\n : ((nextState = globalClientIdCounter++),\n (nextProps =\n \"\\u00ab\" +\n nextProps +\n \"t\" +\n nextState.toString(32) +\n \"\\u00bb\")),\n (init.autoName = nextProps)),\n null !== current && current.memoizedProps.name !== lazyComponent.name\n ? (workInProgress.flags |= 4194816)\n : markRef(current, workInProgress),\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0;\n try {\n destroy();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n var instance = current.stateNode,\n name = getViewTransitionName(current.memoizedProps, instance);\n if (null === instance.ref || instance.ref.name !== name)\n instance.ref = createViewTransitionInstance(name);\n instanceToUse = instance.ref;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$115) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$115);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n 27 === fiber.tag ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag &&\n 6 !== fiber.tag &&\n 27 !== fiber.tag &&\n 18 !== fiber.tag;\n\n ) {\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? 8 === parent.nodeType\n ? parent.parentNode.insertBefore(node, before)\n : parent.insertBefore(node, before)\n : (8 === parent.nodeType\n ? ((before = parent.parentNode), before.insertBefore(node, parent))\n : ((before = parent), before.appendChild(node)),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1)),\n (viewTransitionMutationContext = !0);\n else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node),\n (viewTransitionMutationContext = !0);\n else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null,\n shouldStartViewTransition = !1,\n viewTransitionContextChanged = !1,\n viewTransitionCancelableChildren = null;\nfunction commitBeforeMutationEffects(\n root,\n firstChild,\n committedLanes,\n appearingViewTransitions\n) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n shouldStartViewTransition = _enabled = !1;\n committedLanes = (committedLanes & 335544192) === committedLanes;\n nextEffect = firstChild;\n for (firstChild = committedLanes ? 9238 : 1028; null !== nextEffect; ) {\n root = nextEffect;\n if (\n committedLanes &&\n ((JSCompiler_temp = root.deletions), null !== JSCompiler_temp)\n )\n for (\n anchorOffset = 0;\n anchorOffset < JSCompiler_temp.length;\n anchorOffset++\n )\n committedLanes &&\n commitExitViewTransitions(\n JSCompiler_temp[anchorOffset],\n appearingViewTransitions\n );\n if (null === root.alternate && 0 !== (root.flags & 2))\n commitBeforeMutationEffects_complete(committedLanes);\n else {\n if (22 === root.tag)\n if (((JSCompiler_temp = root.alternate), null !== root.memoizedState)) {\n null !== JSCompiler_temp &&\n null === JSCompiler_temp.memoizedState &&\n committedLanes &&\n commitExitViewTransitions(\n JSCompiler_temp,\n appearingViewTransitions\n );\n commitBeforeMutationEffects_complete(committedLanes);\n continue;\n } else if (\n null !== JSCompiler_temp &&\n null !== JSCompiler_temp.memoizedState\n ) {\n commitBeforeMutationEffects_complete(committedLanes);\n continue;\n }\n JSCompiler_temp = root.child;\n 0 !== (root.subtreeFlags & firstChild) && null !== JSCompiler_temp\n ? ((JSCompiler_temp.return = root), (nextEffect = JSCompiler_temp))\n : (committedLanes && commitNestedViewTransitions(root),\n commitBeforeMutationEffects_complete(committedLanes));\n }\n }\n}\nfunction commitBeforeMutationEffects_complete(\n isViewTransitionEligible$jscomp$0\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect,\n isViewTransitionEligible = isViewTransitionEligible$jscomp$0,\n current = fiber.alternate,\n flags = fiber.flags;\n switch (fiber.tag) {\n case 0:\n if (\n 0 !== (flags & 4) &&\n ((current = fiber.updateQueue),\n (current = null !== current ? current.events : null),\n null !== current)\n )\n for (\n isViewTransitionEligible = 0;\n isViewTransitionEligible < current.length;\n isViewTransitionEligible++\n )\n (flags = current[isViewTransitionEligible]),\n (flags.ref.impl = flags.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (flags & 1024) && null !== current) {\n isViewTransitionEligible = void 0;\n flags = current.memoizedProps;\n current = current.memoizedState;\n var instance = fiber.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n fiber.type,\n flags,\n fiber.elementType === fiber.type\n );\n isViewTransitionEligible = instance.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n current\n );\n instance.__reactInternalSnapshotBeforeUpdate =\n isViewTransitionEligible;\n } catch (error) {\n captureCommitPhaseError(fiber, fiber.return, error);\n }\n }\n break;\n case 3:\n if (0 !== (flags & 1024))\n if (\n ((current = fiber.stateNode.containerInfo),\n (isViewTransitionEligible = current.nodeType),\n 9 === isViewTransitionEligible)\n )\n clearContainerSparingly(current);\n else if (1 === isViewTransitionEligible)\n switch (current.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(current);\n break;\n default:\n current.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n case 30:\n if (\n isViewTransitionEligible &&\n null !== current &&\n 0 !== (fiber.subtreeFlags & 8246)\n )\n a: {\n isViewTransitionEligible = getViewTransitionName(\n current.memoizedProps,\n current.stateNode\n );\n flags = fiber.memoizedProps;\n instance = getViewTransitionClassName(\n flags.className,\n flags.update\n );\n if (\n \"none\" === instance &&\n ((instance = getViewTransitionClassName(\n flags.className,\n flags.layout\n )),\n \"none\" === instance)\n )\n break a;\n viewTransitionHostInstanceIdx = 0;\n applyViewTransitionToHostInstances(\n current.child,\n isViewTransitionEligible,\n instance,\n (current.memoizedState = []),\n !0\n );\n }\n break;\n default:\n if (0 !== (flags & 1024)) throw Error(formatProdErrorMessage(163));\n }\n current = fiber.sibling;\n if (null !== current) {\n current.return = fiber.return;\n nextEffect = current;\n break;\n }\n nextEffect = fiber.return;\n }\n}\nvar viewTransitionHostInstanceIdx = 0;\nfunction applyViewTransitionToHostInstances(\n child,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n) {\n for (var inViewport = !1; null !== child; ) {\n if (5 === child.tag) {\n shouldStartViewTransition = !0;\n var instance = child.stateNode;\n if (null !== collectMeasurements) {\n var measurement = measureInstance(instance);\n collectMeasurements.push(measurement);\n measurement.view && (inViewport = !0);\n } else\n inViewport || (measureInstance(instance).view && (inViewport = !0));\n measurement = className;\n instance.style.viewTransitionName =\n 0 === viewTransitionHostInstanceIdx\n ? name\n : name + \"_\" + viewTransitionHostInstanceIdx;\n null != measurement && (instance.style.viewTransitionClass = measurement);\n viewTransitionHostInstanceIdx++;\n } else if (22 !== child.tag || null === child.memoizedState)\n (30 === child.tag && stopAtNestedViewTransitions) ||\n (applyViewTransitionToHostInstances(\n child.child,\n name,\n className,\n collectMeasurements,\n stopAtNestedViewTransitions\n ) &&\n (inViewport = !0));\n child = child.sibling;\n }\n return inViewport;\n}\nfunction restoreViewTransitionOnHostInstances(\n child,\n stopAtNestedViewTransitions\n) {\n for (; null !== child; ) {\n if (5 === child.tag)\n restoreViewTransitionName(child.stateNode, child.memoizedProps);\n else if (22 !== child.tag || null === child.memoizedState)\n (30 === child.tag && stopAtNestedViewTransitions) ||\n restoreViewTransitionOnHostInstances(\n child.child,\n stopAtNestedViewTransitions\n );\n child = child.sibling;\n }\n}\nfunction commitAppearingPairViewTransitions(placement) {\n if (0 !== (placement.subtreeFlags & 2097152))\n for (placement = placement.child; null !== placement; ) {\n if (22 !== placement.tag || null !== placement.memoizedState)\n if (\n (commitAppearingPairViewTransitions(placement),\n 30 === placement.tag &&\n 0 !== (placement.flags & 2097152) &&\n placement.stateNode.paired)\n ) {\n var props = placement.memoizedProps;\n if (null == props.name || \"auto\" === props.name)\n throw Error(formatProdErrorMessage(544));\n var name = props.name;\n props = getViewTransitionClassName(props.className, props.share);\n \"none\" !== props &&\n ((viewTransitionHostInstanceIdx = 0),\n applyViewTransitionToHostInstances(\n placement.child,\n name,\n props,\n null,\n !1\n ) || restoreViewTransitionOnHostInstances(placement.child, !1));\n }\n placement = placement.sibling;\n }\n}\nfunction commitEnterViewTransitions(placement) {\n if (30 === placement.tag) {\n var state = placement.stateNode,\n props = placement.memoizedProps,\n name = getViewTransitionName(props, state),\n className = getViewTransitionClassName(\n props.className,\n state.paired ? props.share : props.enter\n );\n \"none\" !== className\n ? ((viewTransitionHostInstanceIdx = 0),\n applyViewTransitionToHostInstances(\n placement.child,\n name,\n className,\n null,\n !1\n )\n ? (commitAppearingPairViewTransitions(placement),\n state.paired ||\n scheduleViewTransitionEvent(placement, props.onEnter))\n : restoreViewTransitionOnHostInstances(placement.child, !1))\n : commitAppearingPairViewTransitions(placement);\n } else if (0 !== (placement.subtreeFlags & 33554432))\n for (placement = placement.child; null !== placement; )\n commitEnterViewTransitions(placement), (placement = placement.sibling);\n else commitAppearingPairViewTransitions(placement);\n}\nfunction commitDeletedPairViewTransitions(deletion, appearingViewTransitions) {\n if (\n 0 !== appearingViewTransitions.size &&\n 0 !== (deletion.subtreeFlags & 2097152)\n )\n for (deletion = deletion.child; null !== deletion; ) {\n if (22 !== deletion.tag || null !== deletion.memoizedState) {\n if (30 === deletion.tag && 0 !== (deletion.flags & 2097152)) {\n var props = deletion.memoizedProps,\n name = props.name;\n if (null != name && \"auto\" !== name) {\n var pair = appearingViewTransitions.get(name);\n if (void 0 !== pair) {\n var className = getViewTransitionClassName(\n props.className,\n props.share\n );\n \"none\" !== className &&\n ((viewTransitionHostInstanceIdx = 0),\n applyViewTransitionToHostInstances(\n deletion.child,\n name,\n className,\n null,\n !1\n )\n ? ((pair.paired = deletion.stateNode),\n scheduleViewTransitionEvent(deletion, props.onShare))\n : restoreViewTransitionOnHostInstances(deletion.child, !1));\n appearingViewTransitions.delete(name);\n if (0 === appearingViewTransitions.size) break;\n }\n }\n }\n commitDeletedPairViewTransitions(deletion, appearingViewTransitions);\n }\n deletion = deletion.sibling;\n }\n}\nfunction commitExitViewTransitions(deletion, appearingViewTransitions) {\n if (30 === deletion.tag) {\n var props = deletion.memoizedProps,\n name = getViewTransitionName(props, deletion.stateNode),\n pair =\n null !== appearingViewTransitions\n ? appearingViewTransitions.get(name)\n : void 0,\n className = getViewTransitionClassName(\n props.className,\n void 0 !== pair ? props.share : props.exit\n );\n \"none\" !== className &&\n ((viewTransitionHostInstanceIdx = 0),\n applyViewTransitionToHostInstances(\n deletion.child,\n name,\n className,\n null,\n !1\n )\n ? void 0 !== pair\n ? ((pair.paired = deletion.stateNode),\n appearingViewTransitions.delete(name),\n scheduleViewTransitionEvent(deletion, props.onShare))\n : scheduleViewTransitionEvent(deletion, props.onExit)\n : restoreViewTransitionOnHostInstances(deletion.child, !1));\n null !== appearingViewTransitions &&\n commitDeletedPairViewTransitions(deletion, appearingViewTransitions);\n } else if (0 !== (deletion.subtreeFlags & 33554432))\n for (deletion = deletion.child; null !== deletion; )\n commitExitViewTransitions(deletion, appearingViewTransitions),\n (deletion = deletion.sibling);\n else\n null !== appearingViewTransitions &&\n commitDeletedPairViewTransitions(deletion, appearingViewTransitions);\n}\nfunction commitNestedViewTransitions(changedParent) {\n for (changedParent = changedParent.child; null !== changedParent; ) {\n if (30 === changedParent.tag) {\n var props = changedParent.memoizedProps,\n name = getViewTransitionName(props, changedParent.stateNode);\n props = getViewTransitionClassName(props.className, props.layout);\n \"none\" !== props &&\n ((viewTransitionHostInstanceIdx = 0),\n applyViewTransitionToHostInstances(\n changedParent.child,\n name,\n props,\n (changedParent.memoizedState = []),\n !1\n ));\n } else\n 0 !== (changedParent.subtreeFlags & 33554432) &&\n commitNestedViewTransitions(changedParent);\n changedParent = changedParent.sibling;\n }\n}\nfunction restorePairedViewTransitions(parent) {\n if (0 !== (parent.subtreeFlags & 2097152))\n for (parent = parent.child; null !== parent; ) {\n if (22 !== parent.tag || null !== parent.memoizedState) {\n if (30 === parent.tag && 0 !== (parent.flags & 2097152)) {\n var instance = parent.stateNode;\n null !== instance.paired &&\n ((instance.paired = null),\n restoreViewTransitionOnHostInstances(parent.child, !1));\n }\n restorePairedViewTransitions(parent);\n }\n parent = parent.sibling;\n }\n}\nfunction restoreEnterViewTransitions(placement) {\n if (30 === placement.tag)\n (placement.stateNode.paired = null),\n restoreViewTransitionOnHostInstances(placement.child, !1),\n restorePairedViewTransitions(placement);\n else if (0 !== (placement.subtreeFlags & 33554432))\n for (placement = placement.child; null !== placement; )\n restoreEnterViewTransitions(placement), (placement = placement.sibling);\n else restorePairedViewTransitions(placement);\n}\nfunction restoreExitViewTransitions(deletion) {\n if (30 === deletion.tag)\n (deletion.stateNode.paired = null),\n restoreViewTransitionOnHostInstances(deletion.child, !1),\n restorePairedViewTransitions(deletion);\n else if (0 !== (deletion.subtreeFlags & 33554432))\n for (deletion = deletion.child; null !== deletion; )\n restoreExitViewTransitions(deletion), (deletion = deletion.sibling);\n else restorePairedViewTransitions(deletion);\n}\nfunction restoreNestedViewTransitions(changedParent) {\n for (changedParent = changedParent.child; null !== changedParent; )\n 30 === changedParent.tag\n ? ((changedParent.memoizedState = null),\n restoreViewTransitionOnHostInstances(changedParent.child, !1))\n : 0 !== (changedParent.subtreeFlags & 33554432) &&\n restoreNestedViewTransitions(changedParent),\n (changedParent = changedParent.sibling);\n}\nfunction cancelViewTransitionHostInstances(\n currentViewTransition,\n child,\n stopAtNestedViewTransitions\n) {\n for (; null !== child; ) {\n if (5 === child.tag) {\n var instance = child.stateNode,\n oldName = getViewTransitionName(\n currentViewTransition.memoizedProps,\n currentViewTransition.stateNode\n );\n null === viewTransitionCancelableChildren &&\n (viewTransitionCancelableChildren = []);\n viewTransitionCancelableChildren.push(\n instance,\n oldName,\n child.memoizedProps\n );\n viewTransitionHostInstanceIdx++;\n } else if (22 !== child.tag || null === child.memoizedState)\n (30 === child.tag && stopAtNestedViewTransitions) ||\n cancelViewTransitionHostInstances(\n currentViewTransition,\n child.child,\n stopAtNestedViewTransitions\n );\n child = child.sibling;\n }\n}\nfunction measureViewTransitionHostInstances(\n currentViewTransition,\n parentViewTransition,\n child,\n name,\n className,\n previousMeasurements,\n stopAtNestedViewTransitions\n) {\n for (var inViewport = !1; null !== child; ) {\n if (5 === child.tag) {\n var instance = child.stateNode;\n if (\n null !== previousMeasurements &&\n viewTransitionHostInstanceIdx < previousMeasurements.length\n ) {\n var previousMeasurement =\n previousMeasurements[viewTransitionHostInstanceIdx],\n nextMeasurement = measureInstance(instance);\n if (previousMeasurement.view || nextMeasurement.view) inViewport = !0;\n var JSCompiler_temp;\n if ((JSCompiler_temp = 0 === (parentViewTransition.flags & 4)))\n if (nextMeasurement.clip) JSCompiler_temp = !0;\n else {\n JSCompiler_temp = previousMeasurement.rect;\n var newRect = nextMeasurement.rect;\n JSCompiler_temp =\n JSCompiler_temp.y !== newRect.y ||\n JSCompiler_temp.x !== newRect.x ||\n JSCompiler_temp.height !== newRect.height ||\n JSCompiler_temp.width !== newRect.width;\n }\n JSCompiler_temp && (parentViewTransition.flags |= 4);\n nextMeasurement.abs\n ? (nextMeasurement = !previousMeasurement.abs)\n : ((previousMeasurement = previousMeasurement.rect),\n (nextMeasurement = nextMeasurement.rect),\n (nextMeasurement =\n previousMeasurement.height !== nextMeasurement.height ||\n previousMeasurement.width !== nextMeasurement.width));\n nextMeasurement && (parentViewTransition.flags |= 32);\n } else parentViewTransition.flags |= 32;\n 0 !== (parentViewTransition.flags & 4) &&\n ((nextMeasurement = instance),\n (previousMeasurement = className),\n (nextMeasurement.style.viewTransitionName =\n 0 === viewTransitionHostInstanceIdx\n ? name\n : name + \"_\" + viewTransitionHostInstanceIdx),\n null != previousMeasurement &&\n (nextMeasurement.style.viewTransitionClass = previousMeasurement));\n (inViewport && 0 !== (parentViewTransition.flags & 4)) ||\n ((nextMeasurement = getViewTransitionName(\n currentViewTransition.memoizedProps,\n currentViewTransition.stateNode\n )),\n null === viewTransitionCancelableChildren &&\n (viewTransitionCancelableChildren = []),\n viewTransitionCancelableChildren.push(\n instance,\n nextMeasurement,\n child.memoizedProps\n ));\n viewTransitionHostInstanceIdx++;\n } else if (22 !== child.tag || null === child.memoizedState)\n 30 === child.tag && stopAtNestedViewTransitions\n ? (parentViewTransition.flags |= child.flags & 32)\n : measureViewTransitionHostInstances(\n currentViewTransition,\n parentViewTransition,\n child.child,\n name,\n className,\n previousMeasurements,\n stopAtNestedViewTransitions\n ) && (inViewport = !0);\n child = child.sibling;\n }\n return inViewport;\n}\nfunction measureNestedViewTransitions(changedParent) {\n for (changedParent = changedParent.child; null !== changedParent; ) {\n if (30 === changedParent.tag) {\n var current = changedParent.alternate;\n if (null !== current) {\n var props = changedParent.memoizedProps,\n name = getViewTransitionName(props, changedParent.stateNode),\n className = getViewTransitionClassName(props.className, props.layout);\n viewTransitionHostInstanceIdx = 0;\n current = measureViewTransitionHostInstances(\n current,\n changedParent,\n changedParent.child,\n name,\n className,\n changedParent.memoizedState,\n !1\n );\n 0 !== (changedParent.flags & 4) &&\n current &&\n scheduleViewTransitionEvent(changedParent, props.onLayout);\n }\n } else\n 0 !== (changedParent.subtreeFlags & 33554432) &&\n measureNestedViewTransitions(changedParent);\n changedParent = changedParent.sibling;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$114) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$114\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {\n finishedRoot = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n finishedRoot = finishedWork.child.stateNode;\n break;\n case 1:\n finishedRoot = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(flags, finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 26:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((flags = finishedWork.memoizedState),\n null !== flags &&\n ((flags = flags.dehydrated),\n null !== flags &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(flags, finishedWork))));\n break;\n case 22:\n prevProps =\n null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!prevProps) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevProps;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n flags & 512 &&\n (\"manual\" === finishedWork.memoizedProps.mode\n ? safelyAttachRef(finishedWork, finishedWork.return)\n : safelyDetachRef(finishedWork, finishedWork.return));\n break;\n case 30:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber = deletedFiber.stateNode;\n for (\n nearestMountedAncestor = deletedFiber.attributes;\n nearestMountedAncestor.length;\n\n )\n deletedFiber.removeAttributeNode(nearestMountedAncestor[0]);\n detachDeletedInstance(deletedFiber);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParentIsContainer = hostParent;\n var prevHostParentIsContainer$122 = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParentIsContainer;\n hostParentIsContainer = prevHostParentIsContainer$122;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (finishedRoot = hostParent),\n (prevHostParent = deletedFiber.stateNode),\n 8 === finishedRoot.nodeType\n ? finishedRoot.parentNode.removeChild(prevHostParent)\n : finishedRoot.removeChild(prevHostParent),\n (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode),\n (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((nearestMountedAncestor = hostParent),\n (deletedFiber = deletedFiber.stateNode),\n 8 === nearestMountedAncestor.nodeType\n ? clearSuspenseBoundary(\n nearestMountedAncestor.parentNode,\n deletedFiber\n )\n : 1 === nearestMountedAncestor.nodeType &&\n clearSuspenseBoundary(nearestMountedAncestor, deletedFiber),\n retryIfBlockedOn(nearestMountedAncestor))\n : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n retryCache.has(wakeable) ||\n (retryCache.add(wakeable), wakeable.then(retry, retry));\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber, lanes) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13878)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0, lanes),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4)\n if (\n ((root = null !== current ? current.memoizedState : null),\n (flags = finishedWork.memoizedState),\n null === current)\n )\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n root = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n lanes = root.getElementsByTagName(\"title\")[0];\n if (\n !lanes ||\n lanes[internalHoistableMarker] ||\n lanes[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" === lanes.namespaceURI ||\n lanes.hasAttribute(\"itemprop\")\n )\n (lanes = root.createElement(flags)),\n root.head.insertBefore(\n lanes,\n root.querySelector(\"head > title\")\n );\n setInitialProperties(lanes, flags, current);\n lanes[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(lanes);\n flags = lanes;\n break a;\n case \"link\":\n if (\n (hoistableRoot = getHydratableHoistableCache(\n \"link\",\n \"href\",\n root\n ).get(flags + (current.href || \"\")))\n )\n for (var i = 0; i < hoistableRoot.length; i++)\n if (\n ((lanes = hoistableRoot[i]),\n lanes.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n lanes.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n lanes.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n lanes.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n hoistableRoot.splice(i, 1);\n break b;\n }\n lanes = root.createElement(flags);\n setInitialProperties(lanes, flags, current);\n root.head.appendChild(lanes);\n break;\n case \"meta\":\n if (\n (hoistableRoot = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n root\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < hoistableRoot.length; i++)\n if (\n ((lanes = hoistableRoot[i]),\n lanes.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n lanes.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n lanes.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n lanes.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n lanes.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n hoistableRoot.splice(i, 1);\n break b;\n }\n lanes = root.createElement(flags);\n setInitialProperties(lanes, flags, current);\n root.head.appendChild(lanes);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n lanes[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(lanes);\n flags = lanes;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n root !== flags\n ? (null === root\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : root.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 27:\n if (flags & 4 && null === finishedWork.alternate) {\n hoistableRoot = finishedWork.stateNode;\n i = finishedWork.memoizedProps;\n try {\n for (var node = hoistableRoot.firstChild; node; ) {\n var nextNode = node.nextSibling,\n nodeName = node.nodeName;\n node[internalHoistableMarker] ||\n \"HEAD\" === nodeName ||\n \"BODY\" === nodeName ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node.rel.toLowerCase()) ||\n hoistableRoot.removeChild(node);\n node = nextNode;\n }\n for (\n var type = finishedWork.type, attributes = hoistableRoot.attributes;\n attributes.length;\n\n )\n hoistableRoot.removeAttributeNode(attributes[0]);\n setInitialProperties(hoistableRoot, type, i);\n hoistableRoot[internalInstanceKey] = finishedWork;\n hoistableRoot[internalPropsKey] = i;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n root = finishedWork.stateNode;\n try {\n setTextContent(root, \"\"), (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((root = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n root,\n null !== current ? current.memoizedProps : root\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n (current.nodeValue = flags), (viewTransitionMutationContext = !0);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n node = null !== finishedWork.memoizedState;\n nextNode = null !== current && null !== current.memoizedState;\n nodeName = offscreenSubtreeIsHidden;\n type = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = nodeName || node;\n offscreenSubtreeWasHidden = type || nextNode;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n offscreenSubtreeWasHidden = type;\n offscreenSubtreeIsHidden = nodeName;\n commitReconciliationEffects(finishedWork);\n root = finishedWork.stateNode;\n root._current = finishedWork;\n root._visibility &= -3;\n root._visibility |= root._pendingVisibility & 2;\n if (\n flags & 8192 &&\n ((root._visibility = node\n ? root._visibility & -2\n : root._visibility | 1),\n node &&\n ((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),\n null === current ||\n nextNode ||\n root ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n null === finishedWork.memoizedProps ||\n \"manual\" !== finishedWork.memoizedProps.mode)\n )\n a: for (current = null, root = finishedWork; ; ) {\n if (5 === root.tag || 26 === root.tag || 27 === root.tag) {\n if (null === current) {\n lanes = current = root;\n try {\n if (((hoistableRoot = lanes.stateNode), node))\n (i = hoistableRoot.style),\n \"function\" === typeof i.setProperty\n ? i.setProperty(\"display\", \"none\", \"important\")\n : (i.display = \"none\");\n else {\n var instance = lanes.stateNode,\n styleProp = lanes.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n instance.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(lanes, lanes.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n lanes = root;\n try {\n lanes.stateNode.nodeValue = node ? \"\" : lanes.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(lanes, lanes.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags = viewTransitionMutationContext;\n viewTransitionMutationContext = !1;\n recursivelyTraverseMutationEffects(root, finishedWork, lanes);\n commitReconciliationEffects(finishedWork);\n (lanes & 335544192) === lanes &&\n null !== current &&\n viewTransitionMutationContext &&\n (finishedWork.flags |= 4);\n viewTransitionMutationContext = flags;\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork, lanes),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n if (27 !== finishedWork.tag) {\n a: {\n for (var parent = finishedWork.return; null !== parent; ) {\n if (isHostParent(parent)) {\n var JSCompiler_inline_result = parent;\n break a;\n }\n parent = parent.return;\n }\n throw Error(formatProdErrorMessage(160));\n }\n switch (JSCompiler_inline_result.tag) {\n case 27:\n var parent$jscomp$0 = JSCompiler_inline_result.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent$jscomp$0);\n break;\n case 5:\n var parent$116 = JSCompiler_inline_result.stateNode;\n JSCompiler_inline_result.flags & 32 &&\n (setTextContent(parent$116, \"\"),\n (JSCompiler_inline_result.flags &= -33));\n var before$117 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$117, parent$116);\n break;\n case 3:\n case 4:\n var parent$118 = JSCompiler_inline_result.stateNode.containerInfo,\n before$119 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$119,\n parent$118\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAfterMutationEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 9238)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitAfterMutationEffectsOnFiber(parentFiber, root),\n (parentFiber = parentFiber.sibling);\n else measureNestedViewTransitions(parentFiber);\n}\nfunction commitAfterMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate;\n if (null === current) commitEnterViewTransitions(finishedWork);\n else\n switch (finishedWork.tag) {\n case 3:\n viewTransitionContextChanged = !1;\n viewTransitionCancelableChildren = null;\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n if (!viewTransitionContextChanged) {\n finishedWork = viewTransitionCancelableChildren;\n viewTransitionCancelableChildren = null;\n if (null !== finishedWork)\n for (var i = 0; i < finishedWork.length; i += 3) {\n var instance = finishedWork[i],\n oldName = finishedWork[i + 1];\n restoreViewTransitionName(instance, finishedWork[i + 2]);\n instance = instance.ownerDocument.documentElement;\n null !== instance &&\n instance.animate(\n { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition-group(\" + oldName + \")\"\n }\n );\n }\n finishedWork = root.containerInfo;\n finishedWork =\n 9 === finishedWork.nodeType\n ? finishedWork.documentElement\n : finishedWork.ownerDocument.documentElement;\n null !== finishedWork &&\n \"\" === finishedWork.style.viewTransitionName &&\n ((finishedWork.style.viewTransitionName = \"none\"),\n finishedWork.animate(\n { opacity: [0, 0], pointerEvents: [\"none\", \"none\"] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition-group(root)\"\n }\n ),\n finishedWork.animate(\n { width: [0, 0], height: [0, 0] },\n {\n duration: 0,\n fill: \"forwards\",\n pseudoElement: \"::view-transition\"\n }\n ));\n }\n break;\n case 5:\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n (null !== current.memoizedState\n ? commitEnterViewTransitions(finishedWork)\n : recursivelyTraverseAfterMutationEffects(root, finishedWork));\n break;\n case 30:\n if (0 !== (finishedWork.subtreeFlags & 8246)) {\n i = 0 !== (finishedWork.flags & 4);\n oldName = viewTransitionContextChanged;\n instance = viewTransitionCancelableChildren;\n viewTransitionContextChanged = !1;\n viewTransitionCancelableChildren = null;\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n viewTransitionContextChanged && (finishedWork.flags |= 4);\n a: {\n root = finishedWork.memoizedProps;\n var updateClassName = getViewTransitionClassName(\n root.className,\n root.update\n ),\n layoutClassName = getViewTransitionClassName(\n root.className,\n root.update\n );\n if (\"none\" === updateClassName) {\n if (\"none\" === layoutClassName) {\n current = !1;\n break a;\n }\n finishedWork.flags &= -5;\n updateClassName = layoutClassName;\n } else if (0 === (finishedWork.flags & 4)) {\n if (\"none\" === layoutClassName) {\n viewTransitionHostInstanceIdx = 0;\n cancelViewTransitionHostInstances(\n current,\n finishedWork.child,\n !0\n );\n current = !1;\n break a;\n }\n updateClassName = layoutClassName;\n }\n layoutClassName = getViewTransitionName(\n root,\n finishedWork.stateNode\n );\n viewTransitionHostInstanceIdx = 0;\n root = current.memoizedState;\n current = measureViewTransitionHostInstances(\n current,\n finishedWork,\n finishedWork.child,\n layoutClassName,\n updateClassName,\n root,\n !0\n );\n viewTransitionHostInstanceIdx !==\n (null === root ? 0 : root.length) && (finishedWork.flags |= 32);\n }\n 0 !== (finishedWork.flags & 4) && current\n ? ((current = finishedWork.memoizedProps),\n scheduleViewTransitionEvent(\n finishedWork,\n i || viewTransitionContextChanged\n ? current.onUpdate\n : current.onLayout\n ),\n (viewTransitionCancelableChildren = instance))\n : null !== instance &&\n (instance.push.apply(instance, viewTransitionCancelableChildren),\n (viewTransitionCancelableChildren = instance));\n viewTransitionContextChanged =\n 0 !== (finishedWork.flags & 32) ? !0 : oldName;\n }\n break;\n default:\n recursivelyTraverseAfterMutationEffects(root, finishedWork);\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 26:\n case 27:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n safelyDetachRef(finishedWork, finishedWork.return);\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n safelyDetachRef(finishedWork, finishedWork.return);\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 26:\n case 27:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n var isViewTransitionEligible =\n (committedLanes & 335544192) === committedLanes;\n if (parentFiber.subtreeFlags & (isViewTransitionEligible ? 10262 : 10256))\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n else isViewTransitionEligible && restoreNestedViewTransitions(parentFiber);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var isViewTransitionEligible =\n (committedLanes & 335544192) === committedLanes;\n isViewTransitionEligible &&\n null === finishedWork.alternate &&\n null !== finishedWork.return &&\n null !== finishedWork.return.alternate &&\n restoreEnterViewTransitions(finishedWork);\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n isViewTransitionEligible &&\n ((finishedRoot = finishedRoot.containerInfo),\n (finishedRoot =\n 9 === finishedRoot.nodeType\n ? finishedRoot.documentElement\n : finishedRoot.ownerDocument.documentElement),\n null !== finishedRoot &&\n \"none\" === finishedRoot.style.viewTransitionName &&\n (finishedRoot.style.viewTransitionName = \"\"));\n flags & 2048 &&\n ((flags = null),\n null !== finishedWork.alternate &&\n (flags = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== flags &&\n (finishedWork.refCount++, null != flags && releaseCache(flags)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n flags.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? (isViewTransitionEligible &&\n null !== id &&\n null === id.memoizedState &&\n restoreExitViewTransitions(id),\n _finishedWork$memoize2._visibility & 4\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n ))\n : (isViewTransitionEligible &&\n null !== id &&\n null !== id.memoizedState &&\n restoreEnterViewTransitions(finishedWork),\n _finishedWork$memoize2._visibility & 4\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 4),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256)\n )));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n case 30:\n isViewTransitionEligible &&\n ((flags = finishedWork.alternate),\n null !== flags &&\n 0 !== (finishedWork.subtreeFlags & 8246) &&\n ((finishedWork.memoizedState = null),\n restoreViewTransitionOnHostInstances(flags.child, !0),\n restoreViewTransitionOnHostInstances(finishedWork.child, !0)));\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 4\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 4),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(fiber);\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(fiber);\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(fiber);\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(fiber),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(fiber));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 4 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -5),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 4 &&\n ((i._visibility &= -5),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\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;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_OFFSCREEN_TYPE:\n return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n case REACT_LEGACY_HIDDEN_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return (\n (type = createFiberImplClass(30, pendingProps, key, mode)),\n (type.elementType = REACT_VIEW_TRANSITION_TYPE),\n (type.lanes = lanes),\n (type.stateNode = { autoName: null, paired: null, ref: null }),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n pendingProps = createFiberImplClass(22, pendingProps, key, mode);\n pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n pendingProps.lanes = lanes;\n var primaryChildInstance = {\n _visibility: 1,\n _pendingVisibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null,\n _current: null,\n detach: function () {\n var fiber = primaryChildInstance._current;\n if (null === fiber) throw Error(formatProdErrorMessage(456));\n if (0 === (primaryChildInstance._pendingVisibility & 2)) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root &&\n ((primaryChildInstance._pendingVisibility |= 2),\n scheduleUpdateOnFiber(root, fiber, 2));\n }\n },\n attach: function () {\n var fiber = primaryChildInstance._current;\n if (null === fiber) throw Error(formatProdErrorMessage(456));\n if (0 !== (primaryChildInstance._pendingVisibility & 2)) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root &&\n ((primaryChildInstance._pendingVisibility &= -3),\n scheduleUpdateOnFiber(root, fiber, 2));\n }\n }\n };\n pendingProps.stateNode = primaryChildInstance;\n return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(formatProdErrorMessage(418, \"\"));\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n track(instance);\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children),\n track(instance);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 3:\n case 27:\n rootOrSingletonContext = !0;\n return;\n case 5:\n case 13:\n rootOrSingletonContext = !1;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var shouldClear = !1,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== fiber.tag && 27 !== fiber.tag)) {\n if ((JSCompiler_temp = 5 === fiber.tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && (shouldClear = !0);\n shouldClear && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === fiber.tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n a: {\n fiber = fiber.nextSibling;\n for (shouldClear = 0; fiber; ) {\n if (8 === fiber.nodeType)\n if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n if (0 === shouldClear) {\n nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n break a;\n }\n shouldClear--;\n } else\n (\"$\" !== JSCompiler_temp &&\n \"$!\" !== JSCompiler_temp &&\n \"$?\" !== JSCompiler_temp) ||\n shouldClear++;\n fiber = fiber.nextSibling;\n }\n nextHydratableInstance = null;\n }\n } else\n nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null;\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar globalClientIdCounter = 0;\nfunction getViewTransitionName(props, instance) {\n return null != props.name && \"auto\" !== props.name\n ? props.name\n : instance.autoName;\n}\nfunction getClassNameByType(classByType) {\n if (null == classByType || \"string\" === typeof classByType)\n return classByType;\n var className = null,\n activeTypes = pendingTransitionTypes;\n if (null !== activeTypes)\n for (var i = 0; i < activeTypes.length; i++) {\n var match = classByType[activeTypes[i]];\n if (null != match) {\n if (\"none\" === match) return \"none\";\n className = null == className ? match : className + (\" \" + match);\n }\n }\n return null == className ? classByType.default : className;\n}\nfunction getViewTransitionClassName(defaultClass, eventClass) {\n defaultClass = getClassNameByType(defaultClass);\n eventClass = getClassNameByType(eventClass);\n return null == eventClass\n ? defaultClass\n : \"none\" === eventClass\n ? eventClass\n : null != defaultClass && \"none\" !== defaultClass\n ? defaultClass + \" \" + eventClass\n : eventClass;\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n resource = suspenseHandlerStackCursor.current;\n if (\n null !== resource &&\n ((workInProgressRootRenderLanes & 4194176) ===\n workInProgressRootRenderLanes\n ? null !== shellBoundary\n : ((workInProgressRootRenderLanes & 62914560) !==\n workInProgressRootRenderLanes &&\n 0 === (workInProgressRootRenderLanes & 536870912)) ||\n resource !== shellBoundary)\n )\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n workInProgress.flags |= 8192;\n }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$135 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$135 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$135\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$135.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$136 = completedWork.child; null !== child$136; )\n (newChildLanes |= child$136.lanes | child$136.childLanes),\n (subtreeFlags |= child$136.subtreeFlags & 65011712),\n (subtreeFlags |= child$136.flags & 65011712),\n (child$136.return = completedWork),\n (child$136 = child$136.sibling);\n else\n for (child$136 = completedWork.child; null !== child$136; )\n (newChildLanes |= child$136.lanes | child$136.childLanes),\n (subtreeFlags |= child$136.subtreeFlags),\n (subtreeFlags |= child$136.flags),\n (child$136.return = completedWork),\n (child$136 = child$136.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction trackReappearingViewTransitions(workInProgress) {\n if (0 !== (workInProgress.subtreeFlags & 2097152))\n for (workInProgress = workInProgress.child; null !== workInProgress; ) {\n if (22 !== workInProgress.tag || null !== workInProgress.memoizedState) {\n if (\n 30 === workInProgress.tag &&\n 0 !== (workInProgress.flags & 2097152)\n ) {\n var props = workInProgress.memoizedProps;\n null != props.name &&\n \"auto\" !== props.name &&\n trackAppearingViewTransition(workInProgress.stateNode, props.name);\n }\n trackReappearingViewTransitions(workInProgress);\n }\n workInProgress = workInProgress.sibling;\n }\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n return (\n (renderLanes = workInProgress.memoizedState),\n null === current\n ? (markUpdate(workInProgress),\n null !== renderLanes\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)))\n : renderLanes\n ? renderLanes !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)),\n null\n );\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n var type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n case 5:\n popHostContext(workInProgress);\n renderLanes = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n return null;\n }\n current = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, current);\n else {\n type = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (current) {\n case 1:\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case 2:\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n default:\n switch (renderLanes) {\n case \"svg\":\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case \"math\":\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n case \"script\":\n current = type.createElement(\"div\");\n current.innerHTML = \"<script>\\x3c/script>\";\n current = current.removeChild(current.firstChild);\n break;\n case \"select\":\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(\"select\", { is: newProps.is })\n : type.createElement(\"select\");\n newProps.multiple\n ? (current.multiple = !0)\n : newProps.size && (current.size = newProps.size);\n break;\n default:\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(renderLanes, { is: newProps.is })\n : type.createElement(renderLanes);\n }\n }\n current[internalInstanceKey] = workInProgress;\n current[internalPropsKey] = newProps;\n a: for (type = workInProgress.child; null !== type; ) {\n if (5 === type.tag || 6 === type.tag)\n current.appendChild(type.stateNode);\n else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n type.child.return = type;\n type = type.child;\n continue;\n }\n if (type === workInProgress) break a;\n for (; null === type.sibling; ) {\n if (null === type.return || type.return === workInProgress)\n break a;\n type = type.return;\n }\n type.sibling.return = type.return;\n type = type.sibling;\n }\n workInProgress.stateNode = current;\n a: switch (\n (setInitialProperties(current, renderLanes, newProps), renderLanes)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n current = !!newProps.autoFocus;\n break a;\n case \"img\":\n current = !0;\n break a;\n default:\n current = !1;\n }\n current && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n workInProgress.subtreeFlags &= -33554433;\n workInProgress.flags &= -16777217;\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n if (renderLanes) {\n newProps = workInProgress.child;\n type = null;\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool);\n var cache$149 = null;\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (cache$149 = newProps.memoizedState.cachePool.pool);\n cache$149 !== type && (newProps.flags |= 2048);\n }\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n type = workInProgress.memoizedState;\n if (null === type) return bubbleProperties(workInProgress), null;\n newProps = 0 !== (workInProgress.flags & 128);\n cache$149 = type.rendering;\n if (null === cache$149)\n if (newProps) cutOffTailIfNeeded(type, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n cache$149 = findFirstSuspended(current);\n if (null !== cache$149) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(type, !1);\n current = cache$149.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== type.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!newProps)\n if (((current = findFirstSuspended(cache$149)), null !== current)) {\n if (\n ((workInProgress.flags |= 128),\n (newProps = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(type, !0),\n null === type.tail &&\n \"hidden\" === type.tailMode &&\n !cache$149.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - type.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n type.isBackwards\n ? ((cache$149.sibling = workInProgress.child),\n (workInProgress.child = cache$149))\n : ((current = type.last),\n null !== current\n ? (current.sibling = cache$149)\n : (workInProgress.child = cache$149),\n (type.last = cache$149));\n }\n if (null !== type.tail)\n return (\n (workInProgress = type.tail),\n (type.rendering = workInProgress),\n (type.tail = workInProgress.sibling),\n (type.renderingStartTime = now()),\n (workInProgress.sibling = null),\n (current = suspenseStackCursor.current),\n push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n workInProgress\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n ((workInProgress.flags |= 8192),\n newProps || trackReappearingViewTransitions(workInProgress))\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return (\n (workInProgress.flags |= 33554432),\n bubbleProperties(workInProgress),\n null\n );\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressAppearingViewTransitions = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n pendingViewTransitionEvents = null,\n pendingTransitionTypes = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n if (null !== ReactSharedInternals.T) {\n var actionScopeLane = currentEntangledLane;\n return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n }\n return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n 0 === workInProgressDeferredLane &&\n (workInProgressDeferredLane =\n 0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n ? claimNextTransitionLane()\n : 536870912);\n var suspenseHandler = suspenseHandlerStackCursor.current;\n null !== suspenseHandler && (suspenseHandler.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleViewTransitionEvent(fiber, callback) {\n if (null != callback) {\n var state = fiber.stateNode,\n instance = state.ref;\n null === instance &&\n (instance = state.ref =\n createViewTransitionInstance(\n getViewTransitionName(fiber.memoizedProps, state)\n ));\n null === pendingViewTransitionEvents && (pendingViewTransitionEvents = []);\n pendingViewTransitionEvents.push(callback.bind(null, instance));\n }\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 60) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194176) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressAppearingViewTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 2,\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressAppearingViewTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 0,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n appearingViewTransitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n var subtreeFlags = finishedWork.subtreeFlags;\n suspendedCommitReason = (lanes & 335544192) === lanes;\n subtreeFlags = subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408);\n if (suspendedCommitReason || subtreeFlags) {\n suspendedState = { stylesheets: null, count: 0, unsuspend: noop };\n subtreeFlags && accumulateSuspenseyCommitOnFiber(finishedWork);\n if (suspendedCommitReason) {\n subtreeFlags = root.containerInfo;\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n suspendedCommitReason = suspendedState;\n subtreeFlags = (\n 9 === subtreeFlags.nodeType ? subtreeFlags : subtreeFlags.ownerDocument\n ).__reactViewTransition;\n null != subtreeFlags &&\n (suspendedCommitReason.count++,\n (suspendedCommitReason = onUnsuspend.bind(suspendedCommitReason)),\n subtreeFlags.finished.then(\n suspendedCommitReason,\n suspendedCommitReason\n ));\n }\n suspendedCommitReason = waitForCommitToBeReady();\n if (null !== suspendedCommitReason) {\n root.cancelPendingCommit = suspendedCommitReason(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n appearingViewTransitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n 1,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n appearingViewTransitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$4 = 31 - clz32(lanes),\n lane = 1 << index$4;\n didAttemptEntireTree[index$4] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState = null),\n (thenableIndexCounter = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n workInProgressAppearingViewTransitions = null;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$2 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$2;\n lanes |= root[index$2];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194176) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction queueConcurrentError(error) {\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [error])\n : workInProgressRootConcurrentErrors.push(error);\n}\nfunction trackAppearingViewTransition(instance, name) {\n if (null === workInProgressAppearingViewTransitions) {\n if (\n (workInProgressRootRenderLanes & 335544192) !==\n workInProgressRootRenderLanes\n )\n return;\n workInProgressAppearingViewTransitions = new Map();\n }\n instance.paired = null;\n workInProgressAppearingViewTransitions.set(name, instance);\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$168) {\n handleThrow(root, thrownValue$168);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (resource ? preloadResource(resource) : 1) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$170) {\n handleThrow(root, thrownValue$170);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState = null;\n thenableIndexCounter = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n appearingViewTransitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n pendingViewTransitionEvents = null;\n (lanes & 335544192) === lanes\n ? ((pendingTransitionTypes = ReactSharedInternals.V),\n (ReactSharedInternals.V = null),\n (recoverableErrors = 10262))\n : ((pendingTransitionTypes = null), (recoverableErrors = 10256));\n 0 !== (finishedWork.subtreeFlags & recoverableErrors) ||\n 0 !== (finishedWork.flags & recoverableErrors)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects(!0);\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(\n root,\n finishedWork,\n lanes,\n appearingViewTransitions\n );\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n (shouldStartViewTransition &&\n startViewTransition(\n root.containerInfo,\n pendingTransitionTypes,\n flushMutationEffects,\n flushLayoutEffects,\n flushAfterMutationEffects,\n flushSpawnedWork,\n flushPassiveEffects\n )) ||\n (flushMutationEffects(), flushLayoutEffects(), flushSpawnedWork());\n }\n}\nfunction flushAfterMutationEffects() {\n 3 === pendingEffectsStatus &&\n ((pendingEffectsStatus = 0),\n commitAfterMutationEffectsOnFiber(pendingFinishedWork, pendingEffectsRoot),\n (pendingEffectsStatus = 4));\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root, lanes);\n lanes = selectionInformation;\n var curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = lanes.focusedElem,\n priorSelectionRange = lanes.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors,\n passiveSubtreeMask = (lanes & 335544192) === lanes ? 10262 : 10256;\n 0 !== (finishedWork.subtreeFlags & passiveSubtreeMask) ||\n 0 !== (finishedWork.flags & passiveSubtreeMask)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n passiveSubtreeMask = root.pendingLanes;\n 0 === passiveSubtreeMask && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n passiveSubtreeMask = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = passiveSubtreeMask);\n }\n }\n recoverableErrors = pendingViewTransitionEvents;\n onRecoverableError = pendingTransitionTypes;\n pendingTransitionTypes = null;\n if (null !== recoverableErrors)\n for (\n pendingViewTransitionEvents = null,\n null === onRecoverableError && (onRecoverableError = []),\n recoverableError = 0;\n recoverableError < recoverableErrors.length;\n recoverableError++\n )\n (0, recoverableErrors[recoverableError])(onRecoverableError);\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n passiveSubtreeMask = root.pendingLanes;\n 0 !== (lanes & 4194218) && 0 !== (passiveSubtreeMask & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$176 = firstScheduledRoot; null !== root$176; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$176.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$176.suspendedLanes,\n pingedLanes = root$176.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326677\n ? (JSCompiler_inline_result & 201326677) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$176, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$176,\n root$176 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$176.cancelPendingCommit ||\n -1 !== root$176.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$176, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$176, JSCompiler_inline_result));\n root$176 = root$176.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n (shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane),\n (currentEventTransitionLane = 0));\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$3 = 31 - clz32(lanes),\n lane = 1 << index$3,\n expirationTime = expirationTimes[index$3];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n 0 === currentEventTransitionLane &&\n (currentEventTransitionLane = claimNextTransitionLane());\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1552 = 0;\n i$jscomp$inline_1552 < simpleEventPluginEvents.length;\n i$jscomp$inline_1552++\n) {\n var eventName$jscomp$inline_1553 =\n simpleEventPluginEvents[i$jscomp$inline_1552],\n domEventName$jscomp$inline_1554 =\n eventName$jscomp$inline_1553.toLowerCase(),\n capitalizedEvent$jscomp$inline_1555 =\n eventName$jscomp$inline_1553[0].toUpperCase() +\n eventName$jscomp$inline_1553.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1554,\n \"on\" + capitalizedEvent$jscomp$inline_1555\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (\n container === targetContainer ||\n (8 === container.nodeType && container.parentNode === targetContainer)\n )\n break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (3 === grandTag || 4 === grandTag)\n if (\n ((grandTag = nodeTag.stateNode.containerInfo),\n grandTag === targetContainer ||\n (8 === grandTag.nodeType &&\n grandTag.parentNode === targetContainer))\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\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 case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\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 case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = SyntheticEventCtor;\n reactEventName = reactEventType;\n instance = 0;\n for (\n lastHostComponent = inCapturePhase;\n lastHostComponent;\n lastHostComponent = getParent(lastHostComponent)\n )\n instance++;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = getParent(_instance)\n )\n lastHostComponent++;\n for (; 0 < instance - lastHostComponent; )\n (inCapturePhase = getParent(inCapturePhase)), instance--;\n for (; 0 < lastHostComponent - instance; )\n (reactEventName = getParent(reactEventName)),\n lastHostComponent--;\n for (; instance--; ) {\n if (\n inCapturePhase === reactEventName ||\n (null !== reactEventName &&\n inCapturePhase === reactEventName.alternate)\n )\n break b;\n inCapturePhase = getParent(inCapturePhase);\n reactEventName = getParent(reactEventName);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n targetFiber = targetFiber.return;\n }\n return listeners;\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n if (\"string\" === typeof value)\n \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value);\n else if (\"number\" === typeof value || \"bigint\" === typeof value)\n \"body\" !== tag && setTextContent(domElement, \"\" + value);\n else return;\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n return;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\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 );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\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 if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n return;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n return;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n return;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\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 null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\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 value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n return;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n else return;\n }\n viewTransitionMutationContext = !0;\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n return;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n if (\"string\" === typeof value) setTextContent(domElement, value);\n else if (\"number\" === typeof value || \"bigint\" === typeof value)\n setTextContent(domElement, \"\" + value);\n else return;\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n return;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n return;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n return;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n return;\n case \"innerText\":\n case \"textContent\":\n return;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n viewTransitionMutationContext = !0;\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n return;\n }\n viewTransitionMutationContext = !0;\n}\nfunction setInitialProperties(domElement, tag, props) {\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 break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$190 = props[hasSrc];\n if (null != propValue$190)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$190;\n break;\n case \"type\":\n propValue = propValue$190;\n break;\n case \"checked\":\n checked = propValue$190;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$190;\n break;\n case \"value\":\n propKey = propValue$190;\n break;\n case \"defaultValue\":\n defaultValue = propValue$190;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$190)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$190, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n track(domElement);\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n track(domElement);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\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 for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$190 in props)\n props.hasOwnProperty(propValue$190) &&\n ((hasSrc = props[propValue$190]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$190,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\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 break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$207 in nextProps) {\n var propKey = nextProps[propKey$207];\n lastProp = lastProps[propKey$207];\n if (\n nextProps.hasOwnProperty(propKey$207) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$207) {\n case \"type\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n type = propKey;\n break;\n case \"name\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n name = propKey;\n break;\n case \"checked\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n checked = propKey;\n break;\n case \"defaultChecked\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n defaultChecked = propKey;\n break;\n case \"value\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n value = propKey;\n break;\n case \"defaultValue\":\n propKey !== lastProp && (viewTransitionMutationContext = !0);\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$207,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$207 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n propKey$207 = type;\n break;\n case \"defaultValue\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0);\n defaultValue = type;\n break;\n case \"multiple\":\n type !== lastDefaultValue && (viewTransitionMutationContext = !0),\n (value = type);\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$207\n ? updateOptions(domElement, !!lastProps, propKey$207, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$207 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n name !== type && (viewTransitionMutationContext = !0);\n propKey$207 = name;\n break;\n case \"defaultValue\":\n name !== type && (viewTransitionMutationContext = !0);\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$207, propKey);\n return;\n case \"option\":\n for (var propKey$223 in lastProps)\n if (\n ((propKey$207 = lastProps[propKey$223]),\n lastProps.hasOwnProperty(propKey$223) &&\n null != propKey$207 &&\n !nextProps.hasOwnProperty(propKey$223))\n )\n switch (propKey$223) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$223,\n null,\n nextProps,\n propKey$207\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$207 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$207 !== propKey &&\n (null != propKey$207 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n propKey$207 !== propKey && (viewTransitionMutationContext = !0);\n domElement.selected =\n propKey$207 &&\n \"function\" !== typeof propKey$207 &&\n \"symbol\" !== typeof propKey$207;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$207,\n nextProps,\n propKey\n );\n }\n return;\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 for (var propKey$228 in lastProps)\n (propKey$207 = lastProps[propKey$228]),\n lastProps.hasOwnProperty(propKey$228) &&\n null != propKey$207 &&\n !nextProps.hasOwnProperty(propKey$228) &&\n setProp(domElement, tag, propKey$228, null, nextProps, propKey$207);\n for (checked in nextProps)\n if (\n ((propKey$207 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$207 !== propKey &&\n (null != propKey$207 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$207)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$207,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$233 in lastProps)\n (propKey$207 = lastProps[propKey$233]),\n lastProps.hasOwnProperty(propKey$233) &&\n void 0 !== propKey$207 &&\n !nextProps.hasOwnProperty(propKey$233) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$233,\n void 0,\n nextProps,\n propKey$207\n );\n for (defaultChecked in nextProps)\n (propKey$207 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$207 === propKey ||\n (void 0 === propKey$207 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$207,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$238 in lastProps)\n (propKey$207 = lastProps[propKey$238]),\n lastProps.hasOwnProperty(propKey$238) &&\n null != propKey$207 &&\n !nextProps.hasOwnProperty(propKey$238) &&\n setProp(domElement, tag, propKey$238, null, nextProps, propKey$207);\n for (lastProp in nextProps)\n (propKey$207 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$207 === propKey ||\n (null == propKey$207 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$207, nextProps, propKey);\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n var node = suspenseInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(suspenseInstance);\n return;\n }\n depth--;\n } else (\"$\" !== node && \"$?\" !== node && \"$!\" !== node) || depth++;\n node = nextNode;\n } while (node);\n retryIfBlockedOn(suspenseInstance);\n}\nfunction restoreViewTransitionName(instance, props) {\n props = props.style;\n var viewTransitionName =\n null != props\n ? props.hasOwnProperty(\"viewTransitionName\")\n ? props.viewTransitionName\n : props.hasOwnProperty(\"view-transition-name\")\n ? props[\"view-transition-name\"]\n : null\n : null;\n instance.style.viewTransitionName =\n null == viewTransitionName || \"boolean\" === typeof viewTransitionName\n ? \"\"\n : (\"\" + viewTransitionName).trim();\n props =\n null != props\n ? props.hasOwnProperty(\"viewTransitionClass\")\n ? props.viewTransitionClass\n : props.hasOwnProperty(\"view-transition-class\")\n ? props[\"view-transition-class\"]\n : null\n : null;\n instance.style.viewTransitionClass =\n null == props || \"boolean\" === typeof props ? \"\" : (\"\" + props).trim();\n}\nfunction measureInstance(instance) {\n var ownerWindow = instance.ownerDocument.defaultView,\n rect = instance.getBoundingClientRect();\n instance = getComputedStyle(instance);\n return {\n rect: rect,\n abs: \"absolute\" === instance.position || \"fixed\" === instance.position,\n clip:\n \"none\" !== instance.clipPath ||\n \"visible\" !== instance.overflow ||\n \"none\" !== instance.filter ||\n \"none\" !== instance.mask ||\n \"none\" !== instance.mask ||\n \"0px\" !== instance.borderRadius,\n view:\n 0 <= rect.bottom &&\n 0 <= rect.right &&\n rect.top <= ownerWindow.innerHeight &&\n rect.left <= ownerWindow.innerWidth\n };\n}\nfunction startViewTransition(\n rootContainer,\n transitionTypes,\n mutationCallback,\n layoutCallback,\n afterMutationCallback,\n spawnedWorkCallback,\n passiveCallback\n) {\n var ownerDocument =\n 9 === rootContainer.nodeType ? rootContainer : rootContainer.ownerDocument;\n try {\n var transition = ownerDocument.startViewTransition({\n update: function () {\n var ownerWindow = ownerDocument.defaultView;\n ownerWindow =\n ownerWindow.navigation && ownerWindow.navigation.transition;\n var previousFontLoadingStatus = ownerDocument.fonts.status;\n mutationCallback();\n if (\n \"loaded\" === previousFontLoadingStatus &&\n (ownerDocument.documentElement.clientHeight,\n \"loading\" === ownerDocument.fonts.status)\n )\n return (\n (previousFontLoadingStatus = Promise.race([\n ownerDocument.fonts.ready,\n new Promise(function (resolve) {\n return setTimeout(resolve, 500);\n })\n ]).then(layoutCallback, layoutCallback)),\n (ownerWindow\n ? Promise.allSettled([\n ownerWindow.finished,\n previousFontLoadingStatus\n ])\n : previousFontLoadingStatus\n ).then(afterMutationCallback, afterMutationCallback)\n );\n layoutCallback();\n if (ownerWindow)\n return ownerWindow.finished.then(\n afterMutationCallback,\n afterMutationCallback\n );\n afterMutationCallback();\n },\n types: transitionTypes\n });\n ownerDocument.__reactViewTransition = transition;\n transition.ready.then(spawnedWorkCallback, spawnedWorkCallback);\n transition.finished.then(function () {\n ownerDocument.__reactViewTransition = null;\n passiveCallback();\n });\n return !0;\n } catch (x) {\n return !1;\n }\n}\nfunction ViewTransitionPseudoElement(pseudo, name) {\n this._scope = document.documentElement;\n this._selector = \"::view-transition-\" + pseudo + \"(\" + name + \")\";\n}\nViewTransitionPseudoElement.prototype.animate = function (keyframes, options) {\n options =\n \"number\" === typeof options ? { duration: options } : assign({}, options);\n options.pseudoElement = this._selector;\n return this._scope.animate(keyframes, options);\n};\nViewTransitionPseudoElement.prototype.getAnimations = function () {\n for (\n var scope = this._scope,\n selector = this._selector,\n animations = scope.getAnimations({ subtree: !0 }),\n result = [],\n i = 0;\n i < animations.length;\n i++\n ) {\n var effect = animations[i].effect;\n null !== effect &&\n effect.target === scope &&\n effect.pseudoElement === selector &&\n result.push(animations[i]);\n }\n return result;\n};\nfunction createViewTransitionInstance(name) {\n return {\n name: name,\n group: new ViewTransitionPseudoElement(\"group\", name),\n imagePair: new ViewTransitionPseudoElement(\"image-pair\", name),\n old: new ViewTransitionPseudoElement(\"old\", name),\n new: new ViewTransitionPseudoElement(\"new\", name)\n };\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType) return null;\n }\n }\n return node;\n}\nfunction getParentSuspenseInstance(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n if (0 === depth) return targetInstance;\n depth--;\n } else \"/$\" === data && depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$246 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$247 = styles$246.get(type);\n resource$247 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$247 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$246.set(type, resource$247),\n (styles$246 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$246._p &&\n ((resource$247.instance = styles$246),\n (resource$247.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$246 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$247.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$247;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$252 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$252)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$252),\n markNodeAsHoistable(instance$252),\n instance$252\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$252 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$252);\n var linkInstance = instance$252;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$252, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$252, props.precedence, hoistableRoot);\n return (resource.instance = instance$252);\n case \"script\":\n instance$252 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$252)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$252)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nfunction waitForCommitToBeReady() {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4);\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count)\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\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 \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\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 2;\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 \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n if (13 === nearestMounted.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n null !== root &&\n scheduleUpdateOnFiber(root, nearestMounted, lane);\n markRetryLaneIfNotHydrated(nearestMounted, lane);\n }\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1799 = React.version;\nif (\n \"19.1.0-experimental-b0000195-20250122\" !==\n isomorphicReactPackageVersion$jscomp$inline_1799\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1799,\n \"19.1.0-experimental-b0000195-20250122\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2330 = {\n bundleType: 0,\n version: \"19.1.0-experimental-b0000195-20250122\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.1.0-experimental-b0000195-20250122\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2331 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2331.isDisabled &&\n hook$jscomp$inline_2331.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2331.inject(\n internals$jscomp$inline_2330\n )),\n (injectedHook = hook$jscomp$inline_2331);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n null\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(\n 8 === container.nodeType ? container.parentNode : container\n );\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.0-experimental-b0000195-20250122\";\n","/**\n * @license React\n * react-dom.production.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\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.0-experimental-b0000195-20250122\";\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-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\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.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-is.production.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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n type === REACT_VIEW_TRANSITION_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react.production.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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_POSTPONE_TYPE = Symbol.for(\"react.postpone\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nfunction useOptimistic(passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\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.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.act = function () {\n throw Error(\"act(...) is not supported in production builds of React.\");\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.captureOwnerStack = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.experimental_useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.experimental_useOptimistic = function (passthrough, reducer) {\n return useOptimistic(passthrough, reducer);\n};\nexports.experimental_useResourceEffect = void 0;\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_Activity = REACT_OFFSCREEN_TYPE;\nexports.unstable_SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.unstable_ViewTransition = REACT_VIEW_TRANSITION_TYPE;\nexports.unstable_addTransitionType = function (type) {\n var pendingTransitionTypes = ReactSharedInternals.V;\n null === pendingTransitionTypes\n ? (ReactSharedInternals.V = [type])\n : -1 === pendingTransitionTypes.indexOf(type) &&\n pendingTransitionTypes.push(type);\n};\nexports.unstable_getCacheForType = function (resourceType) {\n var dispatcher = ReactSharedInternals.A;\n return dispatcher ? dispatcher.getCacheForType(resourceType) : resourceType();\n};\nexports.unstable_postpone = function (reason) {\n reason = Error(reason);\n reason.$$typeof = REACT_POSTPONE_TYPE;\n throw reason;\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = useOptimistic;\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0-experimental-b0000195-20250122\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * scheduler.production.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\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction performWorkUntilDeadline() {\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (currentTask = peek(taskQueue); null !== currentTask; ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n if (\n null === currentTask ||\n currentTask.expirationTime > currentTime\n )\n break;\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = function () {\n return exports.unstable_now() - startTime < frameInterval ? !1 : !0;\n};\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.importFromOldV8CPUProfile = exports.importFromChromeCPUProfile = exports.importFromChromeTimeline = exports.isChromeTimeline = void 0;\nconst profile_1 = require(\"../lib/profile\");\nconst utils_1 = require(\"../lib/utils\");\nconst value_formatters_1 = require(\"../lib/value-formatters\");\nconst v8cpuFormatter_1 = require(\"./v8cpuFormatter\");\nfunction isChromeTimeline(rawProfile) {\n if (!Array.isArray(rawProfile))\n return false;\n if (rawProfile.length < 1)\n return false;\n const first = rawProfile[0];\n if (!('pid' in first && 'tid' in first && 'ph' in first && 'cat' in first))\n return false;\n if (!rawProfile.find(e => e.name === 'CpuProfile' || e.name === 'Profile' || e.name === 'ProfileChunk'))\n return false;\n return true;\n}\nexports.isChromeTimeline = isChromeTimeline;\nfunction importFromChromeTimeline(events, fileName) {\n // It seems like sometimes Chrome timeline files contain multiple CpuProfiles?\n // For now, choose the first one in the list.\n const cpuProfileByID = new Map();\n // Maps profile IDs (like \"0x3\") to pid/tid pairs formatted as `${pid}:${tid}`\n const pidTidById = new Map();\n // Maps pid/tid pairs to thread names\n const threadNameByPidTid = new Map();\n // The events aren't necessarily recorded in chronological order. Sort them so\n // that they are.\n utils_1.sortBy(events, e => e.ts);\n for (let event of events) {\n if (event.name === 'CpuProfile') {\n const pidTid = `${event.pid}:${event.tid}`;\n const id = event.id || pidTid;\n cpuProfileByID.set(id, event.args.data.cpuProfile);\n pidTidById.set(id, pidTid);\n }\n if (event.name === 'Profile') {\n const pidTid = `${event.pid}:${event.tid}`;\n cpuProfileByID.set(event.id || pidTid, Object.assign({ startTime: 0, endTime: 0, nodes: [], samples: [], timeDeltas: [] }, event.args.data));\n if (event.id) {\n pidTidById.set(event.id, `${event.pid}:${event.tid}`);\n }\n }\n if (event.name === 'thread_name') {\n threadNameByPidTid.set(`${event.pid}:${event.tid}`, event.args.name);\n }\n if (event.name === 'ProfileChunk') {\n const pidTid = `${event.pid}:${event.tid}`;\n const cpuProfile = cpuProfileByID.get(event.id || pidTid);\n if (cpuProfile) {\n const chunk = event.args.data;\n if (chunk.cpuProfile) {\n if (chunk.cpuProfile.nodes) {\n cpuProfile.nodes = cpuProfile.nodes.concat(chunk.cpuProfile.nodes);\n }\n if (chunk.cpuProfile.samples) {\n cpuProfile.samples = cpuProfile.samples.concat(chunk.cpuProfile.samples);\n }\n }\n if (chunk.timeDeltas) {\n cpuProfile.timeDeltas = cpuProfile.timeDeltas.concat(chunk.timeDeltas);\n }\n if (chunk.startTime != null) {\n cpuProfile.startTime = chunk.startTime;\n }\n if (chunk.endTime != null) {\n cpuProfile.endTime = chunk.endTime;\n }\n }\n else {\n console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${event.id || pidTid}`);\n }\n }\n }\n if (cpuProfileByID.size > 0) {\n const profiles = [];\n let indexToView = 0;\n utils_1.itForEach(cpuProfileByID.keys(), profileId => {\n let threadName = null;\n let pidTid = pidTidById.get(profileId);\n if (pidTid) {\n threadName = threadNameByPidTid.get(pidTid) || null;\n if (threadName) {\n }\n }\n const profile = importFromChromeCPUProfile(cpuProfileByID.get(profileId));\n if (threadName && cpuProfileByID.size > 1) {\n profile.setName(`${fileName} - ${threadName}`);\n if (threadName === 'CrRendererMain') {\n indexToView = profiles.length;\n }\n }\n else {\n profile.setName(`${fileName}`);\n }\n profiles.push(profile);\n });\n return { name: fileName, indexToView, profiles };\n }\n else {\n throw new Error('Could not find CPU profile in Timeline');\n }\n}\nexports.importFromChromeTimeline = importFromChromeTimeline;\nconst callFrameToFrameInfo = new Map();\nfunction frameInfoForCallFrame(callFrame) {\n return utils_1.getOrInsert(callFrameToFrameInfo, callFrame, callFrame => {\n const name = callFrame.functionName || '(anonymous)';\n const file = callFrame.url;\n const line = callFrame.lineNumber;\n const col = callFrame.columnNumber;\n return {\n key: `${name}:${file}:${line}:${col}`,\n name,\n file,\n line,\n col,\n };\n });\n}\nfunction shouldIgnoreFunction(callFrame) {\n const { functionName, url } = callFrame;\n if (url === 'native dummy.js') {\n // I'm not really sure what this is about, but this seems to be used\n // as a way of avoiding edge cases in V8's implementation.\n // See: https://github.com/v8/v8/blob/b8626ca4/tools/js2c.py#L419-L424\n return true;\n }\n return functionName === '(root)' || functionName === '(idle)';\n}\nfunction shouldPlaceOnTopOfPreviousStack(functionName) {\n return functionName === '(garbage collector)' || functionName === '(program)';\n}\nfunction importFromChromeCPUProfile(chromeProfile) {\n const profile = new profile_1.CallTreeProfileBuilder(chromeProfile.endTime - chromeProfile.startTime);\n const nodeById = new Map();\n for (let node of chromeProfile.nodes) {\n nodeById.set(node.id, node);\n }\n for (let node of chromeProfile.nodes) {\n if (typeof node.parent === 'number') {\n node.parent = nodeById.get(node.parent);\n }\n if (!node.children)\n continue;\n for (let childId of node.children) {\n const child = nodeById.get(childId);\n if (!child)\n continue;\n child.parent = node;\n }\n }\n const samples = [];\n const sampleTimes = [];\n // The first delta is relative to the profile startTime.\n // Ref: https://github.com/v8/v8/blob/44bd8fd7/src/inspector/js_protocol.json#L1485\n let elapsed = chromeProfile.timeDeltas[0];\n // Prevents negative time deltas from causing bad data. See\n // https://github.com/jlfwong/speedscope/pull/305 for details.\n let lastValidElapsed = elapsed;\n let lastNodeId = NaN;\n // The chrome CPU profile format doesn't collapse identical samples. We'll do that\n // here to save a ton of work later doing mergers.\n for (let i = 0; i < chromeProfile.samples.length; i++) {\n const nodeId = chromeProfile.samples[i];\n if (nodeId != lastNodeId) {\n samples.push(nodeId);\n if (elapsed < lastValidElapsed) {\n sampleTimes.push(lastValidElapsed);\n }\n else {\n sampleTimes.push(elapsed);\n lastValidElapsed = elapsed;\n }\n }\n if (i === chromeProfile.samples.length - 1) {\n if (!isNaN(lastNodeId)) {\n samples.push(lastNodeId);\n if (elapsed < lastValidElapsed) {\n sampleTimes.push(lastValidElapsed);\n }\n else {\n sampleTimes.push(elapsed);\n lastValidElapsed = elapsed;\n }\n }\n }\n else {\n const timeDelta = chromeProfile.timeDeltas[i + 1];\n elapsed += timeDelta;\n lastNodeId = nodeId;\n }\n }\n let prevStack = [];\n for (let i = 0; i < samples.length; i++) {\n const value = sampleTimes[i];\n const nodeId = samples[i];\n let stackTop = nodeById.get(nodeId);\n if (!stackTop)\n continue;\n // Find lowest common ancestor of the current stack and the previous one\n let lca = null;\n // This is O(n^2), but n should be relatively small here (stack height),\n // so hopefully this isn't much of a problem\n for (lca = stackTop; lca && prevStack.indexOf(lca) === -1; lca = shouldPlaceOnTopOfPreviousStack(lca.callFrame.functionName)\n ? utils_1.lastOf(prevStack)\n : lca.parent || null) { }\n // Close frames that are no longer open\n while (prevStack.length > 0 && utils_1.lastOf(prevStack) != lca) {\n const closingNode = prevStack.pop();\n const frame = frameInfoForCallFrame(closingNode.callFrame);\n profile.leaveFrame(frame, value);\n }\n // Open frames that are now becoming open\n const toOpen = [];\n for (let node = stackTop; node && node != lca && !shouldIgnoreFunction(node.callFrame); \n // Place Chrome internal functions on top of the previous call stack\n node = shouldPlaceOnTopOfPreviousStack(node.callFrame.functionName)\n ? utils_1.lastOf(prevStack)\n : node.parent || null) {\n toOpen.push(node);\n }\n toOpen.reverse();\n for (let node of toOpen) {\n profile.enterFrame(frameInfoForCallFrame(node.callFrame), value);\n }\n prevStack = prevStack.concat(toOpen);\n }\n // Close frames that are open at the end of the trace\n for (let i = prevStack.length - 1; i >= 0; i--) {\n profile.leaveFrame(frameInfoForCallFrame(prevStack[i].callFrame), utils_1.lastOf(sampleTimes));\n }\n profile.setValueFormatter(new value_formatters_1.TimeFormatter('microseconds'));\n return profile.build();\n}\nexports.importFromChromeCPUProfile = importFromChromeCPUProfile;\nfunction importFromOldV8CPUProfile(content) {\n return importFromChromeCPUProfile(v8cpuFormatter_1.chromeTreeToNodes(content));\n}\nexports.importFromOldV8CPUProfile = importFromOldV8CPUProfile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chromeTreeToNodes = void 0;\nfunction treeToArray(root) {\n const nodes = [];\n function visit(node) {\n nodes.push({\n id: node.id,\n callFrame: {\n columnNumber: 0,\n functionName: node.functionName,\n lineNumber: node.lineNumber,\n scriptId: node.scriptId,\n url: node.url,\n },\n hitCount: node.hitCount,\n children: node.children.map(child => child.id),\n });\n node.children.forEach(visit);\n }\n visit(root);\n return nodes;\n}\nfunction timestampsToDeltas(timestamps, startTime) {\n return timestamps.map((timestamp, index) => {\n const lastTimestamp = index === 0 ? startTime * 1000000 : timestamps[index - 1];\n return timestamp - lastTimestamp;\n });\n}\n/**\n * Convert the old tree-based format to the new flat-array based format\n */\nfunction chromeTreeToNodes(content) {\n // Note that both startTime and endTime are now in microseconds\n return {\n samples: content.samples,\n startTime: content.startTime * 1000000,\n endTime: content.endTime * 1000000,\n nodes: treeToArray(content.head),\n timeDeltas: timestampsToDeltas(content.timestamps, content.startTime),\n };\n}\nexports.chromeTreeToNodes = chromeTreeToNodes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.demangleCpp = void 0;\nlet cppfilt;\nconst cache = new Map();\n// This function converts a mangled C++ name such as \"__ZNK7Support6ColorFeqERKS0_\"\n// into a human-readable symbol (in this case \"Support::ColorF::==(Support::ColorF&)\")\nfunction demangleCpp(name) {\n if (name.startsWith('__Z')) {\n let result = cache.get(name);\n if (result !== undefined) {\n name = result;\n }\n else {\n if (!cppfilt) {\n cppfilt = new Function('exports', code)();\n }\n result = cppfilt(name.slice(1));\n result = result === '(null)' ? name : result;\n cache.set(name, result);\n name = result;\n }\n }\n return name;\n}\nexports.demangleCpp = demangleCpp;\n// This was taken from https://d.fuqu.jp/c++filtjs/\nconst code = `\nreturn function(){function r(r){eval.call(null,r)}function a(r){throw print(r+\":\\\\n\"+(new Error).stack),ke=!0,\"Assertion: \"+r}function e(r,e){r||a(\"Assertion failed: \"+e)}function i(r,a,i,v){function t(r,a){if(\"string\"==a){var e=Oe;return le.stackAlloc(r.length+1),A(r,e),e}return r}function f(r,a){return\"string\"==a?s(r):r}try{func=ce.Module[\"_\"+r]}catch(r){}e(func,\"Cannot call unknown function \"+r+\" (perhaps LLVM optimizations or closure removed it?)\");var _=0,n=v?v.map(function(r){return t(r,i[_++])}):[];return f(func.apply(null,n),a)}function v(r,a,e){return function(){return i(r,a,e,Array.prototype.slice.call(arguments))}}function t(r,e,i,v){switch(i=i||\"i8\",\"*\"===i[i.length-1]&&(i=\"i32\"),i){case\"i1\":Ae[r]=e;break;case\"i8\":Ae[r]=e;break;case\"i16\":ye[r>>1]=e;break;case\"i32\":Se[r>>2]=e;break;case\"i64\":Se[r>>2]=e;break;case\"float\":Ce[r>>2]=e;break;case\"double\":ze[0]=e,Se[r>>2]=xe[0],Se[r+4>>2]=xe[1];break;default:a(\"invalid type for setValue: \"+i)}}function f(r,e,i){switch(e=e||\"i8\",\"*\"===e[e.length-1]&&(e=\"i32\"),e){case\"i1\":return Ae[r];case\"i8\":return Ae[r];case\"i16\":return ye[r>>1];case\"i32\":return Se[r>>2];case\"i64\":return Se[r>>2];case\"float\":return Ce[r>>2];case\"double\":return xe[0]=Se[r>>2],xe[1]=Se[r+4>>2],ze[0];default:a(\"invalid type for setValue: \"+e)}return null}function _(r,a,e){var i,v;\"number\"==typeof r?(i=!0,v=r):(i=!1,v=r.length);var f=\"string\"==typeof a?a:null,_=[Jr,le.stackAlloc,le.staticAlloc][void 0===e?we:e](Math.max(v,f?1:a.length));if(i)return Fa(_,0,v),_;for(var s,n=0;n<v;){var o=r[n];\"function\"==typeof o&&(o=le.getFunctionIndex(o)),s=f||a[n],0!==s?(\"i64\"==s&&(s=\"i32\"),t(_+n,o,s),n+=le.getNativeTypeSize(s)):n++}return _}function s(r,a){for(var e,i=\"undefined\"==typeof a,v=\"\",t=0,f=String.fromCharCode(0);;){if(e=String.fromCharCode(ge[r+t]),i&&e==f)break;if(v+=e,t+=1,!i&&t==a)break}return v}function n(r){for(var a=\"\",e=0;e<r.length;e++)a+=String.fromCharCode(r[e]);return a}function o(r){return r+4095>>12<<12}function l(){for(;Le<=Ie;)Le=o(2*Le);var r=Ae,a=new ArrayBuffer(Le);Ae=new Int8Array(a),ye=new Int16Array(a),Se=new Int32Array(a),ge=new Uint8Array(a),me=new Uint16Array(a),Me=new Uint32Array(a),Ce=new Float32Array(a),Re=new Float64Array(a),Ae.set(r)}function b(r){for(;r.length>0;){var a=r.shift(),e=a.func;\"number\"==typeof e&&(e=pe[e]),e(void 0===a.arg?null:a.arg)}}function k(){b(Ve)}function u(){b(Be),be.print()}function c(r,a){return Array.prototype.slice.call(Ae.subarray(r,r+a))}function h(r,a){for(var e=new Uint8Array(a),i=0;i<a;++i)e[i]=Ae[r+i];return e.buffer}function d(r){for(var a=0;Ae[r+a];)a++;return a}function w(r,a){var e=d(r);a&&e++;var i=c(r,e);return a&&(i[e-1]=0),i}function p(r,a){for(var e=[],i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),e.push(v),i+=1}return a||e.push(0),e}function E(r){for(var a=[],e=0;e<r.length;e++){var i=r[e];i>255&&(i&=255),a.push(String.fromCharCode(i))}return a.join(\"\")}function A(r,a,e){for(var i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),Ae[a+i]=v,i+=1}e||(Ae[a+i]=0)}function g(r,a,e,i){return r>=0?r:a<=32?2*Math.abs(1<<a-1)+r:Math.pow(2,a)+r}function y(r,a,e,i){if(r<=0)return r;var v=a<=32?Math.abs(1<<a-1):Math.pow(2,a-1);return r>=v&&(a<=32||r>v)&&(r=-2*v+r),r}function m(r,a,e){if(0==(0|r)|0==(0|a)|0==(0|e))var i=0;else{Se[r>>2]=0,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function S(r,a,e){if(0==(0|r)|(0|a)<0|0==(0|e))var i=0;else{Se[r>>2]=41,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function M(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=6,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function C(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=7,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function R(r,a){var e,i=0==(0|a);do if(i)var v=0;else{var e=(r+32|0)>>2,t=Se[e];if((0|t)>=(0|Se[r+36>>2])){var v=0;break}var f=(t<<2)+Se[r+28>>2]|0;Se[f>>2]=a;var _=Se[e]+1|0;Se[e]=_;var v=1}while(0);var v;return v}function T(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==95;do if(t){var f=i+2|0;if(Se[e]=f,Ae[v]<<24>>24!=90){var _=0;break}var s=O(r,a),_=s}else var _=0;while(0);var _;return _}function O(r,a){var e=r+12|0,i=Ae[Se[e>>2]];r:do if(i<<24>>24==71||i<<24>>24==84)var v=Tr(r),t=v;else{var f=Ar(r),_=0==(0|f)|0==(0|a);do if(!_){if(0!=(1&Se[r+8>>2]|0))break;var s=Me[f>>2],n=(s-25|0)>>>0<3;a:do if(n)for(var o=f;;){var o,l=Me[o+4>>2],b=Me[l>>2];if((b-25|0)>>>0>=3){var k=l,u=b;break a}var o=l}else var k=f,u=s;while(0);var u,k;if(2!=(0|u)){var t=k;break r}var c=k+8|0,h=Me[c>>2],d=(Se[h>>2]-25|0)>>>0<3;a:do if(d)for(var w=h;;){var w,p=Me[w+4>>2];if((Se[p>>2]-25|0)>>>0>=3){var E=p;break a}var w=p}else var E=h;while(0);var E;Se[c>>2]=E;var t=k;break r}while(0);var A=Ae[Se[e>>2]];if(A<<24>>24==0||A<<24>>24==69){var t=f;break}var g=Or(f),y=Sr(r,g),m=D(r,3,f,y),t=m}while(0);var t;return t}function N(r){var a,e,i=Oe;Oe+=4;var v=i,e=v>>2,a=(r+12|0)>>2,t=Me[a],f=Ae[t],_=f<<24>>24;r:do if(f<<24>>24==114||f<<24>>24==86||f<<24>>24==75){var s=I(r,v,0);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=Se[e],b=R(r,l);if(0==(0|b)){var n=0;break}var n=Se[e]}else{do{if(97==(0|_)||98==(0|_)||99==(0|_)||100==(0|_)||101==(0|_)||102==(0|_)||103==(0|_)||104==(0|_)||105==(0|_)||106==(0|_)||108==(0|_)||109==(0|_)||110==(0|_)||111==(0|_)||115==(0|_)||116==(0|_)||118==(0|_)||119==(0|_)||120==(0|_)||121==(0|_)||122==(0|_)){var k=ai+20*(_-97)|0,u=P(r,k);Se[e]=u;var c=r+48|0,h=Se[c>>2]+Se[Se[u+4>>2]+4>>2]|0;Se[c>>2]=h;var d=Se[a]+1|0;Se[a]=d;var n=u;break r}if(117==(0|_)){Se[a]=t+1|0;var w=L(r),p=D(r,34,w,0);Se[e]=p;var E=p}else if(70==(0|_)){var A=F(r);Se[e]=A;var E=A}else if(48==(0|_)||49==(0|_)||50==(0|_)||51==(0|_)||52==(0|_)||53==(0|_)||54==(0|_)||55==(0|_)||56==(0|_)||57==(0|_)||78==(0|_)||90==(0|_)){var g=X(r);Se[e]=g;var E=g}else if(65==(0|_)){var y=j(r);Se[e]=y;var E=y}else if(77==(0|_)){var m=U(r);Se[e]=m;var E=m}else if(84==(0|_)){var S=x(r);if(Se[e]=S,Ae[Se[a]]<<24>>24!=73){var E=S;break}var M=R(r,S);if(0==(0|M)){var n=0;break r}var C=Se[e],T=z(r),O=D(r,4,C,T);Se[e]=O;var E=O}else if(83==(0|_)){var B=ge[t+1|0];if((B-48&255&255)<10|B<<24>>24==95|(B-65&255&255)<26){var H=V(r,0);if(Se[e]=H,Ae[Se[a]]<<24>>24!=73){var n=H;break r}var K=z(r),Y=D(r,4,H,K);Se[e]=Y;var E=Y}else{var G=X(r);if(Se[e]=G,0==(0|G)){var E=0;break}if(21==(0|Se[G>>2])){var n=G;break r}var E=G}}else if(80==(0|_)){Se[a]=t+1|0;var W=N(r),Z=D(r,29,W,0);Se[e]=Z;var E=Z}else if(82==(0|_)){Se[a]=t+1|0;var Q=N(r),q=D(r,30,Q,0);Se[e]=q;var E=q}else if(67==(0|_)){Se[a]=t+1|0;var $=N(r),J=D(r,31,$,0);Se[e]=J;var E=J}else if(71==(0|_)){Se[a]=t+1|0;var rr=N(r),ar=D(r,32,rr,0);Se[e]=ar;var E=ar}else{if(85!=(0|_)){var n=0;break r}Se[a]=t+1|0;var er=L(r);Se[e]=er;var ir=N(r),vr=Se[e],tr=D(r,28,ir,vr);Se[e]=tr;var E=tr}}while(0);var E,fr=R(r,E);if(0==(0|fr)){var n=0;break}var n=Se[e]}while(0);var n;return Oe=i,n}function I(r,a,e){for(var i,v=r+12|0,t=0!=(0|e),f=t?25:22,i=(r+48|0)>>2,_=t?26:23,s=t?27:24,n=a;;){var n,o=Se[v>>2],l=Ae[o];if(l<<24>>24!=114&&l<<24>>24!=86&&l<<24>>24!=75){var b=n;break}var k=o+1|0;if(Se[v>>2]=k,l<<24>>24==114){var u=Se[i]+9|0;Se[i]=u;var c=f}else if(l<<24>>24==86){var h=Se[i]+9|0;Se[i]=h;var c=_}else{var d=Se[i]+6|0;Se[i]=d;var c=s}var c,w=D(r,c,0,0);if(Se[n>>2]=w,0==(0|w)){var b=0;break}var n=w+4|0}var b;return b}function P(r,a){var e=0==(0|a);do if(e)var i=0;else{var v=J(r);if(0==(0|v)){var i=0;break}Se[v>>2]=33,Se[v+4>>2]=a;var i=v}while(0);var i;return i}function D(r,a,e,i){var v,t;do{if(1==(0|a)||2==(0|a)||3==(0|a)||4==(0|a)||10==(0|a)||28==(0|a)||37==(0|a)||43==(0|a)||44==(0|a)||45==(0|a)||46==(0|a)||47==(0|a)||48==(0|a)||49==(0|a)||50==(0|a)){if(0==(0|e)|0==(0|i)){var f=0;t=7;break}t=5;break}if(8==(0|a)||9==(0|a)||11==(0|a)||12==(0|a)||13==(0|a)||14==(0|a)||15==(0|a)||16==(0|a)||17==(0|a)||18==(0|a)||19==(0|a)||20==(0|a)||29==(0|a)||30==(0|a)||31==(0|a)||32==(0|a)||34==(0|a)||38==(0|a)||39==(0|a)||42==(0|a)){if(0==(0|e)){var f=0;t=7;break}t=5;break}if(36==(0|a)){if(0==(0|i)){var f=0;t=7;break}t=5;break}if(35==(0|a)||22==(0|a)||23==(0|a)||24==(0|a)||25==(0|a)||26==(0|a)||27==(0|a))t=5;else{var f=0;t=7}}while(0);do if(5==t){var _=J(r),v=_>>2;if(0==(0|_)){var f=0;break}Se[v]=a,Se[v+1]=e,Se[v+2]=i;var f=_}while(0);var f;return f}function L(r){var a=sr(r);if((0|a)<1)var e=0;else{var i=Rr(r,a);Se[r+44>>2]=i;var e=i}var e;return e}function F(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;if(Se[a]=i,Ae[e]<<24>>24==70){if(Ae[i]<<24>>24==89){var v=e+2|0;Se[a]=v}var t=Sr(r,1),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else var n=0;var n;return n}function X(r){var a=Ar(r);return a}function j(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==65;do if(v){var t=Ae[i];if(t<<24>>24==95)var f=0;else if((t-48&255&255)<10){for(var _=i;;){var _,s=_+1|0;if(Se[a]=s,(Ae[s]-48&255&255)>=10)break;var _=s}var n=s-i|0,o=lr(r,i,n);if(0==(0|o)){var l=0;break}var f=o}else{var b=nr(r);if(0==(0|b)){var l=0;break}var f=b}var f,k=Se[a],u=k+1|0;if(Se[a]=u,Ae[k]<<24>>24!=95){var l=0;break}var c=N(r),h=D(r,36,f,c),l=h}else var l=0;while(0);var l;return l}function U(r){var a=Oe;Oe+=4;var e=a,i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24==77;r:do if(f){var _=N(r),s=I(r,e,1);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=(0|s)==(0|e);do if(!l){if(35==(0|Se[o>>2]))break;var b=Se[e>>2],k=R(r,b);if(0==(0|k)){var n=0;break r}}while(0);var u=Se[e>>2],c=D(r,37,_,u),n=c}else var n=0;while(0);var n;return Oe=a,n}function x(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==84;do if(v){if(Ae[i]<<24>>24==95)var t=0,f=i;else{var _=sr(r);if((0|_)<0){var s=0;break}var t=_+1|0,f=Se[a]}var f,t;if(Se[a]=f+1|0,Ae[f]<<24>>24!=95){var s=0;break}var n=r+40|0,o=Se[n>>2]+1|0;Se[n>>2]=o;var l=Er(r,t),s=l}else var s=0;while(0);var s;return s}function z(r){var a,e=Oe;Oe+=4;var i=e,v=r+44|0,t=Se[v>>2],a=(r+12|0)>>2,f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==73;r:do if(s){Se[i>>2]=0;for(var n=i;;){var n,o=_r(r);if(0==(0|o)){var l=0;break r}var b=D(r,39,o,0);if(Se[n>>2]=b,0==(0|b)){var l=0;break r}var k=Se[a];if(Ae[k]<<24>>24==69)break;var n=b+8|0}var u=k+1|0;Se[a]=u,Se[v>>2]=t;var l=Se[i>>2]}else var l=0;while(0);var l;return Oe=e,l}function V(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==83;r:do if(t){var f=i+2|0;Se[e]=f;var _=ge[v];if(_<<24>>24==95)var s=0;else{if(!((_-48&255&255)<10|(_-65&255&255)<26)){var n=8&Se[r+8>>2],o=n>>>3,l=0!=(0|n)|0==(0|a);do if(l)var b=o;else{if((Ae[f]-67&255&255)>=2){var b=o;break}var b=1}while(0);for(var b,k=0|ei;;){var k;if(k>>>0>=(ei+196|0)>>>0){var u=0;break r}if(_<<24>>24==Ae[0|k]<<24>>24)break;var k=k+28|0}var c=Se[k+20>>2];if(0!=(0|c)){var h=Se[k+24>>2],d=fr(r,c,h);Se[r+44>>2]=d}if(0==(0|b))var w=k+8|0,p=k+4|0;else var w=k+16|0,p=k+12|0;var p,w,E=Se[w>>2],A=Se[p>>2],g=r+48|0,y=Se[g>>2]+E|0;Se[g>>2]=y;var m=fr(r,A,E),u=m;break}for(var S=_,M=0,C=f;;){var C,M,S;if((S-48&255&255)<10)var R=36*M-48|0;else{if((S-65&255&255)>=26){var u=0;break r}var R=36*M-55|0}var R,T=(S<<24>>24)+R|0;if((0|T)<0){var u=0;break r}var O=C+1|0;Se[e]=O;var N=ge[C];if(N<<24>>24==95)break;var S=N,M=T,C=O}var s=T+1|0}var s;if((0|s)>=(0|Se[r+32>>2])){var u=0;break}var I=r+40|0,P=Se[I>>2]+1|0;Se[I>>2]=P;var u=Se[Se[r+28>>2]+(s<<2)>>2]}else var u=0;while(0);var u;return u}function B(r,a,e,i){var v,t,f,_,s=Oe;Oe+=28;var n,o=s,_=o>>2;Se[_]=r;var l=e+1|0,f=(o+12|0)>>2;Se[f]=l;var b=Jr(l),t=(o+4|0)>>2;if(Se[t]=b,0==(0|b))var k=0,u=1;else{var v=(o+8|0)>>2;Se[v]=0,Se[_+4]=0,Se[_+5]=0;var c=o+24|0;Se[c>>2]=0,H(o,a);var h=Me[t],d=0==(0|h);do{if(!d){var w=Me[v];if(w>>>0>=Me[f]>>>0){n=5;break}Se[v]=w+1|0,Ae[h+w|0]=0,n=6;break}n=5}while(0);5==n&&Y(o,0);var p=Se[t],E=0==(0|p)?Se[c>>2]:Se[f],k=p,u=E}var u,k;return Se[i>>2]=u,Oe=s,k}function H(r,a){var e,i,v,t,f,_,s,n,o,l,b,k,u,c,h,d,w,p,E,A,g,y,m,S,M,C,R,T,O,N,I,P,D,L,F,X,j,U,x,z,V,B,K,G,W,J,vr,tr,fr,_r,sr,nr,or,lr,br,kr,ur,cr,hr,dr,wr,pr=a>>2,Er=r>>2,Ar=Oe;Oe+=184;var gr,yr=Ar,wr=yr>>2,mr=Ar+64,dr=mr>>2,Sr=Ar+72,Mr=Ar+88,Cr=Ar+104,hr=Cr>>2,Rr=Ar+168,Tr=0==(0|a);r:do if(Tr)Z(r);else{var cr=(r+4|0)>>2,Or=Me[cr];if(0==(0|Or))break;var Nr=0|a,Ir=Me[Nr>>2];a:do{if(0==(0|Ir)){if(0!=(4&Se[Er]|0)){var Pr=Se[pr+1],Dr=Se[pr+2];q(r,Pr,Dr);break r}var ur=(r+8|0)>>2,Lr=Me[ur],Fr=a+8|0,Xr=Me[Fr>>2];if((Xr+Lr|0)>>>0>Me[Er+3]>>>0){var jr=Se[pr+1];Q(r,jr,Xr);break r}var Ur=Or+Lr|0,xr=Se[pr+1];Pa(Ur,xr,Xr,1);var zr=Se[ur]+Se[Fr>>2]|0;Se[ur]=zr;break r}if(1==(0|Ir)||2==(0|Ir)){var Vr=Se[pr+1];H(r,Vr);var Br=0==(4&Se[Er]|0),Hr=Me[cr],Kr=0!=(0|Hr);e:do if(Br){do if(Kr){var kr=(r+8|0)>>2,Yr=Me[kr];if((Yr+2|0)>>>0>Me[Er+3]>>>0)break;var Gr=Hr+Yr|0;oe=14906,Ae[Gr]=255&oe,oe>>=8,Ae[Gr+1]=255&oe;var Wr=Se[kr]+2|0;Se[kr]=Wr;break e}while(0);Q(r,0|He.__str120,2)}else{do if(Kr){var Zr=r+8|0,Qr=Me[Zr>>2];if(Qr>>>0>=Me[Er+3]>>>0)break;Se[Zr>>2]=Qr+1|0,Ae[Hr+Qr|0]=46;break e}while(0);Y(r,46)}while(0);var qr=Se[pr+2];H(r,qr);break r}if(3==(0|Ir)){for(var br=(r+20|0)>>2,$r=Me[br],lr=(r+16|0)>>2,Jr=a,ra=0,aa=$r;;){var aa,ra,Jr,ea=Me[Jr+4>>2];if(0==(0|ea)){var ia=ra,va=0;gr=33;break}if(ra>>>0>3){Z(r);break r}var ta=(ra<<4)+yr|0;Se[ta>>2]=aa,Se[br]=ta,Se[((ra<<4)+4>>2)+wr]=ea,Se[((ra<<4)+8>>2)+wr]=0;var fa=Me[lr];Se[((ra<<4)+12>>2)+wr]=fa;var _a=ra+1|0,sa=0|ea,na=Me[sa>>2];if((na-25|0)>>>0>=3){gr=25;break}var Jr=ea,ra=_a,aa=ta}e:do if(25==gr){if(4==(0|na)){Se[dr]=fa,Se[lr]=mr,Se[dr+1]=ea;var oa=Se[sa>>2],la=mr}else var oa=na,la=fa;var la,oa;if(2!=(0|oa)){var ia=_a,va=sa;break}for(var ba=_a,ka=ea+8|0;;){var ka,ba,ua=Me[ka>>2];if((Se[ua>>2]-25|0)>>>0>=3){var ia=ba,va=sa;break e}if(ba>>>0>3)break;var ca=(ba<<4)+yr|0,ha=ba-1|0,da=(ha<<4)+yr|0,or=ca>>2,nr=da>>2;Se[or]=Se[nr],Se[or+1]=Se[nr+1],Se[or+2]=Se[nr+2],Se[or+3]=Se[nr+3],Se[ca>>2]=da,Se[br]=ca,Se[((ha<<4)+4>>2)+wr]=ua,Se[((ha<<4)+8>>2)+wr]=0,Se[((ha<<4)+12>>2)+wr]=la;var ba=ba+1|0,ka=ua+4|0}Z(r);break r}while(0);var va,ia,wa=Se[pr+2];if(H(r,wa),4==(0|Se[va>>2])){var pa=Se[dr];Se[lr]=pa}var Ea=0==(0|ia);e:do if(!Ea)for(var Aa=r+8|0,ga=r+12|0,ya=ia;;){var ya,ma=ya-1|0;if(0==(0|Se[((ma<<4)+8>>2)+wr])){var Sa=Me[cr],Ma=0==(0|Sa);do{if(!Ma){var Ca=Me[Aa>>2];if(Ca>>>0>=Me[ga>>2]>>>0){gr=41;break}Se[Aa>>2]=Ca+1|0,Ae[Sa+Ca|0]=32,gr=42;break}gr=41}while(0);41==gr&&Y(r,32);var Ra=Se[((ma<<4)+4>>2)+wr];$(r,Ra)}if(0==(0|ma))break e;var ya=ma}while(0);Se[br]=$r;break r}if(4==(0|Ir)){var sr=(r+20|0)>>2,Ta=Se[sr];Se[sr]=0;var Oa=Se[pr+1];H(r,Oa);var Na=Me[cr],Ia=0==(0|Na);do{if(!Ia){var _r=(r+8|0)>>2,Da=Me[_r],La=0==(0|Da);do if(!La){if(Ae[Na+(Da-1)|0]<<24>>24!=60)break;Da>>>0<Me[Er+3]>>>0?(Se[_r]=Da+1|0,Ae[Na+Da|0]=32):Y(r,32)}while(0);var Fa=Me[cr];if(0==(0|Fa)){gr=54;break}var Xa=Me[_r];if(Xa>>>0>=Me[Er+3]>>>0){gr=54;break}Se[_r]=Xa+1|0,Ae[Fa+Xa|0]=60,gr=55;break}gr=54}while(0);54==gr&&Y(r,60);var ja=Se[pr+2];H(r,ja);var Ua=Me[cr],xa=0==(0|Ua);do{if(!xa){var fr=(r+8|0)>>2,za=Me[fr],Va=0==(0|za);do if(!Va){if(Ae[Ua+(za-1)|0]<<24>>24!=62)break;za>>>0<Me[Er+3]>>>0?(Se[fr]=za+1|0,Ae[Ua+za|0]=32):Y(r,32)}while(0);var Ba=Me[cr];if(0==(0|Ba)){gr=64;break}var Ha=Me[fr];if(Ha>>>0>=Me[Er+3]>>>0){gr=64;break}Se[fr]=Ha+1|0,Ae[Ba+Ha|0]=62,gr=65;break}gr=64}while(0);64==gr&&Y(r,62),Se[sr]=Ta;break r}if(5==(0|Ir)){var tr=(r+16|0)>>2,Ka=Me[tr];if(0==(0|Ka)){Z(r);break r}for(var Ya=Se[pr+1],Ga=Se[Ka+4>>2];;){var Ga,Ya,Wa=Se[Ga+8>>2];if(0==(0|Wa))break;if(39!=(0|Se[Wa>>2])){Z(r);break r}if((0|Ya)<1){if(0!=(0|Ya))break;var Za=Se[Ka>>2];Se[tr]=Za;var Qa=Se[Wa+4>>2];H(r,Qa),Se[tr]=Ka;break r}var Ya=Ya-1|0,Ga=Wa}Z(r);break r}if(6==(0|Ir)){var qa=Se[pr+2];H(r,qa);break r}if(7==(0|Ir)){var $a=r+8|0,Ja=Me[$a>>2];Ja>>>0<Me[Er+3]>>>0?(Se[$a>>2]=Ja+1|0,Ae[Or+Ja|0]=126):Y(r,126);var re=Se[pr+2];H(r,re);break r}if(8==(0|Ir)){var vr=(r+8|0)>>2,ae=Me[vr];if((ae+11|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str121,11);else{for(var ee=Or+ae|0,ie=0|He.__str121,ve=ee,te=ie+11;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var fe=Se[vr]+11|0;Se[vr]=fe}var _e=Se[pr+1];H(r,_e);break r}if(9==(0|Ir)){var J=(r+8|0)>>2,se=Me[J];if((se+8|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str122,8);else{var ne=Or+se|0,le=0|ne;oe=542397526,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=ne+4|0;oe=544370534,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var ke=Se[J]+8|0;Se[J]=ke}var ue=Se[pr+1];H(r,ue);break r}if(10==(0|Ir)){var W=(r+8|0)>>2,ce=Me[W],he=r+12|0;if((ce+24|0)>>>0>Me[he>>2]>>>0)Q(r,0|He.__str123,24);else{var de=Or+ce|0;Pa(de,0|He.__str123,24,1);var we=Se[W]+24|0;Se[W]=we}var pe=Se[pr+1];H(r,pe);var Ee=Me[cr],ge=0==(0|Ee);do{if(!ge){var ye=Me[W];if((ye+4|0)>>>0>Me[he>>2]>>>0){gr=96;break}var me=Ee+ye|0;oe=762210605,Ae[me]=255&oe,oe>>=8,Ae[me+1]=255&oe,oe>>=8,Ae[me+2]=255&oe,oe>>=8,Ae[me+3]=255&oe;var Ce=Se[W]+4|0;Se[W]=Ce,gr=97;break}gr=96}while(0);96==gr&&Q(r,0|He.__str124,4);var Re=Se[pr+2];H(r,Re);break r}if(11==(0|Ir)){var G=(r+8|0)>>2,Te=Me[G];if((Te+13|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str125,13);else{for(var Ne=Or+Te|0,ie=0|He.__str125,ve=Ne,te=ie+13;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ie=Se[G]+13|0;Se[G]=Ie}var Pe=Se[pr+1];H(r,Pe);break r}if(12==(0|Ir)){var K=(r+8|0)>>2,De=Me[K];if((De+18|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str126,18);else{for(var Le=Or+De|0,ie=0|He.__str126,ve=Le,te=ie+18;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Fe=Se[K]+18|0;Se[K]=Fe}var Xe=Se[pr+1];H(r,Xe);break r}if(13==(0|Ir)){var B=(r+8|0)>>2,je=Me[B];if((je+16|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str127,16);else{for(var Ue=Or+je|0,ie=0|He.__str127,ve=Ue,te=ie+16;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var xe=Se[B]+16|0;Se[B]=xe}var ze=Se[pr+1];H(r,ze);break r}if(14==(0|Ir)){var V=(r+8|0)>>2,Ve=Me[V];if((Ve+21|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str128,21);else{var Be=Or+Ve|0;Pa(Be,0|He.__str128,21,1);var Ke=Se[V]+21|0;Se[V]=Ke}var Ye=Se[pr+1];H(r,Ye);break r}if(15==(0|Ir)){var z=(r+8|0)>>2,Ge=Me[z];if((Ge+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str129,17);else{for(var We=Or+Ge|0,ie=0|He.__str129,ve=We,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ze=Se[z]+17|0;Se[z]=Ze}var Qe=Se[pr+1];H(r,Qe);break r}if(16==(0|Ir)){var x=(r+8|0)>>2,qe=Me[x];if((qe+26|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str130,26);else{var $e=Or+qe|0;Pa($e,0|He.__str130,26,1);var Je=Se[x]+26|0;Se[x]=Je}var ri=Se[pr+1];H(r,ri);break r}if(17==(0|Ir)){var U=(r+8|0)>>2,ai=Me[U];if((ai+15|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str131,15);else{for(var ei=Or+ai|0,ie=0|He.__str131,ve=ei,te=ie+15;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ii=Se[U]+15|0;Se[U]=ii}var vi=Se[pr+1];H(r,vi);break r}if(18==(0|Ir)){var j=(r+8|0)>>2,ti=Me[j];if((ti+19|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str132,19);else{for(var fi=Or+ti|0,ie=0|He.__str132,ve=fi,te=ie+19;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var _i=Se[j]+19|0;Se[j]=_i}var si=Se[pr+1];H(r,si);break r}if(19==(0|Ir)){var X=(r+8|0)>>2,ni=Me[X];if((ni+24|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str133,24);else{var oi=Or+ni|0;Pa(oi,0|He.__str133,24,1);var li=Se[X]+24|0;Se[X]=li}var bi=Se[pr+1];H(r,bi);break r}if(20==(0|Ir)){var F=(r+8|0)>>2,ki=Me[F];if((ki+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str134,17);else{for(var ui=Or+ki|0,ie=0|He.__str134,ve=ui,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ci=Se[F]+17|0;Se[F]=ci}var hi=Se[pr+1];H(r,hi);break r}if(21==(0|Ir)){var L=(r+8|0)>>2,di=Me[L],wi=a+8|0,pi=Me[wi>>2];if((pi+di|0)>>>0>Me[Er+3]>>>0){var Ei=Se[pr+1];Q(r,Ei,pi);break r}var Ai=Or+di|0,gi=Se[pr+1];Pa(Ai,gi,pi,1);var yi=Se[L]+Se[wi>>2]|0;Se[L]=yi;break r}if(22==(0|Ir)||23==(0|Ir)||24==(0|Ir)){for(var mi=r+20|0;;){var mi,Si=Me[mi>>2];if(0==(0|Si))break a;if(0==(0|Se[Si+8>>2])){var Mi=Me[Se[Si+4>>2]>>2];if((Mi-22|0)>>>0>=3)break a;if((0|Mi)==(0|Ir))break}var mi=0|Si}var Ci=Se[pr+1];H(r,Ci);break r}if(25!=(0|Ir)&&26!=(0|Ir)&&27!=(0|Ir)&&28!=(0|Ir)&&29!=(0|Ir)&&30!=(0|Ir)&&31!=(0|Ir)&&32!=(0|Ir)){if(33==(0|Ir)){var D=(r+8|0)>>2,Ri=Me[D],P=(a+4|0)>>2,I=Me[P]>>2;if(0==(4&Se[Er]|0)){var Ti=Me[I+1];if((Ti+Ri|0)>>>0>Me[Er+3]>>>0){var Oi=Se[I];Q(r,Oi,Ti);break r}var Ni=Or+Ri|0,Ii=Se[I];Pa(Ni,Ii,Ti,1);var Pi=Se[D]+Se[Se[P]+4>>2]|0;Se[D]=Pi;break r}var Di=Me[I+3];if((Di+Ri|0)>>>0>Me[Er+3]>>>0){var Li=Se[I+2];Q(r,Li,Di);break r}var Fi=Or+Ri|0,Xi=Se[I+2];Pa(Fi,Xi,Di,1);var ji=Se[D]+Se[Se[P]+12>>2]|0;Se[D]=ji;break r}if(34==(0|Ir)){var Ui=Se[pr+1];H(r,Ui);break r}if(35==(0|Ir)){var N=(0|r)>>2;if(0!=(32&Se[N]|0)){var xi=Se[Er+5];rr(r,a,xi)}var zi=a+4|0,Vi=0==(0|Se[zi>>2]);e:do if(!Vi){var O=(r+20|0)>>2,Bi=Se[O],Hi=0|Mr;Se[Hi>>2]=Bi,Se[O]=Mr,Se[Mr+4>>2]=a;var Ki=Mr+8|0;Se[Ki>>2]=0;var Yi=Se[Er+4];Se[Mr+12>>2]=Yi;var Gi=Se[zi>>2];H(r,Gi);var Wi=Se[Hi>>2];if(Se[O]=Wi,0!=(0|Se[Ki>>2]))break r;if(0!=(32&Se[N]|0))break;var Zi=Me[cr],Qi=0==(0|Zi);do if(!Qi){var qi=r+8|0,$i=Me[qi>>2];if($i>>>0>=Me[Er+3]>>>0)break;Se[qi>>2]=$i+1|0,Ae[Zi+$i|0]=32;break e}while(0);Y(r,32)}while(0);if(0!=(32&Se[N]|0))break r;var Ji=Se[Er+5];rr(r,a,Ji);break r}if(36==(0|Ir)){var T=(r+20|0)>>2,rv=Me[T],av=0|Cr;Se[hr]=rv,Se[T]=av,Se[hr+1]=a;var ev=Cr+8|0;Se[ev>>2]=0;var iv=Se[Er+4];Se[hr+3]=iv;for(var vv=rv,tv=1;;){var tv,vv;if(0==(0|vv))break;if((Se[Se[vv+4>>2]>>2]-22|0)>>>0>=3)break;var fv=vv+8|0;if(0==(0|Se[fv>>2])){if(tv>>>0>3){Z(r);break r}var _v=(tv<<4)+Cr|0,R=_v>>2,C=vv>>2;Se[R]=Se[C],Se[R+1]=Se[C+1],Se[R+2]=Se[C+2],Se[R+3]=Se[C+3];var sv=Se[T];Se[_v>>2]=sv,Se[T]=_v,Se[fv>>2]=1;var nv=tv+1|0}else var nv=tv;var nv,vv=Se[vv>>2],tv=nv}var ov=Se[pr+2];if(H(r,ov),Se[T]=rv,0!=(0|Se[ev>>2]))break r;if(tv>>>0>1){for(var lv=tv;;){var lv,bv=lv-1|0,kv=Se[((bv<<4)+4>>2)+hr];if($(r,kv),bv>>>0<=1)break;var lv=bv}var uv=Se[T]}else var uv=rv;var uv;ar(r,a,uv);break r}if(37==(0|Ir)){var M=(r+20|0)>>2,cv=Se[M],hv=0|Rr;Se[hv>>2]=cv,Se[M]=Rr,Se[Rr+4>>2]=a;var dv=Rr+8|0;Se[dv>>2]=0;var wv=Se[Er+4];Se[Rr+12>>2]=wv;var pv=a+4|0,Ev=Se[pr+2];H(r,Ev);var Av=0==(0|Se[dv>>2]);e:do if(Av){var gv=Me[cr],yv=0==(0|gv);do{if(!yv){var mv=r+8|0,Sv=Me[mv>>2];if(Sv>>>0>=Me[Er+3]>>>0){gr=187;break}Se[mv>>2]=Sv+1|0,Ae[gv+Sv|0]=32,gr=188;break}gr=187}while(0);187==gr&&Y(r,32);var Mv=Se[pv>>2];H(r,Mv);var Cv=Me[cr],Rv=0==(0|Cv);do if(!Rv){var S=(r+8|0)>>2,Tv=Me[S];if((Tv+3|0)>>>0>Me[Er+3]>>>0)break;var Ov=Cv+Tv|0;Ae[Ov]=Ae[0|He.__str135],Ae[Ov+1]=Ae[(0|He.__str135)+1],Ae[Ov+2]=Ae[(0|He.__str135)+2];var Nv=Se[S]+3|0;Se[S]=Nv;break e}while(0);Q(r,0|He.__str135,3)}while(0);var Iv=Se[hv>>2];Se[M]=Iv;break r}if(38==(0|Ir)||39==(0|Ir)){var Pv=Se[pr+1];H(r,Pv);var Dv=a+8|0;if(0==(0|Se[Dv>>2]))break r;var Lv=Me[cr],Fv=0==(0|Lv);do{if(!Fv){var m=(r+8|0)>>2,Xv=Me[m];if((Xv+2|0)>>>0>Me[Er+3]>>>0){gr=197;break}var jv=Lv+Xv|0;oe=8236,Ae[jv]=255&oe,oe>>=8,Ae[jv+1]=255&oe;var Uv=Se[m]+2|0;Se[m]=Uv,gr=198;break}gr=197}while(0);197==gr&&Q(r,0|He.__str136,2);var xv=Se[Dv>>2];H(r,xv);break r}if(40==(0|Ir)){var y=(r+8|0)>>2,zv=Me[y],g=(r+12|0)>>2;if((zv+8|0)>>>0>Me[g]>>>0)Q(r,0|He.__str137,8);else{var Vv=Or+zv|0,le=0|Vv;oe=1919250543,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=Vv+4|0;oe=1919906913,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var Bv=Se[y]+8|0;Se[y]=Bv}var A=(a+4|0)>>2,Hv=(Ae[Se[Se[A]+4>>2]]-97&255&255)<26;e:do if(Hv){var Kv=Me[cr],Yv=0==(0|Kv);do if(!Yv){var Gv=Me[y];if(Gv>>>0>=Me[g]>>>0)break;Se[y]=Gv+1|0,Ae[Kv+Gv|0]=32;break e}while(0);Y(r,32)}while(0);var Wv=Me[cr],Zv=0==(0|Wv);do{if(!Zv){var Qv=Me[y],qv=Me[A],$v=Me[qv+8>>2];if(($v+Qv|0)>>>0>Me[g]>>>0){var Jv=qv,rt=$v;break}var at=Wv+Qv|0,et=Se[qv+4>>2];Pa(at,et,$v,1);var it=Se[y]+Se[Se[A]+8>>2]|0;Se[y]=it;break r}var vt=Me[A],Jv=vt,rt=Se[vt+8>>2]}while(0);var rt,Jv,tt=Se[Jv+4>>2];Q(r,tt,rt);break r}if(41==(0|Ir)){var E=(r+8|0)>>2,ft=Me[E];if((ft+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var _t=Or+ft|0,ie=0|He.__str10180,ve=_t,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var st=Se[E]+9|0;Se[E]=st}var nt=Se[pr+2];H(r,nt);break r}if(42==(0|Ir)){var p=(r+8|0)>>2,ot=Me[p];if((ot+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var lt=Or+ot|0,ie=0|He.__str10180,ve=lt,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var bt=Se[p]+9|0;Se[p]=bt}er(r,a);break r}if(43==(0|Ir)){var kt=a+4|0,ut=Se[kt>>2],ct=42==(0|Se[ut>>2]);e:do if(ct){var w=(r+8|0)>>2,ht=Me[w],dt=r+12|0;ht>>>0<Me[dt>>2]>>>0?(Se[w]=ht+1|0,Ae[Or+ht|0]=40):Y(r,40);var wt=Se[kt>>2];er(r,wt);var pt=Me[cr],Et=0==(0|pt);do if(!Et){var At=Me[w];if(At>>>0>=Me[dt>>2]>>>0)break;Se[w]=At+1|0,Ae[pt+At|0]=41;break e}while(0);Y(r,41)}else ir(r,ut);while(0);var gt=Me[cr],yt=0==(0|gt);do{if(!yt){var mt=r+8|0,St=Me[mt>>2];if(St>>>0>=Me[Er+3]>>>0){gr=232;break}Se[mt>>2]=St+1|0,Ae[gt+St|0]=40,gr=233;break}gr=232}while(0);232==gr&&Y(r,40);var Mt=Se[pr+2];H(r,Mt);var Ct=Me[cr],Rt=0==(0|Ct);do if(!Rt){var Tt=r+8|0,Ot=Me[Tt>>2];if(Ot>>>0>=Me[Er+3]>>>0)break;Se[Tt>>2]=Ot+1|0,Ae[Ct+Ot|0]=41;break r}while(0);Y(r,41);break r}if(44==(0|Ir)){var d=(a+8|0)>>2;if(45==(0|Se[Se[d]>>2])){var h=(a+4|0)>>2,Nt=Se[h],It=40==(0|Se[Nt>>2]);do if(It){var Pt=Se[Nt+4>>2];if(1!=(0|Se[Pt+8>>2]))break;if(Ae[Se[Pt+4>>2]]<<24>>24!=62)break;var Dt=r+8|0,Lt=Me[Dt>>2];Lt>>>0<Me[Er+3]>>>0?(Se[Dt>>2]=Lt+1|0,Ae[Or+Lt|0]=40):Y(r,40)}while(0);var Ft=Me[cr],Xt=0==(0|Ft);do{if(!Xt){var jt=r+8|0,Ut=Me[jt>>2];if(Ut>>>0>=Me[Er+3]>>>0){gr=248;break}Se[jt>>2]=Ut+1|0,Ae[Ft+Ut|0]=40,gr=249;break}gr=248}while(0);248==gr&&Y(r,40);var xt=Se[Se[d]+4>>2];H(r,xt);var zt=Me[cr],Vt=0==(0|zt);do{if(!Vt){var c=(r+8|0)>>2,Bt=Me[c];if((Bt+2|0)>>>0>Me[Er+3]>>>0){gr=252;break}var Ht=zt+Bt|0;oe=8233,Ae[Ht]=255&oe,oe>>=8,Ae[Ht+1]=255&oe;var Kt=Se[c]+2|0;Se[c]=Kt,gr=253;break}gr=252}while(0);252==gr&&Q(r,0|He.__str139,2);var Yt=Se[h];ir(r,Yt);var Gt=Me[cr],Wt=0==(0|Gt);do{if(!Wt){var u=(r+8|0)>>2,Zt=Me[u];if((Zt+2|0)>>>0>Me[Er+3]>>>0){gr=256;break}var Qt=Gt+Zt|0;oe=10272,Ae[Qt]=255&oe,oe>>=8,Ae[Qt+1]=255&oe;var qt=Se[u]+2|0;Se[u]=qt,gr=257;break}gr=256}while(0);256==gr&&Q(r,0|He.__str140,2);var $t=Se[Se[d]+8>>2];H(r,$t);var Jt=Me[cr],rf=0==(0|Jt);do{if(!rf){var af=r+8|0,ef=Me[af>>2];if(ef>>>0>=Me[Er+3]>>>0){gr=260;break}Se[af>>2]=ef+1|0,Ae[Jt+ef|0]=41,gr=261;break}gr=260}while(0);260==gr&&Y(r,41);var vf=Se[h];if(40!=(0|Se[vf>>2]))break r;var tf=Se[vf+4>>2];if(1!=(0|Se[tf+8>>2]))break r;if(Ae[Se[tf+4>>2]]<<24>>24!=62)break r;var ff=Me[cr],_f=0==(0|ff);do if(!_f){var sf=r+8|0,nf=Me[sf>>2];if(nf>>>0>=Me[Er+3]>>>0)break;Se[sf>>2]=nf+1|0,Ae[ff+nf|0]=41;break r}while(0);Y(r,41);break r}Z(r);break r}if(45==(0|Ir)){Z(r);break r}if(46==(0|Ir)){var of=a+4|0,k=(a+8|0)>>2,lf=Se[k],bf=47==(0|Se[lf>>2]);do if(bf){if(48!=(0|Se[Se[lf+8>>2]>>2]))break;var b=(r+8|0)>>2,kf=Me[b],l=(r+12|0)>>2;kf>>>0<Me[l]>>>0?(Se[b]=kf+1|0,Ae[Or+kf|0]=40):Y(r,40);var uf=Se[Se[k]+4>>2];H(r,uf);var cf=Me[cr],hf=0==(0|cf);do{if(!hf){var df=Me[b];if((df+2|0)>>>0>Me[l]>>>0){gr=278;break}var wf=cf+df|0;oe=8233,Ae[wf]=255&oe,oe>>=8,Ae[wf+1]=255&oe;var pf=Se[b]+2|0;Se[b]=pf,gr=279;break}gr=278}while(0);278==gr&&Q(r,0|He.__str139,2);var Ef=Se[of>>2];ir(r,Ef);var Af=Me[cr],gf=0==(0|Af);do{if(!gf){var yf=Me[b];if((yf+2|0)>>>0>Me[l]>>>0){gr=282;break}var mf=Af+yf|0;oe=10272,Ae[mf]=255&oe,oe>>=8,Ae[mf+1]=255&oe;var Sf=Se[b]+2|0;Se[b]=Sf,gr=283;break}gr=282}while(0);282==gr&&Q(r,0|He.__str140,2);var Mf=Se[Se[Se[k]+8>>2]+4>>2];H(r,Mf);var Cf=Me[cr],Rf=0==(0|Cf);do{if(!Rf){var Tf=Me[b];if((Tf+5|0)>>>0>Me[l]>>>0){gr=286;break}var Of=Cf+Tf|0;Ae[Of]=Ae[0|He.__str141],Ae[Of+1]=Ae[(0|He.__str141)+1],Ae[Of+2]=Ae[(0|He.__str141)+2],Ae[Of+3]=Ae[(0|He.__str141)+3],Ae[Of+4]=Ae[(0|He.__str141)+4];var Nf=Se[b]+5|0;Se[b]=Nf,gr=287;break}gr=286}while(0);286==gr&&Q(r,0|He.__str141,5);var If=Se[Se[Se[k]+8>>2]+8>>2];H(r,If);var Pf=Me[cr],Df=0==(0|Pf);do if(!Df){var Lf=Me[b];if(Lf>>>0>=Me[l]>>>0)break;Se[b]=Lf+1|0,Ae[Pf+Lf|0]=41;break r}while(0);Y(r,41);break r}while(0);Z(r);break r}if(47==(0|Ir)||48==(0|Ir)){Z(r);break r}if(49==(0|Ir)||50==(0|Ir)){var Ff=a+4|0,Xf=Se[Ff>>2],jf=33==(0|Se[Xf>>2]);do{if(jf){var Uf=Me[Se[Xf+4>>2]+16>>2];if(1==(0|Uf)||2==(0|Uf)||3==(0|Uf)||4==(0|Uf)||5==(0|Uf)||6==(0|Uf)){var xf=a+8|0;if(0!=(0|Se[Se[xf>>2]>>2])){var zf=Uf;break}if(50==(0|Ir)){var Vf=r+8|0,Bf=Me[Vf>>2];Bf>>>0<Me[Er+3]>>>0?(Se[Vf>>2]=Bf+1|0,Ae[Or+Bf|0]=45):Y(r,45)}var Hf=Se[xf>>2];if(H(r,Hf),2==(0|Uf)){var Kf=Me[cr],Yf=0==(0|Kf);do if(!Yf){var Gf=r+8|0,Wf=Me[Gf>>2];if(Wf>>>0>=Me[Er+3]>>>0)break;Se[Gf>>2]=Wf+1|0,Ae[Kf+Wf|0]=117;break r}while(0);Y(r,117);break r}if(3==(0|Uf)){var Zf=Me[cr],Qf=0==(0|Zf);do if(!Qf){var qf=r+8|0,$f=Me[qf>>2];if($f>>>0>=Me[Er+3]>>>0)break;Se[qf>>2]=$f+1|0,Ae[Zf+$f|0]=108;break r}while(0);Y(r,108);break r}if(4==(0|Uf)){var Jf=Me[cr],r_=0==(0|Jf);do if(!r_){var o=(r+8|0)>>2,a_=Me[o];if((a_+2|0)>>>0>Me[Er+3]>>>0)break;var e_=Jf+a_|0;oe=27765,Ae[e_]=255&oe,oe>>=8,Ae[e_+1]=255&oe;var i_=Se[o]+2|0;Se[o]=i_;break r}while(0);Q(r,0|He.__str142,2);break r}if(5==(0|Uf)){var v_=Me[cr],t_=0==(0|v_);do if(!t_){var n=(r+8|0)>>2,f_=Me[n];if((f_+2|0)>>>0>Me[Er+3]>>>0)break;var __=v_+f_|0;oe=27756,Ae[__]=255&oe,oe>>=8,Ae[__+1]=255&oe;var s_=Se[n]+2|0;Se[n]=s_;break r}while(0);Q(r,0|He.__str143,2);break r}if(6==(0|Uf)){var n_=Me[cr],o_=0==(0|n_);do if(!o_){var s=(r+8|0)>>2,l_=Me[s];if((l_+3|0)>>>0>Me[Er+3]>>>0)break;var b_=n_+l_|0;Ae[b_]=Ae[0|He.__str144],Ae[b_+1]=Ae[(0|He.__str144)+1],Ae[b_+2]=Ae[(0|He.__str144)+2];var k_=Se[s]+3|0;Se[s]=k_;break r}while(0);Q(r,0|He.__str144,3);break r}break r}if(7==(0|Uf)){var _=Se[pr+2]>>2;if(0!=(0|Se[_])){var zf=7;break}if(!(1==(0|Se[_+2])&49==(0|Ir))){var zf=Uf;break}var u_=Ae[Se[_+1]]<<24>>24;if(48==(0|u_)){var f=(r+8|0)>>2,c_=Me[f];if((c_+5|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str145,5);break r}var h_=Or+c_|0;Ae[h_]=Ae[0|He.__str145],Ae[h_+1]=Ae[(0|He.__str145)+1],Ae[h_+2]=Ae[(0|He.__str145)+2],Ae[h_+3]=Ae[(0|He.__str145)+3],Ae[h_+4]=Ae[(0|He.__str145)+4];var d_=Se[f]+5|0;Se[f]=d_;break r}if(49==(0|u_)){var t=(r+8|0)>>2,w_=Me[t];if((w_+4|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str146,4);break r}var p_=Or+w_|0;oe=1702195828,Ae[p_]=255&oe,oe>>=8,Ae[p_+1]=255&oe,oe>>=8,Ae[p_+2]=255&oe,oe>>=8,Ae[p_+3]=255&oe;var E_=Se[t]+4|0;Se[t]=E_;break r}var zf=Uf;break}var zf=Uf;break}var zf=0}while(0);var zf,v=(r+8|0)>>2,A_=Me[v],i=(r+12|0)>>2;A_>>>0<Me[i]>>>0?(Se[v]=A_+1|0,Ae[Or+A_|0]=40):Y(r,40);var g_=Se[Ff>>2];H(r,g_);var y_=Me[cr],m_=0==(0|y_);do{if(!m_){var S_=Me[v];if(S_>>>0>=Me[i]>>>0){gr=335;break}Se[v]=S_+1|0,Ae[y_+S_|0]=41,gr=336;break}gr=335}while(0);335==gr&&Y(r,41);var M_=50==(0|Se[Nr>>2]);e:do if(M_){var C_=Me[cr],R_=0==(0|C_);do if(!R_){var T_=Me[v];if(T_>>>0>=Me[i]>>>0)break;Se[v]=T_+1|0,Ae[C_+T_|0]=45;break e}while(0);Y(r,45)}while(0);if(8==(0|zf)){var O_=Me[cr],N_=0==(0|O_);do{if(!N_){var I_=Me[v];if(I_>>>0>=Me[i]>>>0){gr=345;break}Se[v]=I_+1|0,Ae[O_+I_|0]=91,gr=346;break}gr=345}while(0);345==gr&&Y(r,91);var P_=Se[pr+2];H(r,P_);var D_=Me[cr],L_=0==(0|D_);do if(!L_){var F_=Me[v];if(F_>>>0>=Me[i]>>>0)break;Se[v]=F_+1|0,Ae[D_+F_|0]=93;break r}while(0);Y(r,93);break r}var X_=Se[pr+2];H(r,X_);break r}Z(r);break r}}while(0);var e=(r+20|0)>>2,j_=Se[e],U_=0|Sr;Se[U_>>2]=j_,Se[e]=Sr,Se[Sr+4>>2]=a;var x_=Sr+8|0;Se[x_>>2]=0;var z_=Se[Er+4];Se[Sr+12>>2]=z_;var V_=Se[pr+1];H(r,V_),0==(0|Se[x_>>2])&&$(r,a);var B_=Se[U_>>2];Se[e]=B_}while(0);Oe=Ar}function K(r,a,e,i){var v=i>>2;Se[v]=r,Se[v+1]=r+e|0,Se[v+2]=a,Se[v+3]=r,Se[v+6]=e<<1,Se[v+5]=0,Se[v+9]=e,Se[v+8]=0,Se[v+10]=0,Se[v+11]=0,Se[v+12]=0}function Y(r,a){var e,i=r+4|0,v=Me[i>>2],t=0==(0|v);do if(!t){var e=(r+8|0)>>2,f=Me[e];if(f>>>0<Me[r+12>>2]>>>0)var _=v,s=f;else{tr(r,1);var n=Me[i>>2];if(0==(0|n))break;var _=n,s=Se[e]}var s,_;Ae[_+s|0]=255&a;var o=Se[e]+1|0;Se[e]=o}while(0)}function G(r,a,e,i){var v,t=i>>2,f=Oe;Oe+=4;var _=f,v=_>>2,s=0==(0|r);do if(s){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var o=0==(0|e);if(0!=(0|a)&o){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var l=W(r,_);if(0==(0|l)){if(0==(0|i)){var n=0;break}if(1==(0|Se[v])){Se[t]=-1;var n=0}else{Se[t]=-2;var n=0}}else{var b=0==(0|a);do if(b){if(o){var k=l;break}var u=Se[v];Se[e>>2]=u;var k=l}else{var c=Ca(l);if(c>>>0<Me[e>>2]>>>0){Ra(a,l);va(l);var k=a}else{va(a);var h=Se[v];Se[e>>2]=h;var k=l}}while(0);var k;if(0==(0|i)){var n=k;break}Se[t]=0;var n=k}}}while(0);var n;return Oe=f,n}function W(r,a){var e,i=Oe;Oe+=52;var v,t=i,e=t>>2;Se[a>>2]=0;var f=Ca(r),_=Ae[r]<<24>>24==95;do{if(_){if(Ae[r+1|0]<<24>>24==90){var s=0;v=13;break}v=3;break}v=3}while(0);do if(3==v){var n=Na(r,0|He.__str117,8);if(0!=(0|n)){var s=1;v=13;break}var o=Ae[r+8|0];if(o<<24>>24!=46&&o<<24>>24!=95&&o<<24>>24!=36){var s=1;v=13;break}var l=r+9|0,b=Ae[l];if(b<<24>>24!=68&&b<<24>>24!=73){\nvar s=1;v=13;break}if(Ae[r+10|0]<<24>>24!=95){var s=1;v=13;break}var k=f+29|0,u=Jr(k);if(0==(0|u)){Se[a>>2]=1;var c=0;v=19;break}Ae[l]<<24>>24==73?Pa(u,0|He.__str118,30,1):Pa(u,0|He.__str119,29,1);var h=r+11|0,c=(Ia(u,h),u);v=19;break}while(0);if(13==v){var s;K(r,17,f,t);var d=Se[e+6],w=Ta(),p=Oe;Oe+=12*d,Oe=Oe+3>>2<<2;var E=Oe;if(Oe+=4*Se[e+9],Oe=Oe+3>>2<<2,Se[e+4]=p,Se[e+7]=E,s)var A=N(t),g=A;else var y=T(t,1),g=y;var g,m=Ae[Se[e+3]]<<24>>24==0?g:0,S=Se[e+12]+f+10*Se[e+10]|0;if(0==(0|m))var M=0;else var C=S/8+S|0,R=B(17,m,C,a),M=R;var M;Oa(w);var c=M}var c;return Oe=i,c}function Z(r){var a=r+4|0,e=Se[a>>2];va(e),Se[a>>2]=0}function Q(r,a,e){var i,v=r+4|0,t=Me[v>>2],f=0==(0|t);do if(!f){var i=(r+8|0)>>2,_=Me[i];if((_+e|0)>>>0>Me[r+12>>2]>>>0){tr(r,e);var s=Me[v>>2];if(0==(0|s))break;var n=s,o=Se[i]}else var n=t,o=_;var o,n;Pa(n+o|0,a,e,1);var l=Se[i]+e|0;Se[i]=l}while(0)}function q(r,a,e){var i,v,t=a+e|0,f=(0|e)>0;r:do if(f)for(var _=t,s=r+4|0,i=(r+8|0)>>2,n=r+12|0,o=a;;){var o,l=(_-o|0)>3;a:do{if(l){if(Ae[o]<<24>>24!=95){v=21;break}if(Ae[o+1|0]<<24>>24!=95){v=21;break}if(Ae[o+2|0]<<24>>24!=85){v=21;break}for(var b=o+3|0,k=0;;){var k,b;if(b>>>0>=t>>>0){v=21;break a}var u=ge[b],c=u<<24>>24;if((u-48&255&255)<10)var h=c-48|0;else if((u-65&255&255)<6)var h=c-55|0;else{if((u-97&255&255)>=6)break;var h=c-87|0}var h,b=b+1|0,k=(k<<4)+h|0}if(!(u<<24>>24==95&k>>>0<256)){v=21;break}var d=Me[s>>2],w=0==(0|d);do if(!w){var p=Me[i];if(p>>>0>=Me[n>>2]>>>0)break;Se[i]=p+1|0,Ae[d+p|0]=255&k;var E=b;v=25;break a}while(0);Y(r,k);var E=b;v=25;break}v=21}while(0);a:do if(21==v){var A=Me[s>>2],g=0==(0|A);do if(!g){var y=Me[i];if(y>>>0>=Me[n>>2]>>>0)break;var m=Ae[o];Se[i]=y+1|0,Ae[A+y|0]=m;var E=o;break a}while(0);var S=Ae[o]<<24>>24;Y(r,S);var E=o}while(0);var E,M=E+1|0;if(M>>>0>=t>>>0)break r;var o=M}while(0)}function $(r,a){var e,i,v,t,f,_,s,n=r>>2,o=Se[a>>2];r:do if(22==(0|o)||25==(0|o)){var l=Me[n+1],b=0==(0|l);do if(!b){var _=(r+8|0)>>2,k=Me[_];if((k+9|0)>>>0>Me[n+3]>>>0)break;for(var u=l+k|0,c=0|He.__str147,h=u,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var w=Se[_]+9|0;Se[_]=w;break r}while(0);Q(r,0|He.__str147,9)}else if(23==(0|o)||26==(0|o)){var p=Me[n+1],E=0==(0|p);do if(!E){var f=(r+8|0)>>2,A=Me[f];if((A+9|0)>>>0>Me[n+3]>>>0)break;for(var g=p+A|0,c=0|He.__str148,h=g,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var y=Se[f]+9|0;Se[f]=y;break r}while(0);Q(r,0|He.__str148,9)}else if(24==(0|o)||27==(0|o)){var m=Me[n+1],S=0==(0|m);do if(!S){var t=(r+8|0)>>2,M=Me[t];if((M+6|0)>>>0>Me[n+3]>>>0)break;var C=m+M|0;Ae[C]=Ae[0|He.__str149],Ae[C+1]=Ae[(0|He.__str149)+1],Ae[C+2]=Ae[(0|He.__str149)+2],Ae[C+3]=Ae[(0|He.__str149)+3],Ae[C+4]=Ae[(0|He.__str149)+4],Ae[C+5]=Ae[(0|He.__str149)+5];var R=Se[t]+6|0;Se[t]=R;break r}while(0);Q(r,0|He.__str149,6)}else if(28==(0|o)){var T=Me[n+1],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[n+3]>>>0){s=17;break}Se[N>>2]=I+1|0,Ae[T+I|0]=32,s=18;break}s=17}while(0);17==s&&Y(r,32);var P=Se[a+8>>2];H(r,P)}else if(29==(0|o)){if(0!=(4&Se[n]|0))break;var D=Me[n+1],L=0==(0|D);do if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[n+3]>>>0)break;Se[F>>2]=X+1|0,Ae[D+X|0]=42;break r}while(0);Y(r,42)}else if(30==(0|o)){var j=Me[n+1],U=0==(0|j);do if(!U){var x=r+8|0,z=Me[x>>2];if(z>>>0>=Me[n+3]>>>0)break;Se[x>>2]=z+1|0,Ae[j+z|0]=38;break r}while(0);Y(r,38)}else if(31==(0|o)){var V=Me[n+1],B=0==(0|V);do if(!B){var v=(r+8|0)>>2,K=Me[v];if((K+8|0)>>>0>Me[n+3]>>>0)break;var G=V+K|0,W=0|G;oe=1886220131,Ae[W]=255&oe,oe>>=8,Ae[W+1]=255&oe,oe>>=8,Ae[W+2]=255&oe,oe>>=8,Ae[W+3]=255&oe;var Z=G+4|0;oe=544761196,Ae[Z]=255&oe,oe>>=8,Ae[Z+1]=255&oe,oe>>=8,Ae[Z+2]=255&oe,oe>>=8,Ae[Z+3]=255&oe;var q=Se[v]+8|0;Se[v]=q;break r}while(0);Q(r,0|He.__str150,8)}else if(32==(0|o)){var $=Me[n+1],J=0==(0|$);do if(!J){var i=(r+8|0)>>2,rr=Me[i];if((rr+10|0)>>>0>Me[n+3]>>>0)break;for(var ar=$+rr|0,c=0|He.__str151,h=ar,d=c+10;c<d;c++,h++)Ae[h]=Ae[c];var er=Se[i]+10|0;Se[i]=er;break r}while(0);Q(r,0|He.__str151,10)}else if(37==(0|o)){var ir=r+4|0,vr=Me[ir>>2],tr=0==(0|vr);do{if(!tr){var fr=r+8|0,_r=Me[fr>>2];if(0!=(0|_r)&&Ae[vr+(_r-1)|0]<<24>>24==40){s=42;break}if(_r>>>0>=Me[n+3]>>>0){s=41;break}Se[fr>>2]=_r+1|0,Ae[vr+_r|0]=32,s=42;break}s=41}while(0);41==s&&Y(r,32);var sr=Se[a+4>>2];H(r,sr);var nr=Me[ir>>2],or=0==(0|nr);do if(!or){var e=(r+8|0)>>2,lr=Me[e];if((lr+3|0)>>>0>Me[n+3]>>>0)break;var br=nr+lr|0;Ae[br]=Ae[0|He.__str135],Ae[br+1]=Ae[(0|He.__str135)+1],Ae[br+2]=Ae[(0|He.__str135)+2];var kr=Se[e]+3|0;Se[e]=kr;break r}while(0);Q(r,0|He.__str135,3)}else if(3==(0|o)){var ur=Se[a+4>>2];H(r,ur)}else H(r,a);while(0)}function J(r){var a=r+20|0,e=Se[a>>2];if((0|e)<(0|Se[r+24>>2])){var i=Se[r+16>>2]+12*e|0,v=e+1|0;Se[a>>2]=v;var t=i}else var t=0;var t;return t}function rr(r,a,e){var i,v,t,f,_=r>>2,s=e,t=s>>2,n=0;r:for(;;){var n,s,o=0==(0|s);do if(!o){if(0!=(0|Se[t+2]))break;var l=Se[Se[t+1]>>2];if(29==(0|l)||30==(0|l)){f=9;break r}if(22==(0|l)||23==(0|l)||24==(0|l)||28==(0|l)||31==(0|l)||32==(0|l)||37==(0|l)){var b=Se[_+1];f=12;break r}var s=Se[t],t=s>>2,n=1;continue r}while(0);if(0!=(0|Se[a+4>>2])&0==(0|n)){f=9;break}var k=0,u=r+4|0,v=u>>2;f=22;break}do if(9==f){var c=Se[_+1];if(0==(0|c)){f=17;break}var h=Se[_+2];if(0==(0|h)){var d=c;f=13;break}var w=Ae[c+(h-1)|0];if(w<<24>>24==40||w<<24>>24==42){f=18;break}var b=c;f=12;break}while(0);do if(12==f){var b;if(0==(0|b)){f=17;break}var d=b;f=13;break}while(0);do if(13==f){var d,p=r+8|0,E=Me[p>>2];if(0!=(0|E)&&Ae[d+(E-1)|0]<<24>>24==32){f=18;break}if(E>>>0>=Me[_+3]>>>0){f=17;break}Se[p>>2]=E+1|0,Ae[d+E|0]=32,f=18;break}while(0);do if(17==f){Y(r,32),f=18;break}while(0);r:do if(18==f){var A=r+4|0,g=Me[A>>2],y=0==(0|g);do if(!y){var m=r+8|0,S=Me[m>>2];if(S>>>0>=Me[_+3]>>>0)break;Se[m>>2]=S+1|0,Ae[g+S|0]=40;var k=1,u=A,v=u>>2;break r}while(0);Y(r,40);var k=1,u=A,v=u>>2}while(0);var u,k,i=(r+20|0)>>2,M=Se[i];Se[i]=0,vr(r,e,0);r:do if(k){var C=Me[v],R=0==(0|C);do if(!R){var T=r+8|0,O=Me[T>>2];if(O>>>0>=Me[_+3]>>>0)break;Se[T>>2]=O+1|0,Ae[C+O|0]=41;break r}while(0);Y(r,41)}while(0);var N=Me[v],I=0==(0|N);do{if(!I){var P=r+8|0,D=Me[P>>2];if(D>>>0>=Me[_+3]>>>0){f=30;break}Se[P>>2]=D+1|0,Ae[N+D|0]=40,f=31;break}f=30}while(0);30==f&&Y(r,40);var L=Se[a+8>>2];0!=(0|L)&&H(r,L);var F=Me[v],X=0==(0|F);do{if(!X){var j=r+8|0,U=Me[j>>2];if(U>>>0>=Me[_+3]>>>0){f=36;break}Se[j>>2]=U+1|0,Ae[F+U|0]=41,f=37;break}f=36}while(0);36==f&&Y(r,41),vr(r,e,1),Se[i]=M}function ar(r,a,e){var i,v,t,f=r>>2,_=0==(0|e);do{if(!_){var s=e,v=s>>2;r:for(;;){var s;if(0==(0|s)){var n=1;t=14;break}if(0==(0|Se[v+2])){var o=36==(0|Se[Se[v+1]>>2]),l=1&o^1;if(o){var n=l;t=14;break}var b=r+4|0,k=Me[b>>2],u=0==(0|k);do{if(!u){var i=(r+8|0)>>2,c=Me[i];if((c+2|0)>>>0>Me[f+3]>>>0){t=9;break}var h=k+c|0;oe=10272,Ae[h]=255&oe,oe>>=8,Ae[h+1]=255&oe;var d=Se[i]+2|0;Se[i]=d,vr(r,e,0),t=10;break}t=9}while(0);9==t&&(Q(r,0|He.__str140,2),vr(r,e,0));var w=Me[b>>2],p=0==(0|w);do if(!p){var E=r+8|0,A=Me[E>>2];if(A>>>0>=Me[f+3]>>>0)break;Se[E>>2]=A+1|0,Ae[w+A|0]=41;var g=l;t=15;break r}while(0);Y(r,41);var g=l;t=15;break}var s=Se[v],v=s>>2}if(14==t){var n;vr(r,e,0);var g=n}var g;if(0!=(0|g)){t=17;break}var y=r+4|0;t=21;break}t=17}while(0);r:do if(17==t){var m=r+4|0,S=Me[m>>2],M=0==(0|S);do if(!M){var C=r+8|0,R=Me[C>>2];if(R>>>0>=Me[f+3]>>>0)break;Se[C>>2]=R+1|0,Ae[S+R|0]=32;var y=m;break r}while(0);Y(r,32);var y=m}while(0);var y,T=Me[y>>2],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[f+3]>>>0){t=24;break}Se[N>>2]=I+1|0,Ae[T+I|0]=91,t=25;break}t=24}while(0);24==t&&Y(r,91);var P=Se[a+4>>2];0!=(0|P)&&H(r,P);var D=Me[y>>2],L=0==(0|D);do{if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[f+3]>>>0){t=30;break}Se[F>>2]=X+1|0,Ae[D+X|0]=93,t=31;break}t=30}while(0);30==t&&Y(r,93)}function er(r,a){var e,i,v,t,f,_,s=Oe;Oe+=8;var n,o=s,_=(a+4|0)>>2,l=Se[_];if(4==(0|Se[l>>2])){var f=(r+20|0)>>2,b=Se[f];Se[f]=0;var t=(r+16|0)>>2,k=Se[t],u=0|o;Se[u>>2]=k,Se[t]=o;var c=Se[_];Se[o+4>>2]=c;var h=Se[c+4>>2];H(r,h);var d=Se[u>>2];Se[t]=d;var v=(r+4|0)>>2,w=Me[v],p=0==(0|w);do{if(!p){var i=(r+8|0)>>2,E=Me[i],A=0==(0|E);do if(!A){if(Ae[w+(E-1)|0]<<24>>24!=60)break;E>>>0<Me[r+12>>2]>>>0?(Se[i]=E+1|0,Ae[w+E|0]=32):Y(r,32)}while(0);var g=Me[v];if(0==(0|g)){n=12;break}var y=Me[i];if(y>>>0>=Me[r+12>>2]>>>0){n=12;break}Se[i]=y+1|0,Ae[g+y|0]=60,n=13;break}n=12}while(0);12==n&&Y(r,60);var m=Se[Se[_]+8>>2];H(r,m);var S=Me[v],M=0==(0|S);do{if(!M){var e=(r+8|0)>>2,C=Me[e],R=0==(0|C);do if(!R){if(Ae[S+(C-1)|0]<<24>>24!=62)break;C>>>0<Me[r+12>>2]>>>0?(Se[e]=C+1|0,Ae[S+C|0]=32):Y(r,32)}while(0);var T=Me[v];if(0==(0|T)){n=22;break}var O=Me[e];if(O>>>0>=Me[r+12>>2]>>>0){n=22;break}Se[e]=O+1|0,Ae[T+O|0]=62,n=23;break}n=22}while(0);22==n&&Y(r,62),Se[f]=b}else H(r,l);Oe=s}function ir(r,a){var e,i=40==(0|Se[a>>2]);r:do if(i){var v=Me[r+4>>2],t=0==(0|v);do{if(!t){var e=(r+8|0)>>2,f=Me[e],_=a+4|0,s=Me[_>>2],n=Me[s+8>>2];if((n+f|0)>>>0>Me[r+12>>2]>>>0){var o=s,l=n;break}var b=v+f|0,k=Se[s+4>>2];Pa(b,k,n,1);var u=Se[e]+Se[Se[_>>2]+8>>2]|0;Se[e]=u;break r}var c=Me[a+4>>2],o=c,l=Se[c+8>>2]}while(0);var l,o,h=Se[o+4>>2];Q(r,h,l)}else H(r,a);while(0)}function vr(r,a,e){var i,v,t,f,_,f=(r+4|0)>>2,s=0==(0|e),t=(r+16|0)>>2;r:do if(s)for(var n=a;;){var n;if(0==(0|n)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var o=n+8|0,l=0==(0|Se[o>>2]);do if(l){var b=n+4|0;if((Se[Se[b>>2]>>2]-25|0)>>>0<3)break;Se[o>>2]=1;var k=Me[t],u=Se[n+12>>2];Se[t]=u;var c=Me[b>>2],h=Se[c>>2];if(35==(0|h)){var d=n,w=k,p=c;_=14;break r}if(36==(0|h)){var E=n,A=k,g=c;_=15;break r}if(2==(0|h)){var y=k,m=b;_=16;break r}$(r,c),Se[t]=k}while(0);var n=Se[n>>2]}else for(var S=a;;){var S;if(0==(0|S)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var M=S+8|0;if(0==(0|Se[M>>2])){Se[M>>2]=1;var C=Me[t],R=Se[S+12>>2];Se[t]=R;var T=S+4|0,O=Me[T>>2],N=Se[O>>2];if(35==(0|N)){var d=S,w=C,p=O;_=14;break r}if(36==(0|N)){var E=S,A=C,g=O;_=15;break r}if(2==(0|N)){var y=C,m=T;_=16;break r}$(r,O),Se[t]=C}var S=Se[S>>2]}while(0);if(14==_){var p,w,d,I=Se[d>>2];rr(r,p,I),Se[t]=w}else if(15==_){var g,A,E,P=Se[E>>2];ar(r,g,P),Se[t]=A}else if(16==_){var m,y,v=(r+20|0)>>2,D=Se[v];Se[v]=0;var L=Se[Se[m>>2]+4>>2];H(r,L),Se[v]=D;var F=0==(4&Se[r>>2]|0),X=Me[f],j=0!=(0|X);r:do if(F){do if(j){var i=(r+8|0)>>2,U=Me[i];if((U+2|0)>>>0>Me[r+12>>2]>>>0)break;var x=X+U|0;oe=14906,Ae[x]=255&oe,oe>>=8,Ae[x+1]=255&oe;var z=Se[i]+2|0;Se[i]=z;break r}while(0);Q(r,0|He.__str120,2)}else{do if(j){var V=r+8|0,B=Me[V>>2];if(B>>>0>=Me[r+12>>2]>>>0)break;Se[V>>2]=B+1|0,Ae[X+B|0]=46;break r}while(0);Y(r,46)}while(0);var K=Me[Se[m>>2]+8>>2],G=(Se[K>>2]-25|0)>>>0<3;r:do if(G)for(var W=K;;){var W,Z=Me[W+4>>2];if((Se[Z>>2]-25|0)>>>0>=3){var q=Z;break r}var W=Z}else var q=K;while(0);var q;H(r,q),Se[t]=y}}function tr(r,a){var e,e=(r+4|0)>>2,i=Se[e],v=0==(0|i);r:do if(!v){for(var t=Se[r+8>>2]+a|0,f=r+12|0,_=Se[f>>2],s=i;;){var s,_;if(t>>>0<=_>>>0)break r;var n=_<<1,o=fa(s,n);if(0==(0|o))break;Se[e]=o,Se[f>>2]=n;var _=n,s=o}var l=Se[e];va(l),Se[e]=0,Se[r+24>>2]=1}while(0)}function fr(r,a,e){var i,v=J(r),i=v>>2;return 0!=(0|v)&&(Se[i]=21,Se[i+1]=a,Se[i+2]=e),v}function _r(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;if(88==(0|i)){var v=e+1|0;Se[a]=v;var t=nr(r),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else if(76==(0|i))var o=or(r),n=o;else var l=N(r),n=l;var n;return n}function sr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==110){var v=e+1|0;Se[a]=v;var t=1,f=Ae[v],_=v}else var t=0,f=i,_=e;var _,f,t,s=(f-48&255&255)<10;r:do if(s)for(var n=f,o=0,l=_;;){var l,o,n,b=(n<<24>>24)-48+10*o|0,k=l+1|0;Se[a]=k;var u=ge[k];if((u-48&255&255)>=10){var c=b;break r}var n=u,o=b,l=k}else var c=0;while(0);var c,h=0==(0|t)?c:0|-c;return h}function nr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=Ae[i];do{if(v<<24>>24==76){var t=or(r),f=t;e=21;break}if(v<<24>>24==84){var _=x(r),f=_;e=21;break}if(v<<24>>24==115){if(Ae[i+1|0]<<24>>24!=114){e=8;break}var s=i+2|0;Se[a]=s;var n=N(r),o=br(r);if(Ae[Se[a]]<<24>>24==73){var l=z(r),b=D(r,4,o,l),k=D(r,1,n,b),f=k;e=21;break}var u=D(r,1,n,o),f=u;e=21;break}e=8}while(0);r:do if(8==e){var c=kr(r);if(0==(0|c)){var f=0;break}var h=0|c,d=Se[h>>2],w=40==(0|d);do{if(w){var p=c+4|0,E=r+48|0,A=Se[Se[p>>2]+8>>2]-2+Se[E>>2]|0;Se[E>>2]=A;var g=Se[h>>2];if(40!=(0|g)){var y=g;e=13;break}var m=Se[p>>2],S=Se[m>>2],M=Da(S,0|He.__str90);if(0!=(0|M)){var C=m;e=15;break}var R=N(r),T=D(r,43,c,R),f=T;break r}var y=d;e=13}while(0);do if(13==e){var y;if(40==(0|y)){var C=Se[c+4>>2];e=15;break}if(41==(0|y)){var O=c+4|0;e=17;break}if(42==(0|y)){e=18;break}var f=0;break r}while(0);do if(15==e){var C,O=C+12|0;e=17;break}while(0);do if(17==e){var O,I=Se[O>>2];if(1==(0|I))break;if(2==(0|I)){var P=nr(r),L=nr(r),F=D(r,45,P,L),X=D(r,44,c,F);return X}if(3==(0|I)){var j=nr(r),U=nr(r),V=nr(r),B=D(r,48,U,V),H=D(r,47,j,B),K=D(r,46,c,H);return K}var f=0;break r}while(0);var Y=nr(r),G=D(r,43,c,Y);return G}while(0);var f;return f}function or(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==76;r:do if(v){if(Ae[i]<<24>>24==95)var t=T(r,0),f=t;else{var _=N(r);if(0==(0|_)){var s=0;break}var n=33==(0|Se[_>>2]);do if(n){var o=Se[_+4>>2];if(0==(0|Se[o+16>>2]))break;var l=r+48|0,b=Se[l>>2]-Se[o+4>>2]|0;Se[l>>2]=b}while(0);var k=Se[a];if(Ae[k]<<24>>24==110){var u=k+1|0;Se[a]=u;var c=50,h=u}else var c=49,h=k;for(var h,c,d=h;;){var d,w=Ae[d];if(w<<24>>24==69)break;if(w<<24>>24==0){var s=0;break r}var p=d+1|0;Se[a]=p;var d=p}var E=lr(r,h,d-h|0),A=D(r,c,_,E),f=A}var f,g=Se[a],y=g+1|0;Se[a]=y;var m=Ae[g]<<24>>24==69?f:0,s=m}else var s=0;while(0);var s;return s}function lr(r,a,e){var i=J(r),v=m(i,a,e),t=0==(0|v)?0:i;return t}function br(r){var a=r+12|0,e=Me[a>>2],i=ge[e],v=(i-48&255&255)<10;do if(v)var t=L(r),f=t;else if((i-97&255&255)<26){var _=kr(r);if(0==(0|_)){var f=0;break}if(40!=(0|Se[_>>2])){var f=_;break}var s=r+48|0,n=Se[Se[_+4>>2]+8>>2]+Se[s>>2]+7|0;Se[s>>2]=n;var f=_}else if(i<<24>>24==67||i<<24>>24==68)var o=hr(r),f=o;else{if(i<<24>>24!=76){var f=0;break}Se[a>>2]=e+1|0;var l=L(r);if(0==(0|l)){var f=0;break}var b=dr(r),k=0==(0|b)?0:l,f=k}while(0);var f;return f}function kr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=i+1|0;Se[a]=v;var t=ge[i],f=i+2|0;Se[a]=f;var _=ge[v];do{if(t<<24>>24==118){if((_-48&255&255)>=10){var s=49,n=0;e=6;break}var o=(_<<24>>24)-48|0,l=L(r),b=ur(r,o,l),k=b;e=14;break}if(t<<24>>24==99){if(_<<24>>24!=118){var s=49,n=0;e=6;break}var u=N(r),c=D(r,42,u,0),k=c;e=14;break}var s=49,n=0;e=6}while(0);r:do if(6==e){for(;;){var n,s,h=(s-n)/2+n|0,d=(h<<4)+ri|0,w=Se[d>>2],p=Ae[w],E=t<<24>>24==p<<24>>24;if(E&&_<<24>>24==Ae[w+1|0]<<24>>24)break;var A=t<<24>>24<p<<24>>24;do if(A)var g=h,y=n;else{if(E&&_<<24>>24<Ae[w+1|0]<<24>>24){var g=h,y=n;break}var g=s,y=h+1|0}while(0);var y,g;if((0|y)==(0|g)){var k=0;break r}var s=g,n=y}var m=cr(r,d),k=m}while(0);var k;return k}function ur(r,a,e){var i=J(r),v=S(i,a,e),t=0==(0|v)?0:i;return t}function cr(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=40,Se[e+4>>2]=a),e}function hr(r){var a,e,i=Se[r+44>>2],e=i>>2,v=0==(0|i);do if(!v){var t=Se[e];if(0==(0|t)){var f=r+48|0,_=Se[f>>2]+Se[e+2]|0;Se[f>>2]=_}else{if(21!=(0|t))break;var s=r+48|0,n=Se[s>>2]+Se[e+2]|0;Se[s>>2]=n}}while(0);var a=(r+12|0)>>2,o=Se[a],l=o+1|0;Se[a]=l;var b=Ae[o]<<24>>24;do if(67==(0|b)){var k=o+2|0;Se[a]=k;var u=Ae[l]<<24>>24;if(49==(0|u))var c=1;else if(50==(0|u))var c=2;else{if(51!=(0|u)){var h=0;break}var c=3}var c,d=wr(r,c,i),h=d}else if(68==(0|b)){var w=o+2|0;Se[a]=w;var p=Ae[l]<<24>>24;if(48==(0|p))var E=1;else if(49==(0|p))var E=2;else{if(50!=(0|p)){var h=0;break}var E=3}var E,A=pr(r,E,i),h=A}else var h=0;while(0);var h;return h}function dr(r){var a=r+12|0,e=Se[a>>2];if(Ae[e]<<24>>24==95){var i=e+1|0;Se[a>>2]=i;var v=sr(r),t=v>>>31^1}else var t=1;var t;return t}function wr(r,a,e){var i=J(r),v=M(i,a,e),t=0==(0|v)?0:i;return t}function pr(r,a,e){var i=J(r),v=C(i,a,e),t=0==(0|v)?0:i;return t}function Er(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=5,Se[e+4>>2]=a),e}function Ar(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;do if(78==(0|i))var v=gr(r),t=v;else if(90==(0|i))var f=yr(r),t=f;else if(76==(0|i))var _=br(r),t=_;else if(83==(0|i)){if(Ae[e+1|0]<<24>>24==116){var s=e+2|0;Se[a]=s;var n=lr(r,0|He.__str152,3),o=br(r),l=D(r,1,n,o),b=r+48|0,k=Se[b>>2]+3|0;Se[b>>2]=k;var u=0,c=l}else var h=V(r,0),u=1,c=h;var c,u;if(Ae[Se[a]]<<24>>24!=73){var t=c;break}if(0==(0|u)){var d=R(r,c);if(0==(0|d)){var t=0;break}}var w=z(r),p=D(r,4,c,w),t=p}else{var E=br(r);if(Ae[Se[a]]<<24>>24!=73){var t=E;break}var A=R(r,E);if(0==(0|A)){var t=0;break}var g=z(r),y=D(r,4,E,g),t=y}while(0);var t;return t}function gr(r){var a,e=Oe;Oe+=4;var i=e,a=(r+12|0)>>2,v=Se[a],t=v+1|0;Se[a]=t;var f=Ae[v]<<24>>24==78;do if(f){var _=I(r,i,1);if(0==(0|_)){var s=0;break}var n=mr(r);if(Se[_>>2]=n,0==(0|n)){var s=0;break}var o=Se[a],l=o+1|0;if(Se[a]=l,Ae[o]<<24>>24!=69){var s=0;break}var s=Se[i>>2]}else var s=0;while(0);var s;return Oe=e,s}function yr(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==90;do if(v){var t=O(r,0),f=Se[a],_=f+1|0;if(Se[a]=_,Ae[f]<<24>>24!=69){var s=0;break}if(Ae[_]<<24>>24==115){var n=f+2|0;Se[a]=n;var o=dr(r);if(0==(0|o)){var s=0;break}var l=lr(r,0|He.__str168,14),b=D(r,2,t,l),s=b}else{var k=Ar(r),u=dr(r);if(0==(0|u)){var s=0;break}var c=D(r,2,t,k),s=c}}else var s=0;while(0);var s;return s}function mr(r){var a,e=r+12|0,i=0;r:for(;;){var i,v=ge[Se[e>>2]];if(v<<24>>24==0){var t=0;break}var f=(v-48&255&255)<10|(v-97&255&255)<26;do{if(!f){if(v<<24>>24==76||v<<24>>24==68||v<<24>>24==67){a=5;break}if(v<<24>>24==83){var _=V(r,1),s=_;a=10;break}if(v<<24>>24==73){if(0==(0|i)){var t=0;break r}var n=z(r),o=4,l=n;a=11;break}if(v<<24>>24==84){var b=x(r),s=b;a=10;break}if(v<<24>>24==69){var t=i;break r}var t=0;break r}a=5}while(0);do if(5==a){var k=br(r),s=k;a=10;break}while(0);do if(10==a){var s;if(0==(0|i)){var u=s;a=12;break}var o=1,l=s;a=11;break}while(0);if(11==a)var l,o,c=D(r,o,i,l),u=c;var u;if(v<<24>>24!=83)if(Ae[Se[e>>2]]<<24>>24!=69){var h=R(r,u);if(0==(0|h)){var t=0;break}var i=u}else var i=u;else var i=u}var t;return t}function Sr(r,a){var e,i,v=Oe;Oe+=4;var t=v,i=t>>2,e=(r+12|0)>>2,f=Se[e];if(Ae[f]<<24>>24==74){var _=f+1|0;Se[e]=_;var s=1}else var s=a;var s;Se[i]=0;var n=s,o=0,l=t;r:for(;;)for(var l,o,n,b=n,k=o;;){var k,b,u=Ae[Se[e]];if(u<<24>>24==0||u<<24>>24==69){var c=Se[i];if(0==(0|c)){var h=0;break r}var d=0==(0|Se[c+8>>2]);do if(d){var w=Se[c+4>>2];if(33!=(0|Se[w>>2])){var p=c;break}var E=Se[w+4>>2];if(9!=(0|Se[E+16>>2])){var p=c;break}var A=r+48|0,g=Se[A>>2]-Se[E+4>>2]|0;Se[A>>2]=g,Se[i]=0;var p=0}else var p=c;while(0);var p,y=D(r,35,k,p),h=y;break r}var m=N(r);if(0==(0|m)){var h=0;break r}if(0==(0|b)){var S=D(r,38,m,0);if(Se[l>>2]=S,0==(0|S)){var h=0;break r}var n=0,o=k,l=S+8|0;continue r}var b=0,k=m}var h;return Oe=v,h}function Mr(r){for(var a=r;;){var a;if(0==(0|a)){var e=0;break}var i=Se[a>>2];if(1!=(0|i)&&2!=(0|i)){if(6==(0|i)||7==(0|i)||42==(0|i)){var e=1;break}var e=0;break}var a=Se[a+8>>2]}var e;return e}function Cr(r){var a=r>>2;Se[a+3]=0,Se[a+2]=0,Se[a+1]=0,Se[a]=0,Se[a+4]=0}function Rr(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=(Se[r+4>>2]-i|0)<(0|a);r:do if(v)var t=0;else{var f=i+a|0;Se[e]=f;var _=0==(4&Se[r+8>>2]|0);do if(!_){if(Ae[f]<<24>>24!=36)break;var s=a+(i+1)|0;Se[e]=s}while(0);var n=(0|a)>9;do if(n){var o=La(i,0|He.__str117,8);if(0!=(0|o))break;var l=Ae[i+8|0];if(l<<24>>24!=46&&l<<24>>24!=95&&l<<24>>24!=36)break;if(Ae[i+9|0]<<24>>24!=78)break;var b=r+48|0,k=22-a+Se[b>>2]|0;Se[b>>2]=k;var u=lr(r,0|He.__str169,21),t=u;break r}while(0);var c=lr(r,i,a),t=c}while(0);var t;return t}function Tr(r){var a,e,e=(r+48|0)>>2,i=Se[e],v=i+20|0;Se[e]=v;var a=(r+12|0)>>2,t=Se[a],f=t+1|0;Se[a]=f;var _=Ae[t];do if(_<<24>>24==84){var s=t+2|0;Se[a]=s;var n=Ae[f]<<24>>24;if(86==(0|n)){var o=i+15|0;Se[e]=o;var l=N(r),b=D(r,8,l,0),k=b}else if(84==(0|n)){var u=i+10|0;Se[e]=u;var c=N(r),h=D(r,9,c,0),k=h}else if(73==(0|n))var d=N(r),w=D(r,11,d,0),k=w;else if(83==(0|n))var p=N(r),E=D(r,12,p,0),k=E;else if(104==(0|n)){var A=Nr(r,104);if(0==(0|A)){var k=0;break}var g=O(r,0),y=D(r,14,g,0),k=y}else if(118==(0|n)){var m=Nr(r,118);if(0==(0|m)){var k=0;break}var S=O(r,0),M=D(r,15,S,0),k=M}else if(99==(0|n)){var C=Nr(r,0);if(0==(0|C)){var k=0;break}var R=Nr(r,0);if(0==(0|R)){var k=0;break}var T=O(r,0),I=D(r,16,T,0),k=I}else if(67==(0|n)){var P=N(r),L=sr(r);if((0|L)<0){var k=0;break}var F=Se[a],X=F+1|0;if(Se[a]=X,Ae[F]<<24>>24!=95){var k=0;break}var j=N(r),U=Se[e]+5|0;Se[e]=U;var x=D(r,10,j,P),k=x}else if(70==(0|n))var z=N(r),V=D(r,13,z,0),k=V;else{if(74!=(0|n)){var k=0;break}var B=N(r),H=D(r,17,B,0),k=H}}else if(_<<24>>24==71){var K=t+2|0;Se[a]=K;var Y=Ae[f]<<24>>24;if(86==(0|Y))var G=Ar(r),W=D(r,18,G,0),k=W;else if(82==(0|Y))var Z=Ar(r),Q=D(r,19,Z,0),k=Q;else{if(65!=(0|Y)){var k=0;break}var q=O(r,0),$=D(r,20,q,0),k=$}}else var k=0;while(0);var k;return k}function Or(r){for(var a,e=r,a=e>>2;;){var e;if(0==(0|e)){var i=0;break}var v=Se[a];if(4==(0|v)){var t=Se[a+1],f=Mr(t),i=0==(0|f)&1;break}if(25!=(0|v)&&26!=(0|v)&&27!=(0|v)){var i=0;break}var e=Se[a+1],a=e>>2}var i;return i}function Nr(r,a){var e;if(0==(0|a)){var i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24}else var f=a;var f;do{if(104==(0|f)){var _=(sr(r),r+12|0);e=7;break}if(118==(0|f)){var s=(sr(r),r+12|0),n=Se[s>>2],o=n+1|0;if(Se[s>>2]=o,Ae[n]<<24>>24!=95){var l=0;e=8;break}var _=(sr(r),s);e=7;break}var l=0;e=8}while(0);if(7==e){var _,b=Se[_>>2],k=b+1|0;Se[_>>2]=k;var l=Ae[b]<<24>>24==95&1}var l;return l}function Ir(r){var a,e,i=r>>2,v=Oe;Oe+=56;var t,f=v,_=v+8,s=v+16,n=v+36,e=(0|r)>>2,o=Se[e],l=0==(8192&o|0);r:do{if(l){var a=(r+12|0)>>2,b=Se[a];if(Ae[b]<<24>>24!=63){var k=0;t=111;break}var u=b+1|0;Se[a]=u;var c=Ae[u];do if(c<<24>>24==63){if(Ae[b+2|0]<<24>>24==36){var h=b+3|0;if(Ae[h]<<24>>24!=63){var d=5;t=90;break}Se[a]=h;var w=6,p=h}else var w=0,p=u;var p,w,E=p+1|0;Se[a]=E;var A=Ae[E]<<24>>24;do if(48==(0|A)){var g=1;t=81}else{if(49==(0|A)){var g=2;t=81;break}if(50!=(0|A)){if(51==(0|A)){var y=0|He.__str2172,m=E;t=82;break}if(52==(0|A)){var y=0|He.__str3173,m=E;t=82;break}if(53==(0|A)){var y=0|He.__str4174,m=E;t=82;break}if(54==(0|A)){var y=0|He.__str5175,m=E;t=82;break}if(55==(0|A)){var y=0|He.__str6176,m=E;t=82;break}if(56==(0|A)){var y=0|He.__str7177,m=E;t=82;break}if(57==(0|A)){var y=0|He.__str8178,m=E;t=82;break}if(65==(0|A)){var y=0|He.__str9179,m=E;t=82;break}if(66==(0|A)){Se[a]=p+2|0;var S=0|He.__str10180,M=3;t=88;break}if(67==(0|A)){var y=0|He.__str11181,m=E;t=82;break}if(68==(0|A)){var y=0|He.__str12182,m=E;t=82;break}if(69==(0|A)){var y=0|He.__str13183,m=E;t=82;break}if(70==(0|A)){var y=0|He.__str14184,m=E;t=82;break}if(71==(0|A)){var y=0|He.__str15185,m=E;t=82;break}if(72==(0|A)){var y=0|He.__str16186,m=E;t=82;break}if(73==(0|A)){var y=0|He.__str17187,m=E;t=82;break}if(74==(0|A)){var y=0|He.__str18188,m=E;t=82;break}if(75==(0|A)){var y=0|He.__str19189,m=E;t=82;break}if(76==(0|A)){var y=0|He.__str20190,m=E;t=82;break}if(77==(0|A)){var y=0|He.__str21191,m=E;t=82;break}if(78==(0|A)){var y=0|He.__str22192,m=E;t=82;break}if(79==(0|A)){var y=0|He.__str23193,m=E;t=82;break}if(80==(0|A)){var y=0|He.__str24194,m=E;t=82;break}if(81==(0|A)){var y=0|He.__str25195,m=E;t=82;break}if(82==(0|A)){var y=0|He.__str26196,m=E;t=82;break}if(83==(0|A)){var y=0|He.__str27197,m=E;t=82;break}if(84==(0|A)){var y=0|He.__str28198,m=E;t=82;break}if(85==(0|A)){var y=0|He.__str29199,m=E;t=82;break}if(86==(0|A)){var y=0|He.__str30200,m=E;t=82;break}if(87==(0|A)){var y=0|He.__str31201,m=E;t=82;break}if(88==(0|A)){var y=0|He.__str32202,m=E;t=82;break}if(89==(0|A)){var y=0|He.__str33203,m=E;t=82;break}if(90==(0|A)){var y=0|He.__str34204,m=E;t=82;break}if(95==(0|A)){var C=p+2|0;Se[a]=C;var R=Ae[C]<<24>>24;if(48==(0|R)){var y=0|He.__str35205,m=C;t=82;break}if(49==(0|R)){var y=0|He.__str36206,m=C;t=82;break}if(50==(0|R)){var y=0|He.__str37207,m=C;t=82;break}if(51==(0|R)){var y=0|He.__str38208,m=C;t=82;break}if(52==(0|R)){var y=0|He.__str39209,m=C;t=82;break}if(53==(0|R)){var y=0|He.__str40210,m=C;t=82;break}if(54==(0|R)){var y=0|He.__str41211,m=C;t=82;break}if(55==(0|R)){var y=0|He.__str42212,m=C;t=82;break}if(56==(0|R)){var y=0|He.__str43213,m=C;t=82;break}if(57==(0|R)){var y=0|He.__str44214,m=C;t=82;break}if(65==(0|R)){var y=0|He.__str45215,m=C;t=82;break}if(66==(0|R)){var y=0|He.__str46216,m=C;t=82;break}if(67==(0|R)){Se[a]=p+3|0;var T=0|He.__str47217;t=84;break}if(68==(0|R)){var y=0|He.__str48218,m=C;t=82;break}if(69==(0|R)){var y=0|He.__str49219,m=C;t=82;break}if(70==(0|R)){var y=0|He.__str50220,m=C;t=82;break}if(71==(0|R)){var y=0|He.__str51221,m=C;t=82;break}if(72==(0|R)){var y=0|He.__str52222,m=C;t=82;break}if(73==(0|R)){var y=0|He.__str53223,m=C;t=82;break}if(74==(0|R)){var y=0|He.__str54224,m=C;t=82;break}if(75==(0|R)){var y=0|He.__str55225,m=C;t=82;break}if(76==(0|R)){var y=0|He.__str56226,m=C;t=82;break}if(77==(0|R)){var y=0|He.__str57227,m=C;t=82;break}if(78==(0|R)){var y=0|He.__str58228,m=C;t=82;break}if(79==(0|R)){var y=0|He.__str59229,m=C;t=82;break}if(82==(0|R)){var O=4|o;Se[e]=O;var N=p+3|0;Se[a]=N;var I=Ae[N]<<24>>24;if(48==(0|I)){Se[a]=p+4|0,Cr(s);var P=(Pr(r,_,s,0),Se[_>>2]),D=Se[_+4>>2],L=Dr(r,0|He.__str60230,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=D,ne)),F=Se[a]-1|0;Se[a]=F;var y=L,m=F;t=82;break}if(49==(0|I)){Se[a]=p+4|0;var X=Lr(r),j=Lr(r),U=Lr(r),x=Lr(r),z=Se[a]-1|0;Se[a]=z;var V=Dr(r,0|He.__str61231,(ne=Oe,Oe+=16,Se[ne>>2]=X,Se[ne+4>>2]=j,Se[ne+8>>2]=U,Se[ne+12>>2]=x,ne)),y=V,m=Se[a];t=82;break}if(50==(0|I)){var y=0|He.__str62232,m=N;t=82;break}if(51==(0|I)){var y=0|He.__str63233,m=N;t=82;break}if(52==(0|I)){var y=0|He.__str64234,m=N;t=82;break}var y=0,m=N;t=82;break}if(83==(0|R)){var y=0|He.__str65235,m=C;t=82;break}if(84==(0|R)){var y=0|He.__str66236,m=C;t=82;break}if(85==(0|R)){var y=0|He.__str67237,m=C;t=82;break}if(86==(0|R)){var y=0|He.__str68238,m=C;t=82;break}if(88==(0|R)){var y=0|He.__str69239,m=C;t=82;break}if(89==(0|R)){var y=0|He.__str70240,m=C;t=82;break}var k=0;t=111;break r}var k=0;t=111;break r}var y=0|He.__str1171,m=E;t=82}while(0);do{if(81==t){var g;Se[a]=p+2|0;var B=g;t=83;break}if(82==t){var m,y;if(Se[a]=m+1|0,1==(0|w)||2==(0|w)){var B=w;t=83;break}if(4==(0|w)){var T=y;t=84;break}if(6!=(0|w)){var S=y,M=w;t=88;break}Cr(n);var H=Xr(r,n,0,60,62);if(0==(0|H))var K=y;else var Y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=y,Se[ne+4>>2]=H,ne)),K=Y;var K;Se[i+6]=0;var S=K,M=w;t=88;break}}while(0);if(83==t){var B,G=r+40|0,W=Fr(r,0|He._symbol_demangle_dashed_null,-1,G);if(0==(0|W)){var k=0;t=111;break r}var d=B;t=90;break}if(84==t){var T;Se[i+4]=T;var Z=1,Q=T;t=109;break r}if(88==t){var M,S,q=r+40|0,$=Fr(r,S,-1,q);if(0==(0|$)){var k=0;t=111;break r}var d=M;t=90;break}}else{if(c<<24>>24==36){var J=b+2|0;Se[a]=J;var rr=jr(r);Se[i+4]=rr;var ar=0!=(0|rr)&1;t=107;break}var d=0;t=90}while(0);if(90==t){var d,er=Me[a],ir=Ae[er]<<24>>24;if(64==(0|ir))Se[a]=er+1|0;else if(36==(0|ir))t=93;else{var vr=zr(r);if(0==(0|vr)){var k=-1;t=111;break}}if(5==(0|d)){var tr=r+20|0,fr=Se[tr>>2]+1|0;Se[tr>>2]=fr}else if(1==(0|d)||2==(0|d)){if(Me[i+11]>>>0<2){var k=-1;t=111;break}var _r=r+56|0,sr=Me[_r>>2],nr=Se[sr+4>>2];if(1==(0|d))Se[sr>>2]=nr;else{var or=Dr(r,0|He.__str71241,(ne=Oe,Oe+=4,Se[ne>>2]=nr,ne)),lr=Se[_r>>2];Se[lr>>2]=or}var br=4|Se[e];Se[e]=br}else if(3==(0|d)){var kr=Se[e]&-5;Se[e]=kr}var ur=ge[Se[a]];if((ur-48&255&255)<10)var cr=Vr(r),ar=cr;else if((ur-65&255&255)<26)var hr=Br(r,3==(0|d)&1),ar=hr;else{if(ur<<24>>24!=36){var k=-1;t=111;break}var dr=Hr(r),ar=dr}}var ar;if(0==(0|ar)){var k=-1;t=111;break}var Z=ar,Q=Se[i+4];t=109;break}var wr=Pr(r,f,0,0);if(0==(0|wr)){var k=-1;t=111;break}var pr=Se[f>>2],Er=Se[f+4>>2],Ar=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=pr,Se[ne+4>>2]=Er,ne));Se[i+4]=Ar;var Z=1,Q=Ar;t=109;break}while(0);do if(109==t){var Q,Z;if(0!=(0|Q)){var k=Z;break}Xa(0|He.__str72242,1499,0|He.___func___symbol_demangle,0|He.__str73243);var k=Z}while(0);var k;return Oe=v,k}function Pr(r,a,e,i){var v,t,f,_=Oe;Oe+=24;var s=_,n=_+4,o=_+8,l=_+16,b=_+20;0==(0|a)&&Xa(0|He.__str72242,829,0|He.___func___demangle_datatype,0|He.__str121291);var f=(a+4|0)>>2;Se[f]=0;var t=(0|a)>>2;Se[t]=0;var v=(r+12|0)>>2,k=Me[v],u=k+1|0;Se[v]=u;var c=Ae[k],h=c<<24>>24;do if(95==(0|h)){Se[v]=k+2|0;var d=Ae[u],w=Zr(d);Se[t]=w}else if(67==(0|h)||68==(0|h)||69==(0|h)||70==(0|h)||71==(0|h)||72==(0|h)||73==(0|h)||74==(0|h)||75==(0|h)||77==(0|h)||78==(0|h)||79==(0|h)||88==(0|h)||90==(0|h)){var p=Qr(c);Se[t]=p}else if(84==(0|h)||85==(0|h)||86==(0|h)||89==(0|h)){var E=qr(r);if(0==(0|E))break;var A=0==(32768&Se[r>>2]|0);do if(A)if(84==(0|h))var g=0|He.__str122292;else if(85==(0|h))var g=0|He.__str123293;else if(86==(0|h))var g=0|He.__str124294;else{if(89!=(0|h)){var g=0;break}var g=0|He.__str125295}else var g=0;while(0);var g,y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=g,Se[ne+4>>2]=E,ne));Se[t]=y}else if(63==(0|h))if(0==(0|i))$r(a,r,e,63,0);else{var m=Lr(r);if(0==(0|m))break;var S=Dr(r,0|He.__str126296,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne));Se[t]=S}else if(65==(0|h)||66==(0|h))$r(a,r,e,c,i);else if(81==(0|h)||82==(0|h)||83==(0|h)){var M=0==(0|i)?80:c;$r(a,r,e,M,i)}else if(80==(0|h))if(((Ae[u]<<24>>24)-48|0)>>>0<10){var C=k+2|0;if(Se[v]=C,Ae[u]<<24>>24!=54)break;var R=r+44|0,T=Se[R>>2];Se[v]=k+3|0;var O=Ae[C],N=Se[r>>2]&-17,I=Ur(O,s,n,N);if(0==(0|I))break;var P=Pr(r,o,e,0);if(0==(0|P))break;var D=Xr(r,e,1,40,41);if(0==(0|D))break;Se[R>>2]=T;var L=Se[o>>2],F=Se[o+4>>2],X=Se[s>>2],j=Dr(r,0|He.__str127297,(ne=Oe,Oe+=12,Se[ne>>2]=L,Se[ne+4>>2]=F,Se[ne+8>>2]=X,ne));Se[t]=j;var U=Dr(r,0|He.__str128298,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[f]=U}else $r(a,r,e,80,i);else if(87==(0|h)){if(Ae[u]<<24>>24!=52)break;Se[v]=k+2|0;var x=qr(r);if(0==(0|x))break;if(0==(32768&Se[r>>2]|0)){var z=Dr(r,0|He.__str129299,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne));Se[t]=z}else Se[t]=x}else if(48==(0|h)||49==(0|h)||50==(0|h)||51==(0|h)||52==(0|h)||53==(0|h)||54==(0|h)||55==(0|h)||56==(0|h)||57==(0|h)){var V=h<<1,B=V-96|0,H=Yr(e,B);Se[t]=H;var K=V-95|0,Y=Yr(e,K);Se[f]=Y}else if(36==(0|h)){var G=k+2|0;Se[v]=G;var W=Ae[u]<<24>>24;if(48==(0|W)){var Z=Lr(r);Se[t]=Z}else if(68==(0|W)){var Q=Lr(r);if(0==(0|Q))break;var q=Dr(r,0|He.__str130300,(ne=Oe,Oe+=4,Se[ne>>2]=Q,ne));Se[t]=q}else if(70==(0|W)){var $=Lr(r);if(0==(0|$))break;var J=Lr(r);if(0==(0|J))break;var rr=Dr(r,0|He.__str131301,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=J,ne));Se[t]=rr}else if(71==(0|W)){var ar=Lr(r);if(0==(0|ar))break;var er=Lr(r);if(0==(0|er))break;var ir=Lr(r);if(0==(0|ir))break;var vr=Dr(r,0|He.__str132302,(ne=Oe,Oe+=12,Se[ne>>2]=ar,Se[ne+4>>2]=er,Se[ne+8>>2]=ir,ne));Se[t]=vr}else if(81==(0|W)){var tr=Lr(r);if(0==(0|tr))break;var fr=Dr(r,0|He.__str133303,(ne=Oe,Oe+=4,Se[ne>>2]=tr,ne));Se[t]=fr}else{if(36!=(0|W))break;if(Ae[G]<<24>>24!=67)break;Se[v]=k+3|0;var _r=xr(r,l,b);if(0==(0|_r))break;var sr=Pr(r,a,e,i);if(0==(0|sr))break;var nr=Se[t],or=Se[l>>2],lr=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=nr,Se[ne+4>>2]=or,ne));Se[t]=lr}}while(0);var br=0!=(0|Se[t])&1;return Oe=_,br}function Dr(r,a){var e,i=Oe;Oe+=4;var v=i,e=v>>2,t=v;Se[t>>2]=arguments[Dr.length];var f=1,_=0;r:for(;;){var _,f,s=Ae[a+_|0];do{if(s<<24>>24==0)break r;if(s<<24>>24==37){var n=_+1|0,o=Ae[a+n|0]<<24>>24;if(115==(0|o)){var l=Se[e],b=l,k=l+4|0;Se[e]=k;var u=Se[b>>2];if(0==(0|u)){var c=f,h=n;break}var d=Ca(u),c=d+f|0,h=n;break}if(99==(0|o)){var w=Se[e]+4|0;Se[e]=w;var c=f+1|0,h=n;break}if(37==(0|o))var p=n;else var p=_;var p,c=f+1|0,h=p}else var c=f+1|0,h=_}while(0);var h,c,f=c,_=h+1|0}var E=Wr(r,f);if(0==(0|E))var A=0;else{Se[t>>2]=arguments[Dr.length];var g=E,y=0;r:for(;;){var y,g,m=Ae[a+y|0];do{if(m<<24>>24==0)break r;if(m<<24>>24==37){var S=y+1|0,M=Ae[a+S|0]<<24>>24;if(115==(0|M)){var C=Se[e],R=C,T=C+4|0;Se[e]=T;var O=Se[R>>2];if(0==(0|O)){var N=g,I=S;break}var P=Ca(O);Pa(g,O,P,1);var N=g+P|0,I=S;break}if(99==(0|M)){var D=Se[e],L=D,F=D+4|0;Se[e]=F,Ae[g]=255&Se[L>>2];var N=g+1|0,I=S;break}if(37==(0|M))var X=S;else var X=y;var X;Ae[g]=37;var N=g+1|0,I=X}else{Ae[g]=m;var N=g+1|0,I=y}}while(0);var I,N,g=N,y=I+1|0}Ae[g]=0;var A=E}var A;return Oe=i,A}function Lr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==63){var v=e+1|0;Se[a]=v;var t=1,f=v,_=Ae[v]}else var t=0,f=e,_=i;var _,f,t,s=(_-48&255&255)<9;do if(s){var n=Wr(r,3),o=0!=(0|t);o&&(Ae[n]=45);var l=Ae[Se[a]]+1&255;Ae[n+t|0]=l;var b=o?2:1;\nAe[n+b|0]=0;var k=Se[a]+1|0;Se[a]=k;var u=n}else if(_<<24>>24==57){var c=Wr(r,4),h=0!=(0|t);h&&(Ae[c]=45),Ae[c+t|0]=49;var d=h?2:1;Ae[c+d|0]=48;var w=h?3:2;Ae[c+w|0]=0;var p=Se[a]+1|0;Se[a]=p;var u=c}else{if((_-65&255&255)>=16){var u=0;break}for(var E=0,A=f;;){var A,E,g=A+1|0;Se[a]=g;var y=(Ae[A]<<24>>24)+((E<<4)-65)|0,m=ge[g];if((m-65&255&255)>=16)break;var E=y,A=g}if(m<<24>>24!=64){var u=0;break}var S=Wr(r,17),M=0!=(0|t)?0|He.__str119289:0|ii,C=(za(S,0|He.__str118288,(ne=Oe,Oe+=8,Se[ne>>2]=M,Se[ne+4>>2]=y,ne)),Se[a]+1|0);Se[a]=C;var u=S}while(0);var u;return u}function Fr(r,a,e,i){var v,t,f,_;0==(0|a)&&Xa(0|He.__str72242,212,0|He.___func___str_array_push,0|He.__str115285),0==(0|i)&&Xa(0|He.__str72242,213,0|He.___func___str_array_push,0|He.__str116286);var f=(i+12|0)>>2,s=Me[f],n=0==(0|s);do{if(n){Se[f]=32;var o=Wr(r,128);if(0==(0|o)){var l=0;_=17;break}Se[i+16>>2]=o,_=11;break}if(Me[i+8>>2]>>>0<s>>>0){_=11;break}var b=s<<3,k=Wr(r,b);if(0==(0|k)){var l=0;_=17;break}var u=k,c=i+16|0,h=Se[c>>2],d=Se[f]<<2;Pa(k,h,d,1);var w=Se[f]<<1;Se[f]=w,Se[c>>2]=u,_=11;break}while(0);do if(11==_){if((0|e)==-1)var p=Ca(a),E=p;else var E=e;var E,A=ja(a),g=E+1|0,y=Wr(r,g),t=(i+4|0)>>2,v=(i+16|0)>>2,m=(Se[t]<<2)+Se[v]|0;Se[m>>2]=y;var S=Se[Se[v]+(Se[t]<<2)>>2];if(0==(0|S)){Xa(0|He.__str72242,233,0|He.___func___str_array_push,0|He.__str117287);var M=Se[Se[v]+(Se[t]<<2)>>2]}else var M=S;var M;Pa(M,A,E,1),va(A),Ae[Se[Se[v]+(Se[t]<<2)>>2]+g|0]=0;var C=Se[t]+1|0;Se[t]=C;var R=i+8|0;if(C>>>0<Me[R>>2]>>>0){var l=1;break}Se[R>>2]=C;var l=1}while(0);var l;return l}function Xr(r,a,e,i,v){var t,f,_=Oe;Oe+=28;var s,n=_,o=_+8;Cr(o);var f=(r+12|0)>>2,l=0==(0|e),t=(0|n)>>2,b=n+4|0;r:do if(l)for(;;){var k=Se[f],u=Ae[k];if(u<<24>>24==0){s=12;break r}if(u<<24>>24==64){var c=k;s=7;break r}var h=Pr(r,n,a,1);if(0==(0|h)){var d=0;s=25;break r}var w=Se[t],p=Se[b>>2],E=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=w,Se[ne+4>>2]=p,ne)),A=Fr(r,E,-1,o);if(0==(0|A)){var d=0;s=25;break r}var g=Se[t],y=Da(g,0|He.__str110280);if(0==(0|y)){s=12;break r}}else for(;;){var m=Se[f],S=Ae[m];if(S<<24>>24==0){s=12;break r}if(S<<24>>24==64){var c=m;s=7;break r}var M=Pr(r,n,a,1);if(0==(0|M)){var d=0;s=25;break r}var C=Se[t],R=Da(C,0|He.__str84254);if(0==(0|R)){s=13;break r}var T=Se[b>>2],O=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=C,Se[ne+4>>2]=T,ne)),N=Fr(r,O,-1,o);if(0==(0|N)){var d=0;s=25;break r}var I=Se[t],P=Da(I,0|He.__str110280);if(0==(0|P)){s=12;break r}}while(0);do if(7==s){var c;Se[f]=c+1|0,s=12;break}while(0);do if(12==s){if(l){s=14;break}s=13;break}while(0);do if(13==s){var D=Se[f],L=D+1|0;if(Se[f]=L,Ae[D]<<24>>24==90){s=14;break}var d=0;s=25;break}while(0);r:do if(14==s){var F=o+4|0,X=Me[F>>2];do{if(0!=(0|X)){if(1==(0|X)){var j=o+16|0,U=Se[Se[j>>2]>>2],x=Da(U,0|He.__str84254);if(0==(0|x)){s=17;break}var z=j;s=20;break}var V=o+16|0;if(X>>>0<=1){var z=V;s=20;break}for(var B=0,H=1;;){var H,B,K=Se[Se[V>>2]+(H<<2)>>2],Y=Dr(r,0|He.__str112282,(ne=Oe,Oe+=8,Se[ne>>2]=B,Se[ne+4>>2]=K,ne)),G=H+1|0;if(G>>>0>=Me[F>>2]>>>0)break;var B=Y,H=G}if(0==(0|Y)){var z=V;s=20;break}var W=Y,Z=Y;s=21;break}s=17}while(0);if(17==s){var Q=i<<24>>24,q=v<<24>>24,$=Dr(r,0|He.__str111281,(ne=Oe,Oe+=8,Se[ne>>2]=Q,Se[ne+4>>2]=q,ne)),d=$;break}if(20==s)var z,W=Se[Se[z>>2]>>2],Z=0;var Z,W,J=v<<24>>24,rr=v<<24>>24==62;do if(rr){var ar=Ca(W);if(Ae[W+(ar-1)|0]<<24>>24!=62)break;var er=i<<24>>24,ir=Se[Se[o+16>>2]>>2],vr=Dr(r,0|He.__str113283,(ne=Oe,Oe+=16,Se[ne>>2]=er,Se[ne+4>>2]=ir,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=vr;break r}while(0);var tr=i<<24>>24,fr=Se[Se[o+16>>2]>>2],_r=Dr(r,0|He.__str114284,(ne=Oe,Oe+=16,Se[ne>>2]=tr,Se[ne+4>>2]=fr,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=_r}while(0);var d;return Oe=_,d}function jr(r){var a,e=Oe;Oe+=20;var i=e,v=r+24|0,t=Se[v>>2],a=(r+20|0)>>2,f=Se[a],_=r+44|0,s=Se[_>>2];Se[a]=t;var n=Kr(r);if(0==(0|n))var o=0;else{Cr(i);var l=Xr(r,i,0,60,62);if(0==(0|l))var b=n;else var k=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=n,Se[ne+4>>2]=l,ne)),b=k;var b;Se[v>>2]=t,Se[a]=f,Se[_>>2]=s;var o=b}var o;return Oe=e,o}function Ur(r,a,e,i){var v,t=a>>2;Se[e>>2]=0,Se[t]=0;var f=0==(18&i|0);do{if(f){var _=r<<24>>24,s=1==((_-65)%2|0);if(0==(1&i|0)){if(s?Se[e>>2]=0|He.__str95265:v=14,65==(0|_)||66==(0|_)){Se[t]=0|He.__str96266,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str97267,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str98268,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str99269,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str100270,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str101271,v=21;break}var n=0;v=22;break}if(s?Se[e>>2]=0|He.__str88258:v=5,65==(0|_)||66==(0|_)){Se[t]=0|He.__str89259,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str90260,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str91261,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str92262,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str93263,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str94264,v=21;break}var n=0;v=22;break}v=21}while(0);if(21==v)var n=1;var n;return n}function xr(r,a,e){var i;Se[e>>2]=0;var i=(r+12|0)>>2,v=Se[i];if(Ae[v]<<24>>24==69){Se[e>>2]=0|He.__str102272;var t=Se[i]+1|0;Se[i]=t;var f=t}else var f=v;var f;Se[i]=f+1|0;var _=Ae[f]<<24>>24;if(65==(0|_)){Se[a>>2]=0;var s=1}else if(66==(0|_)){Se[a>>2]=0|He.__str103273;var s=1}else if(67==(0|_)){Se[a>>2]=0|He.__str104274;var s=1}else if(68==(0|_)){Se[a>>2]=0|He.__str105275;var s=1}else var s=0;var s;return s}function zr(r){var a,e,a=(r+12|0)>>2,i=r+40|0,v=r+20|0,t=0|i,f=r+44|0,_=r+48|0,s=r+52|0,n=r+56|0,o=r+20|0,l=r+24|0,b=r+16|0,k=0;r:for(;;){var k,u=Se[a],c=Ae[u];if(c<<24>>24==64){var h=u+1|0;Se[a]=h;var d=1;break}var w=c<<24>>24;do{if(0==(0|w)){var d=0;break r}if(48==(0|w)||49==(0|w)||50==(0|w)||51==(0|w)||52==(0|w)||53==(0|w)||54==(0|w)||55==(0|w)||56==(0|w)||57==(0|w)){var p=u+1|0;Se[a]=p;var E=(Ae[u]<<24>>24)-48|0,A=Yr(v,E),g=A;e=14;break}if(63==(0|w)){var y=u+1|0;Se[a]=y;var m=Ae[y]<<24>>24;if(36==(0|m)){var S=u+2|0;Se[a]=S;var M=jr(r);if(0==(0|M)){var d=0;break r}var C=Fr(r,M,-1,v);if(0==(0|C)){var d=0;break r}var R=M;e=15;break}if(63==(0|m)){var T=Se[t>>2],O=Se[f>>2],N=Se[_>>2],I=Se[s>>2],P=Se[n>>2],D=Se[o>>2],L=Se[l>>2];Cr(i);var F=Ir(r);if(0==(0|F))var X=k;else var j=Se[b>>2],U=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=j,ne)),X=U;var X;Se[o>>2]=D,Se[l>>2]=L,Se[t>>2]=T,Se[f>>2]=O,Se[_>>2]=N,Se[s>>2]=I,Se[n>>2]=P;var g=X;e=14;break}var x=Lr(r);if(0==(0|x)){var d=0;break r}var z=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne)),g=z;e=14;break}var V=Kr(r),g=V;e=14;break}while(0);if(14==e){var g;if(0==(0|g)){var d=0;break}var R=g}var R,B=Fr(r,R,-1,i);if(0==(0|B)){var d=0;break}var k=R}var d;return d}function Vr(r){var a,e,i,v=Oe;Oe+=36;var t,f=v,i=f>>2,_=v+4,s=v+8,e=s>>2,n=v+16;Se[i]=0;var o=0|r,l=Se[o>>2],b=0==(128&l|0),k=r+12|0;do if(b){var u=Ae[Se[k>>2]]<<24>>24;if(48==(0|u))var c=0|He.__str76246,h=k,a=h>>2;else if(49==(0|u))var c=0|He.__str77247,h=k,a=h>>2;else{if(50!=(0|u)){var c=0,h=k,a=h>>2;break}var c=0|He.__str78248,h=k,a=h>>2}}else var c=0,h=k,a=h>>2;while(0);var h,c,d=0==(512&l|0);do if(d){if((Ae[Se[a]]-48&255&255)>=3){var w=0;break}var w=0|He.__str79249}else var w=0;while(0);var w,p=Gr(r,0),E=Se[a],A=E+1|0;Se[a]=A;var g=Ae[E]<<24>>24;do{if(48==(0|g)||49==(0|g)||50==(0|g)||51==(0|g)||52==(0|g)||53==(0|g)){var y=r+44|0,m=Se[y>>2];Cr(n);var S=Pr(r,s,n,0);if(0==(0|S)){var M=0;t=28;break}var C=xr(r,f,_);if(0==(0|C)){var M=0;t=28;break}var R=Se[i],T=0==(0|R),O=Se[_>>2];do if(T)Se[i]=O;else{if(0==(0|O))break;var N=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=R,Se[ne+4>>2]=O,ne));Se[i]=N}while(0);Se[y>>2]=m,t=22;break}if(54==(0|g)||55==(0|g)){var I=s+4|0;Se[I>>2]=0,Se[e]=0;var P=xr(r,f,_);if(0==(0|P)){var M=0;t=28;break}if(Ae[Se[a]]<<24>>24==64){t=22;break}var D=qr(r);if(0==(0|D)){var M=0;t=28;break}var L=Dr(r,0|He.__str107277,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[I>>2]=L,t=22;break}if(56==(0|g)||57==(0|g)){Se[e+1]=0,Se[e]=0,Se[i]=0,t=22;break}var M=0;t=28}while(0);if(22==t){var F=0==(4096&Se[o>>2]|0);do{if(F){var X=Se[e],j=Se[i];if(0==(0|j)){var U=X;t=26;break}var x=0!=(0|X)?0|He.__str87257:0,z=0|He.__str87257,V=j,B=x,H=X;t=27;break}Se[i]=0,Se[e+1]=0,Se[e]=0;var U=0;t=26;break}while(0);if(26==t)var U,K=0!=(0|U)?0|He.__str87257:0,z=K,V=0,B=0,H=U;var H,B,V,z,Y=Se[e+1],G=Dr(r,0|He.__str108278,(ne=Oe,Oe+=32,Se[ne>>2]=c,Se[ne+4>>2]=w,Se[ne+8>>2]=H,Se[ne+12>>2]=B,Se[ne+16>>2]=V,Se[ne+20>>2]=z,Se[ne+24>>2]=p,Se[ne+28>>2]=Y,ne));Se[r+16>>2]=G;var M=1}var M;return Oe=v,M}function Br(r,a){var e,i,v,t,f=Oe;Oe+=44;var _,s=f,t=s>>2,n=f+8,o=f+12,v=o>>2,l=f+16,b=f+20,k=f+40;Se[v]=0;var i=(r+12|0)>>2,u=Se[i],c=u+1|0;Se[i]=c;var h=ge[u],d=h<<24>>24,w=(h-65&255&255)>25;r:do if(w)var p=0;else{var e=(0|r)>>2,E=Me[e],A=0==(128&E|0),g=d-65|0;do if(A){var y=g/8|0;if(0==(0|y))var m=0|He.__str76246,S=g;else if(1==(0|y))var m=0|He.__str77247,S=g;else{if(2!=(0|y)){var m=0,S=g;break}var m=0|He.__str78248,S=g}}else var m=0,S=g;while(0);var S,m,M=0==(512&E|0)&h<<24>>24<89,C=(0|S)%8;do if(M)if(2==(0|C)||3==(0|C))var R=m,T=0|He.__str79249;else if(4==(0|C)||5==(0|C))var R=m,T=0|He.__str80250;else{if(6!=(0|C)&&7!=(0|C)){var R=m,T=0;break}var O=Dr(r,0|He.__str81251,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne)),R=O,T=0|He.__str80250}else var R=m,T=0;while(0);var T,R,N=Gr(r,0),I=6==(0|C);do{if(!I){if(7==((d-56)%8|0)){_=14;break}var P=N;_=15;break}_=14}while(0);if(14==_)var D=Lr(r),L=Dr(r,0|He.__str82252,(ne=Oe,Oe+=8,Se[ne>>2]=N,Se[ne+4>>2]=D,ne)),P=L;var P,F=h<<24>>24>88;do if(F)var X=0;else{if((C-2|0)>>>0<2){var X=0;break}var j=xr(r,o,k);if(0==(0|j)){var p=0;break r}var U=Me[v],x=Se[k>>2];if(0==(0|U)&0==(0|x)){var X=0;break}var z=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=U,Se[ne+4>>2]=x,ne));Se[v]=z;var X=z}while(0);var X,V=Se[i],B=V+1|0;Se[i]=B;var H=Ae[V],K=Se[e],Y=Ur(H,n,l,K);if(0==(0|Y)){var p=0;break}Cr(b);var G=Se[i];if(Ae[G]<<24>>24==64){Se[t]=0|He.__str84254,Se[t+1]=0;var W=G+1|0;Se[i]=W}else{var Z=Pr(r,s,b,0);if(0==(0|Z)){var p=0;break}}if(0!=(4&Se[e]|0)&&(Se[t+1]=0,Se[t]=0),0==(0|a))var Q=P;else{var q=0|s,$=Se[q>>2],J=s+4|0,rr=Se[J>>2],ar=Dr(r,0|He.__str85255,(ne=Oe,Oe+=12,Se[ne>>2]=P,Se[ne+4>>2]=$,Se[ne+8>>2]=rr,ne));Se[J>>2]=0,Se[q>>2]=0;var Q=ar}var Q,er=r+44|0,ir=Se[er>>2],vr=Xr(r,b,1,40,41);if(0==(0|vr)){var p=0;break}if(0==(4096&Se[e]|0))var tr=vr,fr=X;else{Se[v]=0;var tr=0,fr=0}var fr,tr;Se[er>>2]=ir;var _r=Se[t],sr=Se[t+1];if(0==(0|_r))var nr=0;else var or=0!=(0|sr)?0:0|He.__str87257,nr=or;var nr,lr=Se[n>>2],br=0!=(0|lr)?0|He.__str87257:0,kr=Se[l>>2],ur=Dr(r,0|He.__str86256,(ne=Oe,Oe+=44,Se[ne>>2]=R,Se[ne+4>>2]=T,Se[ne+8>>2]=_r,Se[ne+12>>2]=nr,Se[ne+16>>2]=lr,Se[ne+20>>2]=br,Se[ne+24>>2]=kr,Se[ne+28>>2]=Q,Se[ne+32>>2]=tr,Se[ne+36>>2]=fr,Se[ne+40>>2]=sr,ne));Se[r+16>>2]=ur;var p=1}while(0);var p;return Oe=f,p}function Hr(r){var a,a=(r+12|0)>>2,e=Se[a];if(Ae[e]<<24>>24==36)var i=e;else{Xa(0|He.__str72242,1252,0|He.___func___handle_template,0|He.__str74244);var i=Se[a]}var i;Se[a]=i+1|0;var v=Kr(r),t=0==(0|v);do if(t)var f=0;else{var _=Xr(r,0,0,60,62);if(0==(0|_)){var f=0;break}var s=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=v,Se[ne+4>>2]=_,ne));Se[r+16>>2]=s;var f=1}while(0);var f;return f}function Kr(r){for(var a,a=(r+12|0)>>2,e=Me[a],i=e,v=Ae[e];;){var v,i;if(!((v-65&255&255)<26|(v-97&255&255)<26|(v-48&255&255)<10)&&v<<24>>24!=95&&v<<24>>24!=36){var t=0;break}var f=i+1|0;Se[a]=f;var _=ge[f];if(_<<24>>24==64){Se[a]=i+2|0;var s=f-e|0,n=r+20|0,o=Fr(r,e,s,n);if(0==(0|o)){var t=0;break}var l=Se[r+24>>2]-1-Se[n>>2]|0,b=Yr(n,l),t=b;break}var i=f,v=_}var t;return t}function Yr(r,a){0==(0|r)&&Xa(0|He.__str72242,263,0|He.___func___str_array_get_ref,0|He.__str75245);var e=Se[r>>2]+a|0;if(e>>>0<Me[r+8>>2]>>>0)var i=Se[Se[r+16>>2]+(e<<2)>>2];else var i=0;var i;return i}function Gr(r,a){var e,e=(r+44|0)>>2,i=Me[e];if(i>>>0>a>>>0){for(var v=r+56|0,t=a,f=0,_=Se[v>>2],s=i;;){var s,_,f,t,n=Me[_+(t<<2)>>2];if(0==(0|n)){Xa(0|He.__str72242,680,0|He.___func___get_class_string,0|He.__str106276);var o=Se[v>>2],l=o,b=Se[o+(t<<2)>>2],k=Se[e]}else var l=_,b=n,k=s;var k,b,l,u=Ca(b),c=u+(f+2)|0,h=t+1|0;if(h>>>0>=k>>>0)break;var t=h,f=c,_=l,s=k}var d=c-1|0}else var d=-1;var d,w=Wr(r,d);if(0==(0|w))var p=0;else{var E=Se[e]-1|0,A=(0|E)<(0|a);r:do if(A)var g=0;else for(var y=r+56|0,m=0,S=E;;){var S,m,M=Se[Se[y>>2]+(S<<2)>>2],C=Ca(M),R=w+m|0;Pa(R,M,C,1);var T=C+m|0;if((0|S)>(0|a)){var O=T+1|0;Ae[w+T|0]=58;var N=T+2|0;Ae[w+O|0]=58;var I=N}else var I=T;var I,P=S-1|0;if((0|P)<(0|a)){var g=I;break r}var m=I,S=P}while(0);var g;Ae[w+g|0]=0;var p=w}var p;return p}function Wr(r,a){var e,i=a>>>0>1020;do if(i){var v=Se[r+4>>2],t=a+4|0,f=pe[v](t);if(0==(0|f)){var _=0;break}var s=r+60|0,n=Se[s>>2],o=f;Se[o>>2]=n,Se[s>>2]=f,Se[r+64>>2]=0;var _=f+4|0}else{var e=(r+64|0)>>2,l=Me[e];if(l>>>0<a>>>0){var b=Se[r+4>>2],k=pe[b](1024);if(0==(0|k)){var _=0;break}var u=r+60|0,c=Se[u>>2],h=k;Se[h>>2]=c,Se[u>>2]=k,Se[e]=1020;var d=1020,w=k}else var d=l,w=Se[r+60>>2];var w,d;Se[e]=d-a|0;var _=w+(1024-d)|0}while(0);var _;return _}function Zr(r){var a=r<<24>>24;if(68==(0|a))var e=0|He.__str157327;else if(69==(0|a))var e=0|He.__str158328;else if(70==(0|a))var e=0|He.__str159329;else if(71==(0|a))var e=0|He.__str160330;else if(72==(0|a))var e=0|He.__str161331;else if(73==(0|a))var e=0|He.__str162332;else if(74==(0|a))var e=0|He.__str163333;else if(75==(0|a))var e=0|He.__str164334;else if(76==(0|a))var e=0|He.__str165335;else if(77==(0|a))var e=0|He.__str166336;else if(78==(0|a))var e=0|He.__str167337;else if(87==(0|a))var e=0|He.__str168338;else var e=0;var e;return e}function Qr(r){var a=r<<24>>24;if(67==(0|a))var e=0|He.__str145315;else if(68==(0|a))var e=0|He.__str146316;else if(69==(0|a))var e=0|He.__str147317;else if(70==(0|a))var e=0|He.__str148318;else if(71==(0|a))var e=0|He.__str149319;else if(72==(0|a))var e=0|He.__str150320;else if(73==(0|a))var e=0|He.__str151321;else if(74==(0|a))var e=0|He.__str152322;else if(75==(0|a))var e=0|He.__str153323;else if(77==(0|a))var e=0|He.__str154324;else if(78==(0|a))var e=0|He.__str155325;else if(79==(0|a))var e=0|He.__str156326;else if(88==(0|a))var e=0|He.__str84254;else if(90==(0|a))var e=0|He.__str110280;else var e=0;var e;return e}function qr(r){var a=r+44|0,e=Se[a>>2],i=zr(r);if(0==(0|i))var v=0;else var t=Gr(r,e),v=t;var v;return Se[a>>2]=e,v}function $r(r,a,e,i,v){var t,f,_,s=Oe;Oe+=16;var n,o=s,_=o>>2,l=s+4,b=s+8,f=b>>2;Se[l>>2]=0|ii;var t=(a+12|0)>>2,k=Se[t];if(Ae[k]<<24>>24==69){Se[l>>2]=0|He.__str134304;var u=k+1|0;Se[t]=u;var c=0|He.__str134304}else var c=0|ii;var c,h=i<<24>>24;do{if(65==(0|h)){var d=Dr(a,0|He.__str135305,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=d;n=10;break}if(66==(0|h)){var p=Dr(a,0|He.__str136306,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=p;n=10;break}if(80==(0|h)){var E=Dr(a,0|He.__str137307,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=E;n=10;break}if(81==(0|h)){var A=Dr(a,0|He.__str138308,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=A;n=10;break}if(82==(0|h)){var g=Dr(a,0|He.__str139309,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=g;n=10;break}if(83==(0|h)){var y=Dr(a,0|He.__str140310,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=y;n=10;break}if(63==(0|h)){var w=0|ii;n=10}else n=31}while(0);r:do if(10==n){var w,m=xr(a,o,l);if(0==(0|m))break;var S=a+44|0,M=Se[S>>2],C=Se[t],R=Ae[C]<<24>>24==89;a:do if(R){var T=C+1|0;Se[t]=T;var O=Lr(a);if(0==(0|O))break r;var N=Ha(O),I=Ae[w]<<24>>24==32,P=Se[_],D=0==(0|P);do{if(I){if(!D){n=17;break}var L=w+1|0;n=18;break}if(D){var L=w;n=18;break}n=17;break}while(0);if(17==n){var F=Dr(a,0|He.__str141311,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=w,ne));Se[_]=0;var X=F}else if(18==n)var L,j=Dr(a,0|He.__str142312,(ne=Oe,Oe+=4,Se[ne>>2]=L,ne)),X=j;var X;if(0==(0|N)){var U=X;break}for(var x=X,z=N;;){var z,x,V=z-1|0,B=Lr(a),H=Dr(a,0|He.__str143313,(ne=Oe,Oe+=8,Se[ne>>2]=x,Se[ne+4>>2]=B,ne));if(0==(0|V)){var U=H;break a}var x=H,z=V}}else var U=w;while(0);var U,K=Pr(a,b,e,0);if(0==(0|K))break;var Y=Se[_];if(0==(0|Y)){var G=0==(0|v);do if(G){if(Ae[U]<<24>>24==0){var W=U;break}var Z=U+1|0;if(Ae[Z]<<24>>24!=42){var W=U;break}var Q=Se[f],q=Ca(Q);if(Ae[Q+(q-1)|0]<<24>>24!=42){var W=U;break}var W=Z}else var W=U;while(0);var W,$=Se[f],J=Dr(a,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=W,ne));Se[r>>2]=J}else{var rr=Se[f],ar=Dr(a,0|He.__str144314,(ne=Oe,Oe+=12,Se[ne>>2]=rr,Se[ne+4>>2]=Y,Se[ne+8>>2]=U,ne));Se[r>>2]=ar}var er=Se[f+1];Se[r+4>>2]=er,Se[S>>2]=M}while(0);Oe=s}function Jr(r){var a,e=r>>>0<245;do{if(e){if(r>>>0<11)var i=16;else var i=r+11&-8;var i,v=i>>>3,t=Me[vi>>2],f=t>>>(v>>>0);if(0!=(3&f|0)){var _=(1&f^1)+v|0,s=_<<1,n=(s<<2)+vi+40|0,o=(s+2<<2)+vi+40|0,l=Me[o>>2],b=l+8|0,k=Me[b>>2];if((0|n)==(0|k))Se[vi>>2]=t&(1<<_^-1);else{if(k>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[o>>2]=k,Se[k+12>>2]=n}var u=_<<3;Se[l+4>>2]=3|u;var c=l+(4|u)|0,h=1|Se[c>>2];Se[c>>2]=h;var d=b;a=38;break}if(i>>>0<=Me[vi+8>>2]>>>0){var w=i;a=30;break}if(0!=(0|f)){var p=2<<v,E=f<<v&(p|-p),A=(E&-E)-1|0,g=A>>>12&16,y=A>>>(g>>>0),m=y>>>5&8,S=y>>>(m>>>0),M=S>>>2&4,C=S>>>(M>>>0),R=C>>>1&2,T=C>>>(R>>>0),O=T>>>1&1,N=(m|g|M|R|O)+(T>>>(O>>>0))|0,I=N<<1,P=(I<<2)+vi+40|0,D=(I+2<<2)+vi+40|0,L=Me[D>>2],F=L+8|0,X=Me[F>>2];if((0|P)==(0|X))Se[vi>>2]=t&(1<<N^-1);else{if(X>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[D>>2]=X,Se[X+12>>2]=P}var j=N<<3,U=j-i|0;Se[L+4>>2]=3|i;var x=L,z=x+i|0;Se[x+(4|i)>>2]=1|U,Se[x+j>>2]=U;var V=Me[vi+8>>2];if(0!=(0|V)){var B=Se[vi+20>>2],H=V>>>2&1073741822,K=(H<<2)+vi+40|0,Y=Me[vi>>2],G=1<<(V>>>3),W=0==(Y&G|0);do{if(!W){var Z=(H+2<<2)+vi+40|0,Q=Me[Z>>2];if(Q>>>0>=Me[vi+16>>2]>>>0){var q=Q,$=Z;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Y|G;var q=K,$=(H+2<<2)+vi+40|0}while(0);var $,q;Se[$>>2]=B,Se[q+12>>2]=B;var J=B+8|0;Se[J>>2]=q;var rr=B+12|0;Se[rr>>2]=K}Se[vi+8>>2]=U,Se[vi+20>>2]=z;var d=F;a=38;break}if(0==(0|Se[vi+4>>2])){var w=i;a=30;break}var ar=ra(i);if(0==(0|ar)){var w=i;a=30;break}var d=ar;a=38;break}if(r>>>0>4294967231){var w=-1;a=30;break}var er=r+11&-8;if(0==(0|Se[vi+4>>2])){var w=er;a=30;break}var ir=ea(er);if(0==(0|ir)){var w=er;a=30;break}var d=ir;a=38;break}while(0);if(30==a){var w,vr=Me[vi+8>>2];if(w>>>0>vr>>>0){var tr=Me[vi+12>>2];if(w>>>0<tr>>>0){var fr=tr-w|0;Se[vi+12>>2]=fr;var _r=Me[vi+24>>2],sr=_r;Se[vi+24>>2]=sr+w|0,Se[w+(sr+4)>>2]=1|fr,Se[_r+4>>2]=3|w;var d=_r+8|0}else var nr=aa(w),d=nr}else{var or=vr-w|0,lr=Me[vi+20>>2];if(or>>>0>15){var br=lr;Se[vi+20>>2]=br+w|0,Se[vi+8>>2]=or,Se[w+(br+4)>>2]=1|or,Se[br+vr>>2]=or,Se[lr+4>>2]=3|w}else{Se[vi+8>>2]=0,Se[vi+20>>2]=0,Se[lr+4>>2]=3|vr;var kr=vr+(lr+4)|0,ur=1|Se[kr>>2];Se[kr>>2]=ur}var d=lr+8|0}}var d;return d}function ra(r){var a,e,i,v=Se[vi+4>>2],t=(v&-v)-1|0,f=t>>>12&16,_=t>>>(f>>>0),s=_>>>5&8,n=_>>>(s>>>0),o=n>>>2&4,l=n>>>(o>>>0),b=l>>>1&2,k=l>>>(b>>>0),u=k>>>1&1,c=Me[vi+((s|f|o|b|u)+(k>>>(u>>>0))<<2)+304>>2],h=c,e=h>>2,d=(Se[c+4>>2]&-8)-r|0;r:for(;;)for(var d,h,w=h;;){var w,p=Se[w+16>>2];if(0==(0|p)){var E=Se[w+20>>2];if(0==(0|E))break r;var A=E}else var A=p;var A,g=(Se[A+4>>2]&-8)-r|0;if(g>>>0<d>>>0){var h=A,e=h>>2,d=g;continue r}var w=A}var y=h,m=Me[vi+16>>2],S=y>>>0<m>>>0;do if(!S){var M=y+r|0,C=M;if(y>>>0>=M>>>0)break;var R=Me[e+6],T=Me[e+3],O=(0|T)==(0|h);do if(O){var N=h+20|0,I=Se[N>>2];if(0==(0|I)){var P=h+16|0,D=Se[P>>2];if(0==(0|D)){var L=0,a=L>>2;break}var F=P,X=D}else{var F=N,X=I;i=14}for(;;){var X,F,j=X+20|0,U=Se[j>>2];if(0==(0|U)){var x=X+16|0,z=Me[x>>2];if(0==(0|z))break;var F=x,X=z}else var F=j,X=U}if(F>>>0<m>>>0)throw Ka(),\"Reached an unreachable!\";Se[F>>2]=0;var L=X,a=L>>2}else{var V=Me[e+2];if(V>>>0<m>>>0)throw Ka(),\"Reached an unreachable!\";Se[V+12>>2]=T,Se[T+8>>2]=V;var L=T,a=L>>2}while(0);var L,B=0==(0|R);r:do if(!B){var H=h+28|0,K=(Se[H>>2]<<2)+vi+304|0,Y=(0|h)==(0|Se[K>>2]);do{if(Y){if(Se[K>>2]=L,0!=(0|L))break;var G=Se[vi+4>>2]&(1<<Se[H>>2]^-1);Se[vi+4>>2]=G;break r}if(R>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";var W=R+16|0;if((0|Se[W>>2])==(0|h)?Se[W>>2]=L:Se[R+20>>2]=L,0==(0|L))break r}while(0);if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=R;var Z=Me[e+4];if(0!=(0|Z)){if(Z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=Z,Se[Z+24>>2]=L}var Q=Me[e+5];if(0==(0|Q))break;if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=Q,Se[Q+24>>2]=L}while(0);if(d>>>0<16){var q=d+r|0;Se[e+1]=3|q;var $=q+(y+4)|0,J=1|Se[$>>2];Se[$>>2]=J}else{Se[e+1]=3|r,Se[r+(y+4)>>2]=1|d,Se[y+d+r>>2]=d;var rr=Me[vi+8>>2];if(0!=(0|rr)){var ar=Me[vi+20>>2],er=rr>>>2&1073741822,ir=(er<<2)+vi+40|0,vr=Me[vi>>2],tr=1<<(rr>>>3),fr=0==(vr&tr|0);do{if(!fr){var _r=(er+2<<2)+vi+40|0,sr=Me[_r>>2];if(sr>>>0>=Me[vi+16>>2]>>>0){var nr=sr,or=_r;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=vr|tr;var nr=ir,or=(er+2<<2)+vi+40|0}while(0);var or,nr;Se[or>>2]=ar,Se[nr+12>>2]=ar,Se[ar+8>>2]=nr,Se[ar+12>>2]=ir}Se[vi+8>>2]=d,Se[vi+20>>2]=C}return h+8|0}while(0);throw Ka(),\"Reached an unreachable!\"}function aa(r){var a,e;0==(0|Se[ti>>2])&&ba();var i=0==(4&Se[vi+440>>2]|0);do{if(i){var v=Se[vi+24>>2],t=0==(0|v);do{if(!t){var f=v,_=ua(f);if(0==(0|_)){e=6;break}var s=Se[ti+8>>2],n=r+47-Se[vi+12>>2]+s&-s;if(n>>>0>=2147483647){e=14;break}var o=re(n);if((0|o)==(Se[_>>2]+Se[_+4>>2]|0)){var l=o,b=n,k=o;e=13;break}var u=o,c=n;e=15;break}e=6}while(0);do if(6==e){var h=re(0);if((0|h)==-1){e=14;break}var d=Se[ti+8>>2],w=d+(r+47)&-d,p=h,E=Se[ti+4>>2],A=E-1|0;if(0==(A&p|0))var g=w;else var g=w-p+(A+p&-E)|0;var g;if(g>>>0>=2147483647){e=14;break}var y=re(g);if((0|y)==(0|h)){var l=h,b=g,k=y;e=13;break}var u=y,c=g;e=15;break}while(0);if(13==e){var k,b,l;if((0|l)!=-1){var m=b,S=l;e=26;break}var u=k,c=b}else if(14==e){var M=4|Se[vi+440>>2];Se[vi+440>>2]=M,e=23;break}var c,u,C=0|-c,R=(0|u)!=-1&c>>>0<2147483647;do{if(R){if(c>>>0>=(r+48|0)>>>0){var T=c;e=21;break}var O=Se[ti+8>>2],N=r+47-c+O&-O;if(N>>>0>=2147483647){var T=c;e=21;break}var I=re(N);if((0|I)==-1){re(C);e=22;break}var T=N+c|0;e=21;break}var T=c;e=21}while(0);if(21==e){var T;if((0|u)!=-1){var m=T,S=u;e=26;break}}var P=4|Se[vi+440>>2];Se[vi+440>>2]=P,e=23;break}e=23}while(0);do if(23==e){var D=Se[ti+8>>2],L=D+(r+47)&-D;if(L>>>0>=2147483647){e=49;break}var F=re(L),X=re(0);if(!((0|X)!=-1&(0|F)!=-1&F>>>0<X>>>0)){e=49;break}var j=X-F|0;if(j>>>0<=(r+40|0)>>>0|(0|F)==-1){e=49;break}var m=j,S=F;e=26;break}while(0);r:do if(26==e){var S,m,U=Se[vi+432>>2]+m|0;Se[vi+432>>2]=U,U>>>0>Me[vi+436>>2]>>>0&&(Se[vi+436>>2]=U);var x=Me[vi+24>>2],z=0==(0|x);a:do if(z){var V=Me[vi+16>>2];0==(0|V)|S>>>0<V>>>0&&(Se[vi+16>>2]=S),Se[vi+444>>2]=S,Se[vi+448>>2]=m,Se[vi+456>>2]=0;var B=Se[ti>>2];Se[vi+36>>2]=B,Se[vi+32>>2]=-1,ha(),ca(S,m-40|0)}else{for(var H=vi+444|0,a=H>>2;;){var H;if(0==(0|H))break;var K=Me[a],Y=H+4|0,G=Me[Y>>2],W=K+G|0;if((0|S)==(0|W)){if(0!=(8&Se[a+3]|0))break;var Z=x;if(!(Z>>>0>=K>>>0&Z>>>0<W>>>0))break;Se[Y>>2]=G+m|0;var Q=Se[vi+24>>2],q=Se[vi+12>>2]+m|0;ca(Q,q);break a}var H=Se[a+2],a=H>>2}S>>>0<Me[vi+16>>2]>>>0&&(Se[vi+16>>2]=S);for(var $=S+m|0,J=vi+444|0;;){var J;if(0==(0|J))break;var rr=0|J,ar=Me[rr>>2];if((0|ar)==(0|$)){if(0!=(8&Se[J+12>>2]|0))break;Se[rr>>2]=S;var er=J+4|0,ir=Se[er>>2]+m|0;Se[er>>2]=ir;var vr=da(S,ar,r),tr=vr;e=50;break r}var J=Se[J+8>>2]}Ma(S,m)}while(0);var fr=Me[vi+12>>2];if(fr>>>0<=r>>>0){e=49;break}var _r=fr-r|0;Se[vi+12>>2]=_r;var sr=Me[vi+24>>2],nr=sr;Se[vi+24>>2]=nr+r|0,Se[r+(nr+4)>>2]=1|_r,Se[sr+4>>2]=3|r;var tr=sr+8|0;e=50;break}while(0);if(49==e){var or=Je();Se[or>>2]=12;var tr=0}var tr;return tr}function ea(r){var a,e,i,v,t,f,_=r>>2,s=0|-r,n=r>>>8,o=0==(0|n);do if(o)var l=0;else{if(r>>>0>16777215){var l=31;break}var b=(n+1048320|0)>>>16&8,k=n<<b,u=(k+520192|0)>>>16&4,c=k<<u,h=(c+245760|0)>>>16&2,d=14-(u|b|h)+(c<<h>>>15)|0,l=r>>>((d+7|0)>>>0)&1|d<<1}while(0);var l,w=Me[vi+(l<<2)+304>>2],p=0==(0|w);r:do if(p)var E=0,A=s,g=0;else{if(31==(0|l))var y=0;else var y=25-(l>>>1)|0;for(var y,m=0,S=s,M=w,t=M>>2,C=r<<y,R=0;;){var R,C,M,S,m,T=Se[t+1]&-8,O=T-r|0;if(O>>>0<S>>>0){if((0|T)==(0|r)){var E=M,A=O,g=M;break r}var N=M,I=O}else var N=m,I=S;var I,N,P=Me[t+5],D=Me[((C>>>31<<2)+16>>2)+t],L=0==(0|P)|(0|P)==(0|D)?R:P;if(0==(0|D)){var E=N,A=I,g=L;break r}var m=N,S=I,M=D,t=M>>2,C=C<<1,R=L}}while(0);var g,A,E,F=0==(0|g)&0==(0|E);do if(F){var X=2<<l,j=Se[vi+4>>2]&(X|-X);if(0==(0|j)){var U=g;break}var x=(j&-j)-1|0,z=x>>>12&16,V=x>>>(z>>>0),B=V>>>5&8,H=V>>>(B>>>0),K=H>>>2&4,Y=H>>>(K>>>0),G=Y>>>1&2,W=Y>>>(G>>>0),Z=W>>>1&1,U=Se[vi+((B|z|K|G|Z)+(W>>>(Z>>>0))<<2)+304>>2]}else var U=g;while(0);var U,Q=0==(0|U);r:do if(Q)var q=A,$=E,v=$>>2;else for(var J=U,i=J>>2,rr=A,ar=E;;){var ar,rr,J,er=(Se[i+1]&-8)-r|0,ir=er>>>0<rr>>>0,vr=ir?er:rr,tr=ir?J:ar,fr=Me[i+4];if(0==(0|fr)){var _r=Me[i+5];if(0==(0|_r)){var q=vr,$=tr,v=$>>2;break r}var J=_r,i=J>>2,rr=vr,ar=tr}else var J=fr,i=J>>2,rr=vr,ar=tr}while(0);var $,q,sr=0==(0|$);r:do{if(!sr){if(q>>>0>=(Se[vi+8>>2]-r|0)>>>0){var nr=0;break}var or=$,e=or>>2,lr=Me[vi+16>>2],br=or>>>0<lr>>>0;do if(!br){var kr=or+r|0,ur=kr;if(or>>>0>=kr>>>0)break;var cr=Me[v+6],hr=Me[v+3],dr=(0|hr)==(0|$);do if(dr){var wr=$+20|0,pr=Se[wr>>2];if(0==(0|pr)){var Er=$+16|0,Ar=Se[Er>>2];if(0==(0|Ar)){var gr=0,a=gr>>2;break}var yr=Er,mr=Ar}else{var yr=wr,mr=pr;f=28}for(;;){var mr,yr,Sr=mr+20|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=mr+16|0,Rr=Me[Cr>>2];if(0==(0|Rr))break;var yr=Cr,mr=Rr}else var yr=Sr,mr=Mr}if(yr>>>0<lr>>>0)throw Ka(),\"Reached an unreachable!\";Se[yr>>2]=0;var gr=mr,a=gr>>2}else{var Tr=Me[v+2];if(Tr>>>0<lr>>>0)throw Ka(),\"Reached an unreachable!\";Se[Tr+12>>2]=hr,Se[hr+8>>2]=Tr;var gr=hr,a=gr>>2}while(0);var gr,Or=0==(0|cr);a:do if(!Or){var Nr=$+28|0,Ir=(Se[Nr>>2]<<2)+vi+304|0,Pr=(0|$)==(0|Se[Ir>>2]);do{if(Pr){if(Se[Ir>>2]=gr,0!=(0|gr))break;var Dr=Se[vi+4>>2]&(1<<Se[Nr>>2]^-1);Se[vi+4>>2]=Dr;break a}if(cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";var Lr=cr+16|0;if((0|Se[Lr>>2])==(0|$)?Se[Lr>>2]=gr:Se[cr+20>>2]=gr,0==(0|gr))break a}while(0);if(gr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=cr;var Fr=Me[v+4];if(0!=(0|Fr)){if(Fr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=Fr,Se[Fr+24>>2]=gr}var Xr=Me[v+5];if(0==(0|Xr))break;if(Xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=Xr,Se[Xr+24>>2]=gr}while(0);var jr=q>>>0<16;a:do if(jr){var Ur=q+r|0;Se[v+1]=3|Ur;var xr=Ur+(or+4)|0,zr=1|Se[xr>>2];Se[xr>>2]=zr}else if(Se[v+1]=3|r,Se[_+(e+1)]=1|q,Se[(q>>2)+e+_]=q,q>>>0<256){var Vr=q>>>2&1073741822,Br=(Vr<<2)+vi+40|0,Hr=Me[vi>>2],Kr=1<<(q>>>3),Yr=0==(Hr&Kr|0);do{if(!Yr){var Gr=(Vr+2<<2)+vi+40|0,Wr=Me[Gr>>2];if(Wr>>>0>=Me[vi+16>>2]>>>0){var Zr=Wr,Qr=Gr;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Hr|Kr;var Zr=Br,Qr=(Vr+2<<2)+vi+40|0}while(0);var Qr,Zr;Se[Qr>>2]=ur,Se[Zr+12>>2]=ur,Se[_+(e+2)]=Zr,Se[_+(e+3)]=Br}else{var qr=kr,$r=q>>>8,Jr=0==(0|$r);do if(Jr)var ra=0;else{if(q>>>0>16777215){var ra=31;break}var aa=($r+1048320|0)>>>16&8,ea=$r<<aa,ia=(ea+520192|0)>>>16&4,va=ea<<ia,ta=(va+245760|0)>>>16&2,fa=14-(ia|aa|ta)+(va<<ta>>>15)|0,ra=q>>>((fa+7|0)>>>0)&1|fa<<1}while(0);var ra,_a=(ra<<2)+vi+304|0;Se[_+(e+7)]=ra;var sa=r+(or+16)|0;Se[_+(e+5)]=0,Se[sa>>2]=0;var na=Se[vi+4>>2],oa=1<<ra;if(0==(na&oa|0)){var la=na|oa;Se[vi+4>>2]=la,Se[_a>>2]=qr,Se[_+(e+6)]=_a,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr}else{if(31==(0|ra))var ba=0;else var ba=25-(ra>>>1)|0;for(var ba,ka=q<<ba,ua=Se[_a>>2];;){var ua,ka;if((Se[ua+4>>2]&-8|0)==(0|q)){var ca=ua+8|0,ha=Me[ca>>2],da=Me[vi+16>>2],wa=ua>>>0<da>>>0;do if(!wa){if(ha>>>0<da>>>0)break;Se[ha+12>>2]=qr,Se[ca>>2]=qr,Se[_+(e+2)]=ha,Se[_+(e+3)]=ua,Se[_+(e+6)]=0;break a}while(0);throw Ka(),\"Reached an unreachable!\"}var pa=(ka>>>31<<2)+ua+16|0,Ea=Me[pa>>2];if(0==(0|Ea)){if(pa>>>0>=Me[vi+16>>2]>>>0){Se[pa>>2]=qr,Se[_+(e+6)]=ua,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr;break a}throw Ka(),\"Reached an unreachable!\"}var ka=ka<<1,ua=Ea}}}while(0);var nr=$+8|0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var nr=0}while(0);var nr;return nr}function ia(r){var a;0==(0|Se[ti>>2])&&ba();var e=r>>>0<4294967232;r:do if(e){var i=Me[vi+24>>2];if(0==(0|i)){var v=0;break}var t=Me[vi+12>>2],f=t>>>0>(r+40|0)>>>0;do if(f){var _=Me[ti+8>>2],s=-40-r-1+t+_|0,n=Math.floor((s>>>0)/(_>>>0)),o=(n-1)*_|0,l=i,b=ua(l);if(0!=(8&Se[b+12>>2]|0))break;var k=re(0),a=(b+4|0)>>2;if((0|k)!=(Se[b>>2]+Se[a]|0))break;var u=o>>>0>2147483646?-2147483648-_|0:o,c=0|-u,h=re(c),d=re(0);if(!((0|h)!=-1&d>>>0<k>>>0))break;var w=k-d|0;if((0|k)==(0|d))break;var p=Se[a]-w|0;Se[a]=p;var E=Se[vi+432>>2]-w|0;Se[vi+432>>2]=E;var A=Se[vi+24>>2],g=Se[vi+12>>2]-w|0;ca(A,g);var v=(0|k)!=(0|d);break r}while(0);if(Me[vi+12>>2]>>>0<=Me[vi+28>>2]>>>0){var v=0;break}Se[vi+28>>2]=-1;var v=0}else var v=0;while(0);var v;return 1&v}function va(r){var a,e,i,v,t,f,_,s=r>>2,n=0==(0|r);r:do if(!n){var o=r-8|0,l=o,b=Me[vi+16>>2],k=o>>>0<b>>>0;a:do if(!k){var u=Me[r-4>>2],c=3&u;if(1==(0|c))break;var h=u&-8,f=h>>2,d=r+(h-8)|0,w=d,p=0==(1&u|0);e:do if(p){var E=Me[o>>2];if(0==(0|c))break r;var A=-8-E|0,t=A>>2,g=r+A|0,y=g,m=E+h|0;if(g>>>0<b>>>0)break a;if((0|y)==(0|Se[vi+20>>2])){var v=(r+(h-4)|0)>>2;if(3!=(3&Se[v]|0)){var S=y,i=S>>2,M=m;break}Se[vi+8>>2]=m;var C=Se[v]&-2;Se[v]=C,Se[t+(s+1)]=1|m,Se[d>>2]=m;break r}if(E>>>0<256){var R=Me[t+(s+2)],T=Me[t+(s+3)];if((0|R)!=(0|T)){var O=((E>>>2&1073741822)<<2)+vi+40|0,N=(0|R)!=(0|O)&R>>>0<b>>>0;do if(!N){if(!((0|T)==(0|O)|T>>>0>=b>>>0))break;Se[R+12>>2]=T,Se[T+8>>2]=R;var S=y,i=S>>2,M=m;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var I=Se[vi>>2]&(1<<(E>>>3)^-1);Se[vi>>2]=I;var S=y,i=S>>2,M=m}else{var P=g,D=Me[t+(s+6)],L=Me[t+(s+3)],F=(0|L)==(0|P);do if(F){var X=A+(r+20)|0,j=Se[X>>2];if(0==(0|j)){var U=A+(r+16)|0,x=Se[U>>2];if(0==(0|x)){var z=0,e=z>>2;break}var V=U,B=x}else{var V=X,B=j;_=21}for(;;){var B,V,H=B+20|0,K=Se[H>>2];if(0==(0|K)){var Y=B+16|0,G=Me[Y>>2];if(0==(0|G))break;var V=Y,B=G}else var V=H,B=K}if(V>>>0<b>>>0)throw Ka(),\"Reached an unreachable!\";Se[V>>2]=0;var z=B,e=z>>2}else{var W=Me[t+(s+2)];if(W>>>0<b>>>0)throw Ka(),\"Reached an unreachable!\";Se[W+12>>2]=L,Se[L+8>>2]=W;var z=L,e=z>>2}while(0);var z;if(0==(0|D)){var S=y,i=S>>2,M=m;break}var Z=A+(r+28)|0,Q=(Se[Z>>2]<<2)+vi+304|0,q=(0|P)==(0|Se[Q>>2]);do{if(q){if(Se[Q>>2]=z,0!=(0|z))break;var $=Se[vi+4>>2]&(1<<Se[Z>>2]^-1);Se[vi+4>>2]=$;var S=y,i=S>>2,M=m;break e}if(D>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";var J=D+16|0;if((0|Se[J>>2])==(0|P)?Se[J>>2]=z:Se[D+20>>2]=z,0==(0|z)){var S=y,i=S>>2,M=m;break e}}while(0);if(z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+6]=D;var rr=Me[t+(s+4)];if(0!=(0|rr)){if(rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+4]=rr,Se[rr+24>>2]=z}var ar=Me[t+(s+5)];if(0==(0|ar)){var S=y,i=S>>2,M=m;break}if(ar>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+5]=ar,Se[ar+24>>2]=z;var S=y,i=S>>2,M=m}}else var S=l,i=S>>2,M=h;while(0);var M,S,er=S;if(er>>>0>=d>>>0)break;var ir=r+(h-4)|0,vr=Me[ir>>2];if(0==(1&vr|0))break;var tr=0==(2&vr|0);do{if(tr){if((0|w)==(0|Se[vi+24>>2])){var fr=Se[vi+12>>2]+M|0;Se[vi+12>>2]=fr,Se[vi+24>>2]=S;var _r=1|fr;if(Se[i+1]=_r,(0|S)==(0|Se[vi+20>>2])&&(Se[vi+20>>2]=0,Se[vi+8>>2]=0),fr>>>0<=Me[vi+28>>2]>>>0)break r;ia(0);break r}if((0|w)==(0|Se[vi+20>>2])){var sr=Se[vi+8>>2]+M|0;Se[vi+8>>2]=sr,Se[vi+20>>2]=S;var nr=1|sr;Se[i+1]=nr;var or=er+sr|0;Se[or>>2]=sr;break r}var lr=(vr&-8)+M|0,br=vr>>>3,kr=vr>>>0<256;e:do if(kr){var ur=Me[s+f],cr=Me[((4|h)>>2)+s];if((0|ur)!=(0|cr)){var hr=((vr>>>2&1073741822)<<2)+vi+40|0,dr=(0|ur)==(0|hr);do{if(!dr){if(ur>>>0<Me[vi+16>>2]>>>0){_=66;break}_=63;break}_=63}while(0);do if(63==_){if((0|cr)!=(0|hr)&&cr>>>0<Me[vi+16>>2]>>>0)break;Se[ur+12>>2]=cr,Se[cr+8>>2]=ur;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var wr=Se[vi>>2]&(1<<br^-1);Se[vi>>2]=wr}else{var pr=d,Er=Me[f+(s+4)],Ar=Me[((4|h)>>2)+s],gr=(0|Ar)==(0|pr);do if(gr){var yr=h+(r+12)|0,mr=Se[yr>>2];if(0==(0|mr)){var Sr=h+(r+8)|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=0,a=Cr>>2;break}var Rr=Sr,Tr=Mr}else{var Rr=yr,Tr=mr;_=73}for(;;){var Tr,Rr,Or=Tr+20|0,Nr=Se[Or>>2];if(0==(0|Nr)){var Ir=Tr+16|0,Pr=Me[Ir>>2];if(0==(0|Pr))break;var Rr=Ir,Tr=Pr}else var Rr=Or,Tr=Nr}if(Rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Rr>>2]=0;var Cr=Tr,a=Cr>>2}else{var Dr=Me[s+f];if(Dr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Dr+12>>2]=Ar,\nSe[Ar+8>>2]=Dr;var Cr=Ar,a=Cr>>2}while(0);var Cr;if(0==(0|Er))break;var Lr=h+(r+20)|0,Fr=(Se[Lr>>2]<<2)+vi+304|0,Xr=(0|pr)==(0|Se[Fr>>2]);do{if(Xr){if(Se[Fr>>2]=Cr,0!=(0|Cr))break;var jr=Se[vi+4>>2]&(1<<Se[Lr>>2]^-1);Se[vi+4>>2]=jr;break e}if(Er>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";var Ur=Er+16|0;if((0|Se[Ur>>2])==(0|pr)?Se[Ur>>2]=Cr:Se[Er+20>>2]=Cr,0==(0|Cr))break e}while(0);if(Cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=Er;var xr=Me[f+(s+2)];if(0!=(0|xr)){if(xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=xr,Se[xr+24>>2]=Cr}var zr=Me[f+(s+3)];if(0==(0|zr))break;if(zr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=zr,Se[zr+24>>2]=Cr}while(0);if(Se[i+1]=1|lr,Se[er+lr>>2]=lr,(0|S)!=(0|Se[vi+20>>2])){var Vr=lr;break}Se[vi+8>>2]=lr;break r}Se[ir>>2]=vr&-2,Se[i+1]=1|M,Se[er+M>>2]=M;var Vr=M}while(0);var Vr;if(Vr>>>0<256){var Br=Vr>>>2&1073741822,Hr=(Br<<2)+vi+40|0,Kr=Me[vi>>2],Yr=1<<(Vr>>>3),Gr=0==(Kr&Yr|0);do{if(!Gr){var Wr=(Br+2<<2)+vi+40|0,Zr=Me[Wr>>2];if(Zr>>>0>=Me[vi+16>>2]>>>0){var Qr=Zr,qr=Wr;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Kr|Yr;var Qr=Hr,qr=(Br+2<<2)+vi+40|0}while(0);var qr,Qr;Se[qr>>2]=S,Se[Qr+12>>2]=S,Se[i+2]=Qr,Se[i+3]=Hr;break r}var $r=S,Jr=Vr>>>8,ra=0==(0|Jr);do if(ra)var aa=0;else{if(Vr>>>0>16777215){var aa=31;break}var ea=(Jr+1048320|0)>>>16&8,va=Jr<<ea,fa=(va+520192|0)>>>16&4,_a=va<<fa,sa=(_a+245760|0)>>>16&2,na=14-(fa|ea|sa)+(_a<<sa>>>15)|0,aa=Vr>>>((na+7|0)>>>0)&1|na<<1}while(0);var aa,oa=(aa<<2)+vi+304|0;Se[i+7]=aa,Se[i+5]=0,Se[i+4]=0;var la=Se[vi+4>>2],ba=1<<aa,ka=0==(la&ba|0);e:do if(ka){var ua=la|ba;Se[vi+4>>2]=ua,Se[oa>>2]=$r,Se[i+6]=oa,Se[i+3]=S,Se[i+2]=S}else{if(31==(0|aa))var ca=0;else var ca=25-(aa>>>1)|0;for(var ca,ha=Vr<<ca,da=Se[oa>>2];;){var da,ha;if((Se[da+4>>2]&-8|0)==(0|Vr)){var wa=da+8|0,pa=Me[wa>>2],Ea=Me[vi+16>>2],Aa=da>>>0<Ea>>>0;do if(!Aa){if(pa>>>0<Ea>>>0)break;Se[pa+12>>2]=$r,Se[wa>>2]=$r,Se[i+2]=pa,Se[i+3]=da,Se[i+6]=0;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var ga=(ha>>>31<<2)+da+16|0,ya=Me[ga>>2];if(0==(0|ya)){if(ga>>>0>=Me[vi+16>>2]>>>0){Se[ga>>2]=$r,Se[i+6]=da,Se[i+3]=S,Se[i+2]=S;break e}throw Ka(),\"Reached an unreachable!\"}var ha=ha<<1,da=ya}}while(0);var ma=Se[vi+32>>2]-1|0;if(Se[vi+32>>2]=ma,0!=(0|ma))break r;ta();break r}while(0);throw Ka(),\"Reached an unreachable!\"}while(0)}function ta(){var r=Se[vi+452>>2],a=0==(0|r);r:do if(!a)for(var e=r;;){var e,i=Se[e+8>>2];if(0==(0|i))break r;var e=i}while(0);Se[vi+32>>2]=-1}function fa(r,a){if(0==(0|r))var e=Jr(a),i=e;else var v=la(r,a),i=v;var i;return i}function _a(r,a){var e,i=r>>>0<9;do if(i)var v=Jr(a),t=v;else{var f=r>>>0<16?16:r,_=0==(f-1&f|0);r:do if(_)var s=f;else{if(f>>>0<=16){var s=16;break}for(var n=16;;){var n,o=n<<1;if(o>>>0>=f>>>0){var s=o;break r}var n=o}}while(0);var s;if((-64-s|0)>>>0>a>>>0){if(a>>>0<11)var l=16;else var l=a+11&-8;var l,b=Jr(l+(s+12)|0);if(0==(0|b)){var t=0;break}var k=b-8|0;if(0==((b>>>0)%(s>>>0)|0))var u=k,c=0;else{var h=b+(s-1)&-s,d=h-8|0,w=k;if((d-w|0)>>>0>15)var p=d;else var p=h+(s-8)|0;var p,E=p-w|0,e=(b-4|0)>>2,A=Se[e],g=(A&-8)-E|0;if(0==(3&A|0)){var y=Se[k>>2]+E|0;Se[p>>2]=y,Se[p+4>>2]=g;var u=p,c=0}else{var m=p+4|0,S=g|1&Se[m>>2]|2;Se[m>>2]=S;var M=g+(p+4)|0,C=1|Se[M>>2];Se[M>>2]=C;var R=E|1&Se[e]|2;Se[e]=R;var T=b+(E-4)|0,O=1|Se[T>>2];Se[T>>2]=O;var u=p,c=b}}var c,u,N=u+4|0,I=Me[N>>2],P=0==(3&I|0);do if(P)var D=0;else{var L=I&-8;if(L>>>0<=(l+16|0)>>>0){var D=0;break}var F=L-l|0;Se[N>>2]=l|1&I|2,Se[u+(4|l)>>2]=3|F;var X=u+(4|L)|0,j=1|Se[X>>2];Se[X>>2]=j;var D=l+(u+8)|0}while(0);var D;0!=(0|c)&&va(c),0!=(0|D)&&va(D);var t=u+8|0}else{var U=Je();Se[U>>2]=12;var t=0}}while(0);var t;return t}function sa(r,a,e,i){var v,t;0==(0|Se[ti>>2])&&ba();var f=0==(0|i),_=0==(0|r);do{if(f){if(_){var s=Jr(0),n=s;t=30;break}var o=r<<2;if(o>>>0<11){var l=0,b=16;t=9;break}var l=0,b=o+11&-8;t=9;break}if(_){var n=i;t=30;break}var l=i,b=0;t=9;break}while(0);do if(9==t){var b,l,k=0==(1&e|0);r:do if(k){if(_){var u=0,c=0;break}for(var h=0,d=0;;){var d,h,w=Me[a+(d<<2)>>2];if(w>>>0<11)var p=16;else var p=w+11&-8;var p,E=p+h|0,A=d+1|0;if((0|A)==(0|r)){var u=0,c=E;break r}var h=E,d=A}}else{var g=Me[a>>2];if(g>>>0<11)var y=16;else var y=g+11&-8;var y,u=y,c=y*r|0}while(0);var c,u,m=Jr(b-4+c|0);if(0==(0|m)){var n=0;break}var S=m-8|0,M=Se[m-4>>2]&-8;if(0!=(2&e|0)){var C=-4-b+M|0;Fa(m,0,C,1)}if(0==(0|l)){var R=m+c|0,T=M-c|3;Se[m+(c-4)>>2]=T;var O=R,v=O>>2,N=c}else var O=l,v=O>>2,N=M;var N,O;Se[v]=m;var I=r-1|0,P=0==(0|I);r:do if(P)var D=S,L=N;else if(0==(0|u))for(var F=S,X=N,j=0;;){var j,X,F,U=Me[a+(j<<2)>>2];if(U>>>0<11)var x=16;else var x=U+11&-8;var x,z=X-x|0;Se[F+4>>2]=3|x;var V=F+x|0,B=j+1|0;if(Se[(B<<2>>2)+v]=x+(F+8)|0,(0|B)==(0|I)){var D=V,L=z;break r}var F=V,X=z,j=B}else for(var H=3|u,K=u+8|0,Y=S,G=N,W=0;;){var W,G,Y,Z=G-u|0;Se[Y+4>>2]=H;var Q=Y+u|0,q=W+1|0;if(Se[(q<<2>>2)+v]=Y+K|0,(0|q)==(0|I)){var D=Q,L=Z;break r}var Y=Q,G=Z,W=q}while(0);var L,D;Se[D+4>>2]=3|L;var n=O}while(0);var n;return n}function na(r){var a=r>>2;0==(0|Se[ti>>2])&&ba();var e=Me[vi+24>>2];if(0==(0|e))var i=0,v=0,t=0,f=0,_=0,s=0,n=0;else{for(var o=Me[vi+12>>2],l=o+40|0,b=vi+444|0,k=l,u=l,c=1;;){var c,u,k,b,h=Me[b>>2],d=h+8|0;if(0==(7&d|0))var w=0;else var w=7&-d;for(var w,p=b+4|0,E=h+w|0,A=c,g=u,y=k;;){var y,g,A,E;if(E>>>0<h>>>0)break;if(E>>>0>=(h+Se[p>>2]|0)>>>0|(0|E)==(0|e))break;var m=Se[E+4>>2];if(7==(0|m))break;var S=m&-8,M=S+y|0;if(1==(3&m|0))var C=A+1|0,R=S+g|0;else var C=A,R=g;var R,C,E=E+S|0,A=C,g=R,y=M}var T=Me[b+8>>2];if(0==(0|T))break;var b=T,k=y,u=g,c=A}var O=Se[vi+432>>2],i=y,v=A,t=o,f=g,_=O-y|0,s=Se[vi+436>>2],n=O-g|0}var n,s,_,f,t,v,i;Se[a]=i,Se[a+1]=v,Se[a+2]=0,Se[a+3]=0,Se[a+4]=_,Se[a+5]=s,Se[a+6]=0,Se[a+7]=n,Se[a+8]=f,Se[a+9]=t}function oa(){0==(0|Se[ti>>2])&&ba();var r=Me[vi+24>>2],a=0==(0|r);r:do if(a)var e=0,i=0,v=0;else for(var t=Se[vi+436>>2],f=Me[vi+432>>2],_=vi+444|0,s=f-40-Se[vi+12>>2]|0;;){var s,_,n=Me[_>>2],o=n+8|0;if(0==(7&o|0))var l=0;else var l=7&-o;for(var l,b=_+4|0,k=n+l|0,u=s;;){var u,k;if(k>>>0<n>>>0)break;if(k>>>0>=(n+Se[b>>2]|0)>>>0|(0|k)==(0|r))break;var c=Se[k+4>>2];if(7==(0|c))break;var h=c&-8,d=1==(3&c|0)?h:0,w=u-d|0,k=k+h|0,u=w}var p=Me[_+8>>2];if(0==(0|p)){var e=t,i=f,v=u;break r}var _=p,s=u}while(0);var v,i,e,E=Se[Se[qe>>2]+12>>2],A=(Qa(E,0|He.__str339,(ne=Oe,Oe+=4,Se[ne>>2]=e,ne)),Se[Se[qe>>2]+12>>2]),g=(Qa(A,0|He.__str1340,(ne=Oe,Oe+=4,Se[ne>>2]=i,ne)),Se[Se[qe>>2]+12>>2]);Qa(g,0|He.__str2341,(ne=Oe,Oe+=4,Se[ne>>2]=v,ne))}function la(r,a){var e,i,v,t=a>>>0>4294967231;r:do{if(!t){var f=r-8|0,_=f,i=(r-4|0)>>2,s=Me[i],n=s&-8,o=n-8|0,l=r+o|0,b=f>>>0<Me[vi+16>>2]>>>0;do if(!b){var k=3&s;if(!(1!=(0|k)&(0|o)>-8))break;var e=(r+(n-4)|0)>>2;if(0==(1&Se[e]|0))break;if(a>>>0<11)var u=16;else var u=a+11&-8;var u,c=0==(0|k);do{if(c){var h=ka(_,u),d=0,w=h;v=17;break}if(n>>>0<u>>>0){if((0|l)!=(0|Se[vi+24>>2])){v=21;break}var p=Se[vi+12>>2]+n|0;if(p>>>0<=u>>>0){v=21;break}var E=p-u|0,A=r+(u-8)|0;Se[i]=u|1&s|2;var g=1|E;Se[r+(u-4)>>2]=g,Se[vi+24>>2]=A,Se[vi+12>>2]=E;var d=0,w=_;v=17;break}var y=n-u|0;if(y>>>0<=15){var d=0,w=_;v=17;break}Se[i]=u|1&s|2,Se[r+(u-4)>>2]=3|y;var m=1|Se[e];Se[e]=m;var d=r+u|0,w=_;v=17;break}while(0);do if(17==v){var w,d;if(0==(0|w))break;0!=(0|d)&&va(d);var S=w+8|0;break r}while(0);var M=Jr(a);if(0==(0|M)){var S=0;break r}var C=0==(3&Se[i]|0)?8:4,R=n-C|0,T=R>>>0<a>>>0?R:a;Pa(M,r,T,1),va(r);var S=M;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var O=Je();Se[O>>2]=12;var S=0}while(0);var S;return S}function ba(){if(0==(0|Se[ti>>2])){var r=qa(8);if(0!=(r-1&r|0))throw Ka(),\"Reached an unreachable!\";Se[ti+8>>2]=r,Se[ti+4>>2]=r,Se[ti+12>>2]=-1,Se[ti+16>>2]=2097152,Se[ti+20>>2]=0,Se[vi+440>>2]=0;var a=$a(0);Se[ti>>2]=a&-16^1431655768}}function ka(r,a){var e=Se[r+4>>2]&-8,i=a>>>0<256;do if(i)var v=0;else{if(e>>>0>=(a+4|0)>>>0&&(e-a|0)>>>0<=Se[ti+8>>2]<<1>>>0){var v=r;break}var v=0}while(0);var v;return v}function ua(r){for(var a,e=vi+444|0,a=e>>2;;){var e,i=Me[a];if(i>>>0<=r>>>0&&(i+Se[a+1]|0)>>>0>r>>>0){var v=e;break}var t=Me[a+2];if(0==(0|t)){var v=0;break}var e=t,a=e>>2}var v;return v}function ca(r,a){var e=r,i=r+8|0;if(0==(7&i|0))var v=0;else var v=7&-i;var v,t=a-v|0;Se[vi+24>>2]=e+v|0,Se[vi+12>>2]=t,Se[v+(e+4)>>2]=1|t,Se[a+(e+4)>>2]=40;var f=Se[ti+16>>2];Se[vi+28>>2]=f}function ha(){for(var r=0;;){var r,a=r<<1,e=(a<<2)+vi+40|0;Se[vi+(a+3<<2)+40>>2]=e,Se[vi+(a+2<<2)+40>>2]=e;var i=r+1|0;if(32==(0|i))break;var r=i}}function da(r,a,e){var i,v,t,f,_=a>>2,s=r>>2,n=r+8|0;if(0==(7&n|0))var o=0;else var o=7&-n;var o,l=a+8|0;if(0==(7&l|0))var b=0,t=b>>2;else var b=7&-l,t=b>>2;var b,k=a+b|0,u=k,c=o+e|0,v=c>>2,h=r+c|0,d=h,w=k-(r+o)-e|0;Se[(o+4>>2)+s]=3|e;var p=(0|u)==(0|Se[vi+24>>2]);r:do if(p){var E=Se[vi+12>>2]+w|0;Se[vi+12>>2]=E,Se[vi+24>>2]=d;var A=1|E;Se[v+(s+1)]=A}else if((0|u)==(0|Se[vi+20>>2])){var g=Se[vi+8>>2]+w|0;Se[vi+8>>2]=g,Se[vi+20>>2]=d;var y=1|g;Se[v+(s+1)]=y;var m=r+g+c|0;Se[m>>2]=g}else{var S=Me[t+(_+1)];if(1==(3&S|0)){var M=S&-8,C=S>>>3,R=S>>>0<256;a:do if(R){var T=Me[((8|b)>>2)+_],O=Me[t+(_+3)];if((0|T)!=(0|O)){var N=((S>>>2&1073741822)<<2)+vi+40|0,I=(0|T)==(0|N);do{if(!I){if(T>>>0<Me[vi+16>>2]>>>0){f=18;break}f=15;break}f=15}while(0);do if(15==f){if((0|O)!=(0|N)&&O>>>0<Me[vi+16>>2]>>>0)break;Se[T+12>>2]=O,Se[O+8>>2]=T;break a}while(0);throw Ka(),\"Reached an unreachable!\"}var P=Se[vi>>2]&(1<<C^-1);Se[vi>>2]=P}else{var D=k,L=Me[((24|b)>>2)+_],F=Me[t+(_+3)],X=(0|F)==(0|D);do if(X){var j=16|b,U=j+(a+4)|0,x=Se[U>>2];if(0==(0|x)){var z=a+j|0,V=Se[z>>2];if(0==(0|V)){var B=0,i=B>>2;break}var H=z,K=V}else{var H=U,K=x;f=25}for(;;){var K,H,Y=K+20|0,G=Se[Y>>2];if(0==(0|G)){var W=K+16|0,Z=Me[W>>2];if(0==(0|Z))break;var H=W,K=Z}else var H=Y,K=G}if(H>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[H>>2]=0;var B=K,i=B>>2}else{var Q=Me[((8|b)>>2)+_];if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Q+12>>2]=F,Se[F+8>>2]=Q;var B=F,i=B>>2}while(0);var B;if(0==(0|L))break;var q=b+(a+28)|0,$=(Se[q>>2]<<2)+vi+304|0,J=(0|D)==(0|Se[$>>2]);do{if(J){if(Se[$>>2]=B,0!=(0|B))break;var rr=Se[vi+4>>2]&(1<<Se[q>>2]^-1);Se[vi+4>>2]=rr;break a}if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";var ar=L+16|0;if((0|Se[ar>>2])==(0|D)?Se[ar>>2]=B:Se[L+20>>2]=B,0==(0|B))break a}while(0);if(B>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+6]=L;var er=16|b,ir=Me[(er>>2)+_];if(0!=(0|ir)){if(ir>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+4]=ir,Se[ir+24>>2]=B}var vr=Me[(er+4>>2)+_];if(0==(0|vr))break;if(vr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+5]=vr,Se[vr+24>>2]=B}while(0);var tr=a+(M|b)|0,fr=M+w|0}else var tr=u,fr=w;var fr,tr,_r=tr+4|0,sr=Se[_r>>2]&-2;if(Se[_r>>2]=sr,Se[v+(s+1)]=1|fr,Se[(fr>>2)+s+v]=fr,fr>>>0<256){var nr=fr>>>2&1073741822,or=(nr<<2)+vi+40|0,lr=Me[vi>>2],br=1<<(fr>>>3),kr=0==(lr&br|0);do{if(!kr){var ur=(nr+2<<2)+vi+40|0,cr=Me[ur>>2];if(cr>>>0>=Me[vi+16>>2]>>>0){var hr=cr,dr=ur;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=lr|br;var hr=or,dr=(nr+2<<2)+vi+40|0}while(0);var dr,hr;Se[dr>>2]=d,Se[hr+12>>2]=d,Se[v+(s+2)]=hr,Se[v+(s+3)]=or}else{var wr=h,pr=fr>>>8,Er=0==(0|pr);do if(Er)var Ar=0;else{if(fr>>>0>16777215){var Ar=31;break}var gr=(pr+1048320|0)>>>16&8,yr=pr<<gr,mr=(yr+520192|0)>>>16&4,Sr=yr<<mr,Mr=(Sr+245760|0)>>>16&2,Cr=14-(mr|gr|Mr)+(Sr<<Mr>>>15)|0,Ar=fr>>>((Cr+7|0)>>>0)&1|Cr<<1}while(0);var Ar,Rr=(Ar<<2)+vi+304|0;Se[v+(s+7)]=Ar;var Tr=c+(r+16)|0;Se[v+(s+5)]=0,Se[Tr>>2]=0;var Or=Se[vi+4>>2],Nr=1<<Ar;if(0==(Or&Nr|0)){var Ir=Or|Nr;Se[vi+4>>2]=Ir,Se[Rr>>2]=wr,Se[v+(s+6)]=Rr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr}else{if(31==(0|Ar))var Pr=0;else var Pr=25-(Ar>>>1)|0;for(var Pr,Dr=fr<<Pr,Lr=Se[Rr>>2];;){var Lr,Dr;if((Se[Lr+4>>2]&-8|0)==(0|fr)){var Fr=Lr+8|0,Xr=Me[Fr>>2],jr=Me[vi+16>>2],Ur=Lr>>>0<jr>>>0;do if(!Ur){if(Xr>>>0<jr>>>0)break;Se[Xr+12>>2]=wr,Se[Fr>>2]=wr,Se[v+(s+2)]=Xr,Se[v+(s+3)]=Lr,Se[v+(s+6)]=0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var xr=(Dr>>>31<<2)+Lr+16|0,zr=Me[xr>>2];if(0==(0|zr)){if(xr>>>0>=Me[vi+16>>2]>>>0){Se[xr>>2]=wr,Se[v+(s+6)]=Lr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr;break r}throw Ka(),\"Reached an unreachable!\"}var Dr=Dr<<1,Lr=zr}}}}while(0);return r+(8|o)|0}function wa(r){return 0|He.__str3342}function pa(r){return 0|He.__str14343}function Ea(r){Se[r>>2]=si+8|0}function Aa(r){0!=(0|r)&&va(r)}function ga(r){ya(r);var a=r;Aa(a)}function ya(r){var a=0|r;Ye(a)}function ma(r){var a=0|r;Ea(a),Se[r>>2]=ni+8|0}function Sa(r){var a=0|r;ya(a);var e=r;Aa(e)}function Ma(r,a){var e,i,v=Me[vi+24>>2],i=v>>2,t=v,f=ua(t),_=Se[f>>2],s=Se[f+4>>2],n=_+s|0,o=_+(s-39)|0;if(0==(7&o|0))var l=0;else var l=7&-o;var l,b=_+(s-47)+l|0,k=b>>>0<(v+16|0)>>>0?t:b,u=k+8|0,e=u>>2,c=u,h=r,d=a-40|0;ca(h,d);var w=k+4|0;Se[w>>2]=27,Se[e]=Se[vi+444>>2],Se[e+1]=Se[vi+448>>2],Se[e+2]=Se[vi+452>>2],Se[e+3]=Se[vi+456>>2],Se[vi+444>>2]=r,Se[vi+448>>2]=a,Se[vi+456>>2]=0,Se[vi+452>>2]=c;var p=k+28|0;Se[p>>2]=7;var E=(k+32|0)>>>0<n>>>0;r:do if(E)for(var A=p;;){var A,g=A+4|0;if(Se[g>>2]=7,(A+8|0)>>>0>=n>>>0)break r;var A=g}while(0);var y=(0|k)==(0|t);r:do if(!y){var m=k-v|0,S=t+m|0,M=m+(t+4)|0,C=Se[M>>2]&-2;Se[M>>2]=C;var R=1|m;Se[i+1]=R;var T=S;if(Se[T>>2]=m,m>>>0<256){var O=m>>>2&1073741822,N=(O<<2)+vi+40|0,I=Me[vi>>2],P=1<<(m>>>3),D=0==(I&P|0);do{if(!D){var L=(O+2<<2)+vi+40|0,F=Me[L>>2];if(F>>>0>=Me[vi+16>>2]>>>0){var X=F,j=L;break}throw Ka(),\"Reached an unreachable!\"}var U=I|P;Se[vi>>2]=U;var X=N,j=(O+2<<2)+vi+40|0}while(0);var j,X;Se[j>>2]=v,Se[X+12>>2]=v,Se[i+2]=X,Se[i+3]=N}else{var x=v,z=m>>>8,V=0==(0|z);do if(V)var B=0;else{if(m>>>0>16777215){var B=31;break}var H=(z+1048320|0)>>>16&8,K=z<<H,Y=(K+520192|0)>>>16&4,G=K<<Y,W=(G+245760|0)>>>16&2,Z=14-(Y|H|W)+(G<<W>>>15)|0,B=m>>>((Z+7|0)>>>0)&1|Z<<1}while(0);var B,Q=(B<<2)+vi+304|0;Se[i+7]=B,Se[i+5]=0,Se[i+4]=0;var q=Se[vi+4>>2],$=1<<B;if(0==(q&$|0)){var J=q|$;Se[vi+4>>2]=J,Se[Q>>2]=x,Se[i+6]=Q,Se[i+3]=v,Se[i+2]=v}else{if(31==(0|B))var rr=0;else var rr=25-(B>>>1)|0;for(var rr,ar=m<<rr,er=Se[Q>>2];;){var er,ar;if((Se[er+4>>2]&-8|0)==(0|m)){var ir=er+8|0,vr=Me[ir>>2],tr=Me[vi+16>>2],fr=er>>>0<tr>>>0;do if(!fr){if(vr>>>0<tr>>>0)break;Se[vr+12>>2]=x,Se[ir>>2]=x,Se[i+2]=vr,Se[i+3]=er,Se[i+6]=0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var _r=(ar>>>31<<2)+er+16|0,sr=Me[_r>>2];if(0==(0|sr)){if(_r>>>0>=Me[vi+16>>2]>>>0){Se[_r>>2]=x,Se[i+6]=er,Se[i+3]=v,Se[i+2]=v;break r}throw Ka(),\"Reached an unreachable!\"}var ar=ar<<1,er=sr}}}}while(0)}function Ca(r){return d(r)}function Ra(r,a){var e=0;do Ae[r+e]=Ae[a+e],e++;while(0!=Ae[a+e-1]);return r}function Ta(){var r=Ta;return r.LLVM_SAVEDSTACKS||(r.LLVM_SAVEDSTACKS=[]),r.LLVM_SAVEDSTACKS.push(le.stackSave()),r.LLVM_SAVEDSTACKS.length-1}function Oa(r){var a=Ta,e=a.LLVM_SAVEDSTACKS[r];a.LLVM_SAVEDSTACKS.splice(r,1),le.stackRestore(e)}function Na(r,a,e){for(var i=0;i<e;){var v=Ae[r+i],t=Ae[a+i];if(v==t&&0==v)return 0;if(0==v)return-1;if(0==t)return 1;if(v!=t)return v>t?1:-1;i++}return 0}function Ia(r,a){var e=Ca(r),i=0;do Ae[r+e+i]=Ae[a+i],i++;while(0!=Ae[a+i-1]);return r}function Pa(r,a,e,i){if(e>=20&&a%2==r%2)if(a%4==r%4){for(var v=a+e;a%4;)Ae[r++]=Ae[a++];for(var t=a>>2,f=r>>2,_=v>>2;t<_;)Se[f++]=Se[t++];for(a=t<<2,r=f<<2;a<v;)Ae[r++]=Ae[a++]}else{var v=a+e;a%2&&(Ae[r++]=Ae[a++]);for(var s=a>>1,n=r>>1,o=v>>1;s<o;)ye[n++]=ye[s++];a=s<<1,r=n<<1,a<v&&(Ae[r++]=Ae[a++])}else for(;e--;)Ae[r++]=Ae[a++]}function Da(r,a){return Na(r,a,Le)}function La(r,a,e){for(var i=0;i<e;i++){var v=Ae[r+i],t=Ae[a+i];if(v!=t)return v>t?1:-1}return 0}function Fa(r,a,e,i){if(e>=20){for(var v=r+e;r%4;)Ae[r++]=a;a<0&&(a+=256);for(var t=r>>2,f=v>>2,_=a|a<<8|a<<16|a<<24;t<f;)Se[t++]=_;for(r=t<<2;r<v;)Ae[r++]=a}else for(;e--;)Ae[r++]=a}function Xa(r,a,e,i){throw\"Assertion failed: \"+s(i)+\", at: \"+[s(r),a,s(e)]}function ja(r){var a=d(r),e=Jr(a+1);return Pa(e,r,a,1),Ae[e+a]=0,e}function Ua(r,a){function e(r){var e;return\"double\"===r?(xe[0]=Se[a+_>>2],xe[1]=Se[a+_+4>>2],e=ze[0]):\"i64\"==r?e=[Se[a+_>>2],Se[a+_+4>>2]]:(r=\"i32\",e=Se[a+_>>2]),_+=le.getNativeFieldSize(r),e}for(var i,v,t,f=r,_=0,s=[];;){var n=f;if(i=Ae[f],0===i)break;if(v=Ae[f+1],i==\"%\".charCodeAt(0)){var o=!1,l=!1,b=!1,k=!1;r:for(;;){switch(v){case\"+\".charCodeAt(0):o=!0;break;case\"-\".charCodeAt(0):l=!0;break;case\"#\".charCodeAt(0):b=!0;break;case\"0\".charCodeAt(0):if(k)break r;k=!0;break;default:break r}f++,v=Ae[f+1]}var u=0;if(v==\"*\".charCodeAt(0))u=e(\"i32\"),f++,v=Ae[f+1];else for(;v>=\"0\".charCodeAt(0)&&v<=\"9\".charCodeAt(0);)u=10*u+(v-\"0\".charCodeAt(0)),f++,v=Ae[f+1];var c=!1;if(v==\".\".charCodeAt(0)){var h=0;if(c=!0,f++,v=Ae[f+1],v==\"*\".charCodeAt(0))h=e(\"i32\"),f++;else for(;;){var d=Ae[f+1];if(d<\"0\".charCodeAt(0)||d>\"9\".charCodeAt(0))break;h=10*h+(d-\"0\".charCodeAt(0)),f++}v=Ae[f+1]}else var h=6;var E;switch(String.fromCharCode(v)){case\"h\":var A=Ae[f+2];A==\"h\".charCodeAt(0)?(f++,E=1):E=2;break;case\"l\":var A=Ae[f+2];A==\"l\".charCodeAt(0)?(f++,E=8):E=4;break;case\"L\":case\"q\":case\"j\":E=8;break;case\"z\":case\"t\":case\"I\":E=4;break;default:E=null}if(E&&f++,v=Ae[f+1],[\"d\",\"i\",\"u\",\"o\",\"x\",\"X\",\"p\"].indexOf(String.fromCharCode(v))!=-1){var m=v==\"d\".charCodeAt(0)||v==\"i\".charCodeAt(0);E=E||4;var t=e(\"i\"+8*E);if(8==E&&(t=le.makeBigInt(t[0],t[1],v==\"u\".charCodeAt(0))),E<=4){var S=Math.pow(256,E)-1;t=(m?y:g)(t&S,8*E)}var M,C=Math.abs(t),R=\"\";if(v==\"d\".charCodeAt(0)||v==\"i\".charCodeAt(0))M=y(t,8*E,1).toString(10);else if(v==\"u\".charCodeAt(0))M=g(t,8*E,1).toString(10),t=Math.abs(t);else if(v==\"o\".charCodeAt(0))M=(b?\"0\":\"\")+C.toString(8);else if(v==\"x\".charCodeAt(0)||v==\"X\".charCodeAt(0)){if(R=b?\"0x\":\"\",t<0){t=-t,M=(C-1).toString(16);for(var T=[],O=0;O<M.length;O++)T.push((15-parseInt(M[O],16)).toString(16));for(M=T.join(\"\");M.length<2*E;)M=\"f\"+M}else M=C.toString(16);v==\"X\".charCodeAt(0)&&(R=R.toUpperCase(),M=M.toUpperCase())}else v==\"p\".charCodeAt(0)&&(0===C?M=\"(nil)\":(R=\"0x\",M=C.toString(16)));if(c)for(;M.length<h;)M=\"0\"+M;for(o&&(R=t<0?\"-\"+R:\"+\"+R);R.length+M.length<u;)l?M+=\" \":k?M=\"0\"+M:R=\" \"+R;M=R+M,M.split(\"\").forEach(function(r){s.push(r.charCodeAt(0))})}else if([\"f\",\"F\",\"e\",\"E\",\"g\",\"G\"].indexOf(String.fromCharCode(v))!=-1){var M,t=e(\"double\");if(isNaN(t))M=\"nan\",k=!1;else if(isFinite(t)){var N=!1,I=Math.min(h,20);if(v==\"g\".charCodeAt(0)||v==\"G\".charCodeAt(0)){N=!0,h=h||1;var P=parseInt(t.toExponential(I).split(\"e\")[1],10);h>P&&P>=-4?(v=(v==\"g\".charCodeAt(0)?\"f\":\"F\").charCodeAt(0),h-=P+1):(v=(v==\"g\".charCodeAt(0)?\"e\":\"E\").charCodeAt(0),h--),I=Math.min(h,20)}v==\"e\".charCodeAt(0)||v==\"E\".charCodeAt(0)?(M=t.toExponential(I),/[eE][-+]\\\\d$/.test(M)&&(M=M.slice(0,-1)+\"0\"+M.slice(-1))):v!=\"f\".charCodeAt(0)&&v!=\"F\".charCodeAt(0)||(M=t.toFixed(I));var D=M.split(\"e\");if(N&&!b)for(;D[0].length>1&&D[0].indexOf(\".\")!=-1&&(\"0\"==D[0].slice(-1)||\".\"==D[0].slice(-1));)D[0]=D[0].slice(0,-1);else for(b&&M.indexOf(\".\")==-1&&(D[0]+=\".\");h>I++;)D[0]+=\"0\";M=D[0]+(D.length>1?\"e\"+D[1]:\"\"),v==\"E\".charCodeAt(0)&&(M=M.toUpperCase()),o&&t>=0&&(M=\"+\"+M)}else M=(t<0?\"-\":\"\")+\"inf\",k=!1;for(;M.length<u;)l?M+=\" \":M=!k||\"-\"!=M[0]&&\"+\"!=M[0]?(k?\"0\":\" \")+M:M[0]+\"0\"+M.slice(1);v<\"a\".charCodeAt(0)&&(M=M.toUpperCase()),M.split(\"\").forEach(function(r){s.push(r.charCodeAt(0))})}else if(v==\"s\".charCodeAt(0)){var L,F=e(\"i8*\");if(F?(L=w(F),c&&L.length>h&&(L=L.slice(0,h))):L=p(\"(null)\",!0),!l)for(;L.length<u--;)s.push(\" \".charCodeAt(0));if(s=s.concat(L),l)for(;L.length<u--;)s.push(\" \".charCodeAt(0))}else if(v==\"c\".charCodeAt(0)){for(l&&s.push(e(\"i8\"));--u>0;)s.push(\" \".charCodeAt(0));l||s.push(e(\"i8\"))}else if(v==\"n\".charCodeAt(0)){var X=e(\"i32*\");Se[X>>2]=s.length}else if(v==\"%\".charCodeAt(0))s.push(i);else for(var O=n;O<f+2;O++)s.push(Ae[O]);f+=2}else s.push(i),f+=1}return s}function xa(r,a,e,i){for(var v=Ua(e,i),t=void 0===a?v.length:Math.min(v.length,a-1),f=0;f<t;f++)Ae[r+f]=v[f];return Ae[r+f]=0,v.length}function za(r,a,e){return xa(r,void 0,a,e)}function Va(r){return r in{32:0,9:0,10:0,11:0,12:0,13:0}}function Ba(r){return r>=\"0\".charCodeAt(0)&&r<=\"9\".charCodeAt(0)}function Ha(r){for(var a;(a=Ae[r])&&Va(a);)r++;if(!a||!Ba(a))return 0;for(var e=r;(a=Ae[e])&&Ba(a);)e++;return Math.floor(Number(s(r).substr(0,e-r)))}function Ka(r){throw ke=!0,\"ABORT: \"+r+\", at \"+(new Error).stack}function Ya(r){return Ya.ret||(Ya.ret=_([0],\"i32\",we)),Se[Ya.ret>>2]=r,r}function Ga(r,a,e,i){var v=$e.streams[r];if(!v||v.object.isDevice)return Ya(Ge.EBADF),-1;if(v.isWrite){if(v.object.isFolder)return Ya(Ge.EISDIR),-1;if(e<0||i<0)return Ya(Ge.EINVAL),-1;for(var t=v.object.contents;t.length<i;)t.push(0);for(var f=0;f<e;f++)t[i+f]=ge[a+f];return v.object.timestamp=Date.now(),f}return Ya(Ge.EACCES),-1}function Wa(r,a,e){var i=$e.streams[r];if(i){if(i.isWrite){if(e<0)return Ya(Ge.EINVAL),-1;if(i.object.isDevice){if(i.object.output){for(var v=0;v<e;v++)try{i.object.output(Ae[a+v])}catch(r){return Ya(Ge.EIO),-1}return i.object.timestamp=Date.now(),v}return Ya(Ge.ENXIO),-1}var t=Ga(r,a,e,i.position);return t!=-1&&(i.position+=t),t}return Ya(Ge.EACCES),-1}return Ya(Ge.EBADF),-1}function Za(r,a,e,i){var v=e*a;if(0==v)return 0;var t=Wa(i,r,v);return t==-1?($e.streams[i]&&($e.streams[i].error=!0),-1):Math.floor(t/a)}function Qa(r,a,e){var i=Ua(a,e),v=le.stackSave(),t=Za(_(i,\"i8\",de),1,i.length,r);return le.stackRestore(v),t}function qa(r){switch(r){case 8:return Pe;case 54:case 56:case 21:case 61:case 63:case 22:case 67:case 23:case 24:case 25:case 26:case 27:case 69:case 28:case 101:case 70:case 71:case 29:case 30:case 199:case 75:case 76:case 32:case 43:case 44:case 80:case 46:case 47:case 45:case 48:case 49:case 42:case 82:case 33:case 7:case 108:case 109:case 107:case 112:case 119:case 121:return 200809;case 13:case 104:case 94:case 95:case 34:case 35:case 77:case 81:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 94:case 95:case 110:case 111:case 113:case 114:case 115:case 116:case 117:case 118:case 120:case 40:case 16:case 79:case 19:return-1;case 92:case 93:case 5:case 72:case 6:case 74:case 92:case 93:case 96:case 97:case 98:case 99:case 102:case 103:case 105:return 1;case 38:case 66:case 50:case 51:case 4:return 1024;case 15:case 64:case 41:return 32;case 55:case 37:case 17:return 2147483647;case 18:case 1:return 47839;case 59:case 57:return 99;case 68:case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1e3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4}return Ya(Ge.EINVAL),-1}function $a(r){var a=Math.floor(Date.now()/1e3);return r&&(Se[r>>2]=a),a}function Ja(){return Ya.ret}function re(r){var a=re;a.called||(Ie=o(Ie),a.called=!0);var e=Ie;return 0!=r&&le.staticAlloc(r),e}function ae(){return Se[ae.buf>>2]}function ee(r){r=r||Module.arguments,k();var a=null;return Module._main&&(a=Module.callMain(r),Module.noExitRuntime||u()),a}var ie=[],ve=false,te=\"object\"==typeof window,fe=\"function\"==typeof importScripts,_e=!te&&!ve&&!fe;if(ve){print=function(r){process.stdout.write(r+\"\\\\n\")},printErr=function(r){process.stderr.write(r+\"\\\\n\")};var se=require(\"fs\");read=function(r){var a=se.readFileSync(r).toString();return a||\"/\"==r[0]||(r=__dirname.split(\"/\").slice(0,-1).join(\"/\")+\"/src/\"+r,a=se.readFileSync(r).toString()),a},load=function(a){r(read(a))},ie=process.argv.slice(2)}else if(_e)this.read||(this.read=function(r){snarf(r)}),\"undefined\"!=typeof scriptArgs?ie=scriptArgs:\"undefined\"!=typeof arguments&&(ie=arguments);else if(te)this.print=printErr=function(r){console.log(r)},this.read=function(r){var a=new XMLHttpRequest;return a.open(\"GET\",r,!1),a.send(null),a.responseText},this.arguments&&(ie=arguments);else{if(!fe)throw\"Unknown runtime environment. Where are we?\";this.load=importScripts}\"undefined\"==typeof load&&\"undefined\"!=typeof read&&(this.load=function(a){r(read(a))}),\"undefined\"==typeof printErr&&(this.printErr=function(){}),\"undefined\"==typeof print&&(this.print=printErr);try{this.Module=Module}catch(r){this.Module=Module={}}Module.arguments||(Module.arguments=ie),Module.print&&(print=Module.print);var ne,oe,le={stackSave:function(){return Oe},stackRestore:function(r){Oe=r},forceAlign:function(r,a){if(a=a||4,1==a)return r;if(isNumber(r)&&isNumber(a))return Math.ceil(r/a)*a;if(isNumber(a)&&isPowerOfTwo(a)){var e=log2(a);return\"((((\"+r+\")+\"+(a-1)+\")>>\"+e+\")<<\"+e+\")\"}return\"Math.ceil((\"+r+\")/\"+a+\")*\"+a},isNumberType:function(r){return r in le.INT_TYPES||r in le.FLOAT_TYPES},isPointerType:function(r){return\"*\"==r[r.length-1]},isStructType:function(r){return!isPointerType(r)&&(!!/^\\\\[\\\\d+\\\\ x\\\\ (.*)\\\\]/.test(r)||(!!/<?{ [^}]* }>?/.test(r)||\"%\"==r[0]))},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{float:0,double:0},bitshift64:function(r,e,i,v){var t=Math.pow(2,v)-1;if(v<32)switch(i){case\"shl\":return[r<<v,e<<v|(r&t<<32-v)>>>32-v];case\"ashr\":return[(r>>>v|(e&t)<<32-v)>>0>>>0,e>>v>>>0];case\"lshr\":return[(r>>>v|(e&t)<<32-v)>>>0,e>>>v]}else if(32==v)switch(i){case\"shl\":return[0,r];case\"ashr\":return[e,(0|e)<0?t:0];case\"lshr\":return[e,0]}else switch(i){case\"shl\":return[0,r<<v-32];case\"ashr\":return[e>>v-32>>>0,(0|e)<0?t:0];case\"lshr\":return[e>>>v-32,0]}a(\"unknown bitshift64 op: \"+[value,i,v])},or64:function(r,a){var e=0|r|(0|a),i=4294967296*(Math.round(r/4294967296)|Math.round(a/4294967296));return e+i},and64:function(r,a){var e=(0|r)&(0|a),i=4294967296*(Math.round(r/4294967296)&Math.round(a/4294967296));return e+i},xor64:function(r,a){var e=(0|r)^(0|a),i=4294967296*(Math.round(r/4294967296)^Math.round(a/4294967296));return e+i},getNativeTypeSize:function(r,a){if(1==le.QUANTUM_SIZE)return 1;var i={\"%i1\":1,\"%i8\":1,\"%i16\":2,\"%i32\":4,\"%i64\":8,\"%float\":4,\"%double\":8}[\"%\"+r];if(!i)if(\"*\"==r[r.length-1])i=le.QUANTUM_SIZE;else if(\"i\"==r[0]){var v=parseInt(r.substr(1));e(v%8==0),i=v/8}return i},getNativeFieldSize:function(r){return Math.max(le.getNativeTypeSize(r),le.QUANTUM_SIZE)},dedup:function(r,a){var e={};return a?r.filter(function(r){return!e[r[a]]&&(e[r[a]]=!0,!0)}):r.filter(function(r){return!e[r]&&(e[r]=!0,!0)})},set:function(){for(var r=\"object\"==typeof arguments[0]?arguments[0]:arguments,a={},e=0;e<r.length;e++)a[r[e]]=0;return a},calculateStructAlignment:function(r){r.flatSize=0,r.alignSize=0;var a=[],e=-1;return r.flatIndexes=r.fields.map(function(i){var v,t;if(le.isNumberType(i)||le.isPointerType(i))v=le.getNativeTypeSize(i),t=v;else{if(!le.isStructType(i))throw\"Unclear type in struct: \"+i+\", in \"+r.name_+\" :: \"+dump(Types.types[r.name_]);v=Types.types[i].flatSize,t=Types.types[i].alignSize}t=r.packed?1:Math.min(t,le.QUANTUM_SIZE),r.alignSize=Math.max(r.alignSize,t);var f=le.alignMemory(r.flatSize,t);return r.flatSize=f+v,e>=0&&a.push(f-e),e=f,f}),r.flatSize=le.alignMemory(r.flatSize,r.alignSize),0==a.length?r.flatFactor=r.flatSize:1==le.dedup(a).length&&(r.flatFactor=a[0]),r.needsFlattening=1!=r.flatFactor,r.flatIndexes},generateStructInfo:function(r,a,i){var v,t;if(a){if(i=i||0,v=(\"undefined\"==typeof Types?le.typeInfo:Types.types)[a],!v)return null;e(v.fields.length===r.length,\"Number of named fields must match the type for \"+a),t=v.flatIndexes}else{var v={fields:r.map(function(r){return r[0]})};t=le.calculateStructAlignment(v)}var f={__size__:v.flatSize};return a?r.forEach(function(r,a){if(\"string\"==typeof r)f[r]=t[a]+i;else{var e;for(var _ in r)e=_;f[e]=le.generateStructInfo(r[e],v.fields[a],t[a])}}):r.forEach(function(r,a){f[r[1]]=t[a]}),f},stackAlloc:function(r){var a=Oe;return Oe+=r,Oe=Oe+3>>2<<2,a},staticAlloc:function(r){var a=Ie;return Ie+=r,Ie=Ie+3>>2<<2,Ie>=Le&&l(),a},alignMemory:function(r,a){var e=r=Math.ceil(r/(a?a:4))*(a?a:4);return e},makeBigInt:function(r,a,e){var i=e?(r>>>0)+4294967296*(a>>>0):(r>>>0)+4294967296*(0|a);return i},QUANTUM_SIZE:4,__dummy__:0},be={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(r,e,i){e||(this.corrections++,this.corrections>=this.MAX_ALLOWED&&a(\"\\\\n\\\\nToo many corrections!\"))},print:function(){}},ke=!1,ue=0,ce=this;Module.ccall=i,Module.setValue=t,Module.getValue=f;var he=0,de=1,we=2;Module.ALLOC_NORMAL=he,Module.ALLOC_STACK=de,Module.ALLOC_STATIC=we,Module.allocate=_,Module.Pointer_stringify=s,Module.Array_stringify=n;var pe,Ee,Ae,ge,ye,me,Se,Me,Ce,Re,Te,Oe,Ne,Ie,Pe=4096,De=Module.TOTAL_STACK||5242880,Le=Module.TOTAL_MEMORY||10485760;Module.FAST_MEMORY||2097152;e(!!(Int32Array&&Float64Array&&new Int32Array(1).subarray&&new Int32Array(1).set),\"Cannot fallback to non-typed array case: Code is too specialized\");var Fe=new ArrayBuffer(Le);Ae=new Int8Array(Fe),ye=new Int16Array(Fe),Se=new Int32Array(Fe),ge=new Uint8Array(Fe),me=new Uint16Array(Fe),Me=new Uint32Array(Fe),Ce=new Float32Array(Fe),Re=new Float64Array(Fe),Se[0]=255,e(255===ge[0]&&0===ge[3],\"Typed arrays 2 must be run on a little-endian system\");var Xe=p(\"(null)\");Ie=Xe.length;for(var je=0;je<Xe.length;je++)Ae[je]=Xe[je];Module.HEAP=Ee,Module.HEAP8=Ae,Module.HEAP16=ye,Module.HEAP32=Se,Module.HEAPU8=ge,Module.HEAPU16=me,Module.HEAPU32=Me,Module.HEAPF32=Ce,Module.HEAPF64=Re,Te=Oe=le.alignMemory(Ie),Ne=Te+De;var Ue=le.alignMemory(Ne,8),xe=(Ae.subarray(Ue),Se.subarray(Ue>>2)),ze=(Ce.subarray(Ue>>2),Re.subarray(Ue>>3));Ne=Ue+8,Ie=o(Ne);var Ve=[],Be=[];Module.Array_copy=c,Module.TypedArray_copy=h,Module.String_len=d,Module.String_copy=w,Module.intArrayFromString=p,Module.intArrayToString=E,Module.writeStringToMemory=A;var He=[],Ke=0;O.X=1,N.X=1,V.X=1,H.X=1,G.X=1,W.X=1,q.X=1,$.X=1,rr.X=1,ar.X=1,er.X=1,vr.X=1,nr.X=1,or.X=1,kr.X=1,hr.X=1,Ar.X=1,Sr.X=1,Tr.X=1,Ir.X=1,Pr.X=1,Dr.X=1,Lr.X=1,Fr.X=1,Xr.X=1,zr.X=1,Vr.X=1,Br.X=1,Gr.X=1,$r.X=1,Module._malloc=Jr,Jr.X=1,ra.X=1,aa.X=1,ea.X=1,ia.X=1,Module._free=va,va.X=1,_a.X=1,sa.X=1,na.X=1,oa.X=1,la.X=1,da.X=1,Ma.X=1;var Ye,Ge={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18},We=0,Ze=0,Qe=0,qe=0,$e={currentPath:\"/\",nextInode:2,streams:[null],ignorePermissions:!0,absolutePath:function(r,a){if(\"string\"!=typeof r)return null;void 0===a&&(a=$e.currentPath),r&&\"/\"==r[0]&&(a=\"\");for(var e=a+\"/\"+r,i=e.split(\"/\").reverse(),v=[\"\"];i.length;){var t=i.pop();\"\"==t||\".\"==t||(\"..\"==t?v.length>1&&v.pop():v.push(t))}return 1==v.length?\"/\":v.join(\"/\")},analyzePath:function(r,a,e){var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};if(r=$e.absolutePath(r),\"/\"==r)i.isRoot=!0,i.exists=i.parentExists=!0,i.name=\"/\",i.path=i.parentPath=\"/\",i.object=i.parentObject=$e.root;else if(null!==r){e=e||0,r=r.slice(1).split(\"/\");for(var v=$e.root,t=[\"\"];r.length;){1==r.length&&v.isFolder&&(i.parentExists=!0,i.parentPath=1==t.length?\"/\":t.join(\"/\"),i.parentObject=v,i.name=r[0]);var f=r.shift();if(!v.isFolder){i.error=Ge.ENOTDIR;break}if(!v.read){i.error=Ge.EACCES;break}if(!v.contents.hasOwnProperty(f)){i.error=Ge.ENOENT;break}if(v=v.contents[f],v.link&&(!a||0!=r.length)){if(e>40){i.error=Ge.ELOOP;break}var _=$e.absolutePath(v.link,t.join(\"/\"));return $e.analyzePath([_].concat(r).join(\"/\"),a,e+1)}t.push(f),0==r.length&&(i.exists=!0,i.path=t.join(\"/\"),i.object=v)}return i}return i},findObject:function(r,a){$e.ensureRoot();var e=$e.analyzePath(r,a);return e.exists?e.object:(Ya(e.error),null)},createObject:function(r,a,e,i,v){if(r||(r=\"/\"),\"string\"==typeof r&&(r=$e.findObject(r)),!r)throw Ya(Ge.EACCES),new Error(\"Parent path must exist.\");if(!r.isFolder)throw Ya(Ge.ENOTDIR),\nnew Error(\"Parent must be a folder.\");if(!r.write&&!$e.ignorePermissions)throw Ya(Ge.EACCES),new Error(\"Parent folder must be writeable.\");if(!a||\".\"==a||\"..\"==a)throw Ya(Ge.ENOENT),new Error(\"Name must not be empty.\");if(r.contents.hasOwnProperty(a))throw Ya(Ge.EEXIST),new Error(\"Can't overwrite object.\");r.contents[a]={read:void 0===i||i,write:void 0!==v&&v,timestamp:Date.now(),inodeNumber:$e.nextInode++};for(var t in e)e.hasOwnProperty(t)&&(r.contents[a][t]=e[t]);return r.contents[a]},createFolder:function(r,a,e,i){var v={isFolder:!0,isDevice:!1,contents:{}};return $e.createObject(r,a,v,e,i)},createPath:function(r,a,e,i){var v=$e.findObject(r);if(null===v)throw new Error(\"Invalid parent.\");for(a=a.split(\"/\").reverse();a.length;){var t=a.pop();t&&(v.contents.hasOwnProperty(t)||$e.createFolder(v,t,e,i),v=v.contents[t])}return v},createFile:function(r,a,e,i,v){return e.isFolder=!1,$e.createObject(r,a,e,i,v)},createDataFile:function(r,a,e,i,v){if(\"string\"==typeof e){for(var t=new Array(e.length),f=0,_=e.length;f<_;++f)t[f]=e.charCodeAt(f);e=t}var s={isDevice:!1,contents:e};return $e.createFile(r,a,s,i,v)},createLazyFile:function(r,a,e,i,v){var t={isDevice:!1,url:e};return $e.createFile(r,a,t,i,v)},createLink:function(r,a,e,i,v){var t={isDevice:!1,link:e};return $e.createFile(r,a,t,i,v)},createDevice:function(r,a,e,i){if(!e&&!i)throw new Error(\"A device must have at least one callback defined.\");var v={isDevice:!0,input:e,output:i};return $e.createFile(r,a,v,Boolean(e),Boolean(i))},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;var a=!0;if(\"undefined\"!=typeof XMLHttpRequest)e(\"Cannot do synchronous binary XHRs in modern browsers. Use --embed-file or --preload-file in emcc\");else{if(\"undefined\"==typeof read)throw new Error(\"Cannot load without read() or XMLHttpRequest.\");try{r.contents=p(read(r.url),!0)}catch(r){a=!1}}return a||Ya(Ge.EIO),a},ensureRoot:function(){$e.root||($e.root={read:!0,write:!0,isFolder:!0,isDevice:!1,timestamp:Date.now(),inodeNumber:1,contents:{}})},init:function(r,a,i){function v(r){null===r||r===\"\\\\n\".charCodeAt(0)?(a.printer(a.buffer.join(\"\")),a.buffer=[]):a.buffer.push(String.fromCharCode(r))}e(!$e.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),$e.init.initialized=!0,$e.ensureRoot(),r=r||Module.stdin,a=a||Module.stdout,i=i||Module.stderr;var t=!0,f=!0,s=!0;r||(t=!1,r=function(){if(!r.cache||!r.cache.length){var a;\"undefined\"!=typeof window&&\"function\"==typeof window.prompt?a=window.prompt(\"Input: \"):\"function\"==typeof readline&&(a=readline()),a||(a=\"\"),r.cache=p(a+\"\\\\n\",!0)}return r.cache.shift()}),a||(f=!1,a=v),a.printer||(a.printer=print),a.buffer||(a.buffer=[]),i||(s=!1,i=v),i.printer||(i.printer=print),i.buffer||(i.buffer=[]),$e.createFolder(\"/\",\"tmp\",!0,!0);var n=$e.createFolder(\"/\",\"dev\",!0,!0),o=$e.createDevice(n,\"stdin\",r),l=$e.createDevice(n,\"stdout\",null,a),b=$e.createDevice(n,\"stderr\",null,i);$e.createDevice(n,\"tty\",r,a),$e.streams[1]={path:\"/dev/stdin\",object:o,position:0,isRead:!0,isWrite:!1,isAppend:!1,isTerminal:!t,error:!1,eof:!1,ungotten:[]},$e.streams[2]={path:\"/dev/stdout\",object:l,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!f,error:!1,eof:!1,ungotten:[]},$e.streams[3]={path:\"/dev/stderr\",object:b,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!s,error:!1,eof:!1,ungotten:[]},We=_([1],\"void*\",we),Ze=_([2],\"void*\",we),Qe=_([3],\"void*\",we),$e.createPath(\"/\",\"dev/shm/tmp\",!0,!0),$e.streams[We]=$e.streams[1],$e.streams[Ze]=$e.streams[2],$e.streams[Qe]=$e.streams[3],qe=_([_([0,0,0,0,We,0,0,0,Ze,0,0,0,Qe,0,0,0],\"void*\",we)],\"void*\",we)},quit:function(){$e.init.initialized&&($e.streams[2]&&$e.streams[2].object.output.buffer.length>0&&$e.streams[2].object.output(\"\\\\n\".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output(\"\\\\n\".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,\"void*\",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p(\"/bin/this.program\"),\"i8\",we)];a();for(var v=0;v<e-1;v+=1)i.push(_(p(r[v]),\"i8\",we)),a();return i.push(0),i=_(i,\"i32\",we),_main(e,i,0)};var ri,ai,ei,ii,vi,ti,qe,fi,_i,si,ni,oi,li,bi,ki,ui,ci,hi,di,wi;if(He.__str=_([97,78,0],\"i8\",we),He.__str1=_([38,61,0],\"i8\",we),He.__str2=_([97,83,0],\"i8\",we),He.__str3=_([61,0],\"i8\",we),He.__str4=_([97,97,0],\"i8\",we),He.__str5=_([38,38,0],\"i8\",we),He.__str6=_([97,100,0],\"i8\",we),He.__str7=_([38,0],\"i8\",we),He.__str8=_([97,110,0],\"i8\",we),He.__str9=_([99,108,0],\"i8\",we),He.__str10=_([40,41,0],\"i8\",we),He.__str11=_([99,109,0],\"i8\",we),He.__str12=_([44,0],\"i8\",we),He.__str13=_([99,111,0],\"i8\",we),He.__str14=_([126,0],\"i8\",we),He.__str15=_([100,86,0],\"i8\",we),He.__str16=_([47,61,0],\"i8\",we),He.__str17=_([100,97,0],\"i8\",we),He.__str18=_([100,101,108,101,116,101,91,93,0],\"i8\",we),He.__str19=_([100,101,0],\"i8\",we),He.__str20=_([42,0],\"i8\",we),He.__str21=_([100,108,0],\"i8\",we),He.__str22=_([100,101,108,101,116,101,0],\"i8\",we),He.__str23=_([100,118,0],\"i8\",we),He.__str24=_([47,0],\"i8\",we),He.__str25=_([101,79,0],\"i8\",we),He.__str26=_([94,61,0],\"i8\",we),He.__str27=_([101,111,0],\"i8\",we),He.__str28=_([94,0],\"i8\",we),He.__str29=_([101,113,0],\"i8\",we),He.__str30=_([61,61,0],\"i8\",we),He.__str31=_([103,101,0],\"i8\",we),He.__str32=_([62,61,0],\"i8\",we),He.__str33=_([103,116,0],\"i8\",we),He.__str34=_([62,0],\"i8\",we),He.__str35=_([105,120,0],\"i8\",we),He.__str36=_([91,93,0],\"i8\",we),He.__str37=_([108,83,0],\"i8\",we),He.__str38=_([60,60,61,0],\"i8\",we),He.__str39=_([108,101,0],\"i8\",we),He.__str40=_([60,61,0],\"i8\",we),He.__str41=_([108,115,0],\"i8\",we),He.__str42=_([60,60,0],\"i8\",we),He.__str43=_([108,116,0],\"i8\",we),He.__str44=_([60,0],\"i8\",we),He.__str45=_([109,73,0],\"i8\",we),He.__str46=_([45,61,0],\"i8\",we),He.__str47=_([109,76,0],\"i8\",we),He.__str48=_([42,61,0],\"i8\",we),He.__str49=_([109,105,0],\"i8\",we),He.__str51=_([109,108,0],\"i8\",we),He.__str52=_([109,109,0],\"i8\",we),He.__str53=_([45,45,0],\"i8\",we),He.__str54=_([110,97,0],\"i8\",we),He.__str55=_([110,101,119,91,93,0],\"i8\",we),He.__str56=_([110,101,0],\"i8\",we),He.__str57=_([33,61,0],\"i8\",we),He.__str58=_([110,103,0],\"i8\",we),He.__str59=_([110,116,0],\"i8\",we),He.__str60=_([33,0],\"i8\",we),He.__str61=_([110,119,0],\"i8\",we),He.__str62=_([110,101,119,0],\"i8\",we),He.__str63=_([111,82,0],\"i8\",we),He.__str64=_([124,61,0],\"i8\",we),He.__str65=_([111,111,0],\"i8\",we),He.__str66=_([124,124,0],\"i8\",we),He.__str67=_([111,114,0],\"i8\",we),He.__str68=_([124,0],\"i8\",we),He.__str69=_([112,76,0],\"i8\",we),He.__str70=_([43,61,0],\"i8\",we),He.__str71=_([112,108,0],\"i8\",we),He.__str72=_([43,0],\"i8\",we),He.__str73=_([112,109,0],\"i8\",we),He.__str74=_([45,62,42,0],\"i8\",we),He.__str75=_([112,112,0],\"i8\",we),He.__str76=_([43,43,0],\"i8\",we),He.__str77=_([112,115,0],\"i8\",we),He.__str78=_([112,116,0],\"i8\",we),He.__str79=_([45,62,0],\"i8\",we),He.__str80=_([113,117,0],\"i8\",we),He.__str81=_([63,0],\"i8\",we),He.__str82=_([114,77,0],\"i8\",we),He.__str83=_([37,61,0],\"i8\",we),He.__str84=_([114,83,0],\"i8\",we),He.__str85=_([62,62,61,0],\"i8\",we),He.__str86=_([114,109,0],\"i8\",we),He.__str87=_([37,0],\"i8\",we),He.__str88=_([114,115,0],\"i8\",we),He.__str89=_([62,62,0],\"i8\",we),He.__str90=_([115,116,0],\"i8\",we),He.__str91=_([115,105,122,101,111,102,32,0],\"i8\",we),He.__str92=_([115,122,0],\"i8\",we),ri=_([0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0],we),He.__str95=_([98,111,111,108,101,97,110,0],\"i8\",we),He.__str97=_([98,121,116,101,0],\"i8\",we),He.__str101=_([95,95,102,108,111,97,116,49,50,56,0],\"i8\",we),He.__str105=_([117,110,115,105,103,110,101,100,0],\"i8\",we),He.__str114=_([108,111,110,103,32,108,111,110,103,0],\"i8\",we),He.__str115=_([117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0],\"i8\",we),ai=_([0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,0,0,8,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,9,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,0,0,0,6,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0],[\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0],we),He.__str117=_([95,71,76,79,66,65,76,95,0],\"i8\",we),He.__str118=_([103,108,111,98,97,108,32,99,111,110,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\"i8\",we),He.__str119=_([103,108,111,98,97,108,32,100,101,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\"i8\",we),He.__str120=_([58,58,0],\"i8\",we),He.__str121=_([118,116,97,98,108,101,32,102,111,114,32,0],\"i8\",we),He.__str122=_([86,84,84,32,102,111,114,32,0],\"i8\",we),He.__str123=_([99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0],\"i8\",we),He.__str124=_([45,105,110,45,0],\"i8\",we),He.__str125=_([116,121,112,101,105,110,102,111,32,102,111,114,32,0],\"i8\",we),He.__str126=_([116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0],\"i8\",we),He.__str127=_([116,121,112,101,105,110,102,111,32,102,110,32,102,111,114,32,0],\"i8\",we),He.__str128=_([110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\"i8\",we),He.__str129=_([118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\"i8\",we),He.__str130=_([99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0],\"i8\",we),He.__str131=_([106,97,118,97,32,67,108,97,115,115,32,102,111,114,32,0],\"i8\",we),He.__str132=_([103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0],\"i8\",we),He.__str133=_([114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0],\"i8\",we),He.__str134=_([104,105,100,100,101,110,32,97,108,105,97,115,32,102,111,114,32,0],\"i8\",we),He.__str135=_([58,58,42,0],\"i8\",we),He.__str136=_([44,32,0],\"i8\",we),He.__str137=_([111,112,101,114,97,116,111,114,0],\"i8\",we),He.__str139=_([41,32,0],\"i8\",we),He.__str140=_([32,40,0],\"i8\",we),He.__str141=_([41,32,58,32,40,0],\"i8\",we),He.__str142=_([117,108,0],\"i8\",we),He.__str143=_([108,108,0],\"i8\",we),He.__str144=_([117,108,108,0],\"i8\",we),He.__str145=_([102,97,108,115,101,0],\"i8\",we),He.__str146=_([116,114,117,101,0],\"i8\",we),He.__str147=_([32,114,101,115,116,114,105,99,116,0],\"i8\",we),He.__str148=_([32,118,111,108,97,116,105,108,101,0],\"i8\",we),He.__str149=_([32,99,111,110,115,116,0],\"i8\",we),He.__str150=_([99,111,109,112,108,101,120,32,0],\"i8\",we),He.__str151=_([105,109,97,103,105,110,97,114,121,32,0],\"i8\",we),ei=_([116,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,9,0,0,0,98,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,12,0,0,0,115,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,12,0,0,0,105,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,111,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,100,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,14,0,0,0],[\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i8\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0],we),He.__str152=_([115,116,100,0],\"i8\",we),He.__str153=_([115,116,100,58,58,97,108,108,111,99,97,116,111,114,0],\"i8\",we),He.__str154=_([97,108,108,111,99,97,116,111,114,0],\"i8\",we),He.__str155=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0],\"i8\",we),He.__str156=_([98,97,115,105,99,95,115,116,114,105,110,103,0],\"i8\",we),He.__str157=_([115,116,100,58,58,115,116,114,105,110,103,0],\"i8\",we),He.__str158=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0],\"i8\",we),He.__str159=_([115,116,100,58,58,105,115,116,114,101,97,109,0],\"i8\",we),He.__str160=_([115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\"i8\",we),He.__str161=_([98,97,115,105,99,95,105,115,116,114,101,97,109,0],\"i8\",we),He.__str162=_([115,116,100,58,58,111,115,116,114,101,97,109,0],\"i8\",we),He.__str163=_([115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\"i8\",we),He.__str164=_([98,97,115,105,99,95,111,115,116,114,101,97,109,0],\"i8\",we),He.__str165=_([115,116,100,58,58,105,111,115,116,114,101,97,109,0],\"i8\",we),He.__str166=_([115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\"i8\",we),He.__str167=_([98,97,115,105,99,95,105,111,115,116,114,101,97,109,0],\"i8\",we),He.__str168=_([115,116,114,105,110,103,32,108,105,116,101,114,97,108,0],\"i8\",we),He.__str169=_([40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0],\"i8\",we),He._symbol_demangle_dashed_null=_([45,45,110,117,108,108,45,45,0],\"i8\",we),He.__str170=_([37,115,37,115,0],\"i8\",we),He.__str1171=_([111,112,101,114,97,116,111,114,32,110,101,119,0],\"i8\",we),He.__str2172=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0],\"i8\",we),He.__str3173=_([111,112,101,114,97,116,111,114,61,0],\"i8\",we),He.__str4174=_([111,112,101,114,97,116,111,114,62,62,0],\"i8\",we),He.__str5175=_([111,112,101,114,97,116,111,114,60,60,0],\"i8\",we),He.__str6176=_([111,112,101,114,97,116,111,114,33,0],\"i8\",we),He.__str7177=_([111,112,101,114,97,116,111,114,61,61,0],\"i8\",we),He.__str8178=_([111,112,101,114,97,116,111,114,33,61,0],\"i8\",we),He.__str9179=_([111,112,101,114,97,116,111,114,91,93,0],\"i8\",we),He.__str10180=_([111,112,101,114,97,116,111,114,32,0],\"i8\",we),He.__str11181=_([111,112,101,114,97,116,111,114,45,62,0],\"i8\",we),He.__str12182=_([111,112,101,114,97,116,111,114,42,0],\"i8\",we),He.__str13183=_([111,112,101,114,97,116,111,114,43,43,0],\"i8\",we),He.__str14184=_([111,112,101,114,97,116,111,114,45,45,0],\"i8\",we),He.__str15185=_([111,112,101,114,97,116,111,114,45,0],\"i8\",we),He.__str16186=_([111,112,101,114,97,116,111,114,43,0],\"i8\",we),He.__str17187=_([111,112,101,114,97,116,111,114,38,0],\"i8\",we),He.__str18188=_([111,112,101,114,97,116,111,114,45,62,42,0],\"i8\",we),He.__str19189=_([111,112,101,114,97,116,111,114,47,0],\"i8\",we),He.__str20190=_([111,112,101,114,97,116,111,114,37,0],\"i8\",we),He.__str21191=_([111,112,101,114,97,116,111,114,60,0],\"i8\",we),He.__str22192=_([111,112,101,114,97,116,111,114,60,61,0],\"i8\",we),He.__str23193=_([111,112,101,114,97,116,111,114,62,0],\"i8\",we),He.__str24194=_([111,112,101,114,97,116,111,114,62,61,0],\"i8\",we),He.__str25195=_([111,112,101,114,97,116,111,114,44,0],\"i8\",we),He.__str26196=_([111,112,101,114,97,116,111,114,40,41,0],\"i8\",we),He.__str27197=_([111,112,101,114,97,116,111,114,126,0],\"i8\",we),He.__str28198=_([111,112,101,114,97,116,111,114,94,0],\"i8\",we),He.__str29199=_([111,112,101,114,97,116,111,114,124,0],\"i8\",we),He.__str30200=_([111,112,101,114,97,116,111,114,38,38,0],\"i8\",we),He.__str31201=_([111,112,101,114,97,116,111,114,124,124,0],\"i8\",we),He.__str32202=_([111,112,101,114,97,116,111,114,42,61,0],\"i8\",we),He.__str33203=_([111,112,101,114,97,116,111,114,43,61,0],\"i8\",we),He.__str34204=_([111,112,101,114,97,116,111,114,45,61,0],\"i8\",we),He.__str35205=_([111,112,101,114,97,116,111,114,47,61,0],\"i8\",we),He.__str36206=_([111,112,101,114,97,116,111,114,37,61,0],\"i8\",we),He.__str37207=_([111,112,101,114,97,116,111,114,62,62,61,0],\"i8\",we),He.__str38208=_([111,112,101,114,97,116,111,114,60,60,61,0],\"i8\",we),He.__str39209=_([111,112,101,114,97,116,111,114,38,61,0],\"i8\",we),He.__str40210=_([111,112,101,114,97,116,111,114,124,61,0],\"i8\",we),He.__str41211=_([111,112,101,114,97,116,111,114,94,61,0],\"i8\",we),He.__str42212=_([96,118,102,116,97,98,108,101,39,0],\"i8\",we),He.__str43213=_([96,118,98,116,97,98,108,101,39,0],\"i8\",we),He.__str44214=_([96,118,99,97,108,108,39,0],\"i8\",we),He.__str45215=_([96,116,121,112,101,111,102,39,0],\"i8\",we),He.__str46216=_([96,108,111,99,97,108,32,115,116,97,116,105,99,32,103,117,97,114,100,39,0],\"i8\",we),He.__str47217=_([96,115,116,114,105,110,103,39,0],\"i8\",we),He.__str48218=_([96,118,98,97,115,101,32,100,101,115,116,114,117,99,116,111,114,39,0],\"i8\",we),He.__str49219=_([96,118,101,99,116,111,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\"i8\",we),He.__str50220=_([96,100,101,102,97,117,108,116,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\"i8\",we),He.__str51221=_([96,115,99,97,108,97,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\"i8\",we),He.__str52222=_([96,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str53223=_([96,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str54224=_([96,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str55225=_([96,118,105,114,116,117,97,108,32,100,105,115,112,108,97,99,101,109,101,110,116,32,109,97,112,39,0],\"i8\",we),He.__str56226=_([96,101,104,32,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str57227=_([96,101,104,32,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str58228=_([96,101,104,32,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\"i8\",we),He.__str59229=_([96,99,111,112,121,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\"i8\",we),He.__str60230=_([37,115,37,115,32,96,82,84,84,73,32,84,121,112,101,32,68,101,115,99,114,105,112,116,111,114,39,0],\"i8\",we),He.__str61231=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,68,101,115,99,114,105,112,116,111,114,32,97,116,32,40,37,115,44,37,115,44,37,115,44,37,115,41,39,0],\"i8\",we),He.__str62232=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,65,114,114,97,121,39,0],\"i8\",we),He.__str63233=_([96,82,84,84,73,32,67,108,97,115,115,32,72,105,101,114,97,114,99,104,121,32,68,101,115,99,114,105,112,116,111,114,39,0],\"i8\",we),He.__str64234=_([96,82,84,84,73,32,67,111,109,112,108,101,116,101,32,79,98,106,101,99,116,32,76,111,99,97,116,111,114,39,0],\"i8\",we),He.__str65235=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,39,0],\"i8\",we),He.__str66236=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\"i8\",we),He.__str67237=_([111,112,101,114,97,116,111,114,32,110,101,119,91,93,0],\"i8\",we),He.__str68238=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0],\"i8\",we),He.__str69239=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,32,99,108,111,115,117,114,101,39,0],\"i8\",we),He.__str70240=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,91,93,32,99,108,111,115,117,114,101,39,0],\"i8\",we),He.__str71241=_([126,37,115,0],\"i8\",we),He.__str72242=_([117,110,100,110,97,109,101,46,99,0],\"i8\",we),He.___func___symbol_demangle=_([115,121,109,98,111,108,95,100,101,109,97,110,103,108,101,0],\"i8\",we),He.__str73243=_([115,121,109,45,62,114,101,115,117,108,116,0],\"i8\",we),He.___func___handle_template=_([104,97,110,100,108,101,95,116,101,109,112,108,97,116,101,0],\"i8\",we),He.__str74244=_([42,115,121,109,45,62,99,117,114,114,101,110,116,32,61,61,32,39,36,39,0],\"i8\",we),He.___func___str_array_get_ref=_([115,116,114,95,97,114,114,97,121,95,103,101,116,95,114,101,102,0],\"i8\",we),He.__str75245=_([99,114,101,102,0],\"i8\",we),He.__str76246=_([112,114,105,118,97,116,101,58,32,0],\"i8\",we),He.__str77247=_([112,114,111,116,101,99,116,101,100,58,32,0],\"i8\",we),He.__str78248=_([112,117,98,108,105,99,58,32,0],\"i8\",we),He.__str79249=_([115,116,97,116,105,99,32,0],\"i8\",we),He.__str80250=_([118,105,114,116,117,97,108,32,0],\"i8\",we),He.__str81251=_([91,116,104,117,110,107,93,58,37,115,0],\"i8\",we),He.__str82252=_([37,115,96,97,100,106,117,115,116,111,114,123,37,115,125,39,32,0],\"i8\",we),He.__str83253=_([37,115,32,37,115,0],\"i8\",we),He.__str84254=_([118,111,105,100,0],\"i8\",we),He.__str85255=_([37,115,37,115,37,115,0],\"i8\",we),He.__str86256=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\"i8\",we),He.__str87257=_([32,0],\"i8\",we),He.__str88258=_([100,108,108,95,101,120,112,111,114,116,32,0],\"i8\",we),He.__str89259=_([99,100,101,99,108,0],\"i8\",we),He.__str90260=_([112,97,115,99,97,108,0],\"i8\",we),He.__str91261=_([116,104,105,115,99,97,108,108,0],\"i8\",we),He.__str92262=_([115,116,100,99,97,108,108,0],\"i8\",we),He.__str93263=_([102,97,115,116,99,97,108,108,0],\"i8\",we),He.__str94264=_([99,108,114,99,97,108,108,0],\"i8\",we),He.__str95265=_([95,95,100,108,108,95,101,120,112,111,114,116,32,0],\"i8\",we),He.__str96266=_([95,95,99,100,101,99,108,0],\"i8\",we),He.__str97267=_([95,95,112,97,115,99,97,108,0],\"i8\",we),He.__str98268=_([95,95,116,104,105,115,99,97,108,108,0],\"i8\",we),He.__str99269=_([95,95,115,116,100,99,97,108,108,0],\"i8\",we),He.__str100270=_([95,95,102,97,115,116,99,97,108,108,0],\"i8\",we),He.__str101271=_([95,95,99,108,114,99,97,108,108,0],\"i8\",we),He.__str102272=_([95,95,112,116,114,54,52,0],\"i8\",we),He.__str103273=_([99,111,110,115,116,0],\"i8\",we),He.__str104274=_([118,111,108,97,116,105,108,101,0],\"i8\",we),He.__str105275=_([99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\"i8\",we),He.___func___get_class_string=_([103,101,116,95,99,108,97,115,115,95,115,116,114,105,110,103,0],\"i8\",we),He.__str106276=_([97,45,62,101,108,116,115,91,105,93,0],\"i8\",we),He.__str107277=_([123,102,111,114,32,96,37,115,39,125,0],\"i8\",we),He.__str108278=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\"i8\",we),He.__str109279=_([96,37,115,39,0],\"i8\",we),He.__str110280=_([46,46,46,0],\"i8\",we),He.__str111281=_([37,99,118,111,105,100,37,99,0],\"i8\",we),He.__str112282=_([37,115,44,37,115,0],\"i8\",we),He.__str113283=_([37,99,37,115,37,115,32,37,99,0],\"i8\",we),He.__str114284=_([37,99,37,115,37,115,37,99,0],\"i8\",we),He.___func___str_array_push=_([115,116,114,95,97,114,114,97,121,95,112,117,115,104,0],\"i8\",we),He.__str115285=_([112,116,114,0],\"i8\",we),He.__str116286=_([97,0],\"i8\",we),He.__str117287=_([97,45,62,101,108,116,115,91,97,45,62,110,117,109,93,0],\"i8\",we),He.__str118288=_([37,115,37,100,0],\"i8\",we),He.__str119289=_([45,0],\"i8\",we),ii=_(1,\"i8\",we),He.___func___demangle_datatype=_([100,101,109,97,110,103,108,101,95,100,97,116,97,116,121,112,101,0],\"i8\",we),He.__str121291=_([99,116,0],\"i8\",we),He.__str122292=_([117,110,105,111,110,32,0],\"i8\",we),He.__str123293=_([115,116,114,117,99,116,32,0],\"i8\",we),He.__str124294=_([99,108,97,115,115,32,0],\"i8\",we),He.__str125295=_([99,111,105,110,116,101,114,102,97,99,101,32,0],\"i8\",we),He.__str126296=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,45,37,115,39,0],\"i8\",we),He.__str127297=_([37,115,37,115,32,40,37,115,42,0],\"i8\",we),He.__str128298=_([41,37,115,0],\"i8\",we),He.__str129299=_([101,110,117,109,32,37,115,0],\"i8\",we),He.__str130300=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\"i8\",we),He.__str131301=_([123,37,115,44,37,115,125,0],\"i8\",we),He.__str132302=_([123,37,115,44,37,115,44,37,115,125,0],\"i8\",we),He.__str133303=_([96,110,111,110,45,116,121,112,101,45,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\"i8\",we),He.__str134304=_([32,95,95,112,116,114,54,52,0],\"i8\",we),He.__str135305=_([32,38,37,115,0],\"i8\",we),He.__str136306=_([32,38,37,115,32,118,111,108,97,116,105,108,101,0],\"i8\",we),He.__str137307=_([32,42,37,115,0],\"i8\",we),He.__str138308=_([32,42,37,115,32,99,111,110,115,116,0],\"i8\",we),He.__str139309=_([32,42,37,115,32,118,111,108,97,116,105,108,101,0],\"i8\",we),He.__str140310=_([32,42,37,115,32,99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\"i8\",we),He.__str141311=_([32,40,37,115,37,115,41,0],\"i8\",we),He.__str142312=_([32,40,37,115,41,0],\"i8\",we),He.__str143313=_([37,115,91,37,115,93,0],\"i8\",we),He.__str144314=_([37,115,32,37,115,37,115,0],\"i8\",we),He.__str145315=_([115,105,103,110,101,100,32,99,104,97,114,0],\"i8\",we),He.__str146316=_([99,104,97,114,0],\"i8\",we),He.__str147317=_([117,110,115,105,103,110,101,100,32,99,104,97,114,0],\"i8\",we),He.__str148318=_([115,104,111,114,116,0],\"i8\",we),He.__str149319=_([117,110,115,105,103,110,101,100,32,115,104,111,114,116,0],\"i8\",we),He.__str150320=_([105,110,116,0],\"i8\",we),He.__str151321=_([117,110,115,105,103,110,101,100,32,105,110,116,0],\"i8\",we),He.__str152322=_([108,111,110,103,0],\"i8\",we),He.__str153323=_([117,110,115,105,103,110,101,100,32,108,111,110,103,0],\"i8\",we),He.__str154324=_([102,108,111,97,116,0],\"i8\",we),He.__str155325=_([100,111,117,98,108,101,0],\"i8\",we),He.__str156326=_([108,111,110,103,32,100,111,117,98,108,101,0],\"i8\",we),He.__str157327=_([95,95,105,110,116,56,0],\"i8\",we),He.__str158328=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,56,0],\"i8\",we),He.__str159329=_([95,95,105,110,116,49,54,0],\"i8\",we),He.__str160330=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,54,0],\"i8\",we),He.__str161331=_([95,95,105,110,116,51,50,0],\"i8\",we),He.__str162332=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,51,50,0],\"i8\",we),He.__str163333=_([95,95,105,110,116,54,52,0],\"i8\",we),He.__str164334=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,54,52,0],\"i8\",we),\nHe.__str165335=_([95,95,105,110,116,49,50,56,0],\"i8\",we),He.__str166336=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0],\"i8\",we),He.__str167337=_([98,111,111,108,0],\"i8\",we),He.__str168338=_([119,99,104,97,114,95,116,0],\"i8\",we),vi=_(468,[\"i32\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0,\"*\",0,0,0,\"i32\",0,0,0],we),ti=_(24,\"i32\",we),He.__str339=_([109,97,120,32,115,121,115,116,101,109,32,98,121,116,101,115,32,61,32,37,49,48,108,117,10,0],\"i8\",we),He.__str1340=_([115,121,115,116,101,109,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\"i8\",we),He.__str2341=_([105,110,32,117,115,101,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\"i8\",we),fi=_([ue],\"i8\",we),_i=_(1,\"void ()*\",we),si=_([0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0],[\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0],we),_(1,\"void*\",we),He.__str3342=_([115,116,100,58,58,98,97,100,95,97,108,108,111,99,0],\"i8\",we),ni=_([0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,14,0,0,0],[\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0,\"*\",0,0,0],we),_(1,\"void*\",we),He.__str14343=_([98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\"i8\",we),He.__ZTSSt9bad_alloc=_([83,116,57,98,97,100,95,97,108,108,111,99,0],\"i8\",we),bi=_(12,\"*\",we),He.__ZTSSt20bad_array_new_length=_([83,116,50,48,98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\"i8\",we),ki=_(12,\"*\",we),Se[ri>>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],[\"i8*\",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v(\"__cxa_demangle\",\"string\",[\"string\",\"string\",\"number\",\"number\"]);return function(r){return pi(r,\"\",1,0)}}();\n`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Flamechart = void 0;\nconst utils_1 = require(\"./utils\");\nconst math_1 = require(\"./math\");\nclass Flamechart {\n constructor(source) {\n this.source = source;\n // Bottom to top\n this.layers = [];\n this.totalWeight = 0;\n this.minFrameWidth = 1;\n const stack = [];\n const openFrame = (node, value) => {\n const parent = utils_1.lastOf(stack);\n const frame = {\n node,\n parent,\n children: [],\n start: value,\n end: value,\n };\n if (parent) {\n parent.children.push(frame);\n }\n stack.push(frame);\n };\n this.minFrameWidth = Infinity;\n const closeFrame = (node, value) => {\n console.assert(stack.length > 0);\n const stackTop = stack.pop();\n stackTop.end = value;\n if (stackTop.end - stackTop.start === 0)\n return;\n const layerIndex = stack.length;\n while (this.layers.length <= layerIndex)\n this.layers.push([]);\n this.layers[layerIndex].push(stackTop);\n this.minFrameWidth = Math.min(this.minFrameWidth, stackTop.end - stackTop.start);\n };\n this.totalWeight = source.getTotalWeight();\n source.forEachCall(openFrame, closeFrame);\n if (!isFinite(this.minFrameWidth))\n this.minFrameWidth = 1;\n }\n getTotalWeight() {\n return this.totalWeight;\n }\n getLayers() {\n return this.layers;\n }\n getColorBucketForFrame(frame) {\n return this.source.getColorBucketForFrame(frame);\n }\n getMinFrameWidth() {\n return this.minFrameWidth;\n }\n formatValue(v) {\n return this.source.formatValue(v);\n }\n getClampedViewportWidth(viewportWidth) {\n const maxWidth = this.getTotalWeight();\n // In order to avoid floating point error, we cap the maximum zoom. In\n // particular, it's important that at the maximum zoom level, the total\n // trace size + a viewport width is not equal to the trace size due to\n // floating point rounding.\n //\n // For instance, if the profile's total weight is 2^60, and the viewport\n // size is 1, trying to move one viewport width right will result in no\n // change because 2^60 + 1 = 2^60 in floating point arithmetic. JavaScript\n // numbers are 64 bit floats, and therefore have 53 mantissa bits. You can\n // see this for yourself in the console. Try:\n //\n // > Math.pow(2, 60) + 1 === Math.pow(2, 60)\n // true\n // > Math.pow(2, 53) + 1 === Math.pow(2, 53)\n // true\n // > Math.pow(2, 52) + 1 === Math.pow(2, 52)\n // false\n //\n // We use 2^40 as a cap instead, since we want to be able to make small\n // adjustments within a viewport width.\n //\n // For reference, this will still allow you to zoom until 1 nanosecond fills\n // the screen in a profile with a duration of over 18 minutes.\n //\n // > Math.pow(2, 40) / (60 * Math.pow(10, 9))\n // 18.325193796266667\n //\n const maxZoom = Math.pow(2, 40);\n // In addition to capping zoom to avoid floating point error, we further cap\n // zoom to avoid letting you zoom in so that the smallest element more than\n // fills the screen, since that probably isn't useful. The final zoom cap is\n // determined by the minimum zoom of either 2^40x zoom or the necessary zoom\n // for the smallest frame to fill the screen three times.\n const minWidth = math_1.clamp(3 * this.getMinFrameWidth(), maxWidth / maxZoom, maxWidth);\n return math_1.clamp(viewportWidth, minWidth, maxWidth);\n }\n // Given a desired config-space viewport rectangle, clamp the rectangle so\n // that it fits within the given flamechart. This prevents the viewport from\n // extending past the bounds of the flamechart or zooming in too far.\n getClampedConfigSpaceViewportRect({ configSpaceViewportRect, renderInverted, }) {\n const configSpaceSize = new math_1.Vec2(this.getTotalWeight(), this.getLayers().length);\n const width = this.getClampedViewportWidth(configSpaceViewportRect.size.x);\n const size = configSpaceViewportRect.size.withX(width);\n const origin = math_1.Vec2.clamp(configSpaceViewportRect.origin, new math_1.Vec2(0, renderInverted ? 0 : -1), math_1.Vec2.max(math_1.Vec2.zero, configSpaceSize.minus(size).plus(new math_1.Vec2(0, 1))));\n return new math_1.Rect(origin, configSpaceViewportRect.size.withX(width));\n }\n}\nexports.Flamechart = Flamechart;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = exports.AffineTransform = exports.Vec2 = exports.clamp = void 0;\nfunction clamp(x, minVal, maxVal) {\n if (x < minVal)\n return minVal;\n if (x > maxVal)\n return maxVal;\n return x;\n}\nexports.clamp = clamp;\nlet Vec2 = /** @class */ (() => {\n class Vec2 {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n withX(x) {\n return new Vec2(x, this.y);\n }\n withY(y) {\n return new Vec2(this.x, y);\n }\n plus(other) {\n return new Vec2(this.x + other.x, this.y + other.y);\n }\n minus(other) {\n return new Vec2(this.x - other.x, this.y - other.y);\n }\n times(scalar) {\n return new Vec2(this.x * scalar, this.y * scalar);\n }\n timesPointwise(other) {\n return new Vec2(this.x * other.x, this.y * other.y);\n }\n dividedByPointwise(other) {\n return new Vec2(this.x / other.x, this.y / other.y);\n }\n dot(other) {\n return this.x * other.x + this.y * other.y;\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n approxEquals(other, epsilon = 1e-9) {\n return Math.abs(this.x - other.x) < epsilon && Math.abs(this.y - other.y) < epsilon;\n }\n length2() {\n return this.dot(this);\n }\n length() {\n return Math.sqrt(this.length2());\n }\n abs() {\n return new Vec2(Math.abs(this.x), Math.abs(this.y));\n }\n static min(a, b) {\n return new Vec2(Math.min(a.x, b.x), Math.min(a.y, b.y));\n }\n static max(a, b) {\n return new Vec2(Math.max(a.x, b.x), Math.max(a.y, b.y));\n }\n static clamp(v, min, max) {\n return new Vec2(clamp(v.x, min.x, max.x), clamp(v.y, min.y, max.y));\n }\n flatten() {\n return [this.x, this.y];\n }\n }\n Vec2.zero = new Vec2(0, 0);\n Vec2.unit = new Vec2(1, 1);\n return Vec2;\n})();\nexports.Vec2 = Vec2;\nclass AffineTransform {\n constructor(m00 = 1, m01 = 0, m02 = 0, m10 = 0, m11 = 1, m12 = 0) {\n this.m00 = m00;\n this.m01 = m01;\n this.m02 = m02;\n this.m10 = m10;\n this.m11 = m11;\n this.m12 = m12;\n }\n withScale(s) {\n let { m00, m01, m02, m10, m11, m12 } = this;\n m00 = s.x;\n m11 = s.y;\n return new AffineTransform(m00, m01, m02, m10, m11, m12);\n }\n static withScale(s) {\n return new AffineTransform().withScale(s);\n }\n scaledBy(s) {\n return AffineTransform.withScale(s).times(this);\n }\n getScale() {\n return new Vec2(this.m00, this.m11);\n }\n withTranslation(t) {\n let { m00, m01, m02, m10, m11, m12 } = this;\n m02 = t.x;\n m12 = t.y;\n return new AffineTransform(m00, m01, m02, m10, m11, m12);\n }\n static withTranslation(t) {\n return new AffineTransform().withTranslation(t);\n }\n getTranslation() {\n return new Vec2(this.m02, this.m12);\n }\n translatedBy(t) {\n return AffineTransform.withTranslation(t).times(this);\n }\n static betweenRects(from, to) {\n return AffineTransform.withTranslation(from.origin.times(-1))\n .scaledBy(new Vec2(to.size.x / from.size.x, to.size.y / from.size.y))\n .translatedBy(to.origin);\n }\n times(other) {\n const m00 = this.m00 * other.m00 + this.m01 * other.m10;\n const m01 = this.m00 * other.m01 + this.m01 * other.m11;\n const m02 = this.m00 * other.m02 + this.m01 * other.m12 + this.m02;\n const m10 = this.m10 * other.m00 + this.m11 * other.m10;\n const m11 = this.m10 * other.m01 + this.m11 * other.m11;\n const m12 = this.m10 * other.m02 + this.m11 * other.m12 + this.m12;\n return new AffineTransform(m00, m01, m02, m10, m11, m12);\n }\n equals(other) {\n return (this.m00 == other.m00 &&\n this.m01 == other.m01 &&\n this.m02 == other.m02 &&\n this.m10 == other.m10 &&\n this.m11 == other.m11 &&\n this.m12 == other.m12);\n }\n approxEquals(other, epsilon = 1e-9) {\n return (Math.abs(this.m00 - other.m00) < epsilon &&\n Math.abs(this.m01 - other.m01) < epsilon &&\n Math.abs(this.m02 - other.m02) < epsilon &&\n Math.abs(this.m10 - other.m10) < epsilon &&\n Math.abs(this.m11 - other.m11) < epsilon &&\n Math.abs(this.m12 - other.m12) < epsilon);\n }\n timesScalar(s) {\n const { m00, m01, m02, m10, m11, m12 } = this;\n return new AffineTransform(s * m00, s * m01, s * m02, s * m10, s * m11, s * m12);\n }\n det() {\n const { m00, m01, m02, m10, m11, m12 } = this;\n const m20 = 0;\n const m21 = 0;\n const m22 = 1;\n return (m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m12 * m20) + m02 * (m10 * m21 - m11 * m20));\n }\n adj() {\n const { m00, m01, m02, m10, m11, m12 } = this;\n const m20 = 0;\n const m21 = 0;\n const m22 = 1;\n // Adjugate matrix (a) is the transpose of the\n // cofactor matrix (c).\n //\n // 00 01 02\n // 10 11 12\n // 20 21 22\n const a00 = /* c00 = */ +(m11 * m22 - m12 * m21);\n const a01 = /* c10 = */ -(m01 * m22 - m02 * m21);\n const a02 = /* c20 = */ +(m01 * m12 - m02 * m11);\n const a10 = /* c01 = */ -(m10 * m22 - m12 * m20);\n const a11 = /* c11 = */ +(m00 * m22 - m02 * m20);\n const a12 = /* c21 = */ -(m00 * m12 - m02 * m10);\n return new AffineTransform(a00, a01, a02, a10, a11, a12);\n }\n inverted() {\n const det = this.det();\n if (det === 0)\n return null;\n const adj = this.adj();\n return adj.timesScalar(1 / det);\n }\n transformVector(v) {\n return new Vec2(v.x * this.m00 + v.y * this.m01, v.x * this.m10 + v.y * this.m11);\n }\n inverseTransformVector(v) {\n const inv = this.inverted();\n if (!inv)\n return null;\n return inv.transformVector(v);\n }\n transformPosition(v) {\n return new Vec2(v.x * this.m00 + v.y * this.m01 + this.m02, v.x * this.m10 + v.y * this.m11 + this.m12);\n }\n inverseTransformPosition(v) {\n const inv = this.inverted();\n if (!inv)\n return null;\n return inv.transformPosition(v);\n }\n transformRect(r) {\n const size = this.transformVector(r.size);\n const origin = this.transformPosition(r.origin);\n if (size.x < 0 && size.y < 0) {\n return new Rect(origin.plus(size), size.abs());\n }\n else if (size.x < 0) {\n return new Rect(origin.withX(origin.x + size.x), size.abs());\n }\n else if (size.y < 0) {\n return new Rect(origin.withY(origin.y + size.y), size.abs());\n }\n return new Rect(origin, size);\n }\n inverseTransformRect(r) {\n const inv = this.inverted();\n if (!inv)\n return null;\n return inv.transformRect(r);\n }\n flatten() {\n // Flatten into GLSL format\n // prettier-ignore\n return [\n this.m00, this.m10, 0,\n this.m01, this.m11, 0,\n this.m02, this.m12, 1,\n ];\n }\n}\nexports.AffineTransform = AffineTransform;\nlet Rect = /** @class */ (() => {\n class Rect {\n constructor(origin, size) {\n this.origin = origin;\n this.size = size;\n }\n isEmpty() {\n return this.width() == 0 || this.height() == 0;\n }\n width() {\n return this.size.x;\n }\n height() {\n return this.size.y;\n }\n left() {\n return this.origin.x;\n }\n right() {\n return this.left() + this.width();\n }\n top() {\n return this.origin.y;\n }\n bottom() {\n return this.top() + this.height();\n }\n topLeft() {\n return this.origin;\n }\n topRight() {\n return this.origin.plus(new Vec2(this.width(), 0));\n }\n bottomRight() {\n return this.origin.plus(this.size);\n }\n bottomLeft() {\n return this.origin.plus(new Vec2(0, this.height()));\n }\n withOrigin(origin) {\n return new Rect(origin, this.size);\n }\n withSize(size) {\n return new Rect(this.origin, size);\n }\n closestPointTo(p) {\n return new Vec2(clamp(p.x, this.left(), this.right()), clamp(p.y, this.top(), this.bottom()));\n }\n distanceFrom(p) {\n return p.minus(this.closestPointTo(p)).length();\n }\n contains(p) {\n return this.distanceFrom(p) === 0;\n }\n hasIntersectionWith(other) {\n const top = Math.max(this.top(), other.top());\n const bottom = Math.max(top, Math.min(this.bottom(), other.bottom()));\n if (bottom - top === 0)\n return false;\n const left = Math.max(this.left(), other.left());\n const right = Math.max(left, Math.min(this.right(), other.right()));\n if (right - left === 0)\n return false;\n return true;\n }\n intersectWith(other) {\n const topLeft = Vec2.max(this.topLeft(), other.topLeft());\n const bottomRight = Vec2.max(topLeft, Vec2.min(this.bottomRight(), other.bottomRight()));\n return new Rect(topLeft, bottomRight.minus(topLeft));\n }\n equals(other) {\n return this.origin.equals(other.origin) && this.size.equals(other.size);\n }\n approxEquals(other) {\n return this.origin.approxEquals(other.origin) && this.size.approxEquals(other.size);\n }\n area() {\n return this.size.x * this.size.y;\n }\n }\n Rect.empty = new Rect(Vec2.zero, Vec2.zero);\n Rect.unit = new Rect(Vec2.zero, Vec2.unit);\n Rect.NDC = new Rect(new Vec2(-1, -1), new Vec2(2, 2));\n return Rect;\n})();\nexports.Rect = Rect;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallTreeProfileBuilder = exports.StackListProfileBuilder = exports.Profile = exports.CallTreeNode = exports.Frame = exports.HasWeights = void 0;\nconst utils_1 = require(\"./utils\");\nconst value_formatters_1 = require(\"./value-formatters\");\nconst demangleCppModule = Promise.resolve().then(() => __importStar(require('./demangle-cpp')));\n// Force eager loading of the module\ndemangleCppModule.then(() => { });\nclass HasWeights {\n constructor() {\n this.selfWeight = 0;\n this.totalWeight = 0;\n }\n getSelfWeight() {\n return this.selfWeight;\n }\n getTotalWeight() {\n return this.totalWeight;\n }\n addToTotalWeight(delta) {\n this.totalWeight += delta;\n }\n addToSelfWeight(delta) {\n this.selfWeight += delta;\n }\n overwriteWeightWith(other) {\n this.selfWeight = other.selfWeight;\n this.totalWeight = other.totalWeight;\n }\n}\nexports.HasWeights = HasWeights;\nlet Frame = /** @class */ (() => {\n class Frame extends HasWeights {\n constructor(info) {\n super();\n this.key = info.key;\n this.name = info.name;\n this.file = info.file;\n this.line = info.line;\n this.col = info.col;\n }\n static getOrInsert(set, info) {\n return set.getOrInsert(new Frame(info));\n }\n }\n Frame.root = new Frame({\n key: '(speedscope root)',\n name: '(speedscope root)',\n });\n return Frame;\n})();\nexports.Frame = Frame;\nclass CallTreeNode extends HasWeights {\n constructor(frame, parent) {\n super();\n this.frame = frame;\n this.parent = parent;\n this.children = [];\n // If a node is \"frozen\", it means it should no longer be mutated.\n this.frozen = false;\n }\n isRoot() {\n return this.frame === Frame.root;\n }\n isFrozen() {\n return this.frozen;\n }\n freeze() {\n this.frozen = true;\n }\n}\nexports.CallTreeNode = CallTreeNode;\nclass Profile {\n constructor(totalWeight = 0) {\n this.name = '';\n this.frames = new utils_1.KeyedSet();\n // Profiles store two call-trees.\n //\n // The \"append order\" call tree is the one in which nodes are ordered in\n // whatever order they were appended to their parent.\n //\n // The \"grouped\" call tree is one in which each node has at most one child per\n // frame. Nodes are ordered in decreasing order of weight\n this.appendOrderCalltreeRoot = new CallTreeNode(Frame.root, null);\n this.groupedCalltreeRoot = new CallTreeNode(Frame.root, null);\n // List of references to CallTreeNodes at the top of the\n // stack at the time of the sample.\n this.samples = [];\n this.weights = [];\n this.valueFormatter = new value_formatters_1.RawValueFormatter();\n this.totalNonIdleWeight = null;\n this.totalWeight = totalWeight;\n }\n getAppendOrderCalltreeRoot() {\n return this.appendOrderCalltreeRoot;\n }\n getGroupedCalltreeRoot() {\n return this.groupedCalltreeRoot;\n }\n formatValue(v) {\n return this.valueFormatter.format(v);\n }\n setValueFormatter(f) {\n this.valueFormatter = f;\n }\n getWeightUnit() {\n return this.valueFormatter.unit;\n }\n getName() {\n return this.name;\n }\n setName(name) {\n this.name = name;\n }\n getTotalWeight() {\n return this.totalWeight;\n }\n getTotalNonIdleWeight() {\n if (this.totalNonIdleWeight === null) {\n this.totalNonIdleWeight = this.groupedCalltreeRoot.children.reduce((n, c) => n + c.getTotalWeight(), 0);\n }\n return this.totalNonIdleWeight;\n }\n // This is private because it should only be called in the ProfileBuilder\n // classes. Once a Profile instance has been constructed, it should be treated\n // as immutable.\n sortGroupedCallTree() {\n function visit(node) {\n node.children.sort((a, b) => -(a.getTotalWeight() - b.getTotalWeight()));\n node.children.forEach(visit);\n }\n visit(this.groupedCalltreeRoot);\n }\n forEachCallGrouped(openFrame, closeFrame) {\n function visit(node, start) {\n if (node.frame !== Frame.root) {\n openFrame(node, start);\n }\n let childTime = 0;\n node.children.forEach(function (child) {\n visit(child, start + childTime);\n childTime += child.getTotalWeight();\n });\n if (node.frame !== Frame.root) {\n closeFrame(node, start + node.getTotalWeight());\n }\n }\n visit(this.groupedCalltreeRoot, 0);\n }\n forEachCall(openFrame, closeFrame) {\n let prevStack = [];\n let value = 0;\n let sampleIndex = 0;\n for (let stackTop of this.samples) {\n // Find lowest common ancestor of the current stack and the previous one\n let lca = null;\n // This is O(n^2), but n should be relatively small here (stack height),\n // so hopefully this isn't much of a problem\n for (lca = stackTop; lca && lca.frame != Frame.root && prevStack.indexOf(lca) === -1; lca = lca.parent) { }\n // Close frames that are no longer open\n while (prevStack.length > 0 && utils_1.lastOf(prevStack) != lca) {\n const node = prevStack.pop();\n closeFrame(node, value);\n }\n // Open frames that are now becoming open\n const toOpen = [];\n for (let node = stackTop; node && node.frame != Frame.root && node != lca; node = node.parent) {\n toOpen.push(node);\n }\n toOpen.reverse();\n for (let node of toOpen) {\n openFrame(node, value);\n }\n prevStack = prevStack.concat(toOpen);\n value += this.weights[sampleIndex++];\n }\n // Close frames that are open at the end of the trace\n for (let i = prevStack.length - 1; i >= 0; i--) {\n closeFrame(prevStack[i], value);\n }\n }\n forEachFrame(fn) {\n this.frames.forEach(fn);\n }\n getProfileWithRecursionFlattened() {\n const builder = new CallTreeProfileBuilder();\n const stack = [];\n const framesInStack = new Set();\n function openFrame(node, value) {\n if (framesInStack.has(node.frame)) {\n stack.push(null);\n }\n else {\n framesInStack.add(node.frame);\n stack.push(node);\n builder.enterFrame(node.frame, value);\n }\n }\n function closeFrame(node, value) {\n const stackTop = stack.pop();\n if (stackTop) {\n framesInStack.delete(stackTop.frame);\n builder.leaveFrame(stackTop.frame, value);\n }\n }\n this.forEachCall(openFrame, closeFrame);\n const flattenedProfile = builder.build();\n flattenedProfile.name = this.name;\n flattenedProfile.valueFormatter = this.valueFormatter;\n // When constructing a profile with recursion flattened,\n // counter-intuitive things can happen to \"self time\" measurements\n // for functions.\n // For example, given the following list of stacks w/ weights:\n //\n // a 1\n // a;b;a 1\n // a;b;a;b;a 1\n // a;b;a 1\n //\n // The resulting profile with recursion flattened out will look like this:\n //\n // a 1\n // a;b 3\n //\n // Which is useful to view, but it's counter-intuitive to move self-time\n // for frames around, since analyzing the self-time of functions is an important\n // thing to be able to do accurately, and we don't want this to change when recursion\n // is flattened. To work around that, we'll just copy the weights directly from the\n // un-flattened profile.\n this.forEachFrame(f => {\n flattenedProfile.frames.getOrInsert(f).overwriteWeightWith(f);\n });\n return flattenedProfile;\n }\n getInvertedProfileForCallersOf(focalFrameInfo) {\n const focalFrame = Frame.getOrInsert(this.frames, focalFrameInfo);\n const builder = new StackListProfileBuilder();\n // TODO(jlfwong): Could construct this at profile\n // construction time rather than on demand.\n const nodes = [];\n function visit(node) {\n if (node.frame === focalFrame) {\n nodes.push(node);\n }\n else {\n for (let child of node.children) {\n visit(child);\n }\n }\n }\n visit(this.appendOrderCalltreeRoot);\n for (let node of nodes) {\n const stack = [];\n for (let n = node; n != null && n.frame !== Frame.root; n = n.parent) {\n stack.push(n.frame);\n }\n builder.appendSampleWithWeight(stack, node.getTotalWeight());\n }\n const ret = builder.build();\n ret.name = this.name;\n ret.valueFormatter = this.valueFormatter;\n return ret;\n }\n getProfileForCalleesOf(focalFrameInfo) {\n const focalFrame = Frame.getOrInsert(this.frames, focalFrameInfo);\n const builder = new StackListProfileBuilder();\n function recordSubtree(focalFrameNode) {\n const stack = [];\n function visit(node) {\n stack.push(node.frame);\n builder.appendSampleWithWeight(stack, node.getSelfWeight());\n for (let child of node.children) {\n visit(child);\n }\n stack.pop();\n }\n visit(focalFrameNode);\n }\n function findCalls(node) {\n if (node.frame === focalFrame) {\n recordSubtree(node);\n }\n else {\n for (let child of node.children) {\n findCalls(child);\n }\n }\n }\n findCalls(this.appendOrderCalltreeRoot);\n const ret = builder.build();\n ret.name = this.name;\n ret.valueFormatter = this.valueFormatter;\n return ret;\n }\n // Demangle symbols for readability\n demangle() {\n return __awaiter(this, void 0, void 0, function* () {\n let demangleCpp = null;\n for (let frame of this.frames) {\n // This function converts a mangled C++ name such as \"__ZNK7Support6ColorFeqERKS0_\"\n // into a human-readable symbol (in this case \"Support::ColorF::==(Support::ColorF&)\")\n if (frame.name.startsWith('__Z')) {\n if (!demangleCpp) {\n demangleCpp = (yield demangleCppModule).demangleCpp;\n }\n frame.name = demangleCpp(frame.name);\n }\n }\n });\n }\n remapNames(callback) {\n for (let frame of this.frames) {\n frame.name = callback(frame.name);\n }\n }\n}\nexports.Profile = Profile;\nclass StackListProfileBuilder extends Profile {\n constructor() {\n super(...arguments);\n this.pendingSample = null;\n }\n _appendSample(stack, weight, useAppendOrder) {\n if (isNaN(weight))\n throw new Error('invalid weight');\n let node = useAppendOrder ? this.appendOrderCalltreeRoot : this.groupedCalltreeRoot;\n let framesInStack = new Set();\n for (let frameInfo of stack) {\n const frame = Frame.getOrInsert(this.frames, frameInfo);\n const last = useAppendOrder\n ? utils_1.lastOf(node.children)\n : node.children.find(c => c.frame === frame);\n if (last && !last.isFrozen() && last.frame == frame) {\n node = last;\n }\n else {\n const parent = node;\n node = new CallTreeNode(frame, node);\n parent.children.push(node);\n }\n node.addToTotalWeight(weight);\n // It's possible for the same frame to occur multiple\n // times in the same call stack due to either direct\n // or indirect recursion. We want to avoid counting that\n // frame multiple times for a single sample, we so just\n // track all of the unique frames that participated in\n // this call stack, then add to their weight at the end.\n framesInStack.add(node.frame);\n }\n node.addToSelfWeight(weight);\n if (useAppendOrder) {\n for (let child of node.children) {\n child.freeze();\n }\n }\n if (useAppendOrder) {\n node.frame.addToSelfWeight(weight);\n for (let frame of framesInStack) {\n frame.addToTotalWeight(weight);\n }\n if (node === utils_1.lastOf(this.samples)) {\n this.weights[this.weights.length - 1] += weight;\n }\n else {\n this.samples.push(node);\n this.weights.push(weight);\n }\n }\n }\n appendSampleWithWeight(stack, weight) {\n if (weight === 0) {\n // Samples with zero weight have no effect, so let's ignore them\n return;\n }\n if (weight < 0) {\n throw new Error('Samples must have positive weights');\n }\n this._appendSample(stack, weight, true);\n this._appendSample(stack, weight, false);\n }\n appendSampleWithTimestamp(stack, timestamp) {\n if (this.pendingSample) {\n if (timestamp < this.pendingSample.centralTimestamp) {\n throw new Error('Timestamps received out of order');\n }\n const endTimestamp = (timestamp + this.pendingSample.centralTimestamp) / 2;\n this.appendSampleWithWeight(this.pendingSample.stack, endTimestamp - this.pendingSample.startTimestamp);\n this.pendingSample = { stack, startTimestamp: endTimestamp, centralTimestamp: timestamp };\n }\n else {\n this.pendingSample = { stack, startTimestamp: timestamp, centralTimestamp: timestamp };\n }\n }\n build() {\n if (this.pendingSample) {\n if (this.samples.length > 0) {\n this.appendSampleWithWeight(this.pendingSample.stack, this.pendingSample.centralTimestamp - this.pendingSample.startTimestamp);\n }\n else {\n // There is only a single sample. In this case, units will be meaningless,\n // so we'll append with a weight of 1 and also clear any value formatter\n this.appendSampleWithWeight(this.pendingSample.stack, 1);\n this.setValueFormatter(new value_formatters_1.RawValueFormatter());\n }\n }\n this.totalWeight = Math.max(this.totalWeight, this.weights.reduce((a, b) => a + b, 0));\n this.sortGroupedCallTree();\n return this;\n }\n}\nexports.StackListProfileBuilder = StackListProfileBuilder;\n// As an alternative API for importing profiles more efficiently, provide a\n// way to open & close frames directly without needing to construct tons of\n// arrays as intermediaries.\nclass CallTreeProfileBuilder extends Profile {\n constructor() {\n super(...arguments);\n this.appendOrderStack = [this.appendOrderCalltreeRoot];\n this.groupedOrderStack = [this.groupedCalltreeRoot];\n this.framesInStack = new Map();\n this.stack = [];\n this.lastValue = 0;\n }\n addWeightsToFrames(value) {\n const delta = value - this.lastValue;\n for (let frame of this.framesInStack.keys()) {\n frame.addToTotalWeight(delta);\n }\n const stackTop = utils_1.lastOf(this.stack);\n if (stackTop) {\n stackTop.addToSelfWeight(delta);\n }\n }\n addWeightsToNodes(value, stack) {\n const delta = value - this.lastValue;\n for (let node of stack) {\n node.addToTotalWeight(delta);\n }\n const stackTop = utils_1.lastOf(stack);\n if (stackTop) {\n stackTop.addToSelfWeight(delta);\n }\n }\n _enterFrame(frame, value, useAppendOrder) {\n let stack = useAppendOrder ? this.appendOrderStack : this.groupedOrderStack;\n this.addWeightsToNodes(value, stack);\n let prevTop = utils_1.lastOf(stack);\n if (prevTop) {\n if (useAppendOrder) {\n const delta = value - this.lastValue;\n if (delta > 0) {\n this.samples.push(prevTop);\n this.weights.push(value - this.lastValue);\n }\n else if (delta < 0) {\n throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${value}`);\n }\n }\n const last = useAppendOrder\n ? utils_1.lastOf(prevTop.children)\n : prevTop.children.find(c => c.frame === frame);\n let node;\n if (last && !last.isFrozen() && last.frame == frame) {\n node = last;\n }\n else {\n node = new CallTreeNode(frame, prevTop);\n prevTop.children.push(node);\n }\n stack.push(node);\n }\n }\n enterFrame(frameInfo, value) {\n const frame = Frame.getOrInsert(this.frames, frameInfo);\n this.addWeightsToFrames(value);\n this._enterFrame(frame, value, true);\n this._enterFrame(frame, value, false);\n this.stack.push(frame);\n const frameCount = this.framesInStack.get(frame) || 0;\n this.framesInStack.set(frame, frameCount + 1);\n this.lastValue = value;\n }\n _leaveFrame(frame, value, useAppendOrder) {\n let stack = useAppendOrder ? this.appendOrderStack : this.groupedOrderStack;\n this.addWeightsToNodes(value, stack);\n if (useAppendOrder) {\n const leavingStackTop = this.appendOrderStack.pop();\n if (leavingStackTop == null) {\n throw new Error(`Trying to leave ${frame.key} when stack is empty`);\n }\n if (this.lastValue == null) {\n throw new Error(`Trying to leave a ${frame.key} before any have been entered`);\n }\n leavingStackTop.freeze();\n if (leavingStackTop.frame.key !== frame.key) {\n throw new Error(`Tried to leave frame \"${frame.name}\" while frame \"${leavingStackTop.frame.name}\" was at the top at ${value}`);\n }\n const delta = value - this.lastValue;\n if (delta > 0) {\n this.samples.push(leavingStackTop);\n this.weights.push(value - this.lastValue);\n }\n else if (delta < 0) {\n throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this\n .lastValue}, this sample was ${value}`);\n }\n }\n else {\n this.groupedOrderStack.pop();\n }\n }\n leaveFrame(frameInfo, value) {\n const frame = Frame.getOrInsert(this.frames, frameInfo);\n this.addWeightsToFrames(value);\n this._leaveFrame(frame, value, true);\n this._leaveFrame(frame, value, false);\n this.stack.pop();\n const frameCount = this.framesInStack.get(frame);\n if (frameCount == null)\n return;\n if (frameCount === 1) {\n this.framesInStack.delete(frame);\n }\n else {\n this.framesInStack.set(frame, frameCount - 1);\n }\n this.lastValue = value;\n this.totalWeight = Math.max(this.totalWeight, this.lastValue);\n }\n build() {\n // Each stack is expected to contain a single node which we initialize to be\n // the root node.\n if (this.appendOrderStack.length > 1 || this.groupedOrderStack.length > 1) {\n throw new Error('Tried to complete profile construction with a non-empty stack');\n }\n this.sortGroupedCallTree();\n return this;\n }\n}\nexports.CallTreeProfileBuilder = CallTreeProfileBuilder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeBase64 = exports.lazyStatic = exports.memoizeByReference = exports.memoizeByShallowEquality = exports.objectsHaveShallowEquality = exports.noop = exports.binarySearch = exports.triangle = exports.fract = exports.formatPercent = exports.zeroPad = exports.itReduce = exports.itForEach = exports.itMap = exports.KeyedSet = exports.getOrThrow = exports.getOrElse = exports.getOrInsert = exports.sortBy = exports.lastOf = void 0;\nfunction lastOf(ts) {\n return ts[ts.length - 1] || null;\n}\nexports.lastOf = lastOf;\nfunction sortBy(ts, key) {\n function comparator(a, b) {\n const keyA = key(a);\n const keyB = key(b);\n return keyA < keyB ? -1 : keyA > keyB ? 1 : 0;\n }\n ts.sort(comparator);\n}\nexports.sortBy = sortBy;\nfunction getOrInsert(map, k, fallback) {\n if (!map.has(k))\n map.set(k, fallback(k));\n return map.get(k);\n}\nexports.getOrInsert = getOrInsert;\nfunction getOrElse(map, k, fallback) {\n if (!map.has(k))\n return fallback(k);\n return map.get(k);\n}\nexports.getOrElse = getOrElse;\nfunction getOrThrow(map, k) {\n if (!map.has(k)) {\n throw new Error(`Expected key ${k}`);\n }\n return map.get(k);\n}\nexports.getOrThrow = getOrThrow;\nclass KeyedSet {\n constructor() {\n this.map = new Map();\n }\n getOrInsert(t) {\n const key = t.key;\n const existing = this.map.get(key);\n if (existing)\n return existing;\n this.map.set(key, t);\n return t;\n }\n forEach(fn) {\n this.map.forEach(fn);\n }\n [Symbol.iterator]() {\n return this.map.values();\n }\n}\nexports.KeyedSet = KeyedSet;\nfunction* itMap(it, f) {\n for (let t of it) {\n yield f(t);\n }\n}\nexports.itMap = itMap;\nfunction itForEach(it, f) {\n for (let t of it) {\n f(t);\n }\n}\nexports.itForEach = itForEach;\nfunction itReduce(it, f, init) {\n let accum = init;\n for (let t of it) {\n accum = f(accum, t);\n }\n return accum;\n}\nexports.itReduce = itReduce;\nfunction zeroPad(s, width) {\n return new Array(Math.max(width - s.length, 0) + 1).join('0') + s;\n}\nexports.zeroPad = zeroPad;\nfunction formatPercent(percent) {\n let formattedPercent = `${percent.toFixed(0)}%`;\n if (percent === 100)\n formattedPercent = '100%';\n else if (percent > 99)\n formattedPercent = '>99%';\n else if (percent < 0.01)\n formattedPercent = '<0.01%';\n else if (percent < 1)\n formattedPercent = `${percent.toFixed(2)}%`;\n else if (percent < 10)\n formattedPercent = `${percent.toFixed(1)}%`;\n return formattedPercent;\n}\nexports.formatPercent = formatPercent;\nfunction fract(x) {\n return x - Math.floor(x);\n}\nexports.fract = fract;\nfunction triangle(x) {\n return 2.0 * Math.abs(fract(x) - 0.5) - 1.0;\n}\nexports.triangle = triangle;\nfunction binarySearch(lo, hi, f, target, targetRangeSize = 1) {\n console.assert(!isNaN(targetRangeSize) && !isNaN(target));\n while (true) {\n if (hi - lo <= targetRangeSize)\n return [lo, hi];\n const mid = (hi + lo) / 2;\n const val = f(mid);\n if (val < target)\n lo = mid;\n else\n hi = mid;\n }\n}\nexports.binarySearch = binarySearch;\nfunction noop(...args) { }\nexports.noop = noop;\nfunction objectsHaveShallowEquality(a, b) {\n for (let key in a) {\n if (a[key] !== b[key])\n return false;\n }\n for (let key in b) {\n if (a[key] !== b[key])\n return false;\n }\n return true;\n}\nexports.objectsHaveShallowEquality = objectsHaveShallowEquality;\nfunction memoizeByShallowEquality(cb) {\n let last = null;\n return (args) => {\n let result;\n if (last == null) {\n result = cb(args);\n last = { args, result };\n return result;\n }\n else if (objectsHaveShallowEquality(last.args, args)) {\n return last.result;\n }\n else {\n last.args = args;\n last.result = cb(args);\n return last.result;\n }\n };\n}\nexports.memoizeByShallowEquality = memoizeByShallowEquality;\nfunction memoizeByReference(cb) {\n let last = null;\n return (args) => {\n let result;\n if (last == null) {\n result = cb(args);\n last = { args, result };\n return result;\n }\n else if (last.args === args) {\n return last.result;\n }\n else {\n last.args = args;\n last.result = cb(args);\n return last.result;\n }\n };\n}\nexports.memoizeByReference = memoizeByReference;\nfunction lazyStatic(cb) {\n let last = null;\n return () => {\n if (last == null) {\n last = { result: cb() };\n }\n return last.result;\n };\n}\nexports.lazyStatic = lazyStatic;\nconst base64lookupTable = lazyStatic(() => {\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n const ret = new Map();\n for (let i = 0; i < alphabet.length; i++) {\n ret.set(alphabet.charAt(i), i);\n }\n ret.set('=', -1);\n return ret;\n});\n// NOTE: There are probably simpler solutions to this problem, but I have this written already, so\n// until we run into problems with this, let's just use this.\n//\n// See: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem#The_Unicode_Problem\nfunction decodeBase64(encoded) {\n // Reference: https://www.rfc-editor.org/rfc/rfc4648.txt\n const lookupTable = base64lookupTable();\n // 3 byte groups are represented as sequneces of 4 characters.\n //\n // \"The encoding process represents 24-bit groups of input bits as output\n // strings of 4 encoded characters.\"\n //\n // \"Special processing is performed if fewer than 24 bits are available\n // at the end of the data being encoded. A full encoding quantum is\n // always completed at the end of a quantity. When fewer than 24 input\n // bits are available in an input group bits with value zero are added\n // (on the right) to form an integral number of 6-bit groups.\"\n if (encoded.length % 4 !== 0) {\n throw new Error(`Invalid length for base64 encoded string. Expected length % 4 = 0, got length = ${encoded.length}`);\n }\n const quartetCount = encoded.length / 4;\n let byteCount;\n // Special processing is performed if fewer than 24 bits are available\n // at the end of the data being encoded. A full encoding quantum is\n // always completed at the end of a quantity. When fewer than 24 input\n // bits are available in an input group, bits with value zero are added\n // (on the right) to form an integral number of 6-bit groups. Padding\n // at the end of the data is performed using the '=' character. Since\n // all base 64 input is an integral number of octets, only the following\n // cases can arise:\n //\n // (1) The final quantum of encoding input is an integral multiple of 24\n // bits; here, the final unit of encoded output will be an integral\n // multiple of 4 characters with no \"=\" padding.\n //\n // (2) The final quantum of encoding input is exactly 8 bits; here, the\n // final unit of encoded output will be two characters followed by\n // two \"=\" padding characters.\n //\n // (3) The final quantum of encoding input is exactly 16 bits; here, the\n // final unit of encoded output will be three characters followed by\n // one \"=\" padding character.\n if (encoded.length >= 4) {\n if (encoded.charAt(encoded.length - 1) === '=') {\n if (encoded.charAt(encoded.length - 2) === '=') {\n // Case (2)\n byteCount = quartetCount * 3 - 2;\n }\n else {\n // Case (3)\n byteCount = quartetCount * 3 - 1;\n }\n }\n else {\n // Case (1)\n byteCount = quartetCount * 3;\n }\n }\n else {\n // Case (1)\n byteCount = quartetCount * 3;\n }\n const bytes = new Uint8Array(byteCount);\n let offset = 0;\n for (let i = 0; i < quartetCount; i++) {\n const enc1 = encoded.charAt(i * 4 + 0);\n const enc2 = encoded.charAt(i * 4 + 1);\n const enc3 = encoded.charAt(i * 4 + 2);\n const enc4 = encoded.charAt(i * 4 + 3);\n const sextet1 = lookupTable.get(enc1);\n const sextet2 = lookupTable.get(enc2);\n const sextet3 = lookupTable.get(enc3);\n const sextet4 = lookupTable.get(enc4);\n if (sextet1 == null || sextet2 == null || sextet3 == null || sextet4 == null) {\n throw new Error(`Invalid quartet at indices ${i * 4} .. ${i * 4 + 3}: ${encoded.substring(i * 4, i * 4 + 3)}`);\n }\n bytes[offset++] = (sextet1 << 2) | (sextet2 >> 4);\n if (enc3 !== '=') {\n bytes[offset++] = ((sextet2 & 15) << 4) | (sextet3 >> 2);\n }\n if (enc4 !== '=') {\n bytes[offset++] = ((sextet3 & 7) << 6) | sextet4;\n }\n }\n if (offset !== byteCount) {\n throw new Error(`Expected to decode ${byteCount} bytes, but only decoded ${offset})`);\n }\n return bytes;\n}\nexports.decodeBase64 = decodeBase64;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ByteFormatter = exports.TimeFormatter = exports.RawValueFormatter = void 0;\nconst utils_1 = require(\"./utils\");\nclass RawValueFormatter {\n constructor() {\n this.unit = 'none';\n }\n format(v) {\n return v.toLocaleString();\n }\n}\nexports.RawValueFormatter = RawValueFormatter;\nclass TimeFormatter {\n constructor(unit) {\n this.unit = unit;\n if (unit === 'nanoseconds')\n this.multiplier = 1e-9;\n else if (unit === 'microseconds')\n this.multiplier = 1e-6;\n else if (unit === 'milliseconds')\n this.multiplier = 1e-3;\n else\n this.multiplier = 1;\n }\n formatUnsigned(v) {\n const s = v * this.multiplier;\n if (s / 60 >= 1) {\n const minutes = Math.floor(s / 60);\n const seconds = Math.floor(s - minutes * 60).toString();\n return `${minutes}:${utils_1.zeroPad(seconds, 2)}`;\n }\n if (s / 1 >= 1)\n return `${s.toFixed(2)}s`;\n if (s / 1e-3 >= 1)\n return `${(s / 1e-3).toFixed(2)}ms`;\n if (s / 1e-6 >= 1)\n return `${(s / 1e-6).toFixed(2)}µs`;\n else\n return `${(s / 1e-9).toFixed(2)}ns`;\n }\n format(v) {\n return `${v < 0 ? '-' : ''}${this.formatUnsigned(Math.abs(v))}`;\n }\n}\nexports.TimeFormatter = TimeFormatter;\nclass ByteFormatter {\n constructor() {\n this.unit = 'bytes';\n }\n format(v) {\n if (v < 1024)\n return `${v.toFixed(0)} B`;\n v /= 1024;\n if (v < 1024)\n return `${v.toFixed(2)} KB`;\n v /= 1024;\n if (v < 1024)\n return `${v.toFixed(2)} MB`;\n v /= 1024;\n return `${v.toFixed(2)} GB`;\n }\n}\nexports.ByteFormatter = ByteFormatter;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./import/chrome\"), exports);\n__exportStar(require(\"./lib/flamechart\"), exports);\n","// Import support https://stackoverflow.com/questions/13673346/supporting-both-commonjs-and-amd\n(function(name, definition) {\n if (typeof module !== \"undefined\") { module.exports = definition(); }\n else if (typeof define === \"function\" && typeof define.amd === \"object\") { define(definition); }\n else { this[name] = definition(); }\n}(\"clipboard\", function() {\n if (typeof document === 'undefined' || !document.addEventListener) {\n return null;\n }\n\n var clipboard = {};\n\n clipboard.copy = (function() {\n var _intercept = false;\n var _data = null; // Map from data type (e.g. \"text/html\") to value.\n var _bogusSelection = false;\n\n function cleanup() {\n _intercept = false;\n _data = null;\n if (_bogusSelection) {\n window.getSelection().removeAllRanges();\n }\n _bogusSelection = false;\n }\n\n document.addEventListener(\"copy\", function(e) {\n if (_intercept) {\n for (var key in _data) {\n e.clipboardData.setData(key, _data[key]);\n }\n e.preventDefault();\n }\n });\n\n // Workaround for Safari: https://bugs.webkit.org/show_bug.cgi?id=156529\n function bogusSelect() {\n var sel = document.getSelection();\n // If \"nothing\" is selected...\n if (!document.queryCommandEnabled(\"copy\") && sel.isCollapsed) {\n // ... temporarily select the entire body.\n //\n // We select the entire body because:\n // - it's guaranteed to exist,\n // - it works (unlike, say, document.head, or phantom element that is\n // not inserted into the DOM),\n // - it doesn't seem to flicker (due to the synchronous copy event), and\n // - it avoids modifying the DOM (can trigger mutation observers).\n //\n // Because we can't do proper feature detection (we already checked\n // document.queryCommandEnabled(\"copy\") , which actually gives a false\n // negative for Blink when nothing is selected) and UA sniffing is not\n // reliable (a lot of UA strings contain \"Safari\"), this will also\n // happen for some browsers other than Safari. :-()\n var range = document.createRange();\n range.selectNodeContents(document.body);\n sel.removeAllRanges();\n sel.addRange(range);\n _bogusSelection = true;\n }\n };\n\n return function(data) {\n return new Promise(function(resolve, reject) {\n _intercept = true;\n if (typeof data === \"string\") {\n _data = {\"text/plain\": data};\n } else if (data instanceof Node) {\n _data = {\"text/html\": new XMLSerializer().serializeToString(data)};\n } else if (data instanceof Object){\n _data = data;\n } else {\n reject(\"Invalid data type. Must be string, DOM node, or an object mapping MIME types to strings.\")\n }\n\n function triggerCopy(tryBogusSelect) {\n try {\n if (document.execCommand(\"copy\")) {\n // document.execCommand is synchronous: http://www.w3.org/TR/2015/WD-clipboard-apis-20150421/#integration-with-rich-text-editing-apis\n // So we can call resolve() back here.\n cleanup();\n resolve();\n }\n else {\n if (!tryBogusSelect) {\n bogusSelect();\n triggerCopy(true);\n } else {\n cleanup();\n throw new Error(\"Unable to copy. Perhaps it's not available in your browser?\");\n }\n }\n } catch (e) {\n cleanup();\n reject(e);\n }\n }\n triggerCopy(false);\n\n });\n };\n })();\n\n clipboard.paste = (function() {\n var _intercept = false;\n var _resolve;\n var _dataType;\n\n document.addEventListener(\"paste\", function(e) {\n if (_intercept) {\n _intercept = false;\n e.preventDefault();\n var resolve = _resolve;\n _resolve = null;\n resolve(e.clipboardData.getData(_dataType));\n }\n });\n\n return function(dataType) {\n return new Promise(function(resolve, reject) {\n _intercept = true;\n _resolve = resolve;\n _dataType = dataType || \"text/plain\";\n try {\n if (!document.execCommand(\"paste\")) {\n _intercept = false;\n reject(new Error(\"Unable to paste. Pasting only works in Internet Explorer at the moment.\"));\n }\n } catch (e) {\n _intercept = false;\n reject(new Error(e));\n }\n });\n };\n })();\n\n // Handle IE behaviour.\n if (typeof ClipboardEvent === \"undefined\" &&\n typeof window.clipboardData !== \"undefined\" &&\n typeof window.clipboardData.setData !== \"undefined\") {\n\n /*! promise-polyfill 2.0.1 */\n (function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof a)throw new TypeError(\"not a function\");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void j(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError(\"A promise cannot be resolved with itself.\");if(a&&(\"object\"==typeof a||\"function\"==typeof a)){var c=a.then;if(\"function\"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled=\"function\"==typeof a?a:null,this.onRejected=\"function\"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=c.immediateFn||\"function\"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},k=Array.isArray||function(a){return\"[object Array]\"===Object.prototype.toString.call(a)};c.prototype[\"catch\"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&k(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&(\"object\"==typeof g||\"function\"==typeof g)){var h=g.then;if(\"function\"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;f<a.length;f++)d(f,a[f])})},c.resolve=function(a){return a&&\"object\"==typeof a&&a.constructor===c?a:new c(function(b){b(a)})},c.reject=function(a){return new c(function(b,c){c(a)})},c.race=function(a){return new c(function(b,c){for(var d=0,e=a.length;e>d;d++)a[d].then(b,c)})},\"undefined\"!=typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)})(this);\n\n clipboard.copy = function(data) {\n return new Promise(function(resolve, reject) {\n // IE supports string and URL types: https://msdn.microsoft.com/en-us/library/ms536744(v=vs.85).aspx\n // We only support the string type for now.\n if (typeof data !== \"string\" && !(\"text/plain\" in data)) {\n throw new Error(\"You must provide a text/plain type.\");\n }\n\n var strData = (typeof data === \"string\" ? data : data[\"text/plain\"]);\n var copySucceeded = window.clipboardData.setData(\"Text\", strData);\n if (copySucceeded) {\n resolve();\n } else {\n reject(new Error(\"Copying was rejected.\"));\n }\n });\n };\n\n clipboard.paste = function() {\n return new Promise(function(resolve, reject) {\n var strData = window.clipboardData.getData(\"Text\");\n if (strData) {\n resolve(strData);\n } else {\n // The user rejected the paste request.\n reject(new Error(\"Pasting was rejected.\"));\n }\n });\n };\n }\n\n return clipboard;\n}));\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when its always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","/**\n * These functions are for handling of query-string free URLs, necessitated\n * by query string stripping of URLs in JavaScriptCore stack traces\n * introduced in iOS 16.4.\n *\n * See https://github.com/facebook/react-native/issues/36794 for context.\n *\n * @flow strict\n */\n\n// We use regex-based URL parsing as defined in RFC3986 because it's easier to\n// determine whether the input is a complete URI, a path-absolute or a\n// path-rootless (as defined in the spec), and be as faithful to the input as\n// possible. This will match any string, and does not imply validity.\n//\n// https://www.rfc-editor.org/rfc/rfc3986#appendix-B\nconst URI_REGEX = /^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\nfunction _rfc3986Parse(url /*:string */) {\n const match = url.match(URI_REGEX);\n if (match == null) {\n throw new Error(\"Unexpected error - failed to regex-match URL\");\n }\n return {\n schemeAndAuthority: (match[1] || \"\") + (match[3] || \"\"),\n path: match[5] || \"\",\n hasQueryPart: match[6] != null,\n queryWithoutQuestionMark: match[7] || \"\",\n fragmentWithHash: match[8] || \"\",\n };\n}\n\nfunction isJscSafeUrl(url /*:string */) /*:boolean*/ {\n const parsedUrl = _rfc3986Parse(url);\n return !parsedUrl.hasQueryPart;\n}\n\n/**\n * @param {string} urlToNormalize\n * @returns string\n */\nfunction toNormalUrl(urlToNormalize /*:string */) /*:string */ {\n const parsedUrl = _rfc3986Parse(urlToNormalize);\n if (parsedUrl.path.indexOf(\"//&\") === -1) {\n return urlToNormalize;\n }\n return (\n parsedUrl.schemeAndAuthority +\n parsedUrl.path.replace(\"//&\", \"?\") +\n // We don't expect JSC urls to also have query strings, but interpret\n // liberally and append them.\n (parsedUrl.queryWithoutQuestionMark.length > 0\n ? \"&\" + parsedUrl.queryWithoutQuestionMark\n : \"\") +\n // Likewise, JSC URLs will usually have their fragments stripped, but\n // preserve if we find one.\n parsedUrl.fragmentWithHash\n );\n}\n\n/**\n * @param {string} urlToConvert\n * @returns string\n */\nfunction toJscSafeUrl(urlToConvert /*:string */) /*:string */ {\n if (!_rfc3986Parse(urlToConvert).hasQueryPart) {\n return urlToConvert;\n }\n const parsedUrl = _rfc3986Parse(toNormalUrl(urlToConvert));\n if (\n parsedUrl.queryWithoutQuestionMark.length > 0 &&\n (parsedUrl.path === \"\" || parsedUrl.path === \"/\")\n ) {\n throw new Error(\n `The given URL \"${urlToConvert}\" has an empty path and cannot be converted to a JSC-safe format.`\n );\n }\n return (\n parsedUrl.schemeAndAuthority +\n parsedUrl.path +\n (parsedUrl.queryWithoutQuestionMark.length > 0\n ? \"//&\" +\n // Query strings may contain '?' (e.g. in key or value names) - these\n // must be percent-encoded to form a valid path, and not be stripped.\n parsedUrl.queryWithoutQuestionMark.replace(/\\?/g, \"%3F\")\n : \"\") +\n // We expect JSC to strip this - we don't handle fragments for now.\n parsedUrl.fragmentWithHash\n );\n}\n\nmodule.exports = {\n isJscSafeUrl,\n toNormalUrl,\n toJscSafeUrl,\n};\n","'use strict'\n\nmodule.exports = LRUCache\n\n// This will be a proper iterable 'Map' in engines that support it,\n// or a fakey-fake PseudoMap in older versions.\nvar Map = require('pseudomap')\nvar util = require('util')\n\n// A linked list to keep track of recently-used-ness\nvar Yallist = require('yallist')\n\n// use symbols if possible, otherwise just _props\nvar hasSymbol = typeof Symbol === 'function' && process.env._nodeLRUCacheForceNoSymbol !== '1'\nvar makeSymbol\nif (hasSymbol) {\n makeSymbol = function (key) {\n return Symbol(key)\n }\n} else {\n makeSymbol = function (key) {\n return '_' + key\n }\n}\n\nvar MAX = makeSymbol('max')\nvar LENGTH = makeSymbol('length')\nvar LENGTH_CALCULATOR = makeSymbol('lengthCalculator')\nvar ALLOW_STALE = makeSymbol('allowStale')\nvar MAX_AGE = makeSymbol('maxAge')\nvar DISPOSE = makeSymbol('dispose')\nvar NO_DISPOSE_ON_SET = makeSymbol('noDisposeOnSet')\nvar LRU_LIST = makeSymbol('lruList')\nvar CACHE = makeSymbol('cache')\n\nfunction naiveLength () { return 1 }\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nfunction LRUCache (options) {\n if (!(this instanceof LRUCache)) {\n return new LRUCache(options)\n }\n\n if (typeof options === 'number') {\n options = { max: options }\n }\n\n if (!options) {\n options = {}\n }\n\n var max = this[MAX] = options.max\n // Kind of weird to have a default max of Infinity, but oh well.\n if (!max ||\n !(typeof max === 'number') ||\n max <= 0) {\n this[MAX] = Infinity\n }\n\n var lc = options.length || naiveLength\n if (typeof lc !== 'function') {\n lc = naiveLength\n }\n this[LENGTH_CALCULATOR] = lc\n\n this[ALLOW_STALE] = options.stale || false\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this.reset()\n}\n\n// resize the cache when the max changes.\nObject.defineProperty(LRUCache.prototype, 'max', {\n set: function (mL) {\n if (!mL || !(typeof mL === 'number') || mL <= 0) {\n mL = Infinity\n }\n this[MAX] = mL\n trim(this)\n },\n get: function () {\n return this[MAX]\n },\n enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'allowStale', {\n set: function (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n },\n get: function () {\n return this[ALLOW_STALE]\n },\n enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'maxAge', {\n set: function (mA) {\n if (!mA || !(typeof mA === 'number') || mA < 0) {\n mA = 0\n }\n this[MAX_AGE] = mA\n trim(this)\n },\n get: function () {\n return this[MAX_AGE]\n },\n enumerable: true\n})\n\n// resize the cache when the lengthCalculator changes.\nObject.defineProperty(LRUCache.prototype, 'lengthCalculator', {\n set: function (lC) {\n if (typeof lC !== 'function') {\n lC = naiveLength\n }\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(function (hit) {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n }, this)\n }\n trim(this)\n },\n get: function () { return this[LENGTH_CALCULATOR] },\n enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'length', {\n get: function () { return this[LENGTH] },\n enumerable: true\n})\n\nObject.defineProperty(LRUCache.prototype, 'itemCount', {\n get: function () { return this[LRU_LIST].length },\n enumerable: true\n})\n\nLRUCache.prototype.rforEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this[LRU_LIST].tail; walker !== null;) {\n var prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n}\n\nfunction forEachStep (self, fn, node, thisp) {\n var hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE]) {\n hit = undefined\n }\n }\n if (hit) {\n fn.call(thisp, hit.value, hit.key, self)\n }\n}\n\nLRUCache.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this[LRU_LIST].head; walker !== null;) {\n var next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n}\n\nLRUCache.prototype.keys = function () {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.key\n }, this)\n}\n\nLRUCache.prototype.values = function () {\n return this[LRU_LIST].toArray().map(function (k) {\n return k.value\n }, this)\n}\n\nLRUCache.prototype.reset = function () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(function (hit) {\n this[DISPOSE](hit.key, hit.value)\n }, this)\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n}\n\nLRUCache.prototype.dump = function () {\n return this[LRU_LIST].map(function (hit) {\n if (!isStale(this, hit)) {\n return {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }\n }\n }, this).toArray().filter(function (h) {\n return h\n })\n}\n\nLRUCache.prototype.dumpLru = function () {\n return this[LRU_LIST]\n}\n\n/* istanbul ignore next */\nLRUCache.prototype.inspect = function (n, opts) {\n var str = 'LRUCache {'\n var extras = false\n\n var as = this[ALLOW_STALE]\n if (as) {\n str += '\\n allowStale: true'\n extras = true\n }\n\n var max = this[MAX]\n if (max && max !== Infinity) {\n if (extras) {\n str += ','\n }\n str += '\\n max: ' + util.inspect(max, opts)\n extras = true\n }\n\n var maxAge = this[MAX_AGE]\n if (maxAge) {\n if (extras) {\n str += ','\n }\n str += '\\n maxAge: ' + util.inspect(maxAge, opts)\n extras = true\n }\n\n var lc = this[LENGTH_CALCULATOR]\n if (lc && lc !== naiveLength) {\n if (extras) {\n str += ','\n }\n str += '\\n length: ' + util.inspect(this[LENGTH], opts)\n extras = true\n }\n\n var didFirst = false\n this[LRU_LIST].forEach(function (item) {\n if (didFirst) {\n str += ',\\n '\n } else {\n if (extras) {\n str += ',\\n'\n }\n didFirst = true\n str += '\\n '\n }\n var key = util.inspect(item.key).split('\\n').join('\\n ')\n var val = { value: item.value }\n if (item.maxAge !== maxAge) {\n val.maxAge = item.maxAge\n }\n if (lc !== naiveLength) {\n val.length = item.length\n }\n if (isStale(this, item)) {\n val.stale = true\n }\n\n val = util.inspect(val, opts).split('\\n').join('\\n ')\n str += key + ' => ' + val\n })\n\n if (didFirst || extras) {\n str += '\\n'\n }\n str += '}'\n\n return str\n}\n\nLRUCache.prototype.set = function (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n var now = maxAge ? Date.now() : 0\n var len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n var node = this[CACHE].get(key)\n var item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET]) {\n this[DISPOSE](key, item.value)\n }\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n var hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE]) {\n this[DISPOSE](key, value)\n }\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n}\n\nLRUCache.prototype.has = function (key) {\n if (!this[CACHE].has(key)) return false\n var hit = this[CACHE].get(key).value\n if (isStale(this, hit)) {\n return false\n }\n return true\n}\n\nLRUCache.prototype.get = function (key) {\n return get(this, key, true)\n}\n\nLRUCache.prototype.peek = function (key) {\n return get(this, key, false)\n}\n\nLRUCache.prototype.pop = function () {\n var node = this[LRU_LIST].tail\n if (!node) return null\n del(this, node)\n return node.value\n}\n\nLRUCache.prototype.del = function (key) {\n del(this, this[CACHE].get(key))\n}\n\nLRUCache.prototype.load = function (arr) {\n // reset the cache\n this.reset()\n\n var now = Date.now()\n // A previous serialized cache has the most recent items first\n for (var l = arr.length - 1; l >= 0; l--) {\n var hit = arr[l]\n var expiresAt = hit.e || 0\n if (expiresAt === 0) {\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n } else {\n var maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n}\n\nLRUCache.prototype.prune = function () {\n var self = this\n this[CACHE].forEach(function (value, key) {\n get(self, key, false)\n })\n}\n\nfunction get (self, key, doUse) {\n var node = self[CACHE].get(key)\n if (node) {\n var hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE]) hit = undefined\n } else {\n if (doUse) {\n self[LRU_LIST].unshiftNode(node)\n }\n }\n if (hit) hit = hit.value\n }\n return hit\n}\n\nfunction isStale (self, hit) {\n if (!hit || (!hit.maxAge && !self[MAX_AGE])) {\n return false\n }\n var stale = false\n var diff = Date.now() - hit.now\n if (hit.maxAge) {\n stale = diff > hit.maxAge\n } else {\n stale = self[MAX_AGE] && (diff > self[MAX_AGE])\n }\n return stale\n}\n\nfunction trim (self) {\n if (self[LENGTH] > self[MAX]) {\n for (var walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n var prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nfunction del (self, node) {\n if (node) {\n var hit = node.value\n if (self[DISPOSE]) {\n self[DISPOSE](hit.key, hit.value)\n }\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\n// classy, since V8 prefers predictable objects.\nfunction Entry (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n}\n","'use strict';\n\nfunction nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n error.framesToPop = 1; // Skip nullthrows's own stack frame.\n throw error;\n}\n\nmodule.exports = nullthrows;\nmodule.exports.default = nullthrows;\n\nObject.defineProperty(module.exports, '__esModule', {value: true});\n","'use strict';\nmodule.exports = milliseconds => {\n\tif (typeof milliseconds !== 'number') {\n\t\tthrow new TypeError('Expected a number');\n\t}\n\n\tconst roundTowardsZero = milliseconds > 0 ? Math.floor : Math.ceil;\n\n\treturn {\n\t\tdays: roundTowardsZero(milliseconds / 86400000),\n\t\thours: roundTowardsZero(milliseconds / 3600000) % 24,\n\t\tminutes: roundTowardsZero(milliseconds / 60000) % 60,\n\t\tseconds: roundTowardsZero(milliseconds / 1000) % 60,\n\t\tmilliseconds: roundTowardsZero(milliseconds) % 1000,\n\t\tmicroseconds: roundTowardsZero(milliseconds * 1000) % 1000,\n\t\tnanoseconds: roundTowardsZero(milliseconds * 1e6) % 1000\n\t};\n};\n","'use strict';\nconst parseMilliseconds = require('parse-ms');\n\nconst pluralize = (word, count) => count === 1 ? word : `${word}s`;\n\nconst SECOND_ROUNDING_EPSILON = 0.0000001;\n\nmodule.exports = (milliseconds, options = {}) => {\n\tif (!Number.isFinite(milliseconds)) {\n\t\tthrow new TypeError('Expected a finite number');\n\t}\n\n\tif (options.colonNotation) {\n\t\toptions.compact = false;\n\t\toptions.formatSubMilliseconds = false;\n\t\toptions.separateMilliseconds = false;\n\t\toptions.verbose = false;\n\t}\n\n\tif (options.compact) {\n\t\toptions.secondsDecimalDigits = 0;\n\t\toptions.millisecondsDecimalDigits = 0;\n\t}\n\n\tconst result = [];\n\n\tconst floorDecimals = (value, decimalDigits) => {\n\t\tconst flooredInterimValue = Math.floor((value * (10 ** decimalDigits)) + SECOND_ROUNDING_EPSILON);\n\t\tconst flooredValue = Math.round(flooredInterimValue) / (10 ** decimalDigits);\n\t\treturn flooredValue.toFixed(decimalDigits);\n\t};\n\n\tconst add = (value, long, short, valueString) => {\n\t\tif ((result.length === 0 || !options.colonNotation) && value === 0 && !(options.colonNotation && short === 'm')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalueString = (valueString || value || '0').toString();\n\t\tlet prefix;\n\t\tlet suffix;\n\t\tif (options.colonNotation) {\n\t\t\tprefix = result.length > 0 ? ':' : '';\n\t\t\tsuffix = '';\n\t\t\tconst wholeDigits = valueString.includes('.') ? valueString.split('.')[0].length : valueString.length;\n\t\t\tconst minLength = result.length > 0 ? 2 : 1;\n\t\t\tvalueString = '0'.repeat(Math.max(0, minLength - wholeDigits)) + valueString;\n\t\t} else {\n\t\t\tprefix = '';\n\t\t\tsuffix = options.verbose ? ' ' + pluralize(long, value) : short;\n\t\t}\n\n\t\tresult.push(prefix + valueString + suffix);\n\t};\n\n\tconst parsed = parseMilliseconds(milliseconds);\n\n\tadd(Math.trunc(parsed.days / 365), 'year', 'y');\n\tadd(parsed.days % 365, 'day', 'd');\n\tadd(parsed.hours, 'hour', 'h');\n\tadd(parsed.minutes, 'minute', 'm');\n\n\tif (\n\t\toptions.separateMilliseconds ||\n\t\toptions.formatSubMilliseconds ||\n\t\tmilliseconds < 1000\n\t) {\n\t\tadd(parsed.seconds, 'second', 's');\n\t\tif (options.formatSubMilliseconds) {\n\t\t\tadd(parsed.milliseconds, 'millisecond', 'ms');\n\t\t\tadd(parsed.microseconds, 'microsecond', 'µs');\n\t\t\tadd(parsed.nanoseconds, 'nanosecond', 'ns');\n\t\t} else {\n\t\t\tconst millisecondsAndBelow =\n\t\t\t\tparsed.milliseconds +\n\t\t\t\t(parsed.microseconds / 1000) +\n\t\t\t\t(parsed.nanoseconds / 1e6);\n\n\t\t\tconst millisecondsDecimalDigits =\n\t\t\t\ttypeof options.millisecondsDecimalDigits === 'number' ?\n\t\t\t\t\toptions.millisecondsDecimalDigits :\n\t\t\t\t\t0;\n\n\t\t\tconst roundedMiliseconds = millisecondsAndBelow >= 1 ?\n\t\t\t\tMath.round(millisecondsAndBelow) :\n\t\t\t\tMath.ceil(millisecondsAndBelow);\n\n\t\t\tconst millisecondsString = millisecondsDecimalDigits ?\n\t\t\t\tmillisecondsAndBelow.toFixed(millisecondsDecimalDigits) :\n\t\t\t\troundedMiliseconds;\n\n\t\t\tadd(\n\t\t\t\tNumber.parseFloat(millisecondsString, 10),\n\t\t\t\t'millisecond',\n\t\t\t\t'ms',\n\t\t\t\tmillisecondsString\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconst seconds = (milliseconds / 1000) % 60;\n\t\tconst secondsDecimalDigits =\n\t\t\ttypeof options.secondsDecimalDigits === 'number' ?\n\t\t\t\toptions.secondsDecimalDigits :\n\t\t\t\t1;\n\t\tconst secondsFixed = floorDecimals(seconds, secondsDecimalDigits);\n\t\tconst secondsString = options.keepDecimalsOnWholeSeconds ?\n\t\t\tsecondsFixed :\n\t\t\tsecondsFixed.replace(/\\.0+$/, '');\n\t\tadd(Number.parseFloat(secondsString, 10), 'second', 's', secondsString);\n\t}\n\n\tif (result.length === 0) {\n\t\treturn '0' + (options.verbose ? ' milliseconds' : 'ms');\n\t}\n\n\tif (options.compact) {\n\t\treturn result[0];\n\t}\n\n\tif (typeof options.unitCount === 'number') {\n\t\tconst separator = options.colonNotation ? '' : ' ';\n\t\treturn result.slice(0, Math.max(options.unitCount, 1)).join(separator);\n\t}\n\n\treturn options.colonNotation ? result.join('') : result.join(' ');\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n 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","if (process.env.npm_package_name === 'pseudomap' &&\n process.env.npm_lifecycle_script === 'test')\n process.env.TEST_PSEUDOMAP = 'true'\n\nif (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {\n module.exports = Map\n} else {\n module.exports = require('./pseudomap')\n}\n","var hasOwnProperty = Object.prototype.hasOwnProperty\n\nmodule.exports = PseudoMap\n\nfunction PseudoMap (set) {\n if (!(this instanceof PseudoMap)) // whyyyyyyy\n throw new TypeError(\"Constructor PseudoMap requires 'new'\")\n\n this.clear()\n\n if (set) {\n if ((set instanceof PseudoMap) ||\n (typeof Map === 'function' && set instanceof Map))\n set.forEach(function (value, key) {\n this.set(key, value)\n }, this)\n else if (Array.isArray(set))\n set.forEach(function (kv) {\n this.set(kv[0], kv[1])\n }, this)\n else\n throw new TypeError('invalid argument')\n }\n}\n\nPseudoMap.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n Object.keys(this._data).forEach(function (k) {\n if (k !== 'size')\n fn.call(thisp, this._data[k].value, this._data[k].key)\n }, this)\n}\n\nPseudoMap.prototype.has = function (k) {\n return !!find(this._data, k)\n}\n\nPseudoMap.prototype.get = function (k) {\n var res = find(this._data, k)\n return res && res.value\n}\n\nPseudoMap.prototype.set = function (k, v) {\n set(this._data, k, v)\n}\n\nPseudoMap.prototype.delete = function (k) {\n var res = find(this._data, k)\n if (res) {\n delete this._data[res._index]\n this._data.size--\n }\n}\n\nPseudoMap.prototype.clear = function () {\n var data = Object.create(null)\n data.size = 0\n\n Object.defineProperty(this, '_data', {\n value: data,\n enumerable: false,\n configurable: true,\n writable: false\n })\n}\n\nObject.defineProperty(PseudoMap.prototype, 'size', {\n get: function () {\n return this._data.size\n },\n set: function (n) {},\n enumerable: true,\n configurable: true\n})\n\nPseudoMap.prototype.values =\nPseudoMap.prototype.keys =\nPseudoMap.prototype.entries = function () {\n throw new Error('iterators are not implemented in this version')\n}\n\n// Either identical, or both NaN\nfunction same (a, b) {\n return a === b || a !== a && b !== b\n}\n\nfunction Entry (k, v, i) {\n this.key = k\n this.value = v\n this._index = i\n}\n\nfunction find (data, k) {\n for (var i = 0, s = '_' + k, key = s;\n hasOwnProperty.call(data, key);\n key = s + i++) {\n if (same(data[key].key, k))\n return data[key]\n }\n}\n\nfunction set (data, k, v) {\n for (var i = 0, s = '_' + k, key = s;\n hasOwnProperty.call(data, key);\n key = s + i++) {\n if (same(data[key].key, k)) {\n data[key].value = v\n return\n }\n }\n data.size++\n data[key] = new Entry(k, v, key)\n}\n","exports.quote = function (xs) {\n return xs.map(function (s) {\n if (s && typeof s === 'object') {\n return s.op.replace(/(.)/g, '\\\\$1');\n }\n else if (/[\"\\s]/.test(s) && !/'/.test(s)) {\n return \"'\" + s.replace(/(['\\\\])/g, '\\\\$1') + \"'\";\n }\n else if (/[\"'\\s]/.test(s)) {\n return '\"' + s.replace(/([\"\\\\$`!])/g, '\\\\$1') + '\"';\n }\n else {\n s = String(s).replace(/([A-z]:)?([#!\"$&'()*,:;<=>?@\\[\\\\\\]^`{|}])/g, '$1\\\\$2');\n\n // unescape paths in windows\n s = s.replace(/\\\\\\\\/g, '\\\\')\n return s\n }\n }).join(' ');\n};\n\n// '<(' is process substitution operator and\n// can be parsed the same as control operator\nvar CONTROL = '(?:' + [\n '\\\\|\\\\|', '\\\\&\\\\&', ';;', '\\\\|\\\\&', '\\\\<\\\\(', '>>', '>\\\\&', '[&;()|<>]'\n].join('|') + ')';\nvar META = '|&;()<> \\\\t';\nvar BAREWORD = '(\\\\\\\\[\\'\"' + META + ']|[^\\\\s\\'\"' + META + '])+';\nvar SINGLE_QUOTE = '\"((\\\\\\\\\"|[^\"])*?)\"';\nvar DOUBLE_QUOTE = '\\'((\\\\\\\\\\'|[^\\'])*?)\\'';\n\nvar TOKEN = '';\nfor (var i = 0; i < 4; i++) {\n TOKEN += (Math.pow(16,8)*Math.random()).toString(16);\n}\n\nexports.parse = function (s, env, opts) {\n var mapped = parse(s, env, opts);\n if (typeof env !== 'function') return mapped;\n return mapped.reduce(function (acc, s) {\n if (typeof s === 'object') return acc.concat(s);\n var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));\n if (xs.length === 1) return acc.concat(xs[0]);\n return acc.concat(xs.filter(Boolean).map(function (x) {\n if (RegExp('^' + TOKEN).test(x)) {\n return JSON.parse(x.split(TOKEN)[1]);\n }\n else return x;\n }));\n }, []);\n};\n\nfunction parse (s, env, opts) {\n var chunker = new RegExp([\n '(' + CONTROL + ')', // control chars\n '(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*'\n ].join('|'), 'g');\n var match = s.match(chunker).filter(Boolean);\n var commented = false;\n\n if (!match) return [];\n if (!env) env = {};\n if (!opts) opts = {};\n return match.map(function (s, j) {\n if (commented) {\n return;\n }\n if (RegExp('^' + CONTROL + '$').test(s)) {\n return { op: s };\n }\n\n // Hand-written scanner/parser for Bash quoting rules:\n //\n // 1. inside single quotes, all characters are printed literally.\n // 2. inside double quotes, all characters are printed literally\n // except variables prefixed by '$' and backslashes followed by\n // either a double quote or another backslash.\n // 3. outside of any quotes, backslashes are treated as escape\n // characters and not printed (unless they are themselves escaped)\n // 4. quote context can switch mid-token if there is no whitespace\n // between the two quote contexts (e.g. all'one'\"token\" parses as\n // \"allonetoken\")\n var SQ = \"'\";\n var DQ = '\"';\n var DS = '$';\n var BS = opts.escape || '\\\\';\n var quote = false;\n var esc = false;\n var out = '';\n var isGlob = false;\n\n for (var i = 0, len = s.length; i < len; i++) {\n var c = s.charAt(i);\n isGlob = isGlob || (!quote && (c === '*' || c === '?'));\n if (esc) {\n out += c;\n esc = false;\n }\n else if (quote) {\n if (c === quote) {\n quote = false;\n }\n else if (quote == SQ) {\n out += c;\n }\n else { // Double quote\n if (c === BS) {\n i += 1;\n c = s.charAt(i);\n if (c === DQ || c === BS || c === DS) {\n out += c;\n } else {\n out += BS + c;\n }\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else {\n out += c;\n }\n }\n }\n else if (c === DQ || c === SQ) {\n quote = c;\n }\n else if (RegExp('^' + CONTROL + '$').test(c)) {\n return { op: s };\n }\n else if (RegExp('^#$').test(c)) {\n commented = true;\n if (out.length){\n return [out, { comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n return [{ comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n else if (c === BS) {\n esc = true;\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else out += c;\n }\n\n if (isGlob) return {op: 'glob', pattern: out};\n\n return out;\n\n function parseEnvVar() {\n i += 1;\n var varend, varname;\n //debugger\n if (s.charAt(i) === '{') {\n i += 1;\n if (s.charAt(i) === '}') {\n throw new Error(\"Bad substitution: \" + s.substr(i - 2, 3));\n }\n varend = s.indexOf('}', i);\n if (varend < 0) {\n throw new Error(\"Bad substitution: \" + s.substr(i));\n }\n varname = s.substr(i, varend - i);\n i = varend;\n }\n else if (/[*@#?$!_\\-]/.test(s.charAt(i))) {\n varname = s.charAt(i);\n i += 1;\n }\n else {\n varend = s.substr(i).match(/[^\\w\\d_]/);\n if (!varend) {\n varname = s.substr(i);\n i = s.length;\n } else {\n varname = s.substr(i, varend.index);\n i += varend.index - 1;\n }\n }\n return getVar(null, '', varname);\n }\n })\n // finalize parsed aruments\n .reduce(function(prev, arg){\n if (arg === undefined){\n return prev;\n }\n return prev.concat(arg);\n },[]);\n\n function getVar (_, pre, key) {\n var r = typeof env === 'function' ? env(key) : env[key];\n if (r === undefined && key != '')\n r = '';\n else if (r === undefined)\n r = '$';\n\n if (typeof r === 'object') {\n return pre + TOKEN + JSON.stringify(r) + TOKEN;\n }\n else return pre + r;\n }\n}\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","var candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\nvar candidateSelector = candidateSelectors.join(',');\n\nvar matches = typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nfunction tabbable(el, options) {\n options = options || {};\n\n var regularTabbables = [];\n var orderedTabbables = [];\n\n var candidates = el.querySelectorAll(candidateSelector);\n\n if (options.includeContainer) {\n if (matches.call(el, candidateSelector)) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var i, candidate, candidateTabindex;\n for (i = 0; i < candidates.length; i++) {\n candidate = candidates[i];\n\n if (!isNodeMatchingSelectorTabbable(candidate)) continue;\n\n candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map(function(a) { return a.node })\n .concat(regularTabbables);\n\n return tabbableNodes;\n}\n\ntabbable.isTabbable = isTabbable;\ntabbable.isFocusable = isFocusable;\n\nfunction isNodeMatchingSelectorTabbable(node) {\n if (\n !isNodeMatchingSelectorFocusable(node)\n || isNonTabbableRadio(node)\n || getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n}\n\nfunction isTabbable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, candidateSelector) === false) return false;\n return isNodeMatchingSelectorTabbable(node);\n}\n\nfunction isNodeMatchingSelectorFocusable(node) {\n if (\n node.disabled\n || isHiddenInput(node)\n || isHidden(node)\n ) {\n return false;\n }\n return true;\n}\n\nvar focusableCandidateSelector = candidateSelectors.concat('iframe').join(',');\nfunction isFocusable(node) {\n if (!node) throw new Error('No node provided');\n if (matches.call(node, focusableCandidateSelector) === false) return false;\n return isNodeMatchingSelectorFocusable(node);\n}\n\nfunction getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n if (!isNaN(tabindexAttr)) return tabindexAttr;\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) return 0;\n return node.tabIndex;\n}\n\nfunction sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n}\n\nfunction isContentEditable(node) {\n return node.contentEditable === 'true';\n}\n\nfunction isInput(node) {\n return node.tagName === 'INPUT';\n}\n\nfunction isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n}\n\nfunction isRadio(node) {\n return isInput(node) && node.type === 'radio';\n}\n\nfunction isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n}\n\nfunction getCheckedRadio(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked) {\n return nodes[i];\n }\n }\n}\n\nfunction isTabbableRadio(node) {\n if (!node.name) return true;\n // This won't account for the edge case where you have radio groups with the same\n // in separate forms on the same page.\n var radioSet = node.ownerDocument.querySelectorAll('input[type=\"radio\"][name=\"' + node.name + '\"]');\n var checked = getCheckedRadio(radioSet);\n return !checked || checked === node;\n}\n\nfunction isHidden(node) {\n // offsetParent being null will allow detecting cases where an element is invisible or inside an invisible element,\n // as long as the element does not use position: fixed. For them, their visibility has to be checked directly as well.\n return node.offsetParent === null || getComputedStyle(node).visibility === 'hidden';\n}\n\nmodule.exports = tabbable;\n","export default function addMethods(worker, methods) {\n\tlet c = 0;\n\tlet callbacks = {};\n\tworker.addEventListener('message', (e) => {\n\t\tlet d = e.data;\n\t\tif (d.type!=='RPC') return;\n\t\tif (d.id) {\n\t\t\tlet f = callbacks[d.id];\n\t\t\tif (f) {\n\t\t\t\tdelete callbacks[d.id];\n\t\t\t\tif (d.error) {\n\t\t\t\t\tf[1](Object.assign(Error(d.error.message), d.error));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tf[0](d.result);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tlet evt = document.createEvent('Event');\n\t\t\tevt.initEvent(d.method, false, false);\n\t\t\tevt.data = d.params;\n\t\t\tworker.dispatchEvent(evt);\n\t\t}\n\t});\n\tmethods.forEach( method => {\n\t\tworker[method] = (...params) => new Promise( (a, b) => {\n\t\t\tlet id = ++c;\n\t\t\tcallbacks[id] = [a, b];\n\t\t\tworker.postMessage({ type: 'RPC', id, method, params });\n\t\t});\n\t});\n}\n","module.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n","'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n let terminateOnDestroy = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (\n (ws.readyState === ws.OPEN || ws.readyState === ws.CLOSING) &&\n !resumeOnReceiverDrain\n ) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSED) {\n process.nextTick(emitClose, this);\n return;\n }\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(emitClose.bind(undefined, this));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n upgrade === undefined ||\n upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onclose(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onerror(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onopen(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onmessage(listener) {}\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n const err = new Error(`Invalid URL: ${websocket.url}`);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalUnixSocket = isUnixSocket;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isUnixSocket\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else {\n const isSameHost = isUnixSocket\n ? websocket._originalUnixSocket\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalUnixSocket\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (err) {\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (extensionNames.length) {\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message =\n 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\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 * @flow strict-local\n */\n\nimport {enableLogger} from 'react-devtools-feature-flags';\n\nexport type LoggerEvent =\n | {\n +event_name: 'loaded-dev-tools',\n }\n | {\n +event_name: 'error',\n +error_message: string | null,\n +error_stack: string | null,\n +error_component_stack: string | null,\n }\n | {\n +event_name: 'selected-components-tab',\n }\n | {\n +event_name: 'selected-profiler-tab',\n }\n | {\n +event_name: 'load-hook-names',\n +event_status: 'success' | 'error' | 'timeout' | 'unknown',\n +duration_ms: number,\n +inspected_element_display_name: string | null,\n +inspected_element_number_of_hooks: number | null,\n }\n | {\n +event_name: 'select-element',\n +metadata: {\n +source: string,\n },\n }\n | {\n +event_name: 'inspect-element-button-clicked',\n }\n | {\n +event_name: 'profiling-start',\n +metadata: {\n +current_tab: string,\n },\n }\n | {\n +event_name: 'profiler-tab-changed',\n +metadata: {\n +tabId: string,\n },\n }\n | {\n +event_name: 'settings-changed',\n +metadata: {\n +key: string,\n +value: any,\n ...\n },\n };\n\nexport type LogFunction = LoggerEvent => void | Promise<void>;\n\nlet logFunctions: Array<LogFunction> = [];\nexport const logEvent: LogFunction =\n enableLogger === true\n ? function logEvent(event: LoggerEvent): void {\n logFunctions.forEach(log => {\n log(event);\n });\n }\n : function logEvent() {};\n\nexport const registerEventLogger: (logFunction: LogFunction) => () => void =\n enableLogger === true\n ? function registerEventLogger(logFunction: LogFunction): () => void {\n if (enableLogger) {\n logFunctions.push(logFunction);\n return function unregisterEventLogger() {\n logFunctions = logFunctions.filter(log => log !== logFunction);\n };\n }\n return () => {};\n }\n : function registerEventLogger(logFunction: LogFunction) {\n return () => {};\n };\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 * @flow strict-local\n */\n\nimport {__PERFORMANCE_PROFILE__} from './constants';\n\nconst supportsUserTiming =\n typeof performance !== 'undefined' &&\n // $FlowFixMe[method-unbinding]\n typeof performance.mark === 'function' &&\n // $FlowFixMe[method-unbinding]\n typeof performance.clearMarks === 'function';\n\nconst supportsPerformanceNow =\n // $FlowFixMe[method-unbinding]\n typeof performance !== 'undefined' && typeof performance.now === 'function';\n\nfunction mark(markName: string): void {\n if (supportsUserTiming) {\n performance.mark(markName + '-start');\n }\n}\n\nfunction measure(markName: string): void {\n if (supportsUserTiming) {\n performance.mark(markName + '-end');\n performance.measure(markName, markName + '-start', markName + '-end');\n performance.clearMarks(markName + '-start');\n performance.clearMarks(markName + '-end');\n }\n}\n\nfunction now(): number {\n if (supportsPerformanceNow) {\n return performance.now();\n }\n return Date.now();\n}\n\nexport async function withAsyncPerfMeasurements<TReturn>(\n markName: string,\n callback: () => Promise<TReturn>,\n onComplete?: number => void,\n): Promise<TReturn> {\n const start = now();\n if (__PERFORMANCE_PROFILE__) {\n mark(markName);\n }\n const result = await callback();\n\n if (__PERFORMANCE_PROFILE__) {\n measure(markName);\n }\n\n if (onComplete != null) {\n const duration = now() - start;\n onComplete(duration);\n }\n\n return result;\n}\n\nexport function withSyncPerfMeasurements<TReturn>(\n markName: string,\n callback: () => TReturn,\n onComplete?: number => void,\n): TReturn {\n const start = now();\n if (__PERFORMANCE_PROFILE__) {\n mark(markName);\n }\n const result = callback();\n\n if (__PERFORMANCE_PROFILE__) {\n measure(markName);\n }\n\n if (onComplete != null) {\n const duration = now() - start;\n onComplete(duration);\n }\n\n return result;\n}\n\nexport function withCallbackPerfMeasurements<TReturn>(\n markName: string,\n callback: (done: () => void) => TReturn,\n onComplete?: number => void,\n): TReturn {\n const start = now();\n if (__PERFORMANCE_PROFILE__) {\n mark(markName);\n }\n\n const done = () => {\n if (__PERFORMANCE_PROFILE__) {\n measure(markName);\n }\n\n if (onComplete != null) {\n const duration = now() - start;\n onComplete(duration);\n }\n };\n return callback(done);\n}\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 * @flow\n */\n\n/************************************************************************\n * This file is forked between different DevTools implementations.\n * It should never be imported directly!\n * It should always be imported from \"react-devtools-feature-flags\".\n ************************************************************************/\n\nexport const enableLogger = false;\nexport const enableStyleXFeatures = false;\nexport const isInternalFacebookBuild = false;\n\n/************************************************************************\n * Do not edit the code below.\n * It ensures this fork exports the same types as the default flags file.\n ************************************************************************/\n\nimport typeof * as FeatureFlagsType from './DevToolsFeatureFlags.default';\nimport typeof * as ExportsType from './DevToolsFeatureFlags.core-oss';\n\n// Flow magic to verify the exports of this file match the original version.\n((((null: any): ExportsType): FeatureFlagsType): ExportsType);\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 * @flow\n */\n\nexport const CHROME_WEBSTORE_EXTENSION_ID = 'fmkadmapgofadopljbjfkapdkoienihi';\nexport const INTERNAL_EXTENSION_ID = 'dnjnjgbfilfphmojnmhliehogmojhclc';\nexport const LOCAL_EXTENSION_ID = 'ikiahnapldjmdmpkmfhjdjilojjhgcbf';\n\n// Flip this flag to true to enable verbose console debug logging.\nexport const __DEBUG__ = false;\n\n// Flip this flag to true to enable performance.mark() and performance.measure() timings.\nexport const __PERFORMANCE_PROFILE__ = false;\n\nexport const TREE_OPERATION_ADD = 1;\nexport const TREE_OPERATION_REMOVE = 2;\nexport const TREE_OPERATION_REORDER_CHILDREN = 3;\nexport const TREE_OPERATION_UPDATE_TREE_BASE_DURATION = 4;\nexport const TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS = 5;\nexport const TREE_OPERATION_REMOVE_ROOT = 6;\nexport const TREE_OPERATION_SET_SUBTREE_MODE = 7;\n\nexport const PROFILING_FLAG_BASIC_SUPPORT = 0b01;\nexport const PROFILING_FLAG_TIMELINE_SUPPORT = 0b10;\n\nexport const LOCAL_STORAGE_DEFAULT_TAB_KEY = 'React::DevTools::defaultTab';\nexport const LOCAL_STORAGE_COMPONENT_FILTER_PREFERENCES_KEY =\n 'React::DevTools::componentFilters';\nexport const SESSION_STORAGE_LAST_SELECTION_KEY =\n 'React::DevTools::lastSelection';\nexport const LOCAL_STORAGE_OPEN_IN_EDITOR_URL =\n 'React::DevTools::openInEditorUrl';\nexport const LOCAL_STORAGE_OPEN_IN_EDITOR_URL_PRESET =\n 'React::DevTools::openInEditorUrlPreset';\nexport const LOCAL_STORAGE_PARSE_HOOK_NAMES_KEY =\n 'React::DevTools::parseHookNames';\nexport const SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY =\n 'React::DevTools::recordChangeDescriptions';\nexport const SESSION_STORAGE_RECORD_TIMELINE_KEY =\n 'React::DevTools::recordTimeline';\nexport const SESSION_STORAGE_RELOAD_AND_PROFILE_KEY =\n 'React::DevTools::reloadAndProfile';\nexport const LOCAL_STORAGE_BROWSER_THEME = 'React::DevTools::theme';\nexport const LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY =\n 'React::DevTools::traceUpdatesEnabled';\nexport const LOCAL_STORAGE_SUPPORTS_PROFILING_KEY =\n 'React::DevTools::supportsProfiling';\n\nexport const PROFILER_EXPORT_VERSION = 5;\n\nexport const FIREFOX_CONSOLE_DIMMING_COLOR = 'color: rgba(124, 124, 124, 0.75)';\nexport const ANSI_STYLE_DIMMING_TEMPLATE = '\\x1b[2;38;2;124;124;124m%s\\x1b[0m';\nexport const ANSI_STYLE_DIMMING_TEMPLATE_WITH_COMPONENT_STACK =\n '\\x1b[2;38;2;124;124;124m%s %o\\x1b[0m';\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 * @flow\n */\n\nimport {__DEBUG__} from 'react-devtools-shared/src/constants';\n\nimport type {HooksTree} from 'react-debug-tools/src/ReactDebugHooks';\nimport type {Thenable, Wakeable} from 'shared/ReactTypes';\nimport type {\n Element,\n HookNames,\n HookSourceLocationKey,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {HookSource} from 'react-debug-tools/src/ReactDebugHooks';\nimport type {FetchFileWithCaching} from 'react-devtools-shared/src/devtools/views/Components/FetchFileWithCachingContext';\nimport {withCallbackPerfMeasurements} from './PerformanceLoggingUtils';\nimport {logEvent} from './Logger';\n\nconst TIMEOUT = 30000;\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\ntype PendingRecord = {\n status: 0,\n value: Wakeable,\n};\n\ntype ResolvedRecord<T> = {\n status: 1,\n value: T,\n};\n\ntype RejectedRecord = {\n status: 2,\n value: null,\n};\n\ntype Record<T> = PendingRecord | ResolvedRecord<T> | RejectedRecord;\n\nfunction readRecord<T>(record: Record<T>): ResolvedRecord<T> | RejectedRecord {\n if (record.status === Resolved) {\n // This is just a type refinement.\n return record;\n } else if (record.status === Rejected) {\n // This is just a type refinement.\n return record;\n } else {\n throw record.value;\n }\n}\n\ntype LoadHookNamesFunction = (\n hookLog: HooksTree,\n fetchFileWithCaching: FetchFileWithCaching | null,\n) => Thenable<HookNames>;\n\n// This is intentionally a module-level Map, rather than a React-managed one.\n// Otherwise, refreshing the inspected element cache would also clear this cache.\n// TODO Rethink this if the React API constraints change.\n// See https://github.com/reactwg/react-18/discussions/25#discussioncomment-980435\nlet map: WeakMap<Element, Record<HookNames>> = new WeakMap();\n\nexport function hasAlreadyLoadedHookNames(element: Element): boolean {\n const record = map.get(element);\n return record != null && record.status === Resolved;\n}\n\nexport function loadHookNames(\n element: Element,\n hooksTree: HooksTree,\n loadHookNamesFunction: LoadHookNamesFunction,\n fetchFileWithCaching: FetchFileWithCaching | null,\n): HookNames | null {\n let record = map.get(element);\n\n if (__DEBUG__) {\n console.groupCollapsed('loadHookNames() record:');\n console.log(record);\n console.groupEnd();\n }\n\n if (!record) {\n const callbacks = new Set<() => mixed>();\n const wakeable: Wakeable = {\n then(callback: () => mixed) {\n callbacks.add(callback);\n },\n\n // Optional property used by Timeline:\n displayName: `Loading hook names for ${element.displayName || 'Unknown'}`,\n };\n\n let timeoutID: $FlowFixMe | null;\n let didTimeout = false;\n let status = 'unknown';\n let resolvedHookNames: HookNames | null = null;\n\n const wake = () => {\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n // This assumes they won't throw.\n callbacks.forEach(callback => callback());\n callbacks.clear();\n };\n\n const handleLoadComplete = (durationMs: number): void => {\n // Log duration for parsing hook names\n logEvent({\n event_name: 'load-hook-names',\n event_status: status,\n duration_ms: durationMs,\n inspected_element_display_name: element.displayName,\n inspected_element_number_of_hooks: resolvedHookNames?.size ?? null,\n });\n };\n\n const newRecord: Record<HookNames> = (record = {\n status: Pending,\n value: wakeable,\n });\n\n withCallbackPerfMeasurements(\n 'loadHookNames',\n done => {\n loadHookNamesFunction(hooksTree, fetchFileWithCaching).then(\n function onSuccess(hookNames) {\n if (didTimeout) {\n return;\n }\n\n if (__DEBUG__) {\n console.log('[hookNamesCache] onSuccess() hookNames:', hookNames);\n }\n\n if (hookNames) {\n const resolvedRecord =\n ((newRecord: any): ResolvedRecord<HookNames>);\n resolvedRecord.status = Resolved;\n resolvedRecord.value = hookNames;\n } else {\n const notFoundRecord = ((newRecord: any): RejectedRecord);\n notFoundRecord.status = Rejected;\n notFoundRecord.value = null;\n }\n\n status = 'success';\n resolvedHookNames = hookNames;\n done();\n wake();\n },\n function onError(error) {\n if (didTimeout) {\n return;\n }\n\n if (__DEBUG__) {\n console.log('[hookNamesCache] onError()');\n }\n\n console.error(error);\n\n const thrownRecord = ((newRecord: any): RejectedRecord);\n thrownRecord.status = Rejected;\n thrownRecord.value = null;\n\n status = 'error';\n done();\n wake();\n },\n );\n\n // Eventually timeout and stop trying to load names.\n timeoutID = setTimeout(function onTimeout() {\n if (__DEBUG__) {\n console.log('[hookNamesCache] onTimeout()');\n }\n\n timeoutID = null;\n\n didTimeout = true;\n\n const timedoutRecord = ((newRecord: any): RejectedRecord);\n timedoutRecord.status = Rejected;\n timedoutRecord.value = null;\n\n status = 'timeout';\n done();\n wake();\n }, TIMEOUT);\n },\n handleLoadComplete,\n );\n map.set(element, record);\n }\n\n const response = readRecord(record).value;\n return response;\n}\n\nexport function getHookSourceLocationKey({\n fileName,\n lineNumber,\n columnNumber,\n}: HookSource): HookSourceLocationKey {\n if (fileName == null || lineNumber == null || columnNumber == null) {\n throw Error('Hook source code location not found.');\n }\n return `${fileName}:${lineNumber}:${columnNumber}`;\n}\n\nexport function clearHookNamesCache(): void {\n map = new WeakMap();\n}\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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"/* Used to detect in JavaScript if apps have loaded styles or not. */\\n:root {\\n --reach-menu-button: 1;\\n}\\n\\n[data-reach-menu] {\\n position: relative;\\n}\\n\\n[data-reach-menu-popover] {\\n display: block;\\n position: absolute;\\n}\\n\\n[data-reach-menu-popover][hidden] {\\n display: none;\\n}\\n\\n[data-reach-menu-list],\\n[data-reach-menu-items] {\\n display: block;\\n white-space: nowrap;\\n border: solid 1px hsla(0, 0%, 0%, 0.25);\\n background: hsla(0, 100%, 100%, 0.99);\\n outline: none;\\n padding: 1rem 0;\\n font-size: 85%;\\n}\\n\\n[data-reach-menu-item] {\\n display: block;\\n user-select: none;\\n}\\n\\n/*\\n The dom structure of a MenuLink is reach-menu-item > a,\\n so to target all items we can use `data-reach-menu-item`\\n*/\\n[data-reach-menu-item] {\\n /*\\n These are styled in one rule instead of something like a[data-reach-menu-item]\\n and li[data-reach-menu-item] so that apps don't have to fight specificity and\\n can style both li and a menu items with one rule,\\n ie: `[data-selected] { background: red; }`.\\n Otherwise they'd have to define two styles, one for a and one for li.\\n */\\n\\n /* reach-menu-item */\\n cursor: pointer;\\n\\n /* a */\\n display: block;\\n color: inherit;\\n font: inherit;\\n text-decoration: initial;\\n\\n /* both */\\n padding: 5px 20px;\\n}\\n\\n/* pseudo pseudo selector */\\n[data-reach-menu-item][data-selected] {\\n background: hsl(211, 81%, 36%);\\n color: white;\\n outline: none;\\n}\\n\\n[data-reach-menu-item][aria-disabled] {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\n --reach-tooltip: 1;\\n}\\n\\n[data-reach-tooltip] {\\n z-index: 1;\\n pointer-events: none;\\n position: absolute;\\n padding: 0.25em 0.5em;\\n box-shadow: 2px 2px 10px hsla(0, 0%, 0%, 0.1);\\n white-space: nowrap;\\n font-size: 85%;\\n background: #f0f0f0;\\n color: #444;\\n border: solid 1px #ccc;\\n}\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ContextMenu___3Zn8W {\\n position: absolute;\\n background-color: var(--color-context-background);\\n box-shadow: 1px 1px 2px var(--color-shadow);\\n border-radius: 0.25rem;\\n overflow: hidden;\\n z-index: 10000002;\\n user-select: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ContextMenu\": \"ContextMenu___3Zn8W\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ContextMenuItem___21C_r {\\n display: flex;\\n align-items: center;\\n color: var(--color-context-text);\\n padding: 0.5rem 0.75rem;\\n cursor: default;\\n border-top: 1px solid var(--color-context-border);\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.ContextMenuItem___21C_r:first-of-type {\\n border-top: none;\\n}\\n\\n.ContextMenuItem___21C_r:hover,\\n.ContextMenuItem___21C_r:focus {\\n outline: 0;\\n background-color: var(--color-context-background-hover);\\n}\\n\\n.ContextMenuItem___21C_r:active {\\n background-color: var(--color-context-background-selected);\\n color: var(--color-context-text-selected);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ContextMenuItem\": \"ContextMenuItem___21C_r\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Button___1-PiG {\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n padding: 0;\\n border-radius: 0.25rem;\\n flex: 0 0 auto;\\n cursor: pointer;\\n}\\n.ButtonContent___2mZ9q {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n\\n.Button___1-PiG:hover {\\n color: var(--color-button-hover);\\n}\\n.Button___1-PiG:active {\\n color: var(--color-button-focus);\\n outline: none;\\n}\\n.Button___1-PiG:focus,\\n.ButtonContent___2mZ9q:focus {\\n outline: none;\\n}\\n\\n.Button___1-PiG:focus > .ButtonContent___2mZ9q {\\n background: var(--color-button-background-focus);\\n}\\n\\n.Button___1-PiG:disabled,\\n.Button___1-PiG:disabled:active {\\n background: var(--color-button-background);\\n color: var(--color-button-disabled);\\n cursor: default;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Button\": \"Button___1-PiG\",\n\t\"ButtonContent\": \"ButtonContent___2mZ9q\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ButtonIcon___1AgYV {\\n width: 1rem;\\n height: 1rem;\\n fill: currentColor;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ButtonIcon\": \"ButtonIcon___1AgYV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Badge___1D92d {\\n display: inline-block;\\n background-color: var(--color-component-badge-background);\\n color: var(--color-text);\\n padding: 0.125rem 0.25rem;\\n line-height: normal;\\n border-radius: 0.125rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Badge\": \"Badge___1D92d\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Components___MlQHS {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n font-family: var(--font-family-sans);\\n}\\n\\n.Components___MlQHS, .Components___MlQHS * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\\n.TreeWrapper___2uPTC {\\n flex: 0 0 var(--horizontal-resize-percentage);\\n overflow: auto;\\n}\\n\\n.InspectedElementWrapper___Ay-WL {\\n flex: 1 1 35%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n}\\n\\n.ResizeBarWrapper___2jVIz {\\n flex: 0 0 0px;\\n position: relative;\\n}\\n\\n.ResizeBar___1o6VK {\\n position: absolute;\\n left: -2px;\\n width: 5px;\\n height: 100%;\\n cursor: ew-resize;\\n}\\n\\n@media screen and (max-width: 600px) {\\n .Components___MlQHS {\\n flex-direction: column;\\n }\\n\\n .TreeWrapper___2uPTC {\\n flex: 0 0 var(--vertical-resize-percentage);\\n }\\n\\n .InspectedElementWrapper___Ay-WL {\\n flex: 1 1 50%;\\n }\\n\\n .ResizeBar___1o6VK {\\n top: -2px;\\n left: 0;\\n width: 100%;\\n height: 5px;\\n cursor: ns-resize;\\n }\\n}\\n\\n.Loading___Slif- {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n border-left: 1px solid var(--color-border);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Components\": \"Components___MlQHS\",\n\t\"TreeWrapper\": \"TreeWrapper___2uPTC\",\n\t\"InspectedElementWrapper\": \"InspectedElementWrapper___Ay-WL\",\n\t\"ResizeBarWrapper\": \"ResizeBarWrapper___2jVIz\",\n\t\"ResizeBar\": \"ResizeBar___1o6VK\",\n\t\"Loading\": \"Loading___Slif-\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Input___2v7pX {\\n flex: 0 1 auto;\\n box-shadow: 0px 1px 3px transparent;\\n color: var(--color-text);\\n}\\n.Input___2v7pX:focus {\\n color: var(--color-text);\\n box-shadow: 0px 1px 3px var(--color-shadow);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Input\": \"Input___2v7pX\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Checkbox___S8zDe {\\n flex: 0 0 auto;\\n align-self: center;\\n margin: 0 0.25rem;\\n}\\n\\n.Input___54okB {\\n flex: 1 1;\\n background: none;\\n border: 1px solid transparent;\\n color: var(--color-attribute-editable-value);\\n border-radius: 0.125rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Invalid___AR4Hd {\\n flex: 1 1;\\n background: none;\\n border: 1px solid transparent;\\n color: var(--color-attribute-editable-value);\\n border-radius: 0.125rem;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid);\\n\\n --color-border: var(--color-text-invalid);\\n}\\n\\n.Input___54okB:focus,\\n.Invalid___AR4Hd:focus {\\n background-color: var(--color-button-background-focus);\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Checkbox\": \"Checkbox___S8zDe\",\n\t\"Input\": \"Input___54okB\",\n\t\"Invalid\": \"Invalid___AR4Hd\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Element___1PGUo,\\n.InactiveSelectedElement___3H2V0,\\n.SelectedElement___2BZuq,\\n.HoveredElement___4tCuC {\\n color: var(--color-component-name);\\n}\\n.HoveredElement___4tCuC {\\n background-color: var(--color-background-hover);\\n}\\n.InactiveSelectedElement___3H2V0 {\\n background-color: var(--color-background-inactive);\\n}\\n\\n.Wrapper___1kRcF {\\n padding: 0 0.25rem;\\n white-space: pre;\\n height: var(--line-height-data);\\n line-height: var(--line-height-data);\\n display: inline-flex;\\n align-items: center;\\n cursor: default;\\n user-select: none;\\n}\\n\\n.SelectedElement___2BZuq {\\n background-color: var(--color-background-selected);\\n color: var(--color-text-selected);\\n\\n /* Invert colors */\\n --color-component-name: var(--color-component-name-inverted);\\n --color-text: var(--color-text-selected);\\n --color-component-badge-background: var(\\n --color-component-badge-background-inverted\\n );\\n --color-forget-badge-background: var(--color-forget-badge-background-inverted);\\n --color-component-badge-count: var(--color-component-badge-count-inverted);\\n --color-attribute-name: var(--color-attribute-name-inverted);\\n --color-attribute-value: var(--color-attribute-value-inverted);\\n --color-expand-collapse-toggle: var(--color-component-name-inverted);\\n}\\n\\n.KeyName___iOoVX {\\n color: var(--color-attribute-name);\\n}\\n\\n.KeyValue___2hQzO {\\n color: var(--color-attribute-value);\\n user-select: text;\\n max-width: 100px;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Highlight___OJ7Ox {\\n background-color: var(--color-search-match);\\n}\\n.CurrentHighlight___3RWa2 {\\n background-color: var(--color-search-match-current);\\n}\\n\\n.ExpandCollapseToggle___3CxPD {\\n display: inline-flex;\\n width: 1rem;\\n height: 1rem;\\n flex: 0 0 1rem;\\n color: var(--color-expand-collapse-toggle);\\n}\\n\\n.BadgesBlock___3slng {\\n margin-left: 0.25rem;\\n}\\n\\n.ErrorIcon___2HE8O,\\n.ErrorIconContrast___25w80,\\n.StrictMode___3TX6u,\\n.StrictModeContrast___f70us,\\n.WarningIcon___3s2DR,\\n.WarningIconContrast___12tJE {\\n height: 0.75rem !important;\\n width: 0.75rem !important;\\n margin-left: 0.25rem;\\n}\\n.ErrorIcon___2HE8O {\\n color: var(--color-console-error-icon);\\n}\\n.StrictMode___3TX6u {\\n color: var(--color-dimmer);\\n}\\n.WarningIcon___3s2DR {\\n color: var(--color-console-warning-icon);\\n}\\n.ErrorIconContrast___25w80, .WarningIconContrast___12tJE {\\n color: var(--color-component-name);\\n}\\n.StrictModeContrast___f70us {\\n color: var(--color-text);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Element\": \"Element___1PGUo\",\n\t\"InactiveSelectedElement\": \"InactiveSelectedElement___3H2V0\",\n\t\"SelectedElement\": \"SelectedElement___2BZuq\",\n\t\"HoveredElement\": \"HoveredElement___4tCuC\",\n\t\"Wrapper\": \"Wrapper___1kRcF\",\n\t\"KeyName\": \"KeyName___iOoVX\",\n\t\"KeyValue\": \"KeyValue___2hQzO\",\n\t\"Highlight\": \"Highlight___OJ7Ox\",\n\t\"CurrentHighlight\": \"CurrentHighlight___3RWa2\",\n\t\"ExpandCollapseToggle\": \"ExpandCollapseToggle___3CxPD\",\n\t\"BadgesBlock\": \"BadgesBlock___3slng\",\n\t\"ErrorIcon\": \"ErrorIcon___2HE8O\",\n\t\"ErrorIconContrast\": \"ErrorIconContrast___25w80\",\n\t\"StrictMode\": \"StrictMode___3TX6u\",\n\t\"StrictModeContrast\": \"StrictModeContrast___f70us\",\n\t\"WarningIcon\": \"WarningIcon___3s2DR\",\n\t\"WarningIconContrast\": \"WarningIconContrast___12tJE\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Root___1QJSV {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.Root___1QJSV *:not(:first-child) {\\n margin-left: 0.25rem;\\n}\\n\\n.ExtraLabel___1iRgy {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n color: var(--color-component-badge-count);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Root\": \"Root___1QJSV\",\n\t\"ExtraLabel\": \"ExtraLabel___1iRgy\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExpandCollapseToggle___1eSq5 {\\n flex: 0 0 1rem;\\n width: 1rem;\\n height: 1rem;\\n padding: 0;\\n color: var(--color-expand-collapse-toggle);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ExpandCollapseToggle\": \"ExpandCollapseToggle___1eSq5\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Root___1SOz8 {\\n background-color: var(--color-forget-badge-background);\\n color: var(--color-forget-text);\\n padding-right: 1.75em;\\n position: relative;\\n}\\n\\n.Root___1SOz8::after {\\n bottom: 0;\\n content: '\\\\2728';\\n position: absolute;\\n right: 0.25em;\\n}\\n\\n.ForgetToggle___1uQnC {\\n display: flex;\\n}\\n\\n.ForgetToggle___1uQnC > span { /* targets .ToggleContent */\\n padding: 0;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Root\": \"Root___1SOz8\",\n\t\"ForgetToggle\": \"ForgetToggle___1uQnC\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Root___3cj5Y {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.Root___3cj5Y *:not(:first-child) {\\n margin-left: 0.25rem;\\n}\\n\\n.ExtraLabel___1PNYs {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n color: var(--color-component-badge-count);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Root\": \"Root___3cj5Y\",\n\t\"ExtraLabel\": \"ExtraLabel___1PNYs\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".InspectedElement___gy6ot {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n width: 100%;\\n border-left: 1px solid var(--color-border);\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.TitleRow___2UUrj {\\n flex: 0 0 42px;\\n display: flex;\\n align-items: center;\\n font-size: var(--font-size-monospace-large);\\n border-bottom: 1px solid var(--color-border);\\n padding: 0.5rem;\\n}\\n\\n.Key___1eadz {\\n flex: 0 1 auto;\\n padding-left: 0.25rem;\\n padding-right: 0.125rem;\\n line-height: 1rem;\\n border-top-left-radius: 0.125rem;\\n border-bottom-left-radius: 0.125rem;\\n display: inline-block;\\n background-color: var(--color-component-badge-background);\\n color: var(--color-text);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.KeyArrow___2TKpc {\\n height: 1rem;\\n width: 1rem;\\n margin-right: -0.25rem;\\n border: 0.5rem solid transparent;\\n border-left: 0.5rem solid var(--color-component-badge-background);\\n}\\n\\n.SelectedComponentName___3ByrZ {\\n flex: 1 1 auto;\\n overflow: hidden;\\n display: flex;\\n padding: 0.25rem 0;\\n height: 100%;\\n align-items: flex-end;\\n}\\n\\n.ComponentName___23q5J {\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.StrictModeNonCompliantComponentName___2soUc {\\n color: var(--color-console-error-icon);\\n}\\n\\n.Loading___1cYSg {\\n padding: 0.25rem;\\n color: var(--color-dimmer);\\n font-style: italic;\\n border-left: 1px solid var(--color-border);\\n}\\n\\n.StrictModeNonCompliant___2P55H {\\n display: inline-flex;\\n padding: 0.25rem;\\n color: var(--color-console-error-icon);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"InspectedElement\": \"InspectedElement___gy6ot\",\n\t\"TitleRow\": \"TitleRow___2UUrj\",\n\t\"Key\": \"Key___1eadz\",\n\t\"KeyArrow\": \"KeyArrow___2TKpc\",\n\t\"SelectedComponentName\": \"SelectedComponentName___3ByrZ\",\n\t\"ComponentName\": \"ComponentName___23q5J\",\n\t\"StrictModeNonCompliantComponentName\": \"StrictModeNonCompliantComponentName___2soUc\",\n\t\"Loading\": \"Loading___1cYSg\",\n\t\"StrictModeNonCompliant\": \"StrictModeNonCompliant___2P55H\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Root___16YHd {\\n user-select: none;\\n display: inline-flex;\\n}\\n\\n.Root___16YHd *:not(:first-child) {\\n margin-left: 0.25rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Root\": \"Root___16YHd\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Wrapper___15kcB {\\n height: 100%;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Wrapper\": \"Wrapper___15kcB\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ErrorTree___OauA_, .WarningTree___2O5xr {\\n padding: 0.25rem 0 0 0;\\n}\\n\\n.HeaderRow___2Y3QM {\\n padding: 0 0.25rem;\\n}\\n\\n.HeaderRow___2Y3QM {\\n padding: 0 0.25rem;\\n}\\n\\n.Error___CORL1, .Warning___zqCFY {\\n padding: 0 0.5rem;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Error___CORL1 {\\n border-top: 1px solid var(--color-console-error-border);\\n background-color: var(--color-console-error-background);\\n color: var(--color-error-text);\\n padding: 0 0.5rem;\\n}\\n\\n.Warning___zqCFY {\\n border-top: 1px solid var(--color-console-warning-border);\\n background-color: var(--color-console-warning-background);\\n color: var(--color-warning-text);\\n padding: 0 0.5rem;\\n}\\n\\n.Message___Ky3Dl {\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.ErrorBadge___MKpI8,\\n.WarningBadge___22U6H {\\n display: inline-block;\\n width: 0.75rem;\\n height: 0.75rem;\\n flex: 0 0 0.75rem;\\n line-height: 0.75rem;\\n text-align: center;\\n border-radius: 0.25rem;\\n margin-right: 0.25rem;\\n font-size: var(--font-size-monospace-small);\\n}\\n\\n.ErrorBadge___MKpI8 {\\n background-color: var(--color-console-error-icon);\\n color: var(--color-console-error-badge-text);\\n}\\n\\n.WarningBadge___22U6H {\\n background-color: var(--color-console-warning-icon);\\n color: var(--color-console-warning-badge-text);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ErrorTree\": \"ErrorTree___OauA_\",\n\t\"WarningTree\": \"WarningTree___2O5xr\",\n\t\"HeaderRow\": \"HeaderRow___2Y3QM\",\n\t\"Error\": \"Error___CORL1\",\n\t\"Warning\": \"Warning___zqCFY\",\n\t\"Message\": \"Message___Ky3Dl\",\n\t\"ErrorBadge\": \"ErrorBadge___MKpI8\",\n\t\"WarningBadge\": \"WarningBadge___22U6H\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Hook___SbvM_ {\\n}\\n\\n.Children___1f8xt {\\n padding-left: 1rem;\\n}\\n\\n.HeaderRow___37mMe {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___9n-jL {\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.NameValueRow___1dbuI {\\n display: flex;\\n}\\n\\n.Name___3oYR1,\\n.NameAnonymous___W-cy2 {\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n.Name___3oYR1 {\\n color: var(--color-dim);\\n}\\n.NameAnonymous___W-cy2 {\\n color: var(--color-dimmer);\\n}\\n\\n.EditableName___1m4Hy {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n.EditableName___1m4Hy:after,\\n.Name___3oYR1:after {\\n color: var(--color-text);\\n content: ': ';\\n margin-right: 0.5rem;\\n}\\n\\n.Value___3tDyC {\\n color: var(--color-attribute-value);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n cursor: default;\\n white-space: nowrap;\\n}\\n\\n.None___dHntG {\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n.TruncationIndicator___fImBc {\\n color: var(--color-dimmer);\\n}\\n\\n.ExpandCollapseToggleSpacer___2RAvX {\\n flex: 0 0 1rem;\\n width: 1rem;\\n}\\n\\n.PrimitiveHookNumber___1ZHtG {\\n background-color: var(--color-primitive-hook-badge-background);\\n color: var(--color-primitive-hook-badge-text);\\n font-size: var(--font-size-monospace-small);\\n margin-right: 0.25rem;\\n border-radius: 0.125rem;\\n padding: 0.125rem 0.25rem;\\n}\\n\\n.HookName___3Pr8I {\\n color: var(--color-component-name);\\n}\\n\\n.ToggleError___2AMCP {\\n color: var(--color-error-text);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Hook\": \"Hook___SbvM_\",\n\t\"Children\": \"Children___1f8xt\",\n\t\"HeaderRow\": \"HeaderRow___37mMe\",\n\t\"Header\": \"Header___9n-jL\",\n\t\"NameValueRow\": \"NameValueRow___1dbuI\",\n\t\"Name\": \"Name___3oYR1\",\n\t\"NameAnonymous\": \"NameAnonymous___W-cy2\",\n\t\"EditableName\": \"EditableName___1m4Hy\",\n\t\"Value\": \"Value___3tDyC\",\n\t\"None\": \"None___dHntG\",\n\t\"TruncationIndicator\": \"TruncationIndicator___fImBc\",\n\t\"ExpandCollapseToggleSpacer\": \"ExpandCollapseToggleSpacer___2RAvX\",\n\t\"PrimitiveHookNumber\": \"PrimitiveHookNumber___1ZHtG\",\n\t\"HookName\": \"HookName___3Pr8I\",\n\t\"ToggleError\": \"ToggleError___2AMCP\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HeaderRow___3I5kU {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___2LZLy {\\n display: flex;\\n align-items: center;\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.Item___3t7sh {\\n display: flex;\\n}\\n\\n.Name___6619F {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n}\\n.Name___6619F:after {\\n content: ': ';\\n color: var(--color-text);\\n margin-right: 0.5rem;\\n}\\n\\n.Value___na2y1 {\\n color: var(--color-attribute-value);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.None___1ezJC {\\n color: var(--color-dimmer);\\n font-style: italic;\\n}\\n\\n.Empty___2hAqe {\\n color: var(--color-dimmer);\\n font-style: italic;\\n padding-left: 0.75rem;\\n}\\n\\n.ToggleSuspenseRow___3Abo4 {\\n padding-left: 1rem;\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableValue___2B5lx {\\n min-width: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"HeaderRow\": \"HeaderRow___3I5kU\",\n\t\"Header\": \"Header___2LZLy\",\n\t\"Item\": \"Item___3t7sh\",\n\t\"Name\": \"Name___6619F\",\n\t\"Value\": \"Value___na2y1\",\n\t\"None\": \"None___1ezJC\",\n\t\"Empty\": \"Empty___2hAqe\",\n\t\"ToggleSuspenseRow\": \"ToggleSuspenseRow___3Abo4\",\n\t\"EditableValue\": \"EditableValue___2B5lx\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SourceHeaderRow___11O5s {\\n display: flex;\\n align-items: center;\\n min-height: 24px;\\n}\\n\\n.SourceHeader___z9MSo {\\n flex: 1 1;\\n font-family: var(--font-family-sans);\\n}\\n\\n.SourceOneLiner____wx6W {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n margin-left: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"SourceHeaderRow\": \"SourceHeaderRow___11O5s\",\n\t\"SourceHeader\": \"SourceHeader___z9MSo\",\n\t\"SourceOneLiner\": \"SourceOneLiner____wx6W\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Source___DuiDm {\\n color: var(--color-dim);\\n margin-left: 1rem;\\n overflow: auto;\\n text-overflow: ellipsis;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Source\": \"Source___DuiDm\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".OwnersHeader___3Yv3d {\\n font-family: var(--font-family-sans);\\n}\\n\\n.Owner___3pCT- {\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 100%;\\n}\\n\\n.InspectedElement___AIaEa {\\n overflow-x: hidden;\\n overflow-y: auto;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n line-height: var(--line-height-data);\\n}\\n\\n.InspectedElementSection___cKzj1:not(:empty) {\\n padding: 0.25rem;\\n\\n &:not(:last-of-type) {\\n border-bottom: 1px solid var(--color-border);\\n }\\n}\\n\\n.Owner___3pCT- {\\n border-radius: 0.25rem;\\n padding: 0.125rem 0.25rem;\\n background: none;\\n border: none;\\n display: block;\\n}\\n.Owner___3pCT-:focus {\\n outline: none;\\n background-color: var(--color-button-background-focus);\\n}\\n\\n.NotInStore___1AhKj {\\n color: var(--color-dim);\\n cursor: default;\\n}\\n\\n.OwnerButton___1ZvI9 {\\n cursor: pointer;\\n width: 100%;\\n padding: 0;\\n}\\n\\n.OwnerContent___1S1aF {\\n display: flex;\\n align-items: center;\\n padding-left: 1rem;\\n width: 100%;\\n border-radius: 0.25rem;\\n}\\n\\n.OwnerContent___1S1aF:hover {\\n background-color: var(--color-background-hover);\\n}\\n\\n.OwnersMetaField___ot46- {\\n padding-left: 1.25rem;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"OwnersHeader\": \"OwnersHeader___3Yv3d\",\n\t\"Owner\": \"Owner___3pCT-\",\n\t\"InspectedElement\": \"InspectedElement___AIaEa\",\n\t\"InspectedElementSection\": \"InspectedElementSection___cKzj1\",\n\t\"NotInStore\": \"NotInStore___1AhKj\",\n\t\"OwnerButton\": \"OwnerButton___1ZvI9\",\n\t\"OwnerContent\": \"OwnerContent___1S1aF\",\n\t\"OwnersMetaField\": \"OwnersMetaField___ot46-\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Item___2n2qv:not([hidden]) {\\n display: flex;\\n}\\n\\n.Name___3LSJX {\\n color: var(--color-attribute-name-not-editable);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n\\n.EditableName___2TyRo {\\n color: var(--color-attribute-name);\\n flex: 0 0 auto;\\n cursor: default;\\n}\\n\\n.AfterName___1HlGw {\\n color: var(--color-text);\\n margin-right: 0.5rem;\\n}\\n\\n.Value___7p123 {\\n color: var(--color-attribute-value);\\n white-space: pre;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n cursor: default;\\n flex: 1;\\n}\\n\\n.Link___35OsV {\\n color: var(--color-link);\\n white-space: pre;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n flex: 1;\\n cursor: pointer;\\n border-radius: 0.125rem;\\n padding: 0px 2px;\\n}\\n\\n.Link___35OsV:hover {\\n background-color: var(--color-background-hover);\\n}\\n\\n\\n.ExpandCollapseToggleSpacer___3KNWO {\\n flex: 0 0 1rem;\\n width: 1rem;\\n}\\n\\n.DeleteArrayItemButton___1R-pd {\\n padding: 0;\\n margin-right: 0.125rem;\\n}\\n\\n.HookName___1ZjVf {\\n color: var(--color-component-name);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Item\": \"Item___2n2qv\",\n\t\"Name\": \"Name___3LSJX\",\n\t\"EditableName\": \"EditableName___2TyRo\",\n\t\"AfterName\": \"AfterName___1HlGw\",\n\t\"Value\": \"Value___7p123\",\n\t\"Link\": \"Link___35OsV\",\n\t\"ExpandCollapseToggleSpacer\": \"ExpandCollapseToggleSpacer___3KNWO\",\n\t\"DeleteArrayItemButton\": \"DeleteArrayItemButton___1R-pd\",\n\t\"HookName\": \"HookName___1ZjVf\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ContextMenuItemContent___2tDzo {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ContextMenuItemContent\": \"ContextMenuItemContent___2tDzo\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Icon___2CecY {\\n width: 1rem;\\n height: 1rem;\\n fill: currentColor;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Icon\": \"Icon___2CecY\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Input___2Lqoc {\\n min-width: 0.5rem;\\n flex: 1 1 auto;\\n border: none;\\n background: transparent;\\n outline: none;\\n padding: 0;\\n border: none;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Input___2Lqoc:focus {\\n border-color: var(--color-border);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Input\": \"Input___2Lqoc\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".LayoutViewer___215Ad {\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n}\\n\\n.Header___YXSRg {\\n font-family: var(--font-family-sans);\\n}\\n\\n.DashedBox___i8dxS,\\n.SolidBox___1W-UG {\\n flex: 1 1 auto;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n border-width: 1px;\\n border-color: var(--color-dim);\\n padding: 0.25rem;\\n margin: 0.25rem;\\n}\\n.DashedBox___i8dxS {\\n border-style: dashed;\\n}\\n.SolidBox___1W-UG {\\n border-style: solid;\\n}\\n\\n.LabelRow___2SQOh {\\n width: 100%;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Label___IskVY {\\n position: absolute;\\n left: 0.5rem;\\n flex: 1 0 100px;\\n color: var(--color-attribute-name);\\n}\\n\\n.BoxRow___2_1as {\\n width: 100%;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"LayoutViewer\": \"LayoutViewer___215Ad\",\n\t\"Header\": \"Header___YXSRg\",\n\t\"DashedBox\": \"DashedBox___i8dxS\",\n\t\"SolidBox\": \"SolidBox___1W-UG\",\n\t\"LabelRow\": \"LabelRow___2SQOh\",\n\t\"Label\": \"Label___IskVY\",\n\t\"BoxRow\": \"BoxRow___2_1as\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StyleEditor___1RvzE {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n padding: 0.25rem;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.HeaderRow___xyA6t {\\n display: flex;\\n align-items: center;\\n}\\n\\n.Header___2SGfE {\\n flex: 1 1;\\n}\\n\\n.Brackets___2zA4K {\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-small);\\n}\\n\\n.Row___3v8mp {\\n white-space: nowrap;\\n padding-left: 1rem;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Invalid___3ogBH {\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid);\\n\\n --color-border: var(--color-text-invalid);\\n}\\n.Attribute___2yC0c {\\n color: var(--color-attribute-name);\\n}\\n\\n.Value___1yJUg {\\n color: var(--color-attribute-value);\\n}\\n\\n.Input___3Zdnf {\\n flex: 0 1 auto;\\n padding: 1px;\\n box-shadow: 0px 1px 3px transparent;\\n}\\n.Input___3Zdnf:focus {\\n color: var(--color-text);\\n box-shadow: 0px 1px 3px var(--color-shadow);\\n}\\n\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"StyleEditor\": \"StyleEditor___1RvzE\",\n\t\"HeaderRow\": \"HeaderRow___xyA6t\",\n\t\"Header\": \"Header___2SGfE\",\n\t\"Brackets\": \"Brackets___2zA4K\",\n\t\"Row\": \"Row___3v8mp\",\n\t\"Invalid\": \"Invalid___3ogBH\",\n\t\"Attribute\": \"Attribute___2yC0c\",\n\t\"Value\": \"Value___1yJUg\",\n\t\"Input\": \"Input___3Zdnf\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NewArrayValue___3rHoU {\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableName___3OJ36 {\\n margin-left: 1rem;\\n}\\n\\n.Invalid___1sVw9 {\\n background-color: var(--color-background-invalid);\\n color: var(--color-text-invalid) !important;\\n}\\n\\n.Invalid___1sVw9:focus {\\n background-color: var(--color-button-background-focus);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NewArrayValue\": \"NewArrayValue___3rHoU\",\n\t\"EditableName\": \"EditableName___3OJ36\",\n\t\"Invalid\": \"Invalid___1sVw9\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NewKeyValue___34r7B {\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.EditableName___2W--L {\\n margin-left: 1rem;\\n}\\n\\n.EditableValue___16Q0K {\\n min-width: 1rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NewKeyValue\": \"NewKeyValue___34r7B\",\n\t\"EditableName\": \"EditableName___2W--L\",\n\t\"EditableValue\": \"EditableValue___16Q0K\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".OwnerStack___32qwj {\\n max-width: 100%;\\n overflow-x: auto;\\n flex: 1;\\n display: flex;\\n align-items: center;\\n position: relative;\\n}\\n\\n.Component___3e3s7,\\n.Component___3e3s7[data-reach-menu-item] {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n user-select: none;\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Component___3e3s7[data-reach-menu-item][data-selected],\\n.Component___3e3s7[data-reach-menu-item][data-selected]:hover {\\n color: var(--color-text-selected);\\n background: var(--color-background-selected);\\n}\\n.Component___3e3s7[data-reach-menu-item][data-selected]:focus {\\n outline: none;\\n}\\n\\n.Bar___3G3dX {\\n display: flex;\\n flex: 1 1 auto;\\n overflow-x: auto;\\n}\\n\\n.VRule___IJYKJ {\\n flex: 0 0 auto;\\n height: 20px;\\n width: 1px;\\n background-color: var(--color-border);\\n margin: 0 0.5rem;\\n}\\n\\n.MenuButton___3te3U {\\n border-radius: 0.25rem;\\n display: inline-flex;\\n align-items: center;\\n padding: 0;\\n flex: 0 0 auto;\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n}\\n.MenuButtonContent___3VvHH {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n.MenuButton___3te3U:hover {\\n color: var(--color-button-hover);\\n}\\n.MenuButton___3te3U[aria-expanded='true'],\\n.MenuButton___3te3U[aria-expanded='true']:active {\\n color: var(--color-button-active);\\n outline: none;\\n}\\n\\n.MenuButton___3te3U:focus,\\n.MenuButtonContent___3VvHH:focus {\\n outline: none;\\n}\\n.MenuButton___3te3U:focus > .MenuButtonContent___3VvHH {\\n background: var(--color-button-background-focus);\\n}\\n\\n.Modal___8b8bs[data-reach-menu-list] {\\n display: inline-flex;\\n flex-direction: column;\\n background-color: var(--color-background);\\n color: var(--color-button);\\n padding: 0.25rem 0;\\n padding-right: 0;\\n border: 1px solid var(--color-border);\\n border-radius: 0.25rem;\\n max-height: 10rem;\\n overflow: auto;\\n\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n position: relative;\\n\\n /* Reach UI tries to set its own :( */\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.NotInStore___3Y2P2,\\n.NotInStore___3Y2P2:hover {\\n color: var(--color-dimmest);\\n}\\n\\n.BadgesBlock___3JijI {\\n margin-left: 0.25rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"OwnerStack\": \"OwnerStack___32qwj\",\n\t\"Component\": \"Component___3e3s7\",\n\t\"Bar\": \"Bar___3G3dX\",\n\t\"VRule\": \"VRule___IJYKJ\",\n\t\"MenuButton\": \"MenuButton___3te3U\",\n\t\"MenuButtonContent\": \"MenuButtonContent___3VvHH\",\n\t\"Modal\": \"Modal___8b8bs\",\n\t\"NotInStore\": \"NotInStore___3Y2P2\",\n\t\"BadgesBlock\": \"BadgesBlock___3JijI\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Active___3Y5D2,\\n.Inactive___2Ddkx {\\n position: absolute;\\n left: 0;\\n width: 100%;\\n z-index: 0;\\n pointer-events: none;\\n}\\n\\n.Active___3Y5D2 {\\n background-color: var(--color-selected-tree-highlight-active);\\n}\\n\\n.Inactive___2Ddkx {\\n background-color: var(--color-selected-tree-highlight-inactive);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Active\": \"Active___3Y5D2\",\n\t\"Inactive\": \"Inactive___2Ddkx\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".root___2g2n_ {\\n border-radius: 0.25rem;\\n animation: pulse___20gcg 2s infinite;\\n}\\n\\n@keyframes pulse___20gcg {\\n 0%, 100% {\\n background-color: var(--color-dim);\\n }\\n 50% {\\n background-color: var(--color-dimmest)\\n }\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"root\": \"root___2g2n_\",\n\t\"pulse\": \"pulse___20gcg\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tree___3Pjje {\\n position: relative;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n border-top: 1px solid var(--color-border);\\n\\n /* Default size will be adjusted by Tree after scrolling */\\n --indentation-size: 12px;\\n}\\n\\n.List___qlOJG {\\n overflow-x: hidden !important;\\n}\\n\\n.InnerElementType___1csGF {\\n overflow-x: hidden;\\n}\\n\\n.SearchInput___1Q2I_ {\\n flex: 0 0 42px;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n padding: 0.5rem;\\n}\\n\\n.AutoSizerWrapper___3IcMr {\\n width: 100%;\\n overflow: hidden;\\n flex: 1 0 auto;\\n}\\n.AutoSizerWrapper___3IcMr:focus {\\n outline: none;\\n}\\n\\n.List___qlOJG {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n line-height: var(--line-height-data);\\n}\\n\\n.VRule___3yG5q {\\n height: 20px;\\n width: 1px;\\n flex: 0 0 1px;\\n margin: 0 0.5rem;\\n background-color: var(--color-border);\\n}\\n\\n.Loading___TrqnR {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n flex: 1;\\n justify-content: flex-start;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\\n.IconAndCount___1CZUm {\\n display: flex;\\n align-items: center;\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.ErrorIcon___1SNsZ, .WarningIcon___23GHe {\\n width: 0.75rem;\\n height: 0.75rem;\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n flex: 0 0 auto;\\n}\\n.ErrorIcon___1SNsZ {\\n color: var(--color-console-error-icon);\\n}\\n.WarningIcon___23GHe {\\n color: var(--color-console-warning-icon);\\n}\\n\\n.ZeroElementsNotice___1e7ln {\\n padding-left: 1em;\\n opacity: 0;\\n animation: fadeIn___3yIM4 0.5s forwards;\\n animation-delay: 2s;\\n}\\n@keyframes fadeIn___3yIM4 {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n.Link___wwMB5 {\\n color: var(--color-button-active);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tree\": \"Tree___3Pjje\",\n\t\"List\": \"List___qlOJG\",\n\t\"InnerElementType\": \"InnerElementType___1csGF\",\n\t\"SearchInput\": \"SearchInput___1Q2I_\",\n\t\"AutoSizerWrapper\": \"AutoSizerWrapper___3IcMr\",\n\t\"VRule\": \"VRule___3yG5q\",\n\t\"Loading\": \"Loading___TrqnR\",\n\t\"IconAndCount\": \"IconAndCount___1CZUm\",\n\t\"ErrorIcon\": \"ErrorIcon___1SNsZ\",\n\t\"WarningIcon\": \"WarningIcon___23GHe\",\n\t\"ZeroElementsNotice\": \"ZeroElementsNotice___1e7ln\",\n\t\"fadeIn\": \"fadeIn___3yIM4\",\n\t\"Link\": \"Link___wwMB5\"\n};","exports = module.exports = require(\"../../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tooltip___2QcDY {\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0.25rem 0.5rem;\\n font-family: var(--font-family-sans);\\n font-size: 12px;\\n background-color: var(--color-tooltip-background);\\n color: var(--color-tooltip-text);\\n box-shadow: 1px 1px 2px var(--color-shadow);\\n\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tooltip\": \"Tooltip___2QcDY\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DevTools___NAxvy {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n}\\n\\n.TabBar___2aDHU {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n padding: 0 0.5rem;\\n background-color: var(--color-background);\\n border-top: 1px solid var(--color-border);\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-large);\\n user-select: none;\\n\\n /* Electron drag area */\\n -webkit-app-region: drag;\\n}\\n\\n.Spacer___1VPRF {\\n flex: 1;\\n}\\n\\n.TabContent___27Qz1 {\\n flex: 1 1 100%;\\n overflow: auto;\\n -webkit-app-region: no-drag;\\n}\\n\\n.DevToolsVersion___3_3UD {\\n font-size: var(--font-size-sans-normal);\\n margin-right: 0.5rem;\\n}\\n\\n.DevToolsVersion___3_3UD:before {\\n font-size: var(--font-size-sans-large);\\n content: 'DevTools ';\\n}\\n\\n@media screen and (max-width: 400px) {\\n .DevToolsVersion___3_3UD:before {\\n content: '';\\n }\\n}\\n\\n@media screen and (max-width: 300px) {\\n .DevToolsVersion___3_3UD {\\n display: none;\\n }\\n}\\n\\n.DevTools___NAxvy, .DevTools___NAxvy * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"DevTools\": \"DevTools___NAxvy\",\n\t\"TabBar\": \"TabBar___2aDHU\",\n\t\"Spacer\": \"Spacer___1VPRF\",\n\t\"TabContent\": \"TabContent___27Qz1\",\n\t\"DevToolsVersion\": \"DevToolsVersion___3_3UD\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".GitHubLinkRow___1Ubg1 {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: auto;\\n padding: 0.25rem 0.5rem;\\n background: var(--color-console-warning-background);\\n color: var(--color-text);\\n border-bottom: 1px solid var(--color-console-warning-border);\\n border-top: 1px solid var(--color-console-warning-border);\\n}\\n\\n.WorkplaceGroupRow___2bkPD {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: auto;\\n padding: 0.25rem 0.5rem;\\n background: var(--color-background-hover);\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.ErrorBoundary___2iFtc {\\n height: 100%;\\n width: 100%;\\n background-color: var(--color-background);\\n display: flex;\\n flex-direction: column;\\n border: 1px solid var(--color-border);\\n}\\n\\n.ErrorInfo___3rbAr {\\n padding: 0.5rem;\\n overflow: auto;\\n}\\n\\n.HeaderRow___1yCa9 {\\n display: flex;\\n flex-direction: row;\\n font-size: var(--font-size-sans-large);\\n font-weight: bold;\\n}\\n\\n.ErrorHeader___Ck9BV,\\n.TimeoutHeader___2_O9L {\\n flex: 1 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n min-width: 0;\\n}\\n\\n.ErrorHeader___Ck9BV {\\n color: var(--color-error-text);\\n}\\n.TimeoutHeader___2_O9L {\\n color: var(--color-text);\\n}\\n\\n.ErrorStack___xWW5M,\\n.TimeoutStack___31pZb {\\n margin-top: 0.5rem;\\n white-space: pre-wrap;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n -webkit-font-smoothing: initial;\\n border-radius: 0.25rem;\\n padding: 0.5rem;\\n overflow: auto;\\n}\\n\\n.ErrorStack___xWW5M {\\n background-color: var(--color-error-background);\\n border: 1px solid var(--color-error-border);\\n color: var(--color-error-text);\\n}\\n\\n.TimeoutStack___31pZb {\\n background-color: var(--color-console-warning-background);\\n color: var(--color-console-warning-text);\\n border: var(--color-console-warning-border)\\n}\\n\\n.LoadingIcon___2Ox_q {\\n margin-right: 0.25rem;\\n}\\n\\n.ReportIcon___163qD {\\n margin-right: 0.25rem;\\n}\\n\\n.ReportLink___1RRG6 {\\n color: var(--color-link);\\n}\\n\\n.FacebookOnly___1Q5yi {\\n margin-left: 0.25rem;\\n}\\n\\n.ReproSteps___21X2x {\\n margin-left: 0.25rem;\\n color: var(--color-console-warning-text);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n min-width: 0;\\n}\\n\\n.UpdateExistingIssuePrompt___1AP89 {\\n margin-right: 0.25rem;\\n color: var(--color-console-warning-text);\\n}\\n\\n.CloseButton___19JNk {\\n font-weight: bold;\\n}\\n\\n.CloseButtonIcon___Fp6qN {\\n margin-left: 0.25rem;\\n}\\n\\n.InfoBox___9MO75 {\\n margin-top: 0.5rem;\\n background: var(--color-console-warning-background);\\n border: 1px solid var(--color-console-warning-border);\\n padding: 0.25rem 0.5rem;\\n border-radius: 0.5rem;\\n color: var(--color-console-warning-text);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"GitHubLinkRow\": \"GitHubLinkRow___1Ubg1\",\n\t\"WorkplaceGroupRow\": \"WorkplaceGroupRow___2bkPD\",\n\t\"ErrorBoundary\": \"ErrorBoundary___2iFtc\",\n\t\"ErrorInfo\": \"ErrorInfo___3rbAr\",\n\t\"HeaderRow\": \"HeaderRow___1yCa9\",\n\t\"ErrorHeader\": \"ErrorHeader___Ck9BV\",\n\t\"TimeoutHeader\": \"TimeoutHeader___2_O9L\",\n\t\"ErrorStack\": \"ErrorStack___xWW5M\",\n\t\"TimeoutStack\": \"TimeoutStack___31pZb\",\n\t\"LoadingIcon\": \"LoadingIcon___2Ox_q\",\n\t\"ReportIcon\": \"ReportIcon___163qD\",\n\t\"ReportLink\": \"ReportLink___1RRG6\",\n\t\"FacebookOnly\": \"FacebookOnly___1Q5yi\",\n\t\"ReproSteps\": \"ReproSteps___21X2x\",\n\t\"UpdateExistingIssuePrompt\": \"UpdateExistingIssuePrompt___1AP89\",\n\t\"CloseButton\": \"CloseButton___19JNk\",\n\t\"CloseButtonIcon\": \"CloseButtonIcon___Fp6qN\",\n\t\"InfoBox\": \"InfoBox___9MO75\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Icon___v5HwN {\\n width: 1rem;\\n height: 1rem;\\n fill: currentColor;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Icon\": \"Icon___v5HwN\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Background___39iOi {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n justify-content: center;\\n padding: 1rem;\\n background-color: var(--color-modal-background);\\n overflow: auto;\\n}\\n\\n.Dialog___2XI77 {\\n position: relative;\\n z-index: 3;\\n margin: 0 0.25rem;\\n width: 25rem;\\n min-width: 20rem;\\n max-width: 100%;\\n display: inline-block;\\n background-color: var(--color-background);\\n box-shadow: 0 2px 4px var(--color-shadow);\\n padding: 0.5rem;\\n border: 1px solid var(--color-border);\\n border-radius: 0.25rem;\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.Title___1FtK3 {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.Buttons___3N6w8 {\\n text-align: right;\\n margin-top: 0.5rem;\\n}\\n\\n.Button___3JNc2 {\\n font-size: var(--font-size-sans-large);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Background\": \"Background___39iOi\",\n\t\"Dialog\": \"Dialog___2XI77\",\n\t\"Title\": \"Title___1FtK3\",\n\t\"Buttons\": \"Buttons___3N6w8\",\n\t\"Button\": \"Button___3JNc2\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Group___2hArG {\\n transition: all ease-in-out 250ms;\\n}\\n\\n.Rect___fBfs_ {\\n cursor: pointer;\\n stroke: var(--color-background);\\n transition: all ease-in-out 250ms;\\n}\\n\\n.ForeignObject___2EdVc {\\n pointer-events: none;\\n transition: all ease-in-out 250ms;\\n}\\n\\n.Div___1Pgrm {\\n pointer-events: none;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n line-height: 1.5;\\n padding: 0 0 0;\\n font-weight: 400;\\n color: var(--color-commit-gradient-text);\\n text-align: left;\\n transition: all ease-in-out 250ms;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Group\": \"Group___2hArG\",\n\t\"Rect\": \"Rect___fBfs_\",\n\t\"ForeignObject\": \"ForeignObject___2EdVc\",\n\t\"Div\": \"Div___1Pgrm\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Container___WYOTp {\\n width: 100%;\\n flex: 1;\\n padding: 0.5rem;\\n}\\n\\n.PatternPath___2kgd1 {\\n stroke: var(--color-commit-did-not-render-pattern);\\n stroke-width: 1;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Container\": \"Container___WYOTp\",\n\t\"PatternPath\": \"PatternPath___2kgd1\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Container___2D32U {\\n width: 100%;\\n flex: 1;\\n padding: 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Container\": \"Container___2D32U\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___3u3I_ {\\n padding: 0.25rem 0;\\n flex: 0 0 auto;\\n display: flex;\\n flex-direction: column;\\n gap: 0.25rem;\\n}\\n\\n.BadgesContainer___2NGL4 {\\n display: flex;\\n flex-direction: column;\\n gap: 0.25rem;\\n}\\n\\n.BadgesContainer___2NGL4:not(:empty) {\\n padding-bottom: 0.25rem;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___3i3NJ {\\n user-select: none;\\n overflow-y: auto;\\n}\\n\\n.Component___Y5kFG {\\n flex: 1;\\n font-weight: bold;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n padding-bottom: 0.25rem;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.CurrentCommit___21fVV {\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___3u3I_\",\n\t\"BadgesContainer\": \"BadgesContainer___2NGL4\",\n\t\"Content\": \"Content___3i3NJ\",\n\t\"Component\": \"Component___Y5kFG\",\n\t\"CurrentCommit\": \"CurrentCommit___21fVV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NoCommitData___2oJ_z {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Header___1oGeD {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.FilterMessage___1Yg5n {\\n display: flex;\\n align-items: center;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"NoCommitData\": \"NoCommitData___2oJ_z\",\n\t\"Header\": \"Header___1oGeD\",\n\t\"FilterMessage\": \"FilterMessage___1Yg5n\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Profiler___20Ry4 {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n background-color: var(--color-background);\\n color: var(--color-text);\\n}\\n\\n.Profiler___20Ry4, .Profiler___20Ry4 * {\\n box-sizing: border-box;\\n -webkit-font-smoothing: var(--font-smoothing);\\n}\\n\\n.LeftColumn___3I7-I {\\n display: flex;\\n flex-direction: column;\\n flex: 2 1 200px;\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.RightColumn___3smXD {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 100px;\\n max-width: 300px;\\n overflow-x: hidden;\\n border-left: 1px solid var(--color-border);\\n border-top: 1px solid var(--color-border);\\n}\\n\\n.Content___1LjDy {\\n position: relative;\\n flex: 1 1 auto;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.Column___3WWtw {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n padding: 0 1rem;\\n}\\n\\n.Paragraph___1HLty {\\n text-align: center;\\n}\\n\\n.Row___1RpSu {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.LearnMoreRow___3lYIu {\\n margin-top: 1rem;\\n color: var(--color-dim);\\n font-size: var(--font-size-sans-small);\\n}\\n\\n.Header___QyJw2 {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.Toolbar___30kHu {\\n height: 2.25rem;\\n padding: 0 0.25rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.VRule___2y9G3 {\\n height: 20px;\\n width: 1px;\\n border-left: 1px solid var(--color-border);\\n padding-left: 0.25rem;\\n margin-left: 0.25rem;\\n}\\n\\n.Spacer___1sezP {\\n flex: 1;\\n}\\n\\n.StopRecordingButton___1-ElU {\\n font-size: var(--font-size-sans-large);\\n padding: 0.5rem;\\n}\\n\\n.ContentFallback___2Ata2 {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\\n.SnapshotSelectorFallback___3fsFv {\\n height: 100%;\\n padding-left: 0.5rem;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--font-size-sans-large);\\n color: var(--color-dim);\\n}\\n\\n.Link___mZ2LE {\\n color: var(--color-button);\\n}\\n\\n.TimelineSearchInputContainer___33BJF {\\n flex: 1 1;\\n display: flex;\\n align-items: center;\\n}\\n\\n.LearnMoreLink___7A9ws {\\n color: var(--color-link);\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Profiler\": \"Profiler___20Ry4\",\n\t\"LeftColumn\": \"LeftColumn___3I7-I\",\n\t\"RightColumn\": \"RightColumn___3smXD\",\n\t\"Content\": \"Content___1LjDy\",\n\t\"Column\": \"Column___3WWtw\",\n\t\"Paragraph\": \"Paragraph___1HLty\",\n\t\"Row\": \"Row___1RpSu\",\n\t\"LearnMoreRow\": \"LearnMoreRow___3lYIu\",\n\t\"Header\": \"Header___QyJw2\",\n\t\"Toolbar\": \"Toolbar___30kHu\",\n\t\"VRule\": \"VRule___2y9G3\",\n\t\"Spacer\": \"Spacer___1sezP\",\n\t\"StopRecordingButton\": \"StopRecordingButton___1-ElU\",\n\t\"ContentFallback\": \"ContentFallback___2Ata2\",\n\t\"SnapshotSelectorFallback\": \"SnapshotSelectorFallback___3fsFv\",\n\t\"Link\": \"Link___mZ2LE\",\n\t\"TimelineSearchInputContainer\": \"TimelineSearchInputContainer___33BJF\",\n\t\"LearnMoreLink\": \"LearnMoreLink___7A9ws\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".VRule___2XiHw {\\n height: 20px;\\n width: 1px;\\n border-left: 1px solid var(--color-border);\\n padding-left: 0.25rem;\\n margin-left: 0.25rem;\\n}\\n\\n/**\\n * https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications\\n */\\n.Input___2GKA7 {\\n position: absolute !important;\\n height: 1px;\\n width: 1px;\\n overflow: hidden;\\n clip: rect(1px, 1px, 1px, 1px);\\n}\\n\\n.ErrorMessage___3yR0b {\\n margin: 0.5rem 0;\\n color: var(--color-dim);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"VRule\": \"VRule___2XiHw\",\n\t\"Input\": \"Input___2GKA7\",\n\t\"ErrorMessage\": \"ErrorMessage___3yR0b\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ActiveRecordToggle___1Cpcb {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:hover {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:focus {\\n color: var(--color-record-active);\\n}\\n.ActiveRecordToggle___1Cpcb:active {\\n color: var(--color-record-hover);\\n}\\n\\n.InactiveRecordToggle___2CUtF {\\n color: var(--color-record-inactive);\\n}\\n.InactiveRecordToggle___2CUtF:hover {\\n color: var(--color-record-hover);\\n}\\n.InactiveRecordToggle___2CUtF:focus {\\n color: var(--color-record-inactive);\\n}\\n.InactiveRecordToggle___2CUtF:active {\\n color: var(--color-record-hover);\\n}\\n\\n.DisabledRecordToggle___gcsbF {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:hover {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:focus {\\n color: var(--color-button-disabled);\\n}\\n.DisabledRecordToggle___gcsbF:active {\\n color: var(--color-button-disabled);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ActiveRecordToggle\": \"ActiveRecordToggle___1Cpcb\",\n\t\"InactiveRecordToggle\": \"InactiveRecordToggle___2CUtF\",\n\t\"DisabledRecordToggle\": \"DisabledRecordToggle___gcsbF\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Spacer___1c3sH {\\n flex: 1;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Spacer\": \"Spacer___1c3sH\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___CuJgF {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___2tGS0 {\\n padding: 0.5rem;\\n user-select: none;\\n overflow: auto;\\n}\\n\\n.List___2AC9R {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.ListItem___2wzT0 {\\n margin: 0 0 0.5rem;\\n}\\n\\n.Label___3KINM {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-weight: bold;\\n}\\n\\n.Value___3wrFP {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.NothingSelected___2Sj9L {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n height: 100%;\\n color: var(--color-dim);\\n}\\n\\n.DurationsList___19XUj {\\n list-style: none;\\n margin: 0.25rem 0 0 0;\\n padding: 0;\\n background: var(--color-background-inactive);\\n padding: 0.25rem 0.5rem;\\n border-radius: 0.25rem;\\n}\\n\\n.DurationsListItem___2UKVV {\\n margin: 0.25rem 0 0 0;\\n}\\n.DurationsListItem___2UKVV:first-of-type {\\n margin: 0;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___CuJgF\",\n\t\"Content\": \"Content___2tGS0\",\n\t\"List\": \"List___2AC9R\",\n\t\"ListItem\": \"ListItem___2wzT0\",\n\t\"Label\": \"Label___3KINM\",\n\t\"Value\": \"Value___3wrFP\",\n\t\"NothingSelected\": \"NothingSelected___2Sj9L\",\n\t\"DurationsList\": \"DurationsList___19XUj\",\n\t\"DurationsListItem\": \"DurationsListItem___2UKVV\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___1anMW {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___3KVRW {\\n padding: 0.5rem;\\n user-select: none;\\n overflow: auto;\\n}\\n\\n.List___DLnbX {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.ListItem___3Uw7N {\\n flex: 1 1;\\n margin: 0 0 0.5rem;\\n}\\n\\n.Label___9ImgF {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-weight: bold;\\n flex: 1 1;\\n}\\n\\n.Value___1E_uv {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Row___327lN { \\n display: flex; \\n flex-direction: row; \\n align-items: center;\\n border-top: 1px solid var(--color-border);\\n} \\n\\n.UnclickableSource___3Kp1w,\\n.ClickableSource___1ExdQ {\\n width: 100%;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.UnclickableSource___3Kp1w {\\n color: var(--color-dim);\\n}\\n\\n.ClickableSource___1ExdQ {\\n color: var(--color-text);\\n}\\n\\n.ClickableSource___1ExdQ:focus,\\n.ClickableSource___1ExdQ:hover {\\n background-color: var(--color-background-hover);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___1anMW\",\n\t\"Content\": \"Content___3KVRW\",\n\t\"List\": \"List___DLnbX\",\n\t\"ListItem\": \"ListItem___3Uw7N\",\n\t\"Label\": \"Label___9ImgF\",\n\t\"Value\": \"Value___1E_uv\",\n\t\"Row\": \"Row___327lN\",\n\t\"UnclickableSource\": \"UnclickableSource___3Kp1w\",\n\t\"ClickableSource\": \"ClickableSource___1ExdQ\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Toolbar___2uBS2 {\\n height: 2.25rem;\\n padding: 0 0.5rem;\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid var(--color-border);\\n}\\n\\n.Content___1WAA9 {\\n padding: 0.5rem;\\n user-select: none;\\n overflow-y: auto;\\n display: flex;\\n flex-direction: column;\\n gap: 0.5rem;\\n}\\n\\n.Component___1oc9o {\\n flex: 1;\\n color: var(--color-component-name);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n white-space: nowrap;\\n overflow-x: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.Label___buTyu {\\n font-weight: bold;\\n margin-bottom: 0.5rem;\\n}\\n\\n.CurrentCommit___2ZAl5,\\n.Commit___2PAr5 {\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n padding: 0.25rem 0.5rem;\\n color: var(--color-text);\\n}\\n\\n.Commit___2PAr5:focus,\\n.Commit___2PAr5:hover {\\n outline: none;\\n background-color: var(--color-background-hover);\\n}\\n\\n.CurrentCommit___2ZAl5 {\\n background-color: var(--color-background-selected);\\n color: var(--color-text-selected);\\n}\\n\\n.CurrentCommit___2ZAl5:focus {\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Toolbar\": \"Toolbar___2uBS2\",\n\t\"Content\": \"Content___1WAA9\",\n\t\"Component\": \"Component___1oc9o\",\n\t\"Label\": \"Label___buTyu\",\n\t\"CurrentCommit\": \"CurrentCommit___2ZAl5\",\n\t\"Commit\": \"Commit___2PAr5\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".List___1_Mwa {\\n /**\\n * The decision to suppress the default (horizontal) scroll bars is intentional.\\n * The snapshot selector is small enough that the scrollbar renders it essentially useless.\\n * There are two alternative navigation mechanisms (arrow keys and arrow buttons).\\n * If necessary, we could also expand the click-and-drag mechanism to scroll.\\n */\\n overflow-x: hidden !important;\\n}\\n\\n.Tooltip___2j_4b {\\n margin-top: 2.5rem;\\n}\\n\\n.TooltipList___26ss7 {\\n list-style: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.TooltipListItem___3xWli {\\n display: flex;\\n}\\n\\n.TooltipLabel___2xbrN {\\n font-weight: bold;\\n margin-right: 0.25rem;\\n}\\n.TooltipLabel___2xbrN:after {\\n content: ':';\\n}\\n\\n.TooltipValue___1nc1C {\\n flex-grow: 1;\\n text-align: end;\\n}\\n\\n.DurationsWrapper___10A0R {\\n flex-grow: 1;\\n}\\n\\n.DurationsList___NtAHH {\\n list-style: none;\\n margin: 0 0 0 1rem;\\n padding: 0;\\n}\\n\\n.DurationsListItem___Q0jav {\\n display: flex;\\n}\\n\\n.DurationsLabel___XxynS {\\n margin-right: 0.25rem;\\n}\\n.DurationsLabel___XxynS:after {\\n content: ':';\\n}\\n\\n.DurationsValue___1FRM8 {\\n flex-grow: 1;\\n text-align: end;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"List\": \"List___1_Mwa\",\n\t\"Tooltip\": \"Tooltip___2j_4b\",\n\t\"TooltipList\": \"TooltipList___26ss7\",\n\t\"TooltipListItem\": \"TooltipListItem___3xWli\",\n\t\"TooltipLabel\": \"TooltipLabel___2xbrN\",\n\t\"TooltipValue\": \"TooltipValue___1nc1C\",\n\t\"DurationsWrapper\": \"DurationsWrapper___10A0R\",\n\t\"DurationsList\": \"DurationsList___NtAHH\",\n\t\"DurationsListItem\": \"DurationsListItem___Q0jav\",\n\t\"DurationsLabel\": \"DurationsLabel___XxynS\",\n\t\"DurationsValue\": \"DurationsValue___1FRM8\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Outer___2YMUU {\\n user-select: none;\\n cursor: pointer;\\n border-bottom: 3px solid transparent;\\n padding-top: 4px;\\n padding-bottom: 1px;\\n display: flex;\\n align-items: flex-end;\\n}\\n.Outer___2YMUU:hover {\\n background-color: var(--color-background);\\n}\\n\\n.Inner___TFCLU,\\n.InnerSelected___2Qf2T {\\n width: 100%;\\n min-height: 2px;\\n background-color: var(--color-commit-did-not-render-fill);\\n color: var(--color-commit-did-not-render-fill-text);\\n}\\n\\n.InnerSelected___2Qf2T {\\n background-color: var(--color-button-active);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Outer\": \"Outer___2YMUU\",\n\t\"Inner\": \"Inner___TFCLU\",\n\t\"InnerSelected\": \"InnerSelected___2Qf2T\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Button___7tgtJ {\\n flex: 0 0 auto;\\n margin-left: 0.25rem;\\n}\\n\\n.Commits___2KF5W {\\n height: 100%;\\n min-width: 30px;\\n margin-left: 0.25rem;\\n overflow: visible;\\n}\\n.Commits___2KF5W:focus {\\n outline: none;\\n background-color: var(--color-button-background-focus);\\n}\\n\\n.IndexLabel___36CS7 {\\n flex: 0 0 auto;\\n white-space: nowrap;\\n font-family: var(--font-family-monospace);\\n margin-left: 0.25rem;\\n}\\n\\n.NoCommits___3GzV1 {\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n color: var(--color-dim);\\n}\\n\\n.Input___2QoRI {\\n background: none;\\n font-size: var(--font-size-sans-normal);\\n text-align: right;\\n font-family: var(--font-family-monospace);\\n border: 1px solid transparent;\\n border-radius: 0.125rem;\\n padding: 0.125rem;\\n color: var(--color-attribute-editable-value);\\n}\\n\\n.Input___2QoRI:focus {\\n background-color: var(--color-button-background-focus);\\n outline: none;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Button\": \"Button___7tgtJ\",\n\t\"Commits\": \"Commits___2KF5W\",\n\t\"IndexLabel\": \"IndexLabel___36CS7\",\n\t\"NoCommits\": \"NoCommits___3GzV1\",\n\t\"Input\": \"Input___2QoRI\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tooltip___NP68S {\\n position: absolute;\\n pointer-events: none;\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0.25rem 0.5rem;\\n font-family: var(--font-family-sans);\\n font-size: 12px;\\n background-color: var(--color-tooltip-background);\\n color: var(--color-tooltip-text);\\n opacity: 1;\\n white-space: nowrap;\\n /* Make sure this is above the DevTools, which are above the Overlay */\\n z-index: 10000002;\\n}\\n\\n.Tooltip___NP68S.hidden___3rGbV {\\n opacity: 0;\\n}\\n\\n\\n.Container___3aJAm {\\n width: -moz-max-content;\\n width: -webkit-max-content;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tooltip\": \"Tooltip___NP68S\",\n\t\"hidden\": \"hidden___3rGbV\",\n\t\"Container\": \"Container___3aJAm\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Updaters___ykaBk {\\n margin: 0 0 0.5rem;\\n}\\n\\n.NoUpdaters___2ZO7w,\\n.Updater___f5nQz,\\n.UnmountedUpdater___2Smse {\\n display: block;\\n width: 100%;\\n text-align: left;\\n background: none;\\n border: none;\\n padding: 0.25rem 0.5rem;\\n color: var(--color-text);\\n}\\n.Updater___f5nQz:focus,\\n.Updater___f5nQz:hover {\\n outline: none;\\n background-color: var(--color-background-hover);\\n}\\n\\n.NoUpdaters___2ZO7w,\\n.UnmountedUpdater___2Smse {\\n color: var(--color-dim);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Updaters\": \"Updaters___ykaBk\",\n\t\"NoUpdaters\": \"NoUpdaters___2ZO7w\",\n\t\"Updater\": \"Updater___f5nQz\",\n\t\"UnmountedUpdater\": \"UnmountedUpdater___2Smse\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Item___2hxYk {\\n margin-top: 0.25rem;\\n}\\n\\n.Key___1tUd1 {\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-small);\\n line-height: 1;\\n}\\n\\n.Key___1tUd1:first-of-type::before {\\n content: ' (';\\n}\\n\\n.Key___1tUd1::after {\\n content: ', ';\\n}\\n\\n.Key___1tUd1:last-of-type::after {\\n content: ')';\\n}\\n\\n.Label___2zyeV {\\n font-weight: bold;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Item\": \"Item___2hxYk\",\n\t\"Key\": \"Key___1tUd1\",\n\t\"Label\": \"Label___2zyeV\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReactLogo___O8zf5 {\\n width: 1.75rem;\\n height: 1.75rem;\\n margin: 0 0.75rem 0 0.25rem;\\n color: var(--color-button-active);\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ReactLogo\": \"ReactLogo___O8zf5\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchInput___5BLz9 {\\n flex: 1 1;\\n display: flex;\\n align-items: center;\\n}\\n\\n.Input___15H-Z {\\n flex: 1 1 100px;\\n width: 100px;\\n font-size: var(--font-size-sans-large);\\n outline: none;\\n border: none;\\n background-color: var(--color-background);\\n color: var(--color-text);\\n padding-left: 1.5rem;\\n margin-left: -1rem;\\n}\\n\\n.InputIcon___2jd-q {\\n pointer-events: none;\\n z-index: 2;\\n color: var(--color-dimmer);\\n}\\n\\n.IndexLabel___98Dk_ {\\n color: var(--color-dim);\\n font-size: var(--font-size-sans-normal);\\n white-space: pre;\\n}\\n\\n.LeftVRule___B5avU{\\n height: 20px;\\n width: 1px;\\n background-color: var(--color-border);\\n}\\n.LeftVRule___B5avU {\\n margin: 0 0.25rem 0 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"SearchInput\": \"SearchInput___5BLz9\",\n\t\"Input\": \"Input___15H-Z\",\n\t\"InputIcon\": \"InputIcon___2jd-q\",\n\t\"IndexLabel\": \"IndexLabel___98Dk_\",\n\t\"LeftVRule\": \"LeftVRule___B5avU\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Background___3ncIs {\\n position: absolute;\\n z-index: 3;\\n width: 100%;\\n top: 0;\\n bottom: 0;\\n background-color: var(--color-modal-background);\\n display: flex;\\n align-items: flex-start;\\n justify-content: center;\\n font-size: var(--font-size-sans-normal);\\n padding: 1rem;\\n}\\n\\n.Modal___rU10h {\\n display: flex;\\n flex-direction: column;\\n flex: 0 1 auto;\\n max-height: 100%;\\n background-color: var(--color-background);\\n border: 1px solid var(--color-border);\\n box-shadow: 0 2px 4px var(--color-shadow);\\n border-radius: 0.25rem;\\n overflow: auto;\\n width: 410px;\\n max-width: 100%;\\n}\\n\\n.Spacer___3_C0y {\\n flex: 1;\\n}\\n\\n.Tabs___3mQky {\\n display: flex;\\n flex-direction: row;\\n border-bottom: 1px solid var(--color-border);\\n padding-right: 0.25rem;\\n flex: 0 0 auto;\\n}\\n\\n.Content___2YU9A {\\n padding: 0.5rem;\\n flex: 0 1 auto;\\n overflow: auto;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Background\": \"Background___3ncIs\",\n\t\"Modal\": \"Modal___rU10h\",\n\t\"Spacer\": \"Spacer___3_C0y\",\n\t\"Tabs\": \"Tabs___3mQky\",\n\t\"Content\": \"Content___2YU9A\"\n};","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Settings___29B2k {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: flex-start;\\n font-family: var(--font-family-sans);\\n font-size: var(--font-size-sans-normal);\\n}\\n\\n.Setting___1NJgU {\\n margin-bottom: 0.5rem;\\n}\\n.Setting___1NJgU:last-of-type {\\n margin-bottom: 0;\\n}\\n\\n.OpenInURLSetting___2eTwK {\\n margin: 0.5rem 0;\\n}\\n\\n.OptionGroup___2ZgHP {\\n display: inline-flex;\\n flex-direction: row;\\n align-items: center;\\n user-select: none;\\n margin: 0 1rem 0.5rem 0;\\n}\\n.OptionGroup___2ZgHP:last-of-type {\\n margin-right: 0;\\n}\\n\\n.RadioLabel___1oyOB {\\n display: inline;\\n margin-right: 0.5rem;\\n}\\n\\n.Spacer___1rTaV {\\n height: 0.5rem;\\n}\\n\\n.CheckboxOption___2XWVZ {\\n display: block;\\n padding: 0 0 0.5rem;\\n}\\n\\n.HRule___1h4ad {\\n height: 1px;\\n background-color: var(--color-border);\\n width: 100%;\\n border: none;\\n margin: 0.5rem 0;\\n}\\n\\n.Header___NGIlt {\\n font-size: var(--font-size-sans-large);\\n margin-top: 0.5rem;\\n}\\n\\n.ButtonIcon___3ZAjp {\\n margin-right: 0.25rem;\\n}\\n\\n.NoFiltersCell___1WYR2 {\\n padding: 0.25rem 0;\\n color: var(--color-dim);\\n}\\n\\n.Table___2srES {\\n min-width: 20rem;\\n margin-top: 0.5rem;\\n border-spacing: 0;\\n}\\n\\n.TableRow___3kYuW {\\n padding-bottom: 0.5rem;\\n}\\n\\n.TableCell___1yj52 {\\n padding: 0;\\n padding-right: 0.5rem;\\n}\\n.TableCell___1yj52:last-of-type {\\n text-align: right;\\n padding-right: 0;\\n}\\n\\n.Input___I9AdA {\\n border: 1px solid var(--color-border);\\n border-radius: 0.125rem;\\n padding: 0.125rem;\\n margin-left: .5rem;\\n}\\n\\n.InvalidRegExp___35lmE,\\n.InvalidRegExp___35lmE:active,\\n.InvalidRegExp___35lmE:focus,\\n.InvalidRegExp___35lmE:hover {\\n color: var(--color-value-invalid);\\n}\\n\\n.ToggleOffInvalid___2Rg2K,\\n.ToggleOnInvalid___1Kamt,\\n.ToggleOff___3cr6E,\\n.ToggleOn___3KAVB {\\n border-radius: 0.75rem;\\n width: 1rem;\\n height: 0.625rem;\\n display: flex;\\n align-items: center;\\n padding: 0.125rem;\\n}\\n.ToggleOffInvalid___2Rg2K {\\n background-color: var(--color-toggle-background-invalid);\\n justify-content: flex-start;\\n}\\n.ToggleOnInvalid___1Kamt {\\n background-color: var(--color-toggle-background-invalid);\\n justify-content: flex-end;\\n}\\n.ToggleOff___3cr6E {\\n background-color: var(--color-toggle-background-off);\\n justify-content: flex-start;\\n}\\n.ToggleOn___3KAVB {\\n background-color: var(--color-toggle-background-on);\\n justify-content: flex-end;\\n}\\n\\n.ToggleInsideOff___1pXcm,\\n.ToggleInsideOn___3kEsU {\\n border-radius: 0.375rem;\\n width: 0.375rem;\\n height: 0.375rem;\\n background-color: var(--color-toggle-text);\\n}\\n\\n.ReleaseNotes___q8NY1 {\\n width: 100%;\\n background-color: var(--color-background-hover);\\n padding: 0.25rem 0.5rem;\\n border-radius: 0.25rem;\\n}\\n\\n.ReleaseNotesLink___2gjE8, .StrictModeLink___RM2Yt {\\n color: var(--color-button-active);\\n}\\n\\n.Warning___3xUvj {\\n color: var(--color-error-text);\\n}\\n\\n.VersionsList___35cmE {\\n list-style: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.Setting___1NJgU .Setting___1NJgU {\\n margin-left: 1rem;\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n}\\n\\n.Setting___1NJgU label:has(input:disabled) {\\n opacity: 0.5;\\n cursor: default;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Settings\": \"Settings___29B2k\",\n\t\"Setting\": \"Setting___1NJgU\",\n\t\"OpenInURLSetting\": \"OpenInURLSetting___2eTwK\",\n\t\"OptionGroup\": \"OptionGroup___2ZgHP\",\n\t\"RadioLabel\": \"RadioLabel___1oyOB\",\n\t\"Spacer\": \"Spacer___1rTaV\",\n\t\"CheckboxOption\": \"CheckboxOption___2XWVZ\",\n\t\"HRule\": \"HRule___1h4ad\",\n\t\"Header\": \"Header___NGIlt\",\n\t\"ButtonIcon\": \"ButtonIcon___3ZAjp\",\n\t\"NoFiltersCell\": \"NoFiltersCell___1WYR2\",\n\t\"Table\": \"Table___2srES\",\n\t\"TableRow\": \"TableRow___3kYuW\",\n\t\"TableCell\": \"TableCell___1yj52\",\n\t\"Input\": \"Input___I9AdA\",\n\t\"InvalidRegExp\": \"InvalidRegExp___35lmE\",\n\t\"ToggleOffInvalid\": \"ToggleOffInvalid___2Rg2K\",\n\t\"ToggleOnInvalid\": \"ToggleOnInvalid___1Kamt\",\n\t\"ToggleOff\": \"ToggleOff___3cr6E\",\n\t\"ToggleOn\": \"ToggleOn___3KAVB\",\n\t\"ToggleInsideOff\": \"ToggleInsideOff___1pXcm\",\n\t\"ToggleInsideOn\": \"ToggleInsideOn___3kEsU\",\n\t\"ReleaseNotes\": \"ReleaseNotes___q8NY1\",\n\t\"ReleaseNotesLink\": \"ReleaseNotesLink___2gjE8\",\n\t\"StrictModeLink\": \"StrictModeLink___RM2Yt\",\n\t\"Warning\": \"Warning___3xUvj\",\n\t\"VersionsList\": \"VersionsList___35cmE\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tab___20JoC,\\n.TabCurrent___b4c3L,\\n.TabDisabled___l1-ZF {\\n height: 100%;\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n border-top: 3px solid transparent;\\n border-bottom: 3px solid transparent;\\n user-select: none;\\n color: var(--color-text);\\n\\n /* Hide radio buttons for Firefox too */\\n position: relative;\\n\\n /* Electron drag area */\\n -webkit-app-region: no-drag;\\n}\\n.Tab___20JoC:hover,\\n.TabCurrent___b4c3L:hover {\\n background-color: var(--color-background-hover);\\n}\\n.Tab___20JoC:focus-within,\\n.TabCurrent___b4c3L:focus-within {\\n background-color: var(--color-background-hover);\\n}\\n\\n.TabCurrent___b4c3L {\\n border-bottom: 3px solid var(--color-tab-selected-border);\\n}\\n\\n.TabDisabled___l1-ZF {\\n color: var(--color-dim);\\n cursor: default;\\n}\\n\\n.TabSizeNavigation___2GG1g {\\n font-size: var(--font-size-sans-large);\\n padding: 0.5rem 1rem;\\n}\\n.TabSizeProfiler___2wFBf {\\n font-size: var(--font-size-sans-normal);\\n padding: 0.25rem 0.5rem;\\n}\\n.TabSizeSettings___3V4f9 {\\n font-size: var(--font-size-sans-normal);\\n padding: 0.25rem 0.5rem;\\n}\\n\\n.Input___2unCl {\\n width: 0;\\n margin: 0;\\n opacity: 0;\\n\\n /* Hide radio buttons for Firefox too */\\n position: absolute;\\n}\\n\\n.IconSizeNavigation___mZIpl,\\n.IconSizeProfiler___1jYXs,\\n.IconSizeSettings___1HNRk {\\n margin-right: 0.5rem;\\n color: var(--color-button-active);\\n}\\n\\n.IconDisabled___17Sd2 {\\n color: var(--color-dim);\\n}\\n\\n.IconSizeNavigation___mZIpl {\\n width: 1.5rem;\\n height: 1.5rem;\\n}\\n.IconSizeProfiler___1jYXs {\\n width: 1rem;\\n height: 1rem;\\n}\\n.IconSizeSettings___1HNRk {\\n width: 1rem;\\n height: 1rem;\\n}\\n\\n.TabLabelNavigation___2q3j3,\\n.TabLabelProfiler___2QHeh,\\n.TabLabelSettings___1pDKr {\\n}\\n\\n.VRule___QpkmZ {\\n height: 20px;\\n width: 1px;\\n border-left: 1px solid var(--color-border);\\n padding-left: 0.25rem;\\n margin-left: 0.25rem;\\n}\\n\\n@media screen and (max-width: 525px) {\\n .IconSizeNavigation___mZIpl {\\n margin-right: 0;\\n }\\n\\n .TabLabelNavigation___2q3j3 {\\n display: none;\\n }\\n}\\n\\n@media screen and (max-width: 900px) {\\n .TabLabelProfiler___2QHeh {\\n display: none;\\n }\\n\\n .IconSizeProfiler___1jYXs {\\n margin-right: 0;\\n }\\n}\\n\\n@media screen and (max-width: 400px) {\\n .TabLabelSettings___1pDKr {\\n display: none;\\n }\\n\\n .IconSizeSettings___1HNRk {\\n margin-right: 0;\\n }\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tab\": \"Tab___20JoC\",\n\t\"TabCurrent\": \"TabCurrent___b4c3L\",\n\t\"TabDisabled\": \"TabDisabled___l1-ZF\",\n\t\"TabSizeNavigation\": \"TabSizeNavigation___2GG1g\",\n\t\"TabSizeProfiler\": \"TabSizeProfiler___2wFBf\",\n\t\"TabSizeSettings\": \"TabSizeSettings___3V4f9\",\n\t\"Input\": \"Input___2unCl\",\n\t\"IconSizeNavigation\": \"IconSizeNavigation___mZIpl\",\n\t\"IconSizeProfiler\": \"IconSizeProfiler___1jYXs\",\n\t\"IconSizeSettings\": \"IconSizeSettings___1HNRk\",\n\t\"IconDisabled\": \"IconDisabled___17Sd2\",\n\t\"TabLabelNavigation\": \"TabLabelNavigation___2q3j3\",\n\t\"TabLabelProfiler\": \"TabLabelProfiler___2QHeh\",\n\t\"TabLabelSettings\": \"TabLabelSettings___1pDKr\",\n\t\"VRule\": \"VRule___QpkmZ\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ToggleDisabled___iQeZ3,\\n.ToggleOn___3XJTo,\\n.ToggleOff___142SC {\\n background: var(--color-button-background);\\n border: none;\\n border-radius: 0.25rem;\\n padding: 0;\\n flex: 0 0 auto;\\n}\\n\\n.ToggleContent___1C-vg {\\n display: inline-flex;\\n align-items: center;\\n border-radius: 0.25rem;\\n padding: 0.25rem;\\n}\\n\\n.ToggleOff___142SC {\\n border: none;\\n background: var(--color-button-background);\\n color: var(--color-button);\\n}\\n.ToggleOff___142SC:hover {\\n color: var(--color-button-hover);\\n}\\n\\n.ToggleOn___3XJTo,\\n.ToggleOn___3XJTo:active {\\n color: var(--color-button-active);\\n outline: none;\\n}\\n\\n.ToggleOn___3XJTo:focus,\\n.ToggleOff___142SC:focus,\\n.ToggleContent___1C-vg:focus {\\n outline: none;\\n}\\n\\n.ToggleOn___3XJTo:focus > .ToggleContent___1C-vg,\\n.ToggleOff___142SC:focus > .ToggleContent___1C-vg {\\n background: var(--color-button-background-focus);\\n}\\n\\n.ToggleDisabled___iQeZ3 {\\n background: var(--color-button-background);\\n color: var(--color-button-disabled);\\n cursor: default;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"ToggleDisabled\": \"ToggleDisabled___iQeZ3\",\n\t\"ToggleOn\": \"ToggleOn___3XJTo\",\n\t\"ToggleOff\": \"ToggleOff___142SC\",\n\t\"ToggleContent\": \"ToggleContent___1C-vg\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Column___3s3y6 { \\n display: flex; \\n flex-direction: column; \\n} \\n\\n.Title___2c8MM { \\n font-size: var(--font-size-sans-large); \\n margin-bottom: 0.5rem; \\n} \\n\\n.Version___34HO3 {\\n color: var(--color-bridge-version-number);\\n font-weight: bold;\\n}\\n\\n.NpmCommand___2lHg1 {\\n display: flex;\\n justify-content: space-between;\\n padding: 0.25rem 0.25rem 0.25rem 0.5rem;\\n background-color: var(--color-bridge-version-npm-background);\\n color: var(--color-bridge-version-npm-text);\\n margin: 0;\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-large);\\n}\\n\\n.Paragraph___3H72v {\\n margin: 0.5rem 0;\\n}\\n\\n.Link___5TAEG {\\n color: var(--color-link);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Column\": \"Column___3s3y6\",\n\t\"Title\": \"Title___2c8MM\",\n\t\"Version\": \"Version___34HO3\",\n\t\"NpmCommand\": \"NpmCommand___2lHg1\",\n\t\"Paragraph\": \"Paragraph___3H72v\",\n\t\"Link\": \"Link___5TAEG\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Row___3IwJ6 { \\n display: flex; \\n flex-direction: row; \\n align-items: center; \\n} \\n\\n.Title___1PTyg { \\n font-size: var(--font-size-sans-large); \\n margin-bottom: 0.5rem; \\n} \\n\\n.ReleaseNotesLink___2_Y38 { \\n color: var(--color-button-active); \\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Row\": \"Row___3IwJ6\",\n\t\"Title\": \"Title___1PTyg\",\n\t\"ReleaseNotesLink\": \"ReleaseNotesLink___2_Y38\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Command___2iS3V {\\n background-color: var(--color-dimmest);\\n padding: 0.25rem 0.5rem;\\n display: block;\\n border-radius: 0.125rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Command\": \"Command___2iS3V\"\n};","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\n /* Font smoothing */\\n --font-smoothing: auto;\\n\\n /* GitHub.com system fonts */\\n --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,\\n Courier, monospace;\\n --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,\\n Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\n}\\n\", \"\"]);\n\n// exports\n","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".CanvasPage___1bMJ5 {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"CanvasPage\": \"CanvasPage___1bMJ5\"\n};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Tooltip___zx7EV {\\n position: fixed;\\n}\\n\\n.TooltipSection___1ymuA,\\n.TooltipWarningSection___3NM2z,\\n.SingleLineTextSection___Xt1VX {\\n display: block;\\n border-radius: 0.125rem;\\n padding: 0.25rem;\\n user-select: none;\\n pointer-events: none;\\n background-color: var(--color-tooltip-background);\\n box-shadow: 1px 1px 2px var(--color-shadow);\\n color: var(--color-tooltip-text);\\n font-size: 11px;\\n}\\n.TooltipWarningSection___3NM2z {\\n margin-top: 0.25rem;\\n background-color: var(--color-warning-background);\\n}\\n.TooltipSection___1ymuA,\\n.TooltipWarningSection___3NM2z {\\n max-width: 300px;\\n}\\n.SingleLineTextSection___Xt1VX {\\n white-space: nowrap;\\n}\\n\\n.Divider___3WRJj {\\n height: 1px;\\n background-color: #aaa;\\n margin: 0.25rem 0;\\n}\\n\\n.DetailsGrid___2geMz {\\n display: grid;\\n padding-top: 5px;\\n grid-gap: 2px 5px;\\n grid-template-columns: min-content auto;\\n}\\n\\n.DetailsGridLabel___Vo1pu {\\n color: var(--color-dim);\\n text-align: right;\\n white-space: nowrap;\\n}\\n\\n.DetailsGridLongValue___3vEFb {\\n word-break: break-all;\\n max-height: 50vh;\\n overflow: hidden;\\n}\\n\\n.FlamechartStackFrameName___15Syk {\\n word-break: break-word;\\n}\\n\\n.ComponentName___M_PGg {\\n font-weight: bold;\\n word-break: break-word;\\n margin-right: 0.25rem;\\n}\\n\\n.ReactMeasureLabel___rpyRN {\\n}\\n\\n.UserTimingLabel___1Fpxr {\\n word-break: break-word;\\n}\\n\\n.NativeEventName___HXtAH {\\n font-weight: bold;\\n word-break: break-word;\\n margin-right: 0.25rem;\\n}\\n\\n.WarningText___cf1lY {\\n color: var(--color-warning-text-color);\\n}\\n\\n.Image___3nrFz {\\n border: 1px solid var(--color-border);\\n}\\n\\n.DimText___asq74 {\\n color: var(--color-dim);\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Tooltip\": \"Tooltip___zx7EV\",\n\t\"TooltipSection\": \"TooltipSection___1ymuA\",\n\t\"TooltipWarningSection\": \"TooltipWarningSection___3NM2z\",\n\t\"SingleLineTextSection\": \"SingleLineTextSection___Xt1VX\",\n\t\"Divider\": \"Divider___3WRJj\",\n\t\"DetailsGrid\": \"DetailsGrid___2geMz\",\n\t\"DetailsGridLabel\": \"DetailsGridLabel___Vo1pu\",\n\t\"DetailsGridLongValue\": \"DetailsGridLongValue___3vEFb\",\n\t\"FlamechartStackFrameName\": \"FlamechartStackFrameName___15Syk\",\n\t\"ComponentName\": \"ComponentName___M_PGg\",\n\t\"ReactMeasureLabel\": \"ReactMeasureLabel___rpyRN\",\n\t\"UserTimingLabel\": \"UserTimingLabel___1Fpxr\",\n\t\"NativeEventName\": \"NativeEventName___HXtAH\",\n\t\"WarningText\": \"WarningText___cf1lY\",\n\t\"Image\": \"Image___3nrFz\",\n\t\"DimText\": \"DimText___asq74\"\n};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Content___2QeJf {\\n width: 100%;\\n position: relative;\\n flex: 1 1 auto;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n\\n.ErrorMessage___1LWbq {\\n margin: 0.5rem 0;\\n color: var(--color-dim);\\n font-family: var(--font-family-monospace);\\n font-size: var(--font-size-monospace-normal);\\n}\\n\\n.Row___1Veyi {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n flex-flow: wrap;\\n}\\n\\n.EmptyStateContainer___2OQbO {\\n text-align: center;\\n}\\n\\n.Header___2vzMq {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Content\": \"Content___2QeJf\",\n\t\"ErrorMessage\": \"ErrorMessage___1LWbq\",\n\t\"Row\": \"Row___1Veyi\",\n\t\"EmptyStateContainer\": \"EmptyStateContainer___2OQbO\",\n\t\"Header\": \"Header___2vzMq\"\n};","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Column___5Ol48 {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n padding: 0 1rem;\\n}\\n\\n.Header___322Sm {\\n font-size: var(--font-size-sans-large);\\n margin-bottom: 0.5rem;\\n}\\n\\n.Paragraph___22fN5 {\\n text-align: center;\\n margin: 0;\\n}\\n\\n.Link___36nzP {\\n color: var(--color-link);\\n}\\n\\n.LearnMoreRow___aWp1e {\\n margin-top: 1rem;\\n color: var(--color-dim);\\n font-size: var(--font-size-sans-small);\\n}\\n\\n.Code___19uUo {\\n color: var(--color-bridge-version-number);\\n}\\n\\n.MetaGKRow___1tKC1 {\\n background: var(--color-background-hover);\\n padding: 0.25rem 0.5rem;\\n border-radius: 0.25rem;\\n margin-top: 1rem;\\n}\", \"\"]);\n\n// exports\nexports.locals = {\n\t\"Column\": \"Column___5Ol48\",\n\t\"Header\": \"Header___322Sm\",\n\t\"Paragraph\": \"Paragraph___22fN5\",\n\t\"Link\": \"Link___36nzP\",\n\t\"LearnMoreRow\": \"LearnMoreRow___aWp1e\",\n\t\"Code\": \"Code___19uUo\",\n\t\"MetaGKRow\": \"MetaGKRow___1tKC1\"\n};","\nvar content = require(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\", function() {\n\t\tvar newContent = require(\"!!../../css-loader/index.js??ruleSet[1].rules[2].use[1]!./styles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenu.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenu.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenu.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenuItem.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenuItem.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ContextMenuItem.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Button.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Button.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Button.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ButtonIcon.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ButtonIcon.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ButtonIcon.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Badge.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Badge.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Badge.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Components.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Components.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Components.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableName.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableName.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableName.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EditableValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Element.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Element.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Element.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ElementBadges.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ElementBadges.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ElementBadges.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ExpandCollapseToggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ExpandCollapseToggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ExpandCollapseToggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ForgetBadge.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ForgetBadge.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ForgetBadge.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./IndexableElementBadges.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./IndexableElementBadges.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./IndexableElementBadges.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElement.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElement.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElement.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementBadges.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementBadges.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementBadges.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorBoundary.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorBoundary.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorBoundary.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorsAndWarningsTree.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorsAndWarningsTree.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementErrorsAndWarningsTree.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementHooksTree.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementHooksTree.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementHooksTree.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSharedStyles.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSharedStyles.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSharedStyles.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSourcePanel.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSourcePanel.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementSourcePanel.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementStyleXPlugin.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementStyleXPlugin.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementStyleXPlugin.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementView.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementView.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./InspectedElementView.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValueContextMenuContainer.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValueContextMenuContainer.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./KeyValueContextMenuContainer.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LoadingAnimation.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LoadingAnimation.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LoadingAnimation.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./AutoSizeInput.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./AutoSizeInput.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./AutoSizeInput.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LayoutViewer.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LayoutViewer.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./LayoutViewer.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./StyleEditor.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./StyleEditor.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./StyleEditor.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewArrayValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewArrayValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewArrayValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewKeyValue.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewKeyValue.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NewKeyValue.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./OwnersStack.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./OwnersStack.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./OwnersStack.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SelectedTreeHighlight.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SelectedTreeHighlight.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SelectedTreeHighlight.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Skeleton.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Skeleton.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Skeleton.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tree.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tree.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tree.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./DevTools.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./DevTools.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./DevTools.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./shared.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./shared.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./shared.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Icon.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Icon.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Icon.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ModalDialog.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ModalDialog.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ModalDialog.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ChartNode.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ChartNode.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ChartNode.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitFlamegraph.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitFlamegraph.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitFlamegraph.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitRanked.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitRanked.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CommitRanked.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./HoveredFiberInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./HoveredFiberInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./HoveredFiberInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NoCommitData.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NoCommitData.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./NoCommitData.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Profiler.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Profiler.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Profiler.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ProfilingImportExportButtons.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ProfilingImportExportButtons.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ProfilingImportExportButtons.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RecordToggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RecordToggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RecordToggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RootSelector.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RootSelector.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./RootSelector.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarCommitInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarCommitInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarCommitInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarEventInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarEventInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarEventInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarSelectedFiberInfo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarSelectedFiberInfo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SidebarSelectedFiberInfo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitList.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitList.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitList.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitListItem.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitListItem.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotCommitListItem.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotSelector.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotSelector.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SnapshotSelector.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Tooltip.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Updaters.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Updaters.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Updaters.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WhatChanged.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WhatChanged.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WhatChanged.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ReactLogo.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ReactLogo.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./ReactLogo.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SearchInput.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SearchInput.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SearchInput.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsModal.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsModal.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsModal.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsShared.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsShared.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./SettingsShared.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TabBar.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TabBar.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TabBar.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Toggle.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Toggle.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Toggle.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedBridgeProtocolDialog.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedBridgeProtocolDialog.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedBridgeProtocolDialog.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedVersionDialog.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedVersionDialog.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./UnsupportedVersionDialog.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WarnIfLegacyBackendDetected.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WarnIfLegacyBackendDetected.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./WarnIfLegacyBackendDetected.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./root.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./root.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./root.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CanvasPage.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CanvasPage.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./CanvasPage.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EventTooltip.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EventTooltip.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./EventTooltip.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Timeline.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Timeline.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./Timeline.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TimelineNotSupported.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TimelineNotSupported.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ruleSet[1].rules[2].use[1]!./TimelineNotSupported.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = typeof options.transform === 'function'\n\t\t ? options.transform(obj.css) \n\t\t : options.transform.default(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\n\t\t\t\tvar addMethods = require(\"../../../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"importFile\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(URL.createObjectURL(new Blob([\"(()=>{var e={496:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.importFromOldV8CPUProfile=r.importFromChromeCPUProfile=r.importFromChromeTimeline=r.isChromeTimeline=void 0;const t=a(211),i=a(844),n=a(218),s=a(320);r.isChromeTimeline=function(e){if(!Array.isArray(e))return!1;if(e.length<1)return!1;const r=e[0];return\\\"pid\\\"in r&&\\\"tid\\\"in r&&\\\"ph\\\"in r&&\\\"cat\\\"in r&&!!e.find((e=>\\\"CpuProfile\\\"===e.name||\\\"Profile\\\"===e.name||\\\"ProfileChunk\\\"===e.name))},r.importFromChromeTimeline=function(e,r){const a=new Map,t=new Map,n=new Map;i.sortBy(e,(e=>e.ts));for(let r of e){if(\\\"CpuProfile\\\"===r.name){const e=`${r.pid}:${r.tid}`,i=r.id||e;a.set(i,r.args.data.cpuProfile),t.set(i,e)}if(\\\"Profile\\\"===r.name){const e=`${r.pid}:${r.tid}`;a.set(r.id||e,Object.assign({startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[]},r.args.data)),r.id&&t.set(r.id,`${r.pid}:${r.tid}`)}if(\\\"thread_name\\\"===r.name&&n.set(`${r.pid}:${r.tid}`,r.args.name),\\\"ProfileChunk\\\"===r.name){const e=`${r.pid}:${r.tid}`,t=a.get(r.id||e);if(t){const e=r.args.data;e.cpuProfile&&(e.cpuProfile.nodes&&(t.nodes=t.nodes.concat(e.cpuProfile.nodes)),e.cpuProfile.samples&&(t.samples=t.samples.concat(e.cpuProfile.samples))),e.timeDeltas&&(t.timeDeltas=t.timeDeltas.concat(e.timeDeltas)),null!=e.startTime&&(t.startTime=e.startTime),null!=e.endTime&&(t.endTime=e.endTime)}else console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${r.id||e}`)}}if(a.size>0){const e=[];let s=0;return i.itForEach(a.keys(),(i=>{let v=null,o=t.get(i);o&&(v=n.get(o)||null);const f=_(a.get(i));v&&a.size>1?(f.setName(`${r} - ${v}`),\\\"CrRendererMain\\\"===v&&(s=e.length)):f.setName(`${r}`),e.push(f)})),{name:r,indexToView:s,profiles:e}}throw new Error(\\\"Could not find CPU profile in Timeline\\\")};const v=new Map;function o(e){return i.getOrInsert(v,e,(e=>{const r=e.functionName||\\\"(anonymous)\\\",a=e.url,t=e.lineNumber,i=e.columnNumber;return{key:`${r}:${a}:${t}:${i}`,name:r,file:a,line:t,col:i}}))}function f(e){const{functionName:r,url:a}=e;return\\\"native dummy.js\\\"===a||\\\"(root)\\\"===r||\\\"(idle)\\\"===r}function l(e){return\\\"(garbage collector)\\\"===e||\\\"(program)\\\"===e}function _(e){const r=new t.CallTreeProfileBuilder(e.endTime-e.startTime),a=new Map;for(let r of e.nodes)a.set(r.id,r);for(let r of e.nodes)if(\\\"number\\\"==typeof r.parent&&(r.parent=a.get(r.parent)),r.children)for(let e of r.children){const t=a.get(e);t&&(t.parent=r)}const s=[],v=[];let _=e.timeDeltas[0],S=_,u=NaN;for(let r=0;r<e.samples.length;r++){const a=e.samples[r];a!=u&&(s.push(a),_<S?v.push(S):(v.push(_),S=_)),r===e.samples.length-1?isNaN(u)||(s.push(u),_<S?v.push(S):(v.push(_),S=_)):(_+=e.timeDeltas[r+1],u=a)}let c=[];for(let e=0;e<s.length;e++){const t=v[e],n=s[e];let _=a.get(n);if(!_)continue;let S=null;for(S=_;S&&-1===c.indexOf(S);S=l(S.callFrame.functionName)?i.lastOf(c):S.parent||null);for(;c.length>0&&i.lastOf(c)!=S;){const e=o(c.pop().callFrame);r.leaveFrame(e,t)}const u=[];for(let e=_;e&&e!=S&&!f(e.callFrame);e=l(e.callFrame.functionName)?i.lastOf(c):e.parent||null)u.push(e);u.reverse();for(let e of u)r.enterFrame(o(e.callFrame),t);c=c.concat(u)}for(let e=c.length-1;e>=0;e--)r.leaveFrame(o(c[e].callFrame),i.lastOf(v));return r.setValueFormatter(new n.TimeFormatter(\\\"microseconds\\\")),r.build()}r.importFromChromeCPUProfile=_,r.importFromOldV8CPUProfile=function(e){return _(s.chromeTreeToNodes(e))}},320:(e,r)=>{\\\"use strict\\\";function a(e){const r=[];return function e(a){r.push({id:a.id,callFrame:{columnNumber:0,functionName:a.functionName,lineNumber:a.lineNumber,scriptId:a.scriptId,url:a.url},hitCount:a.hitCount,children:a.children.map((e=>e.id))}),a.children.forEach(e)}(e),r}Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.chromeTreeToNodes=void 0,r.chromeTreeToNodes=function(e){return{samples:e.samples,startTime:1e6*e.startTime,endTime:1e6*e.endTime,nodes:a(e.head),timeDeltas:(r=e.timestamps,t=e.startTime,r.map(((e,a)=>e-(0===a?1e6*t:r[a-1]))))};var r,t}},765:(e,r)=>{\\\"use strict\\\";let a;Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.demangleCpp=void 0;const t=new Map;r.demangleCpp=function(e){if(e.startsWith(\\\"__Z\\\")){let r=t.get(e);void 0!==r||(a||(a=new Function(\\\"exports\\\",i)()),r=a(e.slice(1)),r=\\\"(null)\\\"===r?e:r,t.set(e,r)),e=r}return e};const i='\\\\nreturn function(){function r(r){eval.call(null,r)}function a(r){throw print(r+\\\":\\\\\\\\n\\\"+(new Error).stack),ke=!0,\\\"Assertion: \\\"+r}function e(r,e){r||a(\\\"Assertion failed: \\\"+e)}function i(r,a,i,v){function t(r,a){if(\\\"string\\\"==a){var e=Oe;return le.stackAlloc(r.length+1),A(r,e),e}return r}function f(r,a){return\\\"string\\\"==a?s(r):r}try{func=ce.Module[\\\"_\\\"+r]}catch(r){}e(func,\\\"Cannot call unknown function \\\"+r+\\\" (perhaps LLVM optimizations or closure removed it?)\\\");var _=0,n=v?v.map(function(r){return t(r,i[_++])}):[];return f(func.apply(null,n),a)}function v(r,a,e){return function(){return i(r,a,e,Array.prototype.slice.call(arguments))}}function t(r,e,i,v){switch(i=i||\\\"i8\\\",\\\"*\\\"===i[i.length-1]&&(i=\\\"i32\\\"),i){case\\\"i1\\\":Ae[r]=e;break;case\\\"i8\\\":Ae[r]=e;break;case\\\"i16\\\":ye[r>>1]=e;break;case\\\"i32\\\":Se[r>>2]=e;break;case\\\"i64\\\":Se[r>>2]=e;break;case\\\"float\\\":Ce[r>>2]=e;break;case\\\"double\\\":ze[0]=e,Se[r>>2]=xe[0],Se[r+4>>2]=xe[1];break;default:a(\\\"invalid type for setValue: \\\"+i)}}function f(r,e,i){switch(e=e||\\\"i8\\\",\\\"*\\\"===e[e.length-1]&&(e=\\\"i32\\\"),e){case\\\"i1\\\":return Ae[r];case\\\"i8\\\":return Ae[r];case\\\"i16\\\":return ye[r>>1];case\\\"i32\\\":return Se[r>>2];case\\\"i64\\\":return Se[r>>2];case\\\"float\\\":return Ce[r>>2];case\\\"double\\\":return xe[0]=Se[r>>2],xe[1]=Se[r+4>>2],ze[0];default:a(\\\"invalid type for setValue: \\\"+e)}return null}function _(r,a,e){var i,v;\\\"number\\\"==typeof r?(i=!0,v=r):(i=!1,v=r.length);var f=\\\"string\\\"==typeof a?a:null,_=[Jr,le.stackAlloc,le.staticAlloc][void 0===e?we:e](Math.max(v,f?1:a.length));if(i)return Fa(_,0,v),_;for(var s,n=0;n<v;){var o=r[n];\\\"function\\\"==typeof o&&(o=le.getFunctionIndex(o)),s=f||a[n],0!==s?(\\\"i64\\\"==s&&(s=\\\"i32\\\"),t(_+n,o,s),n+=le.getNativeTypeSize(s)):n++}return _}function s(r,a){for(var e,i=\\\"undefined\\\"==typeof a,v=\\\"\\\",t=0,f=String.fromCharCode(0);;){if(e=String.fromCharCode(ge[r+t]),i&&e==f)break;if(v+=e,t+=1,!i&&t==a)break}return v}function n(r){for(var a=\\\"\\\",e=0;e<r.length;e++)a+=String.fromCharCode(r[e]);return a}function o(r){return r+4095>>12<<12}function l(){for(;Le<=Ie;)Le=o(2*Le);var r=Ae,a=new ArrayBuffer(Le);Ae=new Int8Array(a),ye=new Int16Array(a),Se=new Int32Array(a),ge=new Uint8Array(a),me=new Uint16Array(a),Me=new Uint32Array(a),Ce=new Float32Array(a),Re=new Float64Array(a),Ae.set(r)}function b(r){for(;r.length>0;){var a=r.shift(),e=a.func;\\\"number\\\"==typeof e&&(e=pe[e]),e(void 0===a.arg?null:a.arg)}}function k(){b(Ve)}function u(){b(Be),be.print()}function c(r,a){return Array.prototype.slice.call(Ae.subarray(r,r+a))}function h(r,a){for(var e=new Uint8Array(a),i=0;i<a;++i)e[i]=Ae[r+i];return e.buffer}function d(r){for(var a=0;Ae[r+a];)a++;return a}function w(r,a){var e=d(r);a&&e++;var i=c(r,e);return a&&(i[e-1]=0),i}function p(r,a){for(var e=[],i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),e.push(v),i+=1}return a||e.push(0),e}function E(r){for(var a=[],e=0;e<r.length;e++){var i=r[e];i>255&&(i&=255),a.push(String.fromCharCode(i))}return a.join(\\\"\\\")}function A(r,a,e){for(var i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),Ae[a+i]=v,i+=1}e||(Ae[a+i]=0)}function g(r,a,e,i){return r>=0?r:a<=32?2*Math.abs(1<<a-1)+r:Math.pow(2,a)+r}function y(r,a,e,i){if(r<=0)return r;var v=a<=32?Math.abs(1<<a-1):Math.pow(2,a-1);return r>=v&&(a<=32||r>v)&&(r=-2*v+r),r}function m(r,a,e){if(0==(0|r)|0==(0|a)|0==(0|e))var i=0;else{Se[r>>2]=0,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function S(r,a,e){if(0==(0|r)|(0|a)<0|0==(0|e))var i=0;else{Se[r>>2]=41,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function M(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=6,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function C(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=7,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function R(r,a){var e,i=0==(0|a);do if(i)var v=0;else{var e=(r+32|0)>>2,t=Se[e];if((0|t)>=(0|Se[r+36>>2])){var v=0;break}var f=(t<<2)+Se[r+28>>2]|0;Se[f>>2]=a;var _=Se[e]+1|0;Se[e]=_;var v=1}while(0);var v;return v}function T(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==95;do if(t){var f=i+2|0;if(Se[e]=f,Ae[v]<<24>>24!=90){var _=0;break}var s=O(r,a),_=s}else var _=0;while(0);var _;return _}function O(r,a){var e=r+12|0,i=Ae[Se[e>>2]];r:do if(i<<24>>24==71||i<<24>>24==84)var v=Tr(r),t=v;else{var f=Ar(r),_=0==(0|f)|0==(0|a);do if(!_){if(0!=(1&Se[r+8>>2]|0))break;var s=Me[f>>2],n=(s-25|0)>>>0<3;a:do if(n)for(var o=f;;){var o,l=Me[o+4>>2],b=Me[l>>2];if((b-25|0)>>>0>=3){var k=l,u=b;break a}var o=l}else var k=f,u=s;while(0);var u,k;if(2!=(0|u)){var t=k;break r}var c=k+8|0,h=Me[c>>2],d=(Se[h>>2]-25|0)>>>0<3;a:do if(d)for(var w=h;;){var w,p=Me[w+4>>2];if((Se[p>>2]-25|0)>>>0>=3){var E=p;break a}var w=p}else var E=h;while(0);var E;Se[c>>2]=E;var t=k;break r}while(0);var A=Ae[Se[e>>2]];if(A<<24>>24==0||A<<24>>24==69){var t=f;break}var g=Or(f),y=Sr(r,g),m=D(r,3,f,y),t=m}while(0);var t;return t}function N(r){var a,e,i=Oe;Oe+=4;var v=i,e=v>>2,a=(r+12|0)>>2,t=Me[a],f=Ae[t],_=f<<24>>24;r:do if(f<<24>>24==114||f<<24>>24==86||f<<24>>24==75){var s=I(r,v,0);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=Se[e],b=R(r,l);if(0==(0|b)){var n=0;break}var n=Se[e]}else{do{if(97==(0|_)||98==(0|_)||99==(0|_)||100==(0|_)||101==(0|_)||102==(0|_)||103==(0|_)||104==(0|_)||105==(0|_)||106==(0|_)||108==(0|_)||109==(0|_)||110==(0|_)||111==(0|_)||115==(0|_)||116==(0|_)||118==(0|_)||119==(0|_)||120==(0|_)||121==(0|_)||122==(0|_)){var k=ai+20*(_-97)|0,u=P(r,k);Se[e]=u;var c=r+48|0,h=Se[c>>2]+Se[Se[u+4>>2]+4>>2]|0;Se[c>>2]=h;var d=Se[a]+1|0;Se[a]=d;var n=u;break r}if(117==(0|_)){Se[a]=t+1|0;var w=L(r),p=D(r,34,w,0);Se[e]=p;var E=p}else if(70==(0|_)){var A=F(r);Se[e]=A;var E=A}else if(48==(0|_)||49==(0|_)||50==(0|_)||51==(0|_)||52==(0|_)||53==(0|_)||54==(0|_)||55==(0|_)||56==(0|_)||57==(0|_)||78==(0|_)||90==(0|_)){var g=X(r);Se[e]=g;var E=g}else if(65==(0|_)){var y=j(r);Se[e]=y;var E=y}else if(77==(0|_)){var m=U(r);Se[e]=m;var E=m}else if(84==(0|_)){var S=x(r);if(Se[e]=S,Ae[Se[a]]<<24>>24!=73){var E=S;break}var M=R(r,S);if(0==(0|M)){var n=0;break r}var C=Se[e],T=z(r),O=D(r,4,C,T);Se[e]=O;var E=O}else if(83==(0|_)){var B=ge[t+1|0];if((B-48&255&255)<10|B<<24>>24==95|(B-65&255&255)<26){var H=V(r,0);if(Se[e]=H,Ae[Se[a]]<<24>>24!=73){var n=H;break r}var K=z(r),Y=D(r,4,H,K);Se[e]=Y;var E=Y}else{var G=X(r);if(Se[e]=G,0==(0|G)){var E=0;break}if(21==(0|Se[G>>2])){var n=G;break r}var E=G}}else if(80==(0|_)){Se[a]=t+1|0;var W=N(r),Z=D(r,29,W,0);Se[e]=Z;var E=Z}else if(82==(0|_)){Se[a]=t+1|0;var Q=N(r),q=D(r,30,Q,0);Se[e]=q;var E=q}else if(67==(0|_)){Se[a]=t+1|0;var $=N(r),J=D(r,31,$,0);Se[e]=J;var E=J}else if(71==(0|_)){Se[a]=t+1|0;var rr=N(r),ar=D(r,32,rr,0);Se[e]=ar;var E=ar}else{if(85!=(0|_)){var n=0;break r}Se[a]=t+1|0;var er=L(r);Se[e]=er;var ir=N(r),vr=Se[e],tr=D(r,28,ir,vr);Se[e]=tr;var E=tr}}while(0);var E,fr=R(r,E);if(0==(0|fr)){var n=0;break}var n=Se[e]}while(0);var n;return Oe=i,n}function I(r,a,e){for(var i,v=r+12|0,t=0!=(0|e),f=t?25:22,i=(r+48|0)>>2,_=t?26:23,s=t?27:24,n=a;;){var n,o=Se[v>>2],l=Ae[o];if(l<<24>>24!=114&&l<<24>>24!=86&&l<<24>>24!=75){var b=n;break}var k=o+1|0;if(Se[v>>2]=k,l<<24>>24==114){var u=Se[i]+9|0;Se[i]=u;var c=f}else if(l<<24>>24==86){var h=Se[i]+9|0;Se[i]=h;var c=_}else{var d=Se[i]+6|0;Se[i]=d;var c=s}var c,w=D(r,c,0,0);if(Se[n>>2]=w,0==(0|w)){var b=0;break}var n=w+4|0}var b;return b}function P(r,a){var e=0==(0|a);do if(e)var i=0;else{var v=J(r);if(0==(0|v)){var i=0;break}Se[v>>2]=33,Se[v+4>>2]=a;var i=v}while(0);var i;return i}function D(r,a,e,i){var v,t;do{if(1==(0|a)||2==(0|a)||3==(0|a)||4==(0|a)||10==(0|a)||28==(0|a)||37==(0|a)||43==(0|a)||44==(0|a)||45==(0|a)||46==(0|a)||47==(0|a)||48==(0|a)||49==(0|a)||50==(0|a)){if(0==(0|e)|0==(0|i)){var f=0;t=7;break}t=5;break}if(8==(0|a)||9==(0|a)||11==(0|a)||12==(0|a)||13==(0|a)||14==(0|a)||15==(0|a)||16==(0|a)||17==(0|a)||18==(0|a)||19==(0|a)||20==(0|a)||29==(0|a)||30==(0|a)||31==(0|a)||32==(0|a)||34==(0|a)||38==(0|a)||39==(0|a)||42==(0|a)){if(0==(0|e)){var f=0;t=7;break}t=5;break}if(36==(0|a)){if(0==(0|i)){var f=0;t=7;break}t=5;break}if(35==(0|a)||22==(0|a)||23==(0|a)||24==(0|a)||25==(0|a)||26==(0|a)||27==(0|a))t=5;else{var f=0;t=7}}while(0);do if(5==t){var _=J(r),v=_>>2;if(0==(0|_)){var f=0;break}Se[v]=a,Se[v+1]=e,Se[v+2]=i;var f=_}while(0);var f;return f}function L(r){var a=sr(r);if((0|a)<1)var e=0;else{var i=Rr(r,a);Se[r+44>>2]=i;var e=i}var e;return e}function F(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;if(Se[a]=i,Ae[e]<<24>>24==70){if(Ae[i]<<24>>24==89){var v=e+2|0;Se[a]=v}var t=Sr(r,1),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else var n=0;var n;return n}function X(r){var a=Ar(r);return a}function j(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==65;do if(v){var t=Ae[i];if(t<<24>>24==95)var f=0;else if((t-48&255&255)<10){for(var _=i;;){var _,s=_+1|0;if(Se[a]=s,(Ae[s]-48&255&255)>=10)break;var _=s}var n=s-i|0,o=lr(r,i,n);if(0==(0|o)){var l=0;break}var f=o}else{var b=nr(r);if(0==(0|b)){var l=0;break}var f=b}var f,k=Se[a],u=k+1|0;if(Se[a]=u,Ae[k]<<24>>24!=95){var l=0;break}var c=N(r),h=D(r,36,f,c),l=h}else var l=0;while(0);var l;return l}function U(r){var a=Oe;Oe+=4;var e=a,i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24==77;r:do if(f){var _=N(r),s=I(r,e,1);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=(0|s)==(0|e);do if(!l){if(35==(0|Se[o>>2]))break;var b=Se[e>>2],k=R(r,b);if(0==(0|k)){var n=0;break r}}while(0);var u=Se[e>>2],c=D(r,37,_,u),n=c}else var n=0;while(0);var n;return Oe=a,n}function x(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==84;do if(v){if(Ae[i]<<24>>24==95)var t=0,f=i;else{var _=sr(r);if((0|_)<0){var s=0;break}var t=_+1|0,f=Se[a]}var f,t;if(Se[a]=f+1|0,Ae[f]<<24>>24!=95){var s=0;break}var n=r+40|0,o=Se[n>>2]+1|0;Se[n>>2]=o;var l=Er(r,t),s=l}else var s=0;while(0);var s;return s}function z(r){var a,e=Oe;Oe+=4;var i=e,v=r+44|0,t=Se[v>>2],a=(r+12|0)>>2,f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==73;r:do if(s){Se[i>>2]=0;for(var n=i;;){var n,o=_r(r);if(0==(0|o)){var l=0;break r}var b=D(r,39,o,0);if(Se[n>>2]=b,0==(0|b)){var l=0;break r}var k=Se[a];if(Ae[k]<<24>>24==69)break;var n=b+8|0}var u=k+1|0;Se[a]=u,Se[v>>2]=t;var l=Se[i>>2]}else var l=0;while(0);var l;return Oe=e,l}function V(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==83;r:do if(t){var f=i+2|0;Se[e]=f;var _=ge[v];if(_<<24>>24==95)var s=0;else{if(!((_-48&255&255)<10|(_-65&255&255)<26)){var n=8&Se[r+8>>2],o=n>>>3,l=0!=(0|n)|0==(0|a);do if(l)var b=o;else{if((Ae[f]-67&255&255)>=2){var b=o;break}var b=1}while(0);for(var b,k=0|ei;;){var k;if(k>>>0>=(ei+196|0)>>>0){var u=0;break r}if(_<<24>>24==Ae[0|k]<<24>>24)break;var k=k+28|0}var c=Se[k+20>>2];if(0!=(0|c)){var h=Se[k+24>>2],d=fr(r,c,h);Se[r+44>>2]=d}if(0==(0|b))var w=k+8|0,p=k+4|0;else var w=k+16|0,p=k+12|0;var p,w,E=Se[w>>2],A=Se[p>>2],g=r+48|0,y=Se[g>>2]+E|0;Se[g>>2]=y;var m=fr(r,A,E),u=m;break}for(var S=_,M=0,C=f;;){var C,M,S;if((S-48&255&255)<10)var R=36*M-48|0;else{if((S-65&255&255)>=26){var u=0;break r}var R=36*M-55|0}var R,T=(S<<24>>24)+R|0;if((0|T)<0){var u=0;break r}var O=C+1|0;Se[e]=O;var N=ge[C];if(N<<24>>24==95)break;var S=N,M=T,C=O}var s=T+1|0}var s;if((0|s)>=(0|Se[r+32>>2])){var u=0;break}var I=r+40|0,P=Se[I>>2]+1|0;Se[I>>2]=P;var u=Se[Se[r+28>>2]+(s<<2)>>2]}else var u=0;while(0);var u;return u}function B(r,a,e,i){var v,t,f,_,s=Oe;Oe+=28;var n,o=s,_=o>>2;Se[_]=r;var l=e+1|0,f=(o+12|0)>>2;Se[f]=l;var b=Jr(l),t=(o+4|0)>>2;if(Se[t]=b,0==(0|b))var k=0,u=1;else{var v=(o+8|0)>>2;Se[v]=0,Se[_+4]=0,Se[_+5]=0;var c=o+24|0;Se[c>>2]=0,H(o,a);var h=Me[t],d=0==(0|h);do{if(!d){var w=Me[v];if(w>>>0>=Me[f]>>>0){n=5;break}Se[v]=w+1|0,Ae[h+w|0]=0,n=6;break}n=5}while(0);5==n&&Y(o,0);var p=Se[t],E=0==(0|p)?Se[c>>2]:Se[f],k=p,u=E}var u,k;return Se[i>>2]=u,Oe=s,k}function H(r,a){var e,i,v,t,f,_,s,n,o,l,b,k,u,c,h,d,w,p,E,A,g,y,m,S,M,C,R,T,O,N,I,P,D,L,F,X,j,U,x,z,V,B,K,G,W,J,vr,tr,fr,_r,sr,nr,or,lr,br,kr,ur,cr,hr,dr,wr,pr=a>>2,Er=r>>2,Ar=Oe;Oe+=184;var gr,yr=Ar,wr=yr>>2,mr=Ar+64,dr=mr>>2,Sr=Ar+72,Mr=Ar+88,Cr=Ar+104,hr=Cr>>2,Rr=Ar+168,Tr=0==(0|a);r:do if(Tr)Z(r);else{var cr=(r+4|0)>>2,Or=Me[cr];if(0==(0|Or))break;var Nr=0|a,Ir=Me[Nr>>2];a:do{if(0==(0|Ir)){if(0!=(4&Se[Er]|0)){var Pr=Se[pr+1],Dr=Se[pr+2];q(r,Pr,Dr);break r}var ur=(r+8|0)>>2,Lr=Me[ur],Fr=a+8|0,Xr=Me[Fr>>2];if((Xr+Lr|0)>>>0>Me[Er+3]>>>0){var jr=Se[pr+1];Q(r,jr,Xr);break r}var Ur=Or+Lr|0,xr=Se[pr+1];Pa(Ur,xr,Xr,1);var zr=Se[ur]+Se[Fr>>2]|0;Se[ur]=zr;break r}if(1==(0|Ir)||2==(0|Ir)){var Vr=Se[pr+1];H(r,Vr);var Br=0==(4&Se[Er]|0),Hr=Me[cr],Kr=0!=(0|Hr);e:do if(Br){do if(Kr){var kr=(r+8|0)>>2,Yr=Me[kr];if((Yr+2|0)>>>0>Me[Er+3]>>>0)break;var Gr=Hr+Yr|0;oe=14906,Ae[Gr]=255&oe,oe>>=8,Ae[Gr+1]=255&oe;var Wr=Se[kr]+2|0;Se[kr]=Wr;break e}while(0);Q(r,0|He.__str120,2)}else{do if(Kr){var Zr=r+8|0,Qr=Me[Zr>>2];if(Qr>>>0>=Me[Er+3]>>>0)break;Se[Zr>>2]=Qr+1|0,Ae[Hr+Qr|0]=46;break e}while(0);Y(r,46)}while(0);var qr=Se[pr+2];H(r,qr);break r}if(3==(0|Ir)){for(var br=(r+20|0)>>2,$r=Me[br],lr=(r+16|0)>>2,Jr=a,ra=0,aa=$r;;){var aa,ra,Jr,ea=Me[Jr+4>>2];if(0==(0|ea)){var ia=ra,va=0;gr=33;break}if(ra>>>0>3){Z(r);break r}var ta=(ra<<4)+yr|0;Se[ta>>2]=aa,Se[br]=ta,Se[((ra<<4)+4>>2)+wr]=ea,Se[((ra<<4)+8>>2)+wr]=0;var fa=Me[lr];Se[((ra<<4)+12>>2)+wr]=fa;var _a=ra+1|0,sa=0|ea,na=Me[sa>>2];if((na-25|0)>>>0>=3){gr=25;break}var Jr=ea,ra=_a,aa=ta}e:do if(25==gr){if(4==(0|na)){Se[dr]=fa,Se[lr]=mr,Se[dr+1]=ea;var oa=Se[sa>>2],la=mr}else var oa=na,la=fa;var la,oa;if(2!=(0|oa)){var ia=_a,va=sa;break}for(var ba=_a,ka=ea+8|0;;){var ka,ba,ua=Me[ka>>2];if((Se[ua>>2]-25|0)>>>0>=3){var ia=ba,va=sa;break e}if(ba>>>0>3)break;var ca=(ba<<4)+yr|0,ha=ba-1|0,da=(ha<<4)+yr|0,or=ca>>2,nr=da>>2;Se[or]=Se[nr],Se[or+1]=Se[nr+1],Se[or+2]=Se[nr+2],Se[or+3]=Se[nr+3],Se[ca>>2]=da,Se[br]=ca,Se[((ha<<4)+4>>2)+wr]=ua,Se[((ha<<4)+8>>2)+wr]=0,Se[((ha<<4)+12>>2)+wr]=la;var ba=ba+1|0,ka=ua+4|0}Z(r);break r}while(0);var va,ia,wa=Se[pr+2];if(H(r,wa),4==(0|Se[va>>2])){var pa=Se[dr];Se[lr]=pa}var Ea=0==(0|ia);e:do if(!Ea)for(var Aa=r+8|0,ga=r+12|0,ya=ia;;){var ya,ma=ya-1|0;if(0==(0|Se[((ma<<4)+8>>2)+wr])){var Sa=Me[cr],Ma=0==(0|Sa);do{if(!Ma){var Ca=Me[Aa>>2];if(Ca>>>0>=Me[ga>>2]>>>0){gr=41;break}Se[Aa>>2]=Ca+1|0,Ae[Sa+Ca|0]=32,gr=42;break}gr=41}while(0);41==gr&&Y(r,32);var Ra=Se[((ma<<4)+4>>2)+wr];$(r,Ra)}if(0==(0|ma))break e;var ya=ma}while(0);Se[br]=$r;break r}if(4==(0|Ir)){var sr=(r+20|0)>>2,Ta=Se[sr];Se[sr]=0;var Oa=Se[pr+1];H(r,Oa);var Na=Me[cr],Ia=0==(0|Na);do{if(!Ia){var _r=(r+8|0)>>2,Da=Me[_r],La=0==(0|Da);do if(!La){if(Ae[Na+(Da-1)|0]<<24>>24!=60)break;Da>>>0<Me[Er+3]>>>0?(Se[_r]=Da+1|0,Ae[Na+Da|0]=32):Y(r,32)}while(0);var Fa=Me[cr];if(0==(0|Fa)){gr=54;break}var Xa=Me[_r];if(Xa>>>0>=Me[Er+3]>>>0){gr=54;break}Se[_r]=Xa+1|0,Ae[Fa+Xa|0]=60,gr=55;break}gr=54}while(0);54==gr&&Y(r,60);var ja=Se[pr+2];H(r,ja);var Ua=Me[cr],xa=0==(0|Ua);do{if(!xa){var fr=(r+8|0)>>2,za=Me[fr],Va=0==(0|za);do if(!Va){if(Ae[Ua+(za-1)|0]<<24>>24!=62)break;za>>>0<Me[Er+3]>>>0?(Se[fr]=za+1|0,Ae[Ua+za|0]=32):Y(r,32)}while(0);var Ba=Me[cr];if(0==(0|Ba)){gr=64;break}var Ha=Me[fr];if(Ha>>>0>=Me[Er+3]>>>0){gr=64;break}Se[fr]=Ha+1|0,Ae[Ba+Ha|0]=62,gr=65;break}gr=64}while(0);64==gr&&Y(r,62),Se[sr]=Ta;break r}if(5==(0|Ir)){var tr=(r+16|0)>>2,Ka=Me[tr];if(0==(0|Ka)){Z(r);break r}for(var Ya=Se[pr+1],Ga=Se[Ka+4>>2];;){var Ga,Ya,Wa=Se[Ga+8>>2];if(0==(0|Wa))break;if(39!=(0|Se[Wa>>2])){Z(r);break r}if((0|Ya)<1){if(0!=(0|Ya))break;var Za=Se[Ka>>2];Se[tr]=Za;var Qa=Se[Wa+4>>2];H(r,Qa),Se[tr]=Ka;break r}var Ya=Ya-1|0,Ga=Wa}Z(r);break r}if(6==(0|Ir)){var qa=Se[pr+2];H(r,qa);break r}if(7==(0|Ir)){var $a=r+8|0,Ja=Me[$a>>2];Ja>>>0<Me[Er+3]>>>0?(Se[$a>>2]=Ja+1|0,Ae[Or+Ja|0]=126):Y(r,126);var re=Se[pr+2];H(r,re);break r}if(8==(0|Ir)){var vr=(r+8|0)>>2,ae=Me[vr];if((ae+11|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str121,11);else{for(var ee=Or+ae|0,ie=0|He.__str121,ve=ee,te=ie+11;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var fe=Se[vr]+11|0;Se[vr]=fe}var _e=Se[pr+1];H(r,_e);break r}if(9==(0|Ir)){var J=(r+8|0)>>2,se=Me[J];if((se+8|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str122,8);else{var ne=Or+se|0,le=0|ne;oe=542397526,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=ne+4|0;oe=544370534,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var ke=Se[J]+8|0;Se[J]=ke}var ue=Se[pr+1];H(r,ue);break r}if(10==(0|Ir)){var W=(r+8|0)>>2,ce=Me[W],he=r+12|0;if((ce+24|0)>>>0>Me[he>>2]>>>0)Q(r,0|He.__str123,24);else{var de=Or+ce|0;Pa(de,0|He.__str123,24,1);var we=Se[W]+24|0;Se[W]=we}var pe=Se[pr+1];H(r,pe);var Ee=Me[cr],ge=0==(0|Ee);do{if(!ge){var ye=Me[W];if((ye+4|0)>>>0>Me[he>>2]>>>0){gr=96;break}var me=Ee+ye|0;oe=762210605,Ae[me]=255&oe,oe>>=8,Ae[me+1]=255&oe,oe>>=8,Ae[me+2]=255&oe,oe>>=8,Ae[me+3]=255&oe;var Ce=Se[W]+4|0;Se[W]=Ce,gr=97;break}gr=96}while(0);96==gr&&Q(r,0|He.__str124,4);var Re=Se[pr+2];H(r,Re);break r}if(11==(0|Ir)){var G=(r+8|0)>>2,Te=Me[G];if((Te+13|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str125,13);else{for(var Ne=Or+Te|0,ie=0|He.__str125,ve=Ne,te=ie+13;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ie=Se[G]+13|0;Se[G]=Ie}var Pe=Se[pr+1];H(r,Pe);break r}if(12==(0|Ir)){var K=(r+8|0)>>2,De=Me[K];if((De+18|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str126,18);else{for(var Le=Or+De|0,ie=0|He.__str126,ve=Le,te=ie+18;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Fe=Se[K]+18|0;Se[K]=Fe}var Xe=Se[pr+1];H(r,Xe);break r}if(13==(0|Ir)){var B=(r+8|0)>>2,je=Me[B];if((je+16|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str127,16);else{for(var Ue=Or+je|0,ie=0|He.__str127,ve=Ue,te=ie+16;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var xe=Se[B]+16|0;Se[B]=xe}var ze=Se[pr+1];H(r,ze);break r}if(14==(0|Ir)){var V=(r+8|0)>>2,Ve=Me[V];if((Ve+21|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str128,21);else{var Be=Or+Ve|0;Pa(Be,0|He.__str128,21,1);var Ke=Se[V]+21|0;Se[V]=Ke}var Ye=Se[pr+1];H(r,Ye);break r}if(15==(0|Ir)){var z=(r+8|0)>>2,Ge=Me[z];if((Ge+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str129,17);else{for(var We=Or+Ge|0,ie=0|He.__str129,ve=We,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ze=Se[z]+17|0;Se[z]=Ze}var Qe=Se[pr+1];H(r,Qe);break r}if(16==(0|Ir)){var x=(r+8|0)>>2,qe=Me[x];if((qe+26|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str130,26);else{var $e=Or+qe|0;Pa($e,0|He.__str130,26,1);var Je=Se[x]+26|0;Se[x]=Je}var ri=Se[pr+1];H(r,ri);break r}if(17==(0|Ir)){var U=(r+8|0)>>2,ai=Me[U];if((ai+15|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str131,15);else{for(var ei=Or+ai|0,ie=0|He.__str131,ve=ei,te=ie+15;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ii=Se[U]+15|0;Se[U]=ii}var vi=Se[pr+1];H(r,vi);break r}if(18==(0|Ir)){var j=(r+8|0)>>2,ti=Me[j];if((ti+19|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str132,19);else{for(var fi=Or+ti|0,ie=0|He.__str132,ve=fi,te=ie+19;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var _i=Se[j]+19|0;Se[j]=_i}var si=Se[pr+1];H(r,si);break r}if(19==(0|Ir)){var X=(r+8|0)>>2,ni=Me[X];if((ni+24|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str133,24);else{var oi=Or+ni|0;Pa(oi,0|He.__str133,24,1);var li=Se[X]+24|0;Se[X]=li}var bi=Se[pr+1];H(r,bi);break r}if(20==(0|Ir)){var F=(r+8|0)>>2,ki=Me[F];if((ki+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str134,17);else{for(var ui=Or+ki|0,ie=0|He.__str134,ve=ui,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ci=Se[F]+17|0;Se[F]=ci}var hi=Se[pr+1];H(r,hi);break r}if(21==(0|Ir)){var L=(r+8|0)>>2,di=Me[L],wi=a+8|0,pi=Me[wi>>2];if((pi+di|0)>>>0>Me[Er+3]>>>0){var Ei=Se[pr+1];Q(r,Ei,pi);break r}var Ai=Or+di|0,gi=Se[pr+1];Pa(Ai,gi,pi,1);var yi=Se[L]+Se[wi>>2]|0;Se[L]=yi;break r}if(22==(0|Ir)||23==(0|Ir)||24==(0|Ir)){for(var mi=r+20|0;;){var mi,Si=Me[mi>>2];if(0==(0|Si))break a;if(0==(0|Se[Si+8>>2])){var Mi=Me[Se[Si+4>>2]>>2];if((Mi-22|0)>>>0>=3)break a;if((0|Mi)==(0|Ir))break}var mi=0|Si}var Ci=Se[pr+1];H(r,Ci);break r}if(25!=(0|Ir)&&26!=(0|Ir)&&27!=(0|Ir)&&28!=(0|Ir)&&29!=(0|Ir)&&30!=(0|Ir)&&31!=(0|Ir)&&32!=(0|Ir)){if(33==(0|Ir)){var D=(r+8|0)>>2,Ri=Me[D],P=(a+4|0)>>2,I=Me[P]>>2;if(0==(4&Se[Er]|0)){var Ti=Me[I+1];if((Ti+Ri|0)>>>0>Me[Er+3]>>>0){var Oi=Se[I];Q(r,Oi,Ti);break r}var Ni=Or+Ri|0,Ii=Se[I];Pa(Ni,Ii,Ti,1);var Pi=Se[D]+Se[Se[P]+4>>2]|0;Se[D]=Pi;break r}var Di=Me[I+3];if((Di+Ri|0)>>>0>Me[Er+3]>>>0){var Li=Se[I+2];Q(r,Li,Di);break r}var Fi=Or+Ri|0,Xi=Se[I+2];Pa(Fi,Xi,Di,1);var ji=Se[D]+Se[Se[P]+12>>2]|0;Se[D]=ji;break r}if(34==(0|Ir)){var Ui=Se[pr+1];H(r,Ui);break r}if(35==(0|Ir)){var N=(0|r)>>2;if(0!=(32&Se[N]|0)){var xi=Se[Er+5];rr(r,a,xi)}var zi=a+4|0,Vi=0==(0|Se[zi>>2]);e:do if(!Vi){var O=(r+20|0)>>2,Bi=Se[O],Hi=0|Mr;Se[Hi>>2]=Bi,Se[O]=Mr,Se[Mr+4>>2]=a;var Ki=Mr+8|0;Se[Ki>>2]=0;var Yi=Se[Er+4];Se[Mr+12>>2]=Yi;var Gi=Se[zi>>2];H(r,Gi);var Wi=Se[Hi>>2];if(Se[O]=Wi,0!=(0|Se[Ki>>2]))break r;if(0!=(32&Se[N]|0))break;var Zi=Me[cr],Qi=0==(0|Zi);do if(!Qi){var qi=r+8|0,$i=Me[qi>>2];if($i>>>0>=Me[Er+3]>>>0)break;Se[qi>>2]=$i+1|0,Ae[Zi+$i|0]=32;break e}while(0);Y(r,32)}while(0);if(0!=(32&Se[N]|0))break r;var Ji=Se[Er+5];rr(r,a,Ji);break r}if(36==(0|Ir)){var T=(r+20|0)>>2,rv=Me[T],av=0|Cr;Se[hr]=rv,Se[T]=av,Se[hr+1]=a;var ev=Cr+8|0;Se[ev>>2]=0;var iv=Se[Er+4];Se[hr+3]=iv;for(var vv=rv,tv=1;;){var tv,vv;if(0==(0|vv))break;if((Se[Se[vv+4>>2]>>2]-22|0)>>>0>=3)break;var fv=vv+8|0;if(0==(0|Se[fv>>2])){if(tv>>>0>3){Z(r);break r}var _v=(tv<<4)+Cr|0,R=_v>>2,C=vv>>2;Se[R]=Se[C],Se[R+1]=Se[C+1],Se[R+2]=Se[C+2],Se[R+3]=Se[C+3];var sv=Se[T];Se[_v>>2]=sv,Se[T]=_v,Se[fv>>2]=1;var nv=tv+1|0}else var nv=tv;var nv,vv=Se[vv>>2],tv=nv}var ov=Se[pr+2];if(H(r,ov),Se[T]=rv,0!=(0|Se[ev>>2]))break r;if(tv>>>0>1){for(var lv=tv;;){var lv,bv=lv-1|0,kv=Se[((bv<<4)+4>>2)+hr];if($(r,kv),bv>>>0<=1)break;var lv=bv}var uv=Se[T]}else var uv=rv;var uv;ar(r,a,uv);break r}if(37==(0|Ir)){var M=(r+20|0)>>2,cv=Se[M],hv=0|Rr;Se[hv>>2]=cv,Se[M]=Rr,Se[Rr+4>>2]=a;var dv=Rr+8|0;Se[dv>>2]=0;var wv=Se[Er+4];Se[Rr+12>>2]=wv;var pv=a+4|0,Ev=Se[pr+2];H(r,Ev);var Av=0==(0|Se[dv>>2]);e:do if(Av){var gv=Me[cr],yv=0==(0|gv);do{if(!yv){var mv=r+8|0,Sv=Me[mv>>2];if(Sv>>>0>=Me[Er+3]>>>0){gr=187;break}Se[mv>>2]=Sv+1|0,Ae[gv+Sv|0]=32,gr=188;break}gr=187}while(0);187==gr&&Y(r,32);var Mv=Se[pv>>2];H(r,Mv);var Cv=Me[cr],Rv=0==(0|Cv);do if(!Rv){var S=(r+8|0)>>2,Tv=Me[S];if((Tv+3|0)>>>0>Me[Er+3]>>>0)break;var Ov=Cv+Tv|0;Ae[Ov]=Ae[0|He.__str135],Ae[Ov+1]=Ae[(0|He.__str135)+1],Ae[Ov+2]=Ae[(0|He.__str135)+2];var Nv=Se[S]+3|0;Se[S]=Nv;break e}while(0);Q(r,0|He.__str135,3)}while(0);var Iv=Se[hv>>2];Se[M]=Iv;break r}if(38==(0|Ir)||39==(0|Ir)){var Pv=Se[pr+1];H(r,Pv);var Dv=a+8|0;if(0==(0|Se[Dv>>2]))break r;var Lv=Me[cr],Fv=0==(0|Lv);do{if(!Fv){var m=(r+8|0)>>2,Xv=Me[m];if((Xv+2|0)>>>0>Me[Er+3]>>>0){gr=197;break}var jv=Lv+Xv|0;oe=8236,Ae[jv]=255&oe,oe>>=8,Ae[jv+1]=255&oe;var Uv=Se[m]+2|0;Se[m]=Uv,gr=198;break}gr=197}while(0);197==gr&&Q(r,0|He.__str136,2);var xv=Se[Dv>>2];H(r,xv);break r}if(40==(0|Ir)){var y=(r+8|0)>>2,zv=Me[y],g=(r+12|0)>>2;if((zv+8|0)>>>0>Me[g]>>>0)Q(r,0|He.__str137,8);else{var Vv=Or+zv|0,le=0|Vv;oe=1919250543,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=Vv+4|0;oe=1919906913,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var Bv=Se[y]+8|0;Se[y]=Bv}var A=(a+4|0)>>2,Hv=(Ae[Se[Se[A]+4>>2]]-97&255&255)<26;e:do if(Hv){var Kv=Me[cr],Yv=0==(0|Kv);do if(!Yv){var Gv=Me[y];if(Gv>>>0>=Me[g]>>>0)break;Se[y]=Gv+1|0,Ae[Kv+Gv|0]=32;break e}while(0);Y(r,32)}while(0);var Wv=Me[cr],Zv=0==(0|Wv);do{if(!Zv){var Qv=Me[y],qv=Me[A],$v=Me[qv+8>>2];if(($v+Qv|0)>>>0>Me[g]>>>0){var Jv=qv,rt=$v;break}var at=Wv+Qv|0,et=Se[qv+4>>2];Pa(at,et,$v,1);var it=Se[y]+Se[Se[A]+8>>2]|0;Se[y]=it;break r}var vt=Me[A],Jv=vt,rt=Se[vt+8>>2]}while(0);var rt,Jv,tt=Se[Jv+4>>2];Q(r,tt,rt);break r}if(41==(0|Ir)){var E=(r+8|0)>>2,ft=Me[E];if((ft+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var _t=Or+ft|0,ie=0|He.__str10180,ve=_t,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var st=Se[E]+9|0;Se[E]=st}var nt=Se[pr+2];H(r,nt);break r}if(42==(0|Ir)){var p=(r+8|0)>>2,ot=Me[p];if((ot+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var lt=Or+ot|0,ie=0|He.__str10180,ve=lt,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var bt=Se[p]+9|0;Se[p]=bt}er(r,a);break r}if(43==(0|Ir)){var kt=a+4|0,ut=Se[kt>>2],ct=42==(0|Se[ut>>2]);e:do if(ct){var w=(r+8|0)>>2,ht=Me[w],dt=r+12|0;ht>>>0<Me[dt>>2]>>>0?(Se[w]=ht+1|0,Ae[Or+ht|0]=40):Y(r,40);var wt=Se[kt>>2];er(r,wt);var pt=Me[cr],Et=0==(0|pt);do if(!Et){var At=Me[w];if(At>>>0>=Me[dt>>2]>>>0)break;Se[w]=At+1|0,Ae[pt+At|0]=41;break e}while(0);Y(r,41)}else ir(r,ut);while(0);var gt=Me[cr],yt=0==(0|gt);do{if(!yt){var mt=r+8|0,St=Me[mt>>2];if(St>>>0>=Me[Er+3]>>>0){gr=232;break}Se[mt>>2]=St+1|0,Ae[gt+St|0]=40,gr=233;break}gr=232}while(0);232==gr&&Y(r,40);var Mt=Se[pr+2];H(r,Mt);var Ct=Me[cr],Rt=0==(0|Ct);do if(!Rt){var Tt=r+8|0,Ot=Me[Tt>>2];if(Ot>>>0>=Me[Er+3]>>>0)break;Se[Tt>>2]=Ot+1|0,Ae[Ct+Ot|0]=41;break r}while(0);Y(r,41);break r}if(44==(0|Ir)){var d=(a+8|0)>>2;if(45==(0|Se[Se[d]>>2])){var h=(a+4|0)>>2,Nt=Se[h],It=40==(0|Se[Nt>>2]);do if(It){var Pt=Se[Nt+4>>2];if(1!=(0|Se[Pt+8>>2]))break;if(Ae[Se[Pt+4>>2]]<<24>>24!=62)break;var Dt=r+8|0,Lt=Me[Dt>>2];Lt>>>0<Me[Er+3]>>>0?(Se[Dt>>2]=Lt+1|0,Ae[Or+Lt|0]=40):Y(r,40)}while(0);var Ft=Me[cr],Xt=0==(0|Ft);do{if(!Xt){var jt=r+8|0,Ut=Me[jt>>2];if(Ut>>>0>=Me[Er+3]>>>0){gr=248;break}Se[jt>>2]=Ut+1|0,Ae[Ft+Ut|0]=40,gr=249;break}gr=248}while(0);248==gr&&Y(r,40);var xt=Se[Se[d]+4>>2];H(r,xt);var zt=Me[cr],Vt=0==(0|zt);do{if(!Vt){var c=(r+8|0)>>2,Bt=Me[c];if((Bt+2|0)>>>0>Me[Er+3]>>>0){gr=252;break}var Ht=zt+Bt|0;oe=8233,Ae[Ht]=255&oe,oe>>=8,Ae[Ht+1]=255&oe;var Kt=Se[c]+2|0;Se[c]=Kt,gr=253;break}gr=252}while(0);252==gr&&Q(r,0|He.__str139,2);var Yt=Se[h];ir(r,Yt);var Gt=Me[cr],Wt=0==(0|Gt);do{if(!Wt){var u=(r+8|0)>>2,Zt=Me[u];if((Zt+2|0)>>>0>Me[Er+3]>>>0){gr=256;break}var Qt=Gt+Zt|0;oe=10272,Ae[Qt]=255&oe,oe>>=8,Ae[Qt+1]=255&oe;var qt=Se[u]+2|0;Se[u]=qt,gr=257;break}gr=256}while(0);256==gr&&Q(r,0|He.__str140,2);var $t=Se[Se[d]+8>>2];H(r,$t);var Jt=Me[cr],rf=0==(0|Jt);do{if(!rf){var af=r+8|0,ef=Me[af>>2];if(ef>>>0>=Me[Er+3]>>>0){gr=260;break}Se[af>>2]=ef+1|0,Ae[Jt+ef|0]=41,gr=261;break}gr=260}while(0);260==gr&&Y(r,41);var vf=Se[h];if(40!=(0|Se[vf>>2]))break r;var tf=Se[vf+4>>2];if(1!=(0|Se[tf+8>>2]))break r;if(Ae[Se[tf+4>>2]]<<24>>24!=62)break r;var ff=Me[cr],_f=0==(0|ff);do if(!_f){var sf=r+8|0,nf=Me[sf>>2];if(nf>>>0>=Me[Er+3]>>>0)break;Se[sf>>2]=nf+1|0,Ae[ff+nf|0]=41;break r}while(0);Y(r,41);break r}Z(r);break r}if(45==(0|Ir)){Z(r);break r}if(46==(0|Ir)){var of=a+4|0,k=(a+8|0)>>2,lf=Se[k],bf=47==(0|Se[lf>>2]);do if(bf){if(48!=(0|Se[Se[lf+8>>2]>>2]))break;var b=(r+8|0)>>2,kf=Me[b],l=(r+12|0)>>2;kf>>>0<Me[l]>>>0?(Se[b]=kf+1|0,Ae[Or+kf|0]=40):Y(r,40);var uf=Se[Se[k]+4>>2];H(r,uf);var cf=Me[cr],hf=0==(0|cf);do{if(!hf){var df=Me[b];if((df+2|0)>>>0>Me[l]>>>0){gr=278;break}var wf=cf+df|0;oe=8233,Ae[wf]=255&oe,oe>>=8,Ae[wf+1]=255&oe;var pf=Se[b]+2|0;Se[b]=pf,gr=279;break}gr=278}while(0);278==gr&&Q(r,0|He.__str139,2);var Ef=Se[of>>2];ir(r,Ef);var Af=Me[cr],gf=0==(0|Af);do{if(!gf){var yf=Me[b];if((yf+2|0)>>>0>Me[l]>>>0){gr=282;break}var mf=Af+yf|0;oe=10272,Ae[mf]=255&oe,oe>>=8,Ae[mf+1]=255&oe;var Sf=Se[b]+2|0;Se[b]=Sf,gr=283;break}gr=282}while(0);282==gr&&Q(r,0|He.__str140,2);var Mf=Se[Se[Se[k]+8>>2]+4>>2];H(r,Mf);var Cf=Me[cr],Rf=0==(0|Cf);do{if(!Rf){var Tf=Me[b];if((Tf+5|0)>>>0>Me[l]>>>0){gr=286;break}var Of=Cf+Tf|0;Ae[Of]=Ae[0|He.__str141],Ae[Of+1]=Ae[(0|He.__str141)+1],Ae[Of+2]=Ae[(0|He.__str141)+2],Ae[Of+3]=Ae[(0|He.__str141)+3],Ae[Of+4]=Ae[(0|He.__str141)+4];var Nf=Se[b]+5|0;Se[b]=Nf,gr=287;break}gr=286}while(0);286==gr&&Q(r,0|He.__str141,5);var If=Se[Se[Se[k]+8>>2]+8>>2];H(r,If);var Pf=Me[cr],Df=0==(0|Pf);do if(!Df){var Lf=Me[b];if(Lf>>>0>=Me[l]>>>0)break;Se[b]=Lf+1|0,Ae[Pf+Lf|0]=41;break r}while(0);Y(r,41);break r}while(0);Z(r);break r}if(47==(0|Ir)||48==(0|Ir)){Z(r);break r}if(49==(0|Ir)||50==(0|Ir)){var Ff=a+4|0,Xf=Se[Ff>>2],jf=33==(0|Se[Xf>>2]);do{if(jf){var Uf=Me[Se[Xf+4>>2]+16>>2];if(1==(0|Uf)||2==(0|Uf)||3==(0|Uf)||4==(0|Uf)||5==(0|Uf)||6==(0|Uf)){var xf=a+8|0;if(0!=(0|Se[Se[xf>>2]>>2])){var zf=Uf;break}if(50==(0|Ir)){var Vf=r+8|0,Bf=Me[Vf>>2];Bf>>>0<Me[Er+3]>>>0?(Se[Vf>>2]=Bf+1|0,Ae[Or+Bf|0]=45):Y(r,45)}var Hf=Se[xf>>2];if(H(r,Hf),2==(0|Uf)){var Kf=Me[cr],Yf=0==(0|Kf);do if(!Yf){var Gf=r+8|0,Wf=Me[Gf>>2];if(Wf>>>0>=Me[Er+3]>>>0)break;Se[Gf>>2]=Wf+1|0,Ae[Kf+Wf|0]=117;break r}while(0);Y(r,117);break r}if(3==(0|Uf)){var Zf=Me[cr],Qf=0==(0|Zf);do if(!Qf){var qf=r+8|0,$f=Me[qf>>2];if($f>>>0>=Me[Er+3]>>>0)break;Se[qf>>2]=$f+1|0,Ae[Zf+$f|0]=108;break r}while(0);Y(r,108);break r}if(4==(0|Uf)){var Jf=Me[cr],r_=0==(0|Jf);do if(!r_){var o=(r+8|0)>>2,a_=Me[o];if((a_+2|0)>>>0>Me[Er+3]>>>0)break;var e_=Jf+a_|0;oe=27765,Ae[e_]=255&oe,oe>>=8,Ae[e_+1]=255&oe;var i_=Se[o]+2|0;Se[o]=i_;break r}while(0);Q(r,0|He.__str142,2);break r}if(5==(0|Uf)){var v_=Me[cr],t_=0==(0|v_);do if(!t_){var n=(r+8|0)>>2,f_=Me[n];if((f_+2|0)>>>0>Me[Er+3]>>>0)break;var __=v_+f_|0;oe=27756,Ae[__]=255&oe,oe>>=8,Ae[__+1]=255&oe;var s_=Se[n]+2|0;Se[n]=s_;break r}while(0);Q(r,0|He.__str143,2);break r}if(6==(0|Uf)){var n_=Me[cr],o_=0==(0|n_);do if(!o_){var s=(r+8|0)>>2,l_=Me[s];if((l_+3|0)>>>0>Me[Er+3]>>>0)break;var b_=n_+l_|0;Ae[b_]=Ae[0|He.__str144],Ae[b_+1]=Ae[(0|He.__str144)+1],Ae[b_+2]=Ae[(0|He.__str144)+2];var k_=Se[s]+3|0;Se[s]=k_;break r}while(0);Q(r,0|He.__str144,3);break r}break r}if(7==(0|Uf)){var _=Se[pr+2]>>2;if(0!=(0|Se[_])){var zf=7;break}if(!(1==(0|Se[_+2])&49==(0|Ir))){var zf=Uf;break}var u_=Ae[Se[_+1]]<<24>>24;if(48==(0|u_)){var f=(r+8|0)>>2,c_=Me[f];if((c_+5|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str145,5);break r}var h_=Or+c_|0;Ae[h_]=Ae[0|He.__str145],Ae[h_+1]=Ae[(0|He.__str145)+1],Ae[h_+2]=Ae[(0|He.__str145)+2],Ae[h_+3]=Ae[(0|He.__str145)+3],Ae[h_+4]=Ae[(0|He.__str145)+4];var d_=Se[f]+5|0;Se[f]=d_;break r}if(49==(0|u_)){var t=(r+8|0)>>2,w_=Me[t];if((w_+4|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str146,4);break r}var p_=Or+w_|0;oe=1702195828,Ae[p_]=255&oe,oe>>=8,Ae[p_+1]=255&oe,oe>>=8,Ae[p_+2]=255&oe,oe>>=8,Ae[p_+3]=255&oe;var E_=Se[t]+4|0;Se[t]=E_;break r}var zf=Uf;break}var zf=Uf;break}var zf=0}while(0);var zf,v=(r+8|0)>>2,A_=Me[v],i=(r+12|0)>>2;A_>>>0<Me[i]>>>0?(Se[v]=A_+1|0,Ae[Or+A_|0]=40):Y(r,40);var g_=Se[Ff>>2];H(r,g_);var y_=Me[cr],m_=0==(0|y_);do{if(!m_){var S_=Me[v];if(S_>>>0>=Me[i]>>>0){gr=335;break}Se[v]=S_+1|0,Ae[y_+S_|0]=41,gr=336;break}gr=335}while(0);335==gr&&Y(r,41);var M_=50==(0|Se[Nr>>2]);e:do if(M_){var C_=Me[cr],R_=0==(0|C_);do if(!R_){var T_=Me[v];if(T_>>>0>=Me[i]>>>0)break;Se[v]=T_+1|0,Ae[C_+T_|0]=45;break e}while(0);Y(r,45)}while(0);if(8==(0|zf)){var O_=Me[cr],N_=0==(0|O_);do{if(!N_){var I_=Me[v];if(I_>>>0>=Me[i]>>>0){gr=345;break}Se[v]=I_+1|0,Ae[O_+I_|0]=91,gr=346;break}gr=345}while(0);345==gr&&Y(r,91);var P_=Se[pr+2];H(r,P_);var D_=Me[cr],L_=0==(0|D_);do if(!L_){var F_=Me[v];if(F_>>>0>=Me[i]>>>0)break;Se[v]=F_+1|0,Ae[D_+F_|0]=93;break r}while(0);Y(r,93);break r}var X_=Se[pr+2];H(r,X_);break r}Z(r);break r}}while(0);var e=(r+20|0)>>2,j_=Se[e],U_=0|Sr;Se[U_>>2]=j_,Se[e]=Sr,Se[Sr+4>>2]=a;var x_=Sr+8|0;Se[x_>>2]=0;var z_=Se[Er+4];Se[Sr+12>>2]=z_;var V_=Se[pr+1];H(r,V_),0==(0|Se[x_>>2])&&$(r,a);var B_=Se[U_>>2];Se[e]=B_}while(0);Oe=Ar}function K(r,a,e,i){var v=i>>2;Se[v]=r,Se[v+1]=r+e|0,Se[v+2]=a,Se[v+3]=r,Se[v+6]=e<<1,Se[v+5]=0,Se[v+9]=e,Se[v+8]=0,Se[v+10]=0,Se[v+11]=0,Se[v+12]=0}function Y(r,a){var e,i=r+4|0,v=Me[i>>2],t=0==(0|v);do if(!t){var e=(r+8|0)>>2,f=Me[e];if(f>>>0<Me[r+12>>2]>>>0)var _=v,s=f;else{tr(r,1);var n=Me[i>>2];if(0==(0|n))break;var _=n,s=Se[e]}var s,_;Ae[_+s|0]=255&a;var o=Se[e]+1|0;Se[e]=o}while(0)}function G(r,a,e,i){var v,t=i>>2,f=Oe;Oe+=4;var _=f,v=_>>2,s=0==(0|r);do if(s){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var o=0==(0|e);if(0!=(0|a)&o){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var l=W(r,_);if(0==(0|l)){if(0==(0|i)){var n=0;break}if(1==(0|Se[v])){Se[t]=-1;var n=0}else{Se[t]=-2;var n=0}}else{var b=0==(0|a);do if(b){if(o){var k=l;break}var u=Se[v];Se[e>>2]=u;var k=l}else{var c=Ca(l);if(c>>>0<Me[e>>2]>>>0){Ra(a,l);va(l);var k=a}else{va(a);var h=Se[v];Se[e>>2]=h;var k=l}}while(0);var k;if(0==(0|i)){var n=k;break}Se[t]=0;var n=k}}}while(0);var n;return Oe=f,n}function W(r,a){var e,i=Oe;Oe+=52;var v,t=i,e=t>>2;Se[a>>2]=0;var f=Ca(r),_=Ae[r]<<24>>24==95;do{if(_){if(Ae[r+1|0]<<24>>24==90){var s=0;v=13;break}v=3;break}v=3}while(0);do if(3==v){var n=Na(r,0|He.__str117,8);if(0!=(0|n)){var s=1;v=13;break}var o=Ae[r+8|0];if(o<<24>>24!=46&&o<<24>>24!=95&&o<<24>>24!=36){var s=1;v=13;break}var l=r+9|0,b=Ae[l];if(b<<24>>24!=68&&b<<24>>24!=73){\\\\nvar s=1;v=13;break}if(Ae[r+10|0]<<24>>24!=95){var s=1;v=13;break}var k=f+29|0,u=Jr(k);if(0==(0|u)){Se[a>>2]=1;var c=0;v=19;break}Ae[l]<<24>>24==73?Pa(u,0|He.__str118,30,1):Pa(u,0|He.__str119,29,1);var h=r+11|0,c=(Ia(u,h),u);v=19;break}while(0);if(13==v){var s;K(r,17,f,t);var d=Se[e+6],w=Ta(),p=Oe;Oe+=12*d,Oe=Oe+3>>2<<2;var E=Oe;if(Oe+=4*Se[e+9],Oe=Oe+3>>2<<2,Se[e+4]=p,Se[e+7]=E,s)var A=N(t),g=A;else var y=T(t,1),g=y;var g,m=Ae[Se[e+3]]<<24>>24==0?g:0,S=Se[e+12]+f+10*Se[e+10]|0;if(0==(0|m))var M=0;else var C=S/8+S|0,R=B(17,m,C,a),M=R;var M;Oa(w);var c=M}var c;return Oe=i,c}function Z(r){var a=r+4|0,e=Se[a>>2];va(e),Se[a>>2]=0}function Q(r,a,e){var i,v=r+4|0,t=Me[v>>2],f=0==(0|t);do if(!f){var i=(r+8|0)>>2,_=Me[i];if((_+e|0)>>>0>Me[r+12>>2]>>>0){tr(r,e);var s=Me[v>>2];if(0==(0|s))break;var n=s,o=Se[i]}else var n=t,o=_;var o,n;Pa(n+o|0,a,e,1);var l=Se[i]+e|0;Se[i]=l}while(0)}function q(r,a,e){var i,v,t=a+e|0,f=(0|e)>0;r:do if(f)for(var _=t,s=r+4|0,i=(r+8|0)>>2,n=r+12|0,o=a;;){var o,l=(_-o|0)>3;a:do{if(l){if(Ae[o]<<24>>24!=95){v=21;break}if(Ae[o+1|0]<<24>>24!=95){v=21;break}if(Ae[o+2|0]<<24>>24!=85){v=21;break}for(var b=o+3|0,k=0;;){var k,b;if(b>>>0>=t>>>0){v=21;break a}var u=ge[b],c=u<<24>>24;if((u-48&255&255)<10)var h=c-48|0;else if((u-65&255&255)<6)var h=c-55|0;else{if((u-97&255&255)>=6)break;var h=c-87|0}var h,b=b+1|0,k=(k<<4)+h|0}if(!(u<<24>>24==95&k>>>0<256)){v=21;break}var d=Me[s>>2],w=0==(0|d);do if(!w){var p=Me[i];if(p>>>0>=Me[n>>2]>>>0)break;Se[i]=p+1|0,Ae[d+p|0]=255&k;var E=b;v=25;break a}while(0);Y(r,k);var E=b;v=25;break}v=21}while(0);a:do if(21==v){var A=Me[s>>2],g=0==(0|A);do if(!g){var y=Me[i];if(y>>>0>=Me[n>>2]>>>0)break;var m=Ae[o];Se[i]=y+1|0,Ae[A+y|0]=m;var E=o;break a}while(0);var S=Ae[o]<<24>>24;Y(r,S);var E=o}while(0);var E,M=E+1|0;if(M>>>0>=t>>>0)break r;var o=M}while(0)}function $(r,a){var e,i,v,t,f,_,s,n=r>>2,o=Se[a>>2];r:do if(22==(0|o)||25==(0|o)){var l=Me[n+1],b=0==(0|l);do if(!b){var _=(r+8|0)>>2,k=Me[_];if((k+9|0)>>>0>Me[n+3]>>>0)break;for(var u=l+k|0,c=0|He.__str147,h=u,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var w=Se[_]+9|0;Se[_]=w;break r}while(0);Q(r,0|He.__str147,9)}else if(23==(0|o)||26==(0|o)){var p=Me[n+1],E=0==(0|p);do if(!E){var f=(r+8|0)>>2,A=Me[f];if((A+9|0)>>>0>Me[n+3]>>>0)break;for(var g=p+A|0,c=0|He.__str148,h=g,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var y=Se[f]+9|0;Se[f]=y;break r}while(0);Q(r,0|He.__str148,9)}else if(24==(0|o)||27==(0|o)){var m=Me[n+1],S=0==(0|m);do if(!S){var t=(r+8|0)>>2,M=Me[t];if((M+6|0)>>>0>Me[n+3]>>>0)break;var C=m+M|0;Ae[C]=Ae[0|He.__str149],Ae[C+1]=Ae[(0|He.__str149)+1],Ae[C+2]=Ae[(0|He.__str149)+2],Ae[C+3]=Ae[(0|He.__str149)+3],Ae[C+4]=Ae[(0|He.__str149)+4],Ae[C+5]=Ae[(0|He.__str149)+5];var R=Se[t]+6|0;Se[t]=R;break r}while(0);Q(r,0|He.__str149,6)}else if(28==(0|o)){var T=Me[n+1],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[n+3]>>>0){s=17;break}Se[N>>2]=I+1|0,Ae[T+I|0]=32,s=18;break}s=17}while(0);17==s&&Y(r,32);var P=Se[a+8>>2];H(r,P)}else if(29==(0|o)){if(0!=(4&Se[n]|0))break;var D=Me[n+1],L=0==(0|D);do if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[n+3]>>>0)break;Se[F>>2]=X+1|0,Ae[D+X|0]=42;break r}while(0);Y(r,42)}else if(30==(0|o)){var j=Me[n+1],U=0==(0|j);do if(!U){var x=r+8|0,z=Me[x>>2];if(z>>>0>=Me[n+3]>>>0)break;Se[x>>2]=z+1|0,Ae[j+z|0]=38;break r}while(0);Y(r,38)}else if(31==(0|o)){var V=Me[n+1],B=0==(0|V);do if(!B){var v=(r+8|0)>>2,K=Me[v];if((K+8|0)>>>0>Me[n+3]>>>0)break;var G=V+K|0,W=0|G;oe=1886220131,Ae[W]=255&oe,oe>>=8,Ae[W+1]=255&oe,oe>>=8,Ae[W+2]=255&oe,oe>>=8,Ae[W+3]=255&oe;var Z=G+4|0;oe=544761196,Ae[Z]=255&oe,oe>>=8,Ae[Z+1]=255&oe,oe>>=8,Ae[Z+2]=255&oe,oe>>=8,Ae[Z+3]=255&oe;var q=Se[v]+8|0;Se[v]=q;break r}while(0);Q(r,0|He.__str150,8)}else if(32==(0|o)){var $=Me[n+1],J=0==(0|$);do if(!J){var i=(r+8|0)>>2,rr=Me[i];if((rr+10|0)>>>0>Me[n+3]>>>0)break;for(var ar=$+rr|0,c=0|He.__str151,h=ar,d=c+10;c<d;c++,h++)Ae[h]=Ae[c];var er=Se[i]+10|0;Se[i]=er;break r}while(0);Q(r,0|He.__str151,10)}else if(37==(0|o)){var ir=r+4|0,vr=Me[ir>>2],tr=0==(0|vr);do{if(!tr){var fr=r+8|0,_r=Me[fr>>2];if(0!=(0|_r)&&Ae[vr+(_r-1)|0]<<24>>24==40){s=42;break}if(_r>>>0>=Me[n+3]>>>0){s=41;break}Se[fr>>2]=_r+1|0,Ae[vr+_r|0]=32,s=42;break}s=41}while(0);41==s&&Y(r,32);var sr=Se[a+4>>2];H(r,sr);var nr=Me[ir>>2],or=0==(0|nr);do if(!or){var e=(r+8|0)>>2,lr=Me[e];if((lr+3|0)>>>0>Me[n+3]>>>0)break;var br=nr+lr|0;Ae[br]=Ae[0|He.__str135],Ae[br+1]=Ae[(0|He.__str135)+1],Ae[br+2]=Ae[(0|He.__str135)+2];var kr=Se[e]+3|0;Se[e]=kr;break r}while(0);Q(r,0|He.__str135,3)}else if(3==(0|o)){var ur=Se[a+4>>2];H(r,ur)}else H(r,a);while(0)}function J(r){var a=r+20|0,e=Se[a>>2];if((0|e)<(0|Se[r+24>>2])){var i=Se[r+16>>2]+12*e|0,v=e+1|0;Se[a>>2]=v;var t=i}else var t=0;var t;return t}function rr(r,a,e){var i,v,t,f,_=r>>2,s=e,t=s>>2,n=0;r:for(;;){var n,s,o=0==(0|s);do if(!o){if(0!=(0|Se[t+2]))break;var l=Se[Se[t+1]>>2];if(29==(0|l)||30==(0|l)){f=9;break r}if(22==(0|l)||23==(0|l)||24==(0|l)||28==(0|l)||31==(0|l)||32==(0|l)||37==(0|l)){var b=Se[_+1];f=12;break r}var s=Se[t],t=s>>2,n=1;continue r}while(0);if(0!=(0|Se[a+4>>2])&0==(0|n)){f=9;break}var k=0,u=r+4|0,v=u>>2;f=22;break}do if(9==f){var c=Se[_+1];if(0==(0|c)){f=17;break}var h=Se[_+2];if(0==(0|h)){var d=c;f=13;break}var w=Ae[c+(h-1)|0];if(w<<24>>24==40||w<<24>>24==42){f=18;break}var b=c;f=12;break}while(0);do if(12==f){var b;if(0==(0|b)){f=17;break}var d=b;f=13;break}while(0);do if(13==f){var d,p=r+8|0,E=Me[p>>2];if(0!=(0|E)&&Ae[d+(E-1)|0]<<24>>24==32){f=18;break}if(E>>>0>=Me[_+3]>>>0){f=17;break}Se[p>>2]=E+1|0,Ae[d+E|0]=32,f=18;break}while(0);do if(17==f){Y(r,32),f=18;break}while(0);r:do if(18==f){var A=r+4|0,g=Me[A>>2],y=0==(0|g);do if(!y){var m=r+8|0,S=Me[m>>2];if(S>>>0>=Me[_+3]>>>0)break;Se[m>>2]=S+1|0,Ae[g+S|0]=40;var k=1,u=A,v=u>>2;break r}while(0);Y(r,40);var k=1,u=A,v=u>>2}while(0);var u,k,i=(r+20|0)>>2,M=Se[i];Se[i]=0,vr(r,e,0);r:do if(k){var C=Me[v],R=0==(0|C);do if(!R){var T=r+8|0,O=Me[T>>2];if(O>>>0>=Me[_+3]>>>0)break;Se[T>>2]=O+1|0,Ae[C+O|0]=41;break r}while(0);Y(r,41)}while(0);var N=Me[v],I=0==(0|N);do{if(!I){var P=r+8|0,D=Me[P>>2];if(D>>>0>=Me[_+3]>>>0){f=30;break}Se[P>>2]=D+1|0,Ae[N+D|0]=40,f=31;break}f=30}while(0);30==f&&Y(r,40);var L=Se[a+8>>2];0!=(0|L)&&H(r,L);var F=Me[v],X=0==(0|F);do{if(!X){var j=r+8|0,U=Me[j>>2];if(U>>>0>=Me[_+3]>>>0){f=36;break}Se[j>>2]=U+1|0,Ae[F+U|0]=41,f=37;break}f=36}while(0);36==f&&Y(r,41),vr(r,e,1),Se[i]=M}function ar(r,a,e){var i,v,t,f=r>>2,_=0==(0|e);do{if(!_){var s=e,v=s>>2;r:for(;;){var s;if(0==(0|s)){var n=1;t=14;break}if(0==(0|Se[v+2])){var o=36==(0|Se[Se[v+1]>>2]),l=1&o^1;if(o){var n=l;t=14;break}var b=r+4|0,k=Me[b>>2],u=0==(0|k);do{if(!u){var i=(r+8|0)>>2,c=Me[i];if((c+2|0)>>>0>Me[f+3]>>>0){t=9;break}var h=k+c|0;oe=10272,Ae[h]=255&oe,oe>>=8,Ae[h+1]=255&oe;var d=Se[i]+2|0;Se[i]=d,vr(r,e,0),t=10;break}t=9}while(0);9==t&&(Q(r,0|He.__str140,2),vr(r,e,0));var w=Me[b>>2],p=0==(0|w);do if(!p){var E=r+8|0,A=Me[E>>2];if(A>>>0>=Me[f+3]>>>0)break;Se[E>>2]=A+1|0,Ae[w+A|0]=41;var g=l;t=15;break r}while(0);Y(r,41);var g=l;t=15;break}var s=Se[v],v=s>>2}if(14==t){var n;vr(r,e,0);var g=n}var g;if(0!=(0|g)){t=17;break}var y=r+4|0;t=21;break}t=17}while(0);r:do if(17==t){var m=r+4|0,S=Me[m>>2],M=0==(0|S);do if(!M){var C=r+8|0,R=Me[C>>2];if(R>>>0>=Me[f+3]>>>0)break;Se[C>>2]=R+1|0,Ae[S+R|0]=32;var y=m;break r}while(0);Y(r,32);var y=m}while(0);var y,T=Me[y>>2],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[f+3]>>>0){t=24;break}Se[N>>2]=I+1|0,Ae[T+I|0]=91,t=25;break}t=24}while(0);24==t&&Y(r,91);var P=Se[a+4>>2];0!=(0|P)&&H(r,P);var D=Me[y>>2],L=0==(0|D);do{if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[f+3]>>>0){t=30;break}Se[F>>2]=X+1|0,Ae[D+X|0]=93,t=31;break}t=30}while(0);30==t&&Y(r,93)}function er(r,a){var e,i,v,t,f,_,s=Oe;Oe+=8;var n,o=s,_=(a+4|0)>>2,l=Se[_];if(4==(0|Se[l>>2])){var f=(r+20|0)>>2,b=Se[f];Se[f]=0;var t=(r+16|0)>>2,k=Se[t],u=0|o;Se[u>>2]=k,Se[t]=o;var c=Se[_];Se[o+4>>2]=c;var h=Se[c+4>>2];H(r,h);var d=Se[u>>2];Se[t]=d;var v=(r+4|0)>>2,w=Me[v],p=0==(0|w);do{if(!p){var i=(r+8|0)>>2,E=Me[i],A=0==(0|E);do if(!A){if(Ae[w+(E-1)|0]<<24>>24!=60)break;E>>>0<Me[r+12>>2]>>>0?(Se[i]=E+1|0,Ae[w+E|0]=32):Y(r,32)}while(0);var g=Me[v];if(0==(0|g)){n=12;break}var y=Me[i];if(y>>>0>=Me[r+12>>2]>>>0){n=12;break}Se[i]=y+1|0,Ae[g+y|0]=60,n=13;break}n=12}while(0);12==n&&Y(r,60);var m=Se[Se[_]+8>>2];H(r,m);var S=Me[v],M=0==(0|S);do{if(!M){var e=(r+8|0)>>2,C=Me[e],R=0==(0|C);do if(!R){if(Ae[S+(C-1)|0]<<24>>24!=62)break;C>>>0<Me[r+12>>2]>>>0?(Se[e]=C+1|0,Ae[S+C|0]=32):Y(r,32)}while(0);var T=Me[v];if(0==(0|T)){n=22;break}var O=Me[e];if(O>>>0>=Me[r+12>>2]>>>0){n=22;break}Se[e]=O+1|0,Ae[T+O|0]=62,n=23;break}n=22}while(0);22==n&&Y(r,62),Se[f]=b}else H(r,l);Oe=s}function ir(r,a){var e,i=40==(0|Se[a>>2]);r:do if(i){var v=Me[r+4>>2],t=0==(0|v);do{if(!t){var e=(r+8|0)>>2,f=Me[e],_=a+4|0,s=Me[_>>2],n=Me[s+8>>2];if((n+f|0)>>>0>Me[r+12>>2]>>>0){var o=s,l=n;break}var b=v+f|0,k=Se[s+4>>2];Pa(b,k,n,1);var u=Se[e]+Se[Se[_>>2]+8>>2]|0;Se[e]=u;break r}var c=Me[a+4>>2],o=c,l=Se[c+8>>2]}while(0);var l,o,h=Se[o+4>>2];Q(r,h,l)}else H(r,a);while(0)}function vr(r,a,e){var i,v,t,f,_,f=(r+4|0)>>2,s=0==(0|e),t=(r+16|0)>>2;r:do if(s)for(var n=a;;){var n;if(0==(0|n)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var o=n+8|0,l=0==(0|Se[o>>2]);do if(l){var b=n+4|0;if((Se[Se[b>>2]>>2]-25|0)>>>0<3)break;Se[o>>2]=1;var k=Me[t],u=Se[n+12>>2];Se[t]=u;var c=Me[b>>2],h=Se[c>>2];if(35==(0|h)){var d=n,w=k,p=c;_=14;break r}if(36==(0|h)){var E=n,A=k,g=c;_=15;break r}if(2==(0|h)){var y=k,m=b;_=16;break r}$(r,c),Se[t]=k}while(0);var n=Se[n>>2]}else for(var S=a;;){var S;if(0==(0|S)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var M=S+8|0;if(0==(0|Se[M>>2])){Se[M>>2]=1;var C=Me[t],R=Se[S+12>>2];Se[t]=R;var T=S+4|0,O=Me[T>>2],N=Se[O>>2];if(35==(0|N)){var d=S,w=C,p=O;_=14;break r}if(36==(0|N)){var E=S,A=C,g=O;_=15;break r}if(2==(0|N)){var y=C,m=T;_=16;break r}$(r,O),Se[t]=C}var S=Se[S>>2]}while(0);if(14==_){var p,w,d,I=Se[d>>2];rr(r,p,I),Se[t]=w}else if(15==_){var g,A,E,P=Se[E>>2];ar(r,g,P),Se[t]=A}else if(16==_){var m,y,v=(r+20|0)>>2,D=Se[v];Se[v]=0;var L=Se[Se[m>>2]+4>>2];H(r,L),Se[v]=D;var F=0==(4&Se[r>>2]|0),X=Me[f],j=0!=(0|X);r:do if(F){do if(j){var i=(r+8|0)>>2,U=Me[i];if((U+2|0)>>>0>Me[r+12>>2]>>>0)break;var x=X+U|0;oe=14906,Ae[x]=255&oe,oe>>=8,Ae[x+1]=255&oe;var z=Se[i]+2|0;Se[i]=z;break r}while(0);Q(r,0|He.__str120,2)}else{do if(j){var V=r+8|0,B=Me[V>>2];if(B>>>0>=Me[r+12>>2]>>>0)break;Se[V>>2]=B+1|0,Ae[X+B|0]=46;break r}while(0);Y(r,46)}while(0);var K=Me[Se[m>>2]+8>>2],G=(Se[K>>2]-25|0)>>>0<3;r:do if(G)for(var W=K;;){var W,Z=Me[W+4>>2];if((Se[Z>>2]-25|0)>>>0>=3){var q=Z;break r}var W=Z}else var q=K;while(0);var q;H(r,q),Se[t]=y}}function tr(r,a){var e,e=(r+4|0)>>2,i=Se[e],v=0==(0|i);r:do if(!v){for(var t=Se[r+8>>2]+a|0,f=r+12|0,_=Se[f>>2],s=i;;){var s,_;if(t>>>0<=_>>>0)break r;var n=_<<1,o=fa(s,n);if(0==(0|o))break;Se[e]=o,Se[f>>2]=n;var _=n,s=o}var l=Se[e];va(l),Se[e]=0,Se[r+24>>2]=1}while(0)}function fr(r,a,e){var i,v=J(r),i=v>>2;return 0!=(0|v)&&(Se[i]=21,Se[i+1]=a,Se[i+2]=e),v}function _r(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;if(88==(0|i)){var v=e+1|0;Se[a]=v;var t=nr(r),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else if(76==(0|i))var o=or(r),n=o;else var l=N(r),n=l;var n;return n}function sr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==110){var v=e+1|0;Se[a]=v;var t=1,f=Ae[v],_=v}else var t=0,f=i,_=e;var _,f,t,s=(f-48&255&255)<10;r:do if(s)for(var n=f,o=0,l=_;;){var l,o,n,b=(n<<24>>24)-48+10*o|0,k=l+1|0;Se[a]=k;var u=ge[k];if((u-48&255&255)>=10){var c=b;break r}var n=u,o=b,l=k}else var c=0;while(0);var c,h=0==(0|t)?c:0|-c;return h}function nr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=Ae[i];do{if(v<<24>>24==76){var t=or(r),f=t;e=21;break}if(v<<24>>24==84){var _=x(r),f=_;e=21;break}if(v<<24>>24==115){if(Ae[i+1|0]<<24>>24!=114){e=8;break}var s=i+2|0;Se[a]=s;var n=N(r),o=br(r);if(Ae[Se[a]]<<24>>24==73){var l=z(r),b=D(r,4,o,l),k=D(r,1,n,b),f=k;e=21;break}var u=D(r,1,n,o),f=u;e=21;break}e=8}while(0);r:do if(8==e){var c=kr(r);if(0==(0|c)){var f=0;break}var h=0|c,d=Se[h>>2],w=40==(0|d);do{if(w){var p=c+4|0,E=r+48|0,A=Se[Se[p>>2]+8>>2]-2+Se[E>>2]|0;Se[E>>2]=A;var g=Se[h>>2];if(40!=(0|g)){var y=g;e=13;break}var m=Se[p>>2],S=Se[m>>2],M=Da(S,0|He.__str90);if(0!=(0|M)){var C=m;e=15;break}var R=N(r),T=D(r,43,c,R),f=T;break r}var y=d;e=13}while(0);do if(13==e){var y;if(40==(0|y)){var C=Se[c+4>>2];e=15;break}if(41==(0|y)){var O=c+4|0;e=17;break}if(42==(0|y)){e=18;break}var f=0;break r}while(0);do if(15==e){var C,O=C+12|0;e=17;break}while(0);do if(17==e){var O,I=Se[O>>2];if(1==(0|I))break;if(2==(0|I)){var P=nr(r),L=nr(r),F=D(r,45,P,L),X=D(r,44,c,F);return X}if(3==(0|I)){var j=nr(r),U=nr(r),V=nr(r),B=D(r,48,U,V),H=D(r,47,j,B),K=D(r,46,c,H);return K}var f=0;break r}while(0);var Y=nr(r),G=D(r,43,c,Y);return G}while(0);var f;return f}function or(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==76;r:do if(v){if(Ae[i]<<24>>24==95)var t=T(r,0),f=t;else{var _=N(r);if(0==(0|_)){var s=0;break}var n=33==(0|Se[_>>2]);do if(n){var o=Se[_+4>>2];if(0==(0|Se[o+16>>2]))break;var l=r+48|0,b=Se[l>>2]-Se[o+4>>2]|0;Se[l>>2]=b}while(0);var k=Se[a];if(Ae[k]<<24>>24==110){var u=k+1|0;Se[a]=u;var c=50,h=u}else var c=49,h=k;for(var h,c,d=h;;){var d,w=Ae[d];if(w<<24>>24==69)break;if(w<<24>>24==0){var s=0;break r}var p=d+1|0;Se[a]=p;var d=p}var E=lr(r,h,d-h|0),A=D(r,c,_,E),f=A}var f,g=Se[a],y=g+1|0;Se[a]=y;var m=Ae[g]<<24>>24==69?f:0,s=m}else var s=0;while(0);var s;return s}function lr(r,a,e){var i=J(r),v=m(i,a,e),t=0==(0|v)?0:i;return t}function br(r){var a=r+12|0,e=Me[a>>2],i=ge[e],v=(i-48&255&255)<10;do if(v)var t=L(r),f=t;else if((i-97&255&255)<26){var _=kr(r);if(0==(0|_)){var f=0;break}if(40!=(0|Se[_>>2])){var f=_;break}var s=r+48|0,n=Se[Se[_+4>>2]+8>>2]+Se[s>>2]+7|0;Se[s>>2]=n;var f=_}else if(i<<24>>24==67||i<<24>>24==68)var o=hr(r),f=o;else{if(i<<24>>24!=76){var f=0;break}Se[a>>2]=e+1|0;var l=L(r);if(0==(0|l)){var f=0;break}var b=dr(r),k=0==(0|b)?0:l,f=k}while(0);var f;return f}function kr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=i+1|0;Se[a]=v;var t=ge[i],f=i+2|0;Se[a]=f;var _=ge[v];do{if(t<<24>>24==118){if((_-48&255&255)>=10){var s=49,n=0;e=6;break}var o=(_<<24>>24)-48|0,l=L(r),b=ur(r,o,l),k=b;e=14;break}if(t<<24>>24==99){if(_<<24>>24!=118){var s=49,n=0;e=6;break}var u=N(r),c=D(r,42,u,0),k=c;e=14;break}var s=49,n=0;e=6}while(0);r:do if(6==e){for(;;){var n,s,h=(s-n)/2+n|0,d=(h<<4)+ri|0,w=Se[d>>2],p=Ae[w],E=t<<24>>24==p<<24>>24;if(E&&_<<24>>24==Ae[w+1|0]<<24>>24)break;var A=t<<24>>24<p<<24>>24;do if(A)var g=h,y=n;else{if(E&&_<<24>>24<Ae[w+1|0]<<24>>24){var g=h,y=n;break}var g=s,y=h+1|0}while(0);var y,g;if((0|y)==(0|g)){var k=0;break r}var s=g,n=y}var m=cr(r,d),k=m}while(0);var k;return k}function ur(r,a,e){var i=J(r),v=S(i,a,e),t=0==(0|v)?0:i;return t}function cr(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=40,Se[e+4>>2]=a),e}function hr(r){var a,e,i=Se[r+44>>2],e=i>>2,v=0==(0|i);do if(!v){var t=Se[e];if(0==(0|t)){var f=r+48|0,_=Se[f>>2]+Se[e+2]|0;Se[f>>2]=_}else{if(21!=(0|t))break;var s=r+48|0,n=Se[s>>2]+Se[e+2]|0;Se[s>>2]=n}}while(0);var a=(r+12|0)>>2,o=Se[a],l=o+1|0;Se[a]=l;var b=Ae[o]<<24>>24;do if(67==(0|b)){var k=o+2|0;Se[a]=k;var u=Ae[l]<<24>>24;if(49==(0|u))var c=1;else if(50==(0|u))var c=2;else{if(51!=(0|u)){var h=0;break}var c=3}var c,d=wr(r,c,i),h=d}else if(68==(0|b)){var w=o+2|0;Se[a]=w;var p=Ae[l]<<24>>24;if(48==(0|p))var E=1;else if(49==(0|p))var E=2;else{if(50!=(0|p)){var h=0;break}var E=3}var E,A=pr(r,E,i),h=A}else var h=0;while(0);var h;return h}function dr(r){var a=r+12|0,e=Se[a>>2];if(Ae[e]<<24>>24==95){var i=e+1|0;Se[a>>2]=i;var v=sr(r),t=v>>>31^1}else var t=1;var t;return t}function wr(r,a,e){var i=J(r),v=M(i,a,e),t=0==(0|v)?0:i;return t}function pr(r,a,e){var i=J(r),v=C(i,a,e),t=0==(0|v)?0:i;return t}function Er(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=5,Se[e+4>>2]=a),e}function Ar(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;do if(78==(0|i))var v=gr(r),t=v;else if(90==(0|i))var f=yr(r),t=f;else if(76==(0|i))var _=br(r),t=_;else if(83==(0|i)){if(Ae[e+1|0]<<24>>24==116){var s=e+2|0;Se[a]=s;var n=lr(r,0|He.__str152,3),o=br(r),l=D(r,1,n,o),b=r+48|0,k=Se[b>>2]+3|0;Se[b>>2]=k;var u=0,c=l}else var h=V(r,0),u=1,c=h;var c,u;if(Ae[Se[a]]<<24>>24!=73){var t=c;break}if(0==(0|u)){var d=R(r,c);if(0==(0|d)){var t=0;break}}var w=z(r),p=D(r,4,c,w),t=p}else{var E=br(r);if(Ae[Se[a]]<<24>>24!=73){var t=E;break}var A=R(r,E);if(0==(0|A)){var t=0;break}var g=z(r),y=D(r,4,E,g),t=y}while(0);var t;return t}function gr(r){var a,e=Oe;Oe+=4;var i=e,a=(r+12|0)>>2,v=Se[a],t=v+1|0;Se[a]=t;var f=Ae[v]<<24>>24==78;do if(f){var _=I(r,i,1);if(0==(0|_)){var s=0;break}var n=mr(r);if(Se[_>>2]=n,0==(0|n)){var s=0;break}var o=Se[a],l=o+1|0;if(Se[a]=l,Ae[o]<<24>>24!=69){var s=0;break}var s=Se[i>>2]}else var s=0;while(0);var s;return Oe=e,s}function yr(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==90;do if(v){var t=O(r,0),f=Se[a],_=f+1|0;if(Se[a]=_,Ae[f]<<24>>24!=69){var s=0;break}if(Ae[_]<<24>>24==115){var n=f+2|0;Se[a]=n;var o=dr(r);if(0==(0|o)){var s=0;break}var l=lr(r,0|He.__str168,14),b=D(r,2,t,l),s=b}else{var k=Ar(r),u=dr(r);if(0==(0|u)){var s=0;break}var c=D(r,2,t,k),s=c}}else var s=0;while(0);var s;return s}function mr(r){var a,e=r+12|0,i=0;r:for(;;){var i,v=ge[Se[e>>2]];if(v<<24>>24==0){var t=0;break}var f=(v-48&255&255)<10|(v-97&255&255)<26;do{if(!f){if(v<<24>>24==76||v<<24>>24==68||v<<24>>24==67){a=5;break}if(v<<24>>24==83){var _=V(r,1),s=_;a=10;break}if(v<<24>>24==73){if(0==(0|i)){var t=0;break r}var n=z(r),o=4,l=n;a=11;break}if(v<<24>>24==84){var b=x(r),s=b;a=10;break}if(v<<24>>24==69){var t=i;break r}var t=0;break r}a=5}while(0);do if(5==a){var k=br(r),s=k;a=10;break}while(0);do if(10==a){var s;if(0==(0|i)){var u=s;a=12;break}var o=1,l=s;a=11;break}while(0);if(11==a)var l,o,c=D(r,o,i,l),u=c;var u;if(v<<24>>24!=83)if(Ae[Se[e>>2]]<<24>>24!=69){var h=R(r,u);if(0==(0|h)){var t=0;break}var i=u}else var i=u;else var i=u}var t;return t}function Sr(r,a){var e,i,v=Oe;Oe+=4;var t=v,i=t>>2,e=(r+12|0)>>2,f=Se[e];if(Ae[f]<<24>>24==74){var _=f+1|0;Se[e]=_;var s=1}else var s=a;var s;Se[i]=0;var n=s,o=0,l=t;r:for(;;)for(var l,o,n,b=n,k=o;;){var k,b,u=Ae[Se[e]];if(u<<24>>24==0||u<<24>>24==69){var c=Se[i];if(0==(0|c)){var h=0;break r}var d=0==(0|Se[c+8>>2]);do if(d){var w=Se[c+4>>2];if(33!=(0|Se[w>>2])){var p=c;break}var E=Se[w+4>>2];if(9!=(0|Se[E+16>>2])){var p=c;break}var A=r+48|0,g=Se[A>>2]-Se[E+4>>2]|0;Se[A>>2]=g,Se[i]=0;var p=0}else var p=c;while(0);var p,y=D(r,35,k,p),h=y;break r}var m=N(r);if(0==(0|m)){var h=0;break r}if(0==(0|b)){var S=D(r,38,m,0);if(Se[l>>2]=S,0==(0|S)){var h=0;break r}var n=0,o=k,l=S+8|0;continue r}var b=0,k=m}var h;return Oe=v,h}function Mr(r){for(var a=r;;){var a;if(0==(0|a)){var e=0;break}var i=Se[a>>2];if(1!=(0|i)&&2!=(0|i)){if(6==(0|i)||7==(0|i)||42==(0|i)){var e=1;break}var e=0;break}var a=Se[a+8>>2]}var e;return e}function Cr(r){var a=r>>2;Se[a+3]=0,Se[a+2]=0,Se[a+1]=0,Se[a]=0,Se[a+4]=0}function Rr(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=(Se[r+4>>2]-i|0)<(0|a);r:do if(v)var t=0;else{var f=i+a|0;Se[e]=f;var _=0==(4&Se[r+8>>2]|0);do if(!_){if(Ae[f]<<24>>24!=36)break;var s=a+(i+1)|0;Se[e]=s}while(0);var n=(0|a)>9;do if(n){var o=La(i,0|He.__str117,8);if(0!=(0|o))break;var l=Ae[i+8|0];if(l<<24>>24!=46&&l<<24>>24!=95&&l<<24>>24!=36)break;if(Ae[i+9|0]<<24>>24!=78)break;var b=r+48|0,k=22-a+Se[b>>2]|0;Se[b>>2]=k;var u=lr(r,0|He.__str169,21),t=u;break r}while(0);var c=lr(r,i,a),t=c}while(0);var t;return t}function Tr(r){var a,e,e=(r+48|0)>>2,i=Se[e],v=i+20|0;Se[e]=v;var a=(r+12|0)>>2,t=Se[a],f=t+1|0;Se[a]=f;var _=Ae[t];do if(_<<24>>24==84){var s=t+2|0;Se[a]=s;var n=Ae[f]<<24>>24;if(86==(0|n)){var o=i+15|0;Se[e]=o;var l=N(r),b=D(r,8,l,0),k=b}else if(84==(0|n)){var u=i+10|0;Se[e]=u;var c=N(r),h=D(r,9,c,0),k=h}else if(73==(0|n))var d=N(r),w=D(r,11,d,0),k=w;else if(83==(0|n))var p=N(r),E=D(r,12,p,0),k=E;else if(104==(0|n)){var A=Nr(r,104);if(0==(0|A)){var k=0;break}var g=O(r,0),y=D(r,14,g,0),k=y}else if(118==(0|n)){var m=Nr(r,118);if(0==(0|m)){var k=0;break}var S=O(r,0),M=D(r,15,S,0),k=M}else if(99==(0|n)){var C=Nr(r,0);if(0==(0|C)){var k=0;break}var R=Nr(r,0);if(0==(0|R)){var k=0;break}var T=O(r,0),I=D(r,16,T,0),k=I}else if(67==(0|n)){var P=N(r),L=sr(r);if((0|L)<0){var k=0;break}var F=Se[a],X=F+1|0;if(Se[a]=X,Ae[F]<<24>>24!=95){var k=0;break}var j=N(r),U=Se[e]+5|0;Se[e]=U;var x=D(r,10,j,P),k=x}else if(70==(0|n))var z=N(r),V=D(r,13,z,0),k=V;else{if(74!=(0|n)){var k=0;break}var B=N(r),H=D(r,17,B,0),k=H}}else if(_<<24>>24==71){var K=t+2|0;Se[a]=K;var Y=Ae[f]<<24>>24;if(86==(0|Y))var G=Ar(r),W=D(r,18,G,0),k=W;else if(82==(0|Y))var Z=Ar(r),Q=D(r,19,Z,0),k=Q;else{if(65!=(0|Y)){var k=0;break}var q=O(r,0),$=D(r,20,q,0),k=$}}else var k=0;while(0);var k;return k}function Or(r){for(var a,e=r,a=e>>2;;){var e;if(0==(0|e)){var i=0;break}var v=Se[a];if(4==(0|v)){var t=Se[a+1],f=Mr(t),i=0==(0|f)&1;break}if(25!=(0|v)&&26!=(0|v)&&27!=(0|v)){var i=0;break}var e=Se[a+1],a=e>>2}var i;return i}function Nr(r,a){var e;if(0==(0|a)){var i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24}else var f=a;var f;do{if(104==(0|f)){var _=(sr(r),r+12|0);e=7;break}if(118==(0|f)){var s=(sr(r),r+12|0),n=Se[s>>2],o=n+1|0;if(Se[s>>2]=o,Ae[n]<<24>>24!=95){var l=0;e=8;break}var _=(sr(r),s);e=7;break}var l=0;e=8}while(0);if(7==e){var _,b=Se[_>>2],k=b+1|0;Se[_>>2]=k;var l=Ae[b]<<24>>24==95&1}var l;return l}function Ir(r){var a,e,i=r>>2,v=Oe;Oe+=56;var t,f=v,_=v+8,s=v+16,n=v+36,e=(0|r)>>2,o=Se[e],l=0==(8192&o|0);r:do{if(l){var a=(r+12|0)>>2,b=Se[a];if(Ae[b]<<24>>24!=63){var k=0;t=111;break}var u=b+1|0;Se[a]=u;var c=Ae[u];do if(c<<24>>24==63){if(Ae[b+2|0]<<24>>24==36){var h=b+3|0;if(Ae[h]<<24>>24!=63){var d=5;t=90;break}Se[a]=h;var w=6,p=h}else var w=0,p=u;var p,w,E=p+1|0;Se[a]=E;var A=Ae[E]<<24>>24;do if(48==(0|A)){var g=1;t=81}else{if(49==(0|A)){var g=2;t=81;break}if(50!=(0|A)){if(51==(0|A)){var y=0|He.__str2172,m=E;t=82;break}if(52==(0|A)){var y=0|He.__str3173,m=E;t=82;break}if(53==(0|A)){var y=0|He.__str4174,m=E;t=82;break}if(54==(0|A)){var y=0|He.__str5175,m=E;t=82;break}if(55==(0|A)){var y=0|He.__str6176,m=E;t=82;break}if(56==(0|A)){var y=0|He.__str7177,m=E;t=82;break}if(57==(0|A)){var y=0|He.__str8178,m=E;t=82;break}if(65==(0|A)){var y=0|He.__str9179,m=E;t=82;break}if(66==(0|A)){Se[a]=p+2|0;var S=0|He.__str10180,M=3;t=88;break}if(67==(0|A)){var y=0|He.__str11181,m=E;t=82;break}if(68==(0|A)){var y=0|He.__str12182,m=E;t=82;break}if(69==(0|A)){var y=0|He.__str13183,m=E;t=82;break}if(70==(0|A)){var y=0|He.__str14184,m=E;t=82;break}if(71==(0|A)){var y=0|He.__str15185,m=E;t=82;break}if(72==(0|A)){var y=0|He.__str16186,m=E;t=82;break}if(73==(0|A)){var y=0|He.__str17187,m=E;t=82;break}if(74==(0|A)){var y=0|He.__str18188,m=E;t=82;break}if(75==(0|A)){var y=0|He.__str19189,m=E;t=82;break}if(76==(0|A)){var y=0|He.__str20190,m=E;t=82;break}if(77==(0|A)){var y=0|He.__str21191,m=E;t=82;break}if(78==(0|A)){var y=0|He.__str22192,m=E;t=82;break}if(79==(0|A)){var y=0|He.__str23193,m=E;t=82;break}if(80==(0|A)){var y=0|He.__str24194,m=E;t=82;break}if(81==(0|A)){var y=0|He.__str25195,m=E;t=82;break}if(82==(0|A)){var y=0|He.__str26196,m=E;t=82;break}if(83==(0|A)){var y=0|He.__str27197,m=E;t=82;break}if(84==(0|A)){var y=0|He.__str28198,m=E;t=82;break}if(85==(0|A)){var y=0|He.__str29199,m=E;t=82;break}if(86==(0|A)){var y=0|He.__str30200,m=E;t=82;break}if(87==(0|A)){var y=0|He.__str31201,m=E;t=82;break}if(88==(0|A)){var y=0|He.__str32202,m=E;t=82;break}if(89==(0|A)){var y=0|He.__str33203,m=E;t=82;break}if(90==(0|A)){var y=0|He.__str34204,m=E;t=82;break}if(95==(0|A)){var C=p+2|0;Se[a]=C;var R=Ae[C]<<24>>24;if(48==(0|R)){var y=0|He.__str35205,m=C;t=82;break}if(49==(0|R)){var y=0|He.__str36206,m=C;t=82;break}if(50==(0|R)){var y=0|He.__str37207,m=C;t=82;break}if(51==(0|R)){var y=0|He.__str38208,m=C;t=82;break}if(52==(0|R)){var y=0|He.__str39209,m=C;t=82;break}if(53==(0|R)){var y=0|He.__str40210,m=C;t=82;break}if(54==(0|R)){var y=0|He.__str41211,m=C;t=82;break}if(55==(0|R)){var y=0|He.__str42212,m=C;t=82;break}if(56==(0|R)){var y=0|He.__str43213,m=C;t=82;break}if(57==(0|R)){var y=0|He.__str44214,m=C;t=82;break}if(65==(0|R)){var y=0|He.__str45215,m=C;t=82;break}if(66==(0|R)){var y=0|He.__str46216,m=C;t=82;break}if(67==(0|R)){Se[a]=p+3|0;var T=0|He.__str47217;t=84;break}if(68==(0|R)){var y=0|He.__str48218,m=C;t=82;break}if(69==(0|R)){var y=0|He.__str49219,m=C;t=82;break}if(70==(0|R)){var y=0|He.__str50220,m=C;t=82;break}if(71==(0|R)){var y=0|He.__str51221,m=C;t=82;break}if(72==(0|R)){var y=0|He.__str52222,m=C;t=82;break}if(73==(0|R)){var y=0|He.__str53223,m=C;t=82;break}if(74==(0|R)){var y=0|He.__str54224,m=C;t=82;break}if(75==(0|R)){var y=0|He.__str55225,m=C;t=82;break}if(76==(0|R)){var y=0|He.__str56226,m=C;t=82;break}if(77==(0|R)){var y=0|He.__str57227,m=C;t=82;break}if(78==(0|R)){var y=0|He.__str58228,m=C;t=82;break}if(79==(0|R)){var y=0|He.__str59229,m=C;t=82;break}if(82==(0|R)){var O=4|o;Se[e]=O;var N=p+3|0;Se[a]=N;var I=Ae[N]<<24>>24;if(48==(0|I)){Se[a]=p+4|0,Cr(s);var P=(Pr(r,_,s,0),Se[_>>2]),D=Se[_+4>>2],L=Dr(r,0|He.__str60230,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=D,ne)),F=Se[a]-1|0;Se[a]=F;var y=L,m=F;t=82;break}if(49==(0|I)){Se[a]=p+4|0;var X=Lr(r),j=Lr(r),U=Lr(r),x=Lr(r),z=Se[a]-1|0;Se[a]=z;var V=Dr(r,0|He.__str61231,(ne=Oe,Oe+=16,Se[ne>>2]=X,Se[ne+4>>2]=j,Se[ne+8>>2]=U,Se[ne+12>>2]=x,ne)),y=V,m=Se[a];t=82;break}if(50==(0|I)){var y=0|He.__str62232,m=N;t=82;break}if(51==(0|I)){var y=0|He.__str63233,m=N;t=82;break}if(52==(0|I)){var y=0|He.__str64234,m=N;t=82;break}var y=0,m=N;t=82;break}if(83==(0|R)){var y=0|He.__str65235,m=C;t=82;break}if(84==(0|R)){var y=0|He.__str66236,m=C;t=82;break}if(85==(0|R)){var y=0|He.__str67237,m=C;t=82;break}if(86==(0|R)){var y=0|He.__str68238,m=C;t=82;break}if(88==(0|R)){var y=0|He.__str69239,m=C;t=82;break}if(89==(0|R)){var y=0|He.__str70240,m=C;t=82;break}var k=0;t=111;break r}var k=0;t=111;break r}var y=0|He.__str1171,m=E;t=82}while(0);do{if(81==t){var g;Se[a]=p+2|0;var B=g;t=83;break}if(82==t){var m,y;if(Se[a]=m+1|0,1==(0|w)||2==(0|w)){var B=w;t=83;break}if(4==(0|w)){var T=y;t=84;break}if(6!=(0|w)){var S=y,M=w;t=88;break}Cr(n);var H=Xr(r,n,0,60,62);if(0==(0|H))var K=y;else var Y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=y,Se[ne+4>>2]=H,ne)),K=Y;var K;Se[i+6]=0;var S=K,M=w;t=88;break}}while(0);if(83==t){var B,G=r+40|0,W=Fr(r,0|He._symbol_demangle_dashed_null,-1,G);if(0==(0|W)){var k=0;t=111;break r}var d=B;t=90;break}if(84==t){var T;Se[i+4]=T;var Z=1,Q=T;t=109;break r}if(88==t){var M,S,q=r+40|0,$=Fr(r,S,-1,q);if(0==(0|$)){var k=0;t=111;break r}var d=M;t=90;break}}else{if(c<<24>>24==36){var J=b+2|0;Se[a]=J;var rr=jr(r);Se[i+4]=rr;var ar=0!=(0|rr)&1;t=107;break}var d=0;t=90}while(0);if(90==t){var d,er=Me[a],ir=Ae[er]<<24>>24;if(64==(0|ir))Se[a]=er+1|0;else if(36==(0|ir))t=93;else{var vr=zr(r);if(0==(0|vr)){var k=-1;t=111;break}}if(5==(0|d)){var tr=r+20|0,fr=Se[tr>>2]+1|0;Se[tr>>2]=fr}else if(1==(0|d)||2==(0|d)){if(Me[i+11]>>>0<2){var k=-1;t=111;break}var _r=r+56|0,sr=Me[_r>>2],nr=Se[sr+4>>2];if(1==(0|d))Se[sr>>2]=nr;else{var or=Dr(r,0|He.__str71241,(ne=Oe,Oe+=4,Se[ne>>2]=nr,ne)),lr=Se[_r>>2];Se[lr>>2]=or}var br=4|Se[e];Se[e]=br}else if(3==(0|d)){var kr=Se[e]&-5;Se[e]=kr}var ur=ge[Se[a]];if((ur-48&255&255)<10)var cr=Vr(r),ar=cr;else if((ur-65&255&255)<26)var hr=Br(r,3==(0|d)&1),ar=hr;else{if(ur<<24>>24!=36){var k=-1;t=111;break}var dr=Hr(r),ar=dr}}var ar;if(0==(0|ar)){var k=-1;t=111;break}var Z=ar,Q=Se[i+4];t=109;break}var wr=Pr(r,f,0,0);if(0==(0|wr)){var k=-1;t=111;break}var pr=Se[f>>2],Er=Se[f+4>>2],Ar=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=pr,Se[ne+4>>2]=Er,ne));Se[i+4]=Ar;var Z=1,Q=Ar;t=109;break}while(0);do if(109==t){var Q,Z;if(0!=(0|Q)){var k=Z;break}Xa(0|He.__str72242,1499,0|He.___func___symbol_demangle,0|He.__str73243);var k=Z}while(0);var k;return Oe=v,k}function Pr(r,a,e,i){var v,t,f,_=Oe;Oe+=24;var s=_,n=_+4,o=_+8,l=_+16,b=_+20;0==(0|a)&&Xa(0|He.__str72242,829,0|He.___func___demangle_datatype,0|He.__str121291);var f=(a+4|0)>>2;Se[f]=0;var t=(0|a)>>2;Se[t]=0;var v=(r+12|0)>>2,k=Me[v],u=k+1|0;Se[v]=u;var c=Ae[k],h=c<<24>>24;do if(95==(0|h)){Se[v]=k+2|0;var d=Ae[u],w=Zr(d);Se[t]=w}else if(67==(0|h)||68==(0|h)||69==(0|h)||70==(0|h)||71==(0|h)||72==(0|h)||73==(0|h)||74==(0|h)||75==(0|h)||77==(0|h)||78==(0|h)||79==(0|h)||88==(0|h)||90==(0|h)){var p=Qr(c);Se[t]=p}else if(84==(0|h)||85==(0|h)||86==(0|h)||89==(0|h)){var E=qr(r);if(0==(0|E))break;var A=0==(32768&Se[r>>2]|0);do if(A)if(84==(0|h))var g=0|He.__str122292;else if(85==(0|h))var g=0|He.__str123293;else if(86==(0|h))var g=0|He.__str124294;else{if(89!=(0|h)){var g=0;break}var g=0|He.__str125295}else var g=0;while(0);var g,y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=g,Se[ne+4>>2]=E,ne));Se[t]=y}else if(63==(0|h))if(0==(0|i))$r(a,r,e,63,0);else{var m=Lr(r);if(0==(0|m))break;var S=Dr(r,0|He.__str126296,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne));Se[t]=S}else if(65==(0|h)||66==(0|h))$r(a,r,e,c,i);else if(81==(0|h)||82==(0|h)||83==(0|h)){var M=0==(0|i)?80:c;$r(a,r,e,M,i)}else if(80==(0|h))if(((Ae[u]<<24>>24)-48|0)>>>0<10){var C=k+2|0;if(Se[v]=C,Ae[u]<<24>>24!=54)break;var R=r+44|0,T=Se[R>>2];Se[v]=k+3|0;var O=Ae[C],N=Se[r>>2]&-17,I=Ur(O,s,n,N);if(0==(0|I))break;var P=Pr(r,o,e,0);if(0==(0|P))break;var D=Xr(r,e,1,40,41);if(0==(0|D))break;Se[R>>2]=T;var L=Se[o>>2],F=Se[o+4>>2],X=Se[s>>2],j=Dr(r,0|He.__str127297,(ne=Oe,Oe+=12,Se[ne>>2]=L,Se[ne+4>>2]=F,Se[ne+8>>2]=X,ne));Se[t]=j;var U=Dr(r,0|He.__str128298,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[f]=U}else $r(a,r,e,80,i);else if(87==(0|h)){if(Ae[u]<<24>>24!=52)break;Se[v]=k+2|0;var x=qr(r);if(0==(0|x))break;if(0==(32768&Se[r>>2]|0)){var z=Dr(r,0|He.__str129299,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne));Se[t]=z}else Se[t]=x}else if(48==(0|h)||49==(0|h)||50==(0|h)||51==(0|h)||52==(0|h)||53==(0|h)||54==(0|h)||55==(0|h)||56==(0|h)||57==(0|h)){var V=h<<1,B=V-96|0,H=Yr(e,B);Se[t]=H;var K=V-95|0,Y=Yr(e,K);Se[f]=Y}else if(36==(0|h)){var G=k+2|0;Se[v]=G;var W=Ae[u]<<24>>24;if(48==(0|W)){var Z=Lr(r);Se[t]=Z}else if(68==(0|W)){var Q=Lr(r);if(0==(0|Q))break;var q=Dr(r,0|He.__str130300,(ne=Oe,Oe+=4,Se[ne>>2]=Q,ne));Se[t]=q}else if(70==(0|W)){var $=Lr(r);if(0==(0|$))break;var J=Lr(r);if(0==(0|J))break;var rr=Dr(r,0|He.__str131301,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=J,ne));Se[t]=rr}else if(71==(0|W)){var ar=Lr(r);if(0==(0|ar))break;var er=Lr(r);if(0==(0|er))break;var ir=Lr(r);if(0==(0|ir))break;var vr=Dr(r,0|He.__str132302,(ne=Oe,Oe+=12,Se[ne>>2]=ar,Se[ne+4>>2]=er,Se[ne+8>>2]=ir,ne));Se[t]=vr}else if(81==(0|W)){var tr=Lr(r);if(0==(0|tr))break;var fr=Dr(r,0|He.__str133303,(ne=Oe,Oe+=4,Se[ne>>2]=tr,ne));Se[t]=fr}else{if(36!=(0|W))break;if(Ae[G]<<24>>24!=67)break;Se[v]=k+3|0;var _r=xr(r,l,b);if(0==(0|_r))break;var sr=Pr(r,a,e,i);if(0==(0|sr))break;var nr=Se[t],or=Se[l>>2],lr=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=nr,Se[ne+4>>2]=or,ne));Se[t]=lr}}while(0);var br=0!=(0|Se[t])&1;return Oe=_,br}function Dr(r,a){var e,i=Oe;Oe+=4;var v=i,e=v>>2,t=v;Se[t>>2]=arguments[Dr.length];var f=1,_=0;r:for(;;){var _,f,s=Ae[a+_|0];do{if(s<<24>>24==0)break r;if(s<<24>>24==37){var n=_+1|0,o=Ae[a+n|0]<<24>>24;if(115==(0|o)){var l=Se[e],b=l,k=l+4|0;Se[e]=k;var u=Se[b>>2];if(0==(0|u)){var c=f,h=n;break}var d=Ca(u),c=d+f|0,h=n;break}if(99==(0|o)){var w=Se[e]+4|0;Se[e]=w;var c=f+1|0,h=n;break}if(37==(0|o))var p=n;else var p=_;var p,c=f+1|0,h=p}else var c=f+1|0,h=_}while(0);var h,c,f=c,_=h+1|0}var E=Wr(r,f);if(0==(0|E))var A=0;else{Se[t>>2]=arguments[Dr.length];var g=E,y=0;r:for(;;){var y,g,m=Ae[a+y|0];do{if(m<<24>>24==0)break r;if(m<<24>>24==37){var S=y+1|0,M=Ae[a+S|0]<<24>>24;if(115==(0|M)){var C=Se[e],R=C,T=C+4|0;Se[e]=T;var O=Se[R>>2];if(0==(0|O)){var N=g,I=S;break}var P=Ca(O);Pa(g,O,P,1);var N=g+P|0,I=S;break}if(99==(0|M)){var D=Se[e],L=D,F=D+4|0;Se[e]=F,Ae[g]=255&Se[L>>2];var N=g+1|0,I=S;break}if(37==(0|M))var X=S;else var X=y;var X;Ae[g]=37;var N=g+1|0,I=X}else{Ae[g]=m;var N=g+1|0,I=y}}while(0);var I,N,g=N,y=I+1|0}Ae[g]=0;var A=E}var A;return Oe=i,A}function Lr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==63){var v=e+1|0;Se[a]=v;var t=1,f=v,_=Ae[v]}else var t=0,f=e,_=i;var _,f,t,s=(_-48&255&255)<9;do if(s){var n=Wr(r,3),o=0!=(0|t);o&&(Ae[n]=45);var l=Ae[Se[a]]+1&255;Ae[n+t|0]=l;var b=o?2:1;\\\\nAe[n+b|0]=0;var k=Se[a]+1|0;Se[a]=k;var u=n}else if(_<<24>>24==57){var c=Wr(r,4),h=0!=(0|t);h&&(Ae[c]=45),Ae[c+t|0]=49;var d=h?2:1;Ae[c+d|0]=48;var w=h?3:2;Ae[c+w|0]=0;var p=Se[a]+1|0;Se[a]=p;var u=c}else{if((_-65&255&255)>=16){var u=0;break}for(var E=0,A=f;;){var A,E,g=A+1|0;Se[a]=g;var y=(Ae[A]<<24>>24)+((E<<4)-65)|0,m=ge[g];if((m-65&255&255)>=16)break;var E=y,A=g}if(m<<24>>24!=64){var u=0;break}var S=Wr(r,17),M=0!=(0|t)?0|He.__str119289:0|ii,C=(za(S,0|He.__str118288,(ne=Oe,Oe+=8,Se[ne>>2]=M,Se[ne+4>>2]=y,ne)),Se[a]+1|0);Se[a]=C;var u=S}while(0);var u;return u}function Fr(r,a,e,i){var v,t,f,_;0==(0|a)&&Xa(0|He.__str72242,212,0|He.___func___str_array_push,0|He.__str115285),0==(0|i)&&Xa(0|He.__str72242,213,0|He.___func___str_array_push,0|He.__str116286);var f=(i+12|0)>>2,s=Me[f],n=0==(0|s);do{if(n){Se[f]=32;var o=Wr(r,128);if(0==(0|o)){var l=0;_=17;break}Se[i+16>>2]=o,_=11;break}if(Me[i+8>>2]>>>0<s>>>0){_=11;break}var b=s<<3,k=Wr(r,b);if(0==(0|k)){var l=0;_=17;break}var u=k,c=i+16|0,h=Se[c>>2],d=Se[f]<<2;Pa(k,h,d,1);var w=Se[f]<<1;Se[f]=w,Se[c>>2]=u,_=11;break}while(0);do if(11==_){if((0|e)==-1)var p=Ca(a),E=p;else var E=e;var E,A=ja(a),g=E+1|0,y=Wr(r,g),t=(i+4|0)>>2,v=(i+16|0)>>2,m=(Se[t]<<2)+Se[v]|0;Se[m>>2]=y;var S=Se[Se[v]+(Se[t]<<2)>>2];if(0==(0|S)){Xa(0|He.__str72242,233,0|He.___func___str_array_push,0|He.__str117287);var M=Se[Se[v]+(Se[t]<<2)>>2]}else var M=S;var M;Pa(M,A,E,1),va(A),Ae[Se[Se[v]+(Se[t]<<2)>>2]+g|0]=0;var C=Se[t]+1|0;Se[t]=C;var R=i+8|0;if(C>>>0<Me[R>>2]>>>0){var l=1;break}Se[R>>2]=C;var l=1}while(0);var l;return l}function Xr(r,a,e,i,v){var t,f,_=Oe;Oe+=28;var s,n=_,o=_+8;Cr(o);var f=(r+12|0)>>2,l=0==(0|e),t=(0|n)>>2,b=n+4|0;r:do if(l)for(;;){var k=Se[f],u=Ae[k];if(u<<24>>24==0){s=12;break r}if(u<<24>>24==64){var c=k;s=7;break r}var h=Pr(r,n,a,1);if(0==(0|h)){var d=0;s=25;break r}var w=Se[t],p=Se[b>>2],E=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=w,Se[ne+4>>2]=p,ne)),A=Fr(r,E,-1,o);if(0==(0|A)){var d=0;s=25;break r}var g=Se[t],y=Da(g,0|He.__str110280);if(0==(0|y)){s=12;break r}}else for(;;){var m=Se[f],S=Ae[m];if(S<<24>>24==0){s=12;break r}if(S<<24>>24==64){var c=m;s=7;break r}var M=Pr(r,n,a,1);if(0==(0|M)){var d=0;s=25;break r}var C=Se[t],R=Da(C,0|He.__str84254);if(0==(0|R)){s=13;break r}var T=Se[b>>2],O=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=C,Se[ne+4>>2]=T,ne)),N=Fr(r,O,-1,o);if(0==(0|N)){var d=0;s=25;break r}var I=Se[t],P=Da(I,0|He.__str110280);if(0==(0|P)){s=12;break r}}while(0);do if(7==s){var c;Se[f]=c+1|0,s=12;break}while(0);do if(12==s){if(l){s=14;break}s=13;break}while(0);do if(13==s){var D=Se[f],L=D+1|0;if(Se[f]=L,Ae[D]<<24>>24==90){s=14;break}var d=0;s=25;break}while(0);r:do if(14==s){var F=o+4|0,X=Me[F>>2];do{if(0!=(0|X)){if(1==(0|X)){var j=o+16|0,U=Se[Se[j>>2]>>2],x=Da(U,0|He.__str84254);if(0==(0|x)){s=17;break}var z=j;s=20;break}var V=o+16|0;if(X>>>0<=1){var z=V;s=20;break}for(var B=0,H=1;;){var H,B,K=Se[Se[V>>2]+(H<<2)>>2],Y=Dr(r,0|He.__str112282,(ne=Oe,Oe+=8,Se[ne>>2]=B,Se[ne+4>>2]=K,ne)),G=H+1|0;if(G>>>0>=Me[F>>2]>>>0)break;var B=Y,H=G}if(0==(0|Y)){var z=V;s=20;break}var W=Y,Z=Y;s=21;break}s=17}while(0);if(17==s){var Q=i<<24>>24,q=v<<24>>24,$=Dr(r,0|He.__str111281,(ne=Oe,Oe+=8,Se[ne>>2]=Q,Se[ne+4>>2]=q,ne)),d=$;break}if(20==s)var z,W=Se[Se[z>>2]>>2],Z=0;var Z,W,J=v<<24>>24,rr=v<<24>>24==62;do if(rr){var ar=Ca(W);if(Ae[W+(ar-1)|0]<<24>>24!=62)break;var er=i<<24>>24,ir=Se[Se[o+16>>2]>>2],vr=Dr(r,0|He.__str113283,(ne=Oe,Oe+=16,Se[ne>>2]=er,Se[ne+4>>2]=ir,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=vr;break r}while(0);var tr=i<<24>>24,fr=Se[Se[o+16>>2]>>2],_r=Dr(r,0|He.__str114284,(ne=Oe,Oe+=16,Se[ne>>2]=tr,Se[ne+4>>2]=fr,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=_r}while(0);var d;return Oe=_,d}function jr(r){var a,e=Oe;Oe+=20;var i=e,v=r+24|0,t=Se[v>>2],a=(r+20|0)>>2,f=Se[a],_=r+44|0,s=Se[_>>2];Se[a]=t;var n=Kr(r);if(0==(0|n))var o=0;else{Cr(i);var l=Xr(r,i,0,60,62);if(0==(0|l))var b=n;else var k=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=n,Se[ne+4>>2]=l,ne)),b=k;var b;Se[v>>2]=t,Se[a]=f,Se[_>>2]=s;var o=b}var o;return Oe=e,o}function Ur(r,a,e,i){var v,t=a>>2;Se[e>>2]=0,Se[t]=0;var f=0==(18&i|0);do{if(f){var _=r<<24>>24,s=1==((_-65)%2|0);if(0==(1&i|0)){if(s?Se[e>>2]=0|He.__str95265:v=14,65==(0|_)||66==(0|_)){Se[t]=0|He.__str96266,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str97267,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str98268,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str99269,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str100270,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str101271,v=21;break}var n=0;v=22;break}if(s?Se[e>>2]=0|He.__str88258:v=5,65==(0|_)||66==(0|_)){Se[t]=0|He.__str89259,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str90260,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str91261,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str92262,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str93263,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str94264,v=21;break}var n=0;v=22;break}v=21}while(0);if(21==v)var n=1;var n;return n}function xr(r,a,e){var i;Se[e>>2]=0;var i=(r+12|0)>>2,v=Se[i];if(Ae[v]<<24>>24==69){Se[e>>2]=0|He.__str102272;var t=Se[i]+1|0;Se[i]=t;var f=t}else var f=v;var f;Se[i]=f+1|0;var _=Ae[f]<<24>>24;if(65==(0|_)){Se[a>>2]=0;var s=1}else if(66==(0|_)){Se[a>>2]=0|He.__str103273;var s=1}else if(67==(0|_)){Se[a>>2]=0|He.__str104274;var s=1}else if(68==(0|_)){Se[a>>2]=0|He.__str105275;var s=1}else var s=0;var s;return s}function zr(r){var a,e,a=(r+12|0)>>2,i=r+40|0,v=r+20|0,t=0|i,f=r+44|0,_=r+48|0,s=r+52|0,n=r+56|0,o=r+20|0,l=r+24|0,b=r+16|0,k=0;r:for(;;){var k,u=Se[a],c=Ae[u];if(c<<24>>24==64){var h=u+1|0;Se[a]=h;var d=1;break}var w=c<<24>>24;do{if(0==(0|w)){var d=0;break r}if(48==(0|w)||49==(0|w)||50==(0|w)||51==(0|w)||52==(0|w)||53==(0|w)||54==(0|w)||55==(0|w)||56==(0|w)||57==(0|w)){var p=u+1|0;Se[a]=p;var E=(Ae[u]<<24>>24)-48|0,A=Yr(v,E),g=A;e=14;break}if(63==(0|w)){var y=u+1|0;Se[a]=y;var m=Ae[y]<<24>>24;if(36==(0|m)){var S=u+2|0;Se[a]=S;var M=jr(r);if(0==(0|M)){var d=0;break r}var C=Fr(r,M,-1,v);if(0==(0|C)){var d=0;break r}var R=M;e=15;break}if(63==(0|m)){var T=Se[t>>2],O=Se[f>>2],N=Se[_>>2],I=Se[s>>2],P=Se[n>>2],D=Se[o>>2],L=Se[l>>2];Cr(i);var F=Ir(r);if(0==(0|F))var X=k;else var j=Se[b>>2],U=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=j,ne)),X=U;var X;Se[o>>2]=D,Se[l>>2]=L,Se[t>>2]=T,Se[f>>2]=O,Se[_>>2]=N,Se[s>>2]=I,Se[n>>2]=P;var g=X;e=14;break}var x=Lr(r);if(0==(0|x)){var d=0;break r}var z=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne)),g=z;e=14;break}var V=Kr(r),g=V;e=14;break}while(0);if(14==e){var g;if(0==(0|g)){var d=0;break}var R=g}var R,B=Fr(r,R,-1,i);if(0==(0|B)){var d=0;break}var k=R}var d;return d}function Vr(r){var a,e,i,v=Oe;Oe+=36;var t,f=v,i=f>>2,_=v+4,s=v+8,e=s>>2,n=v+16;Se[i]=0;var o=0|r,l=Se[o>>2],b=0==(128&l|0),k=r+12|0;do if(b){var u=Ae[Se[k>>2]]<<24>>24;if(48==(0|u))var c=0|He.__str76246,h=k,a=h>>2;else if(49==(0|u))var c=0|He.__str77247,h=k,a=h>>2;else{if(50!=(0|u)){var c=0,h=k,a=h>>2;break}var c=0|He.__str78248,h=k,a=h>>2}}else var c=0,h=k,a=h>>2;while(0);var h,c,d=0==(512&l|0);do if(d){if((Ae[Se[a]]-48&255&255)>=3){var w=0;break}var w=0|He.__str79249}else var w=0;while(0);var w,p=Gr(r,0),E=Se[a],A=E+1|0;Se[a]=A;var g=Ae[E]<<24>>24;do{if(48==(0|g)||49==(0|g)||50==(0|g)||51==(0|g)||52==(0|g)||53==(0|g)){var y=r+44|0,m=Se[y>>2];Cr(n);var S=Pr(r,s,n,0);if(0==(0|S)){var M=0;t=28;break}var C=xr(r,f,_);if(0==(0|C)){var M=0;t=28;break}var R=Se[i],T=0==(0|R),O=Se[_>>2];do if(T)Se[i]=O;else{if(0==(0|O))break;var N=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=R,Se[ne+4>>2]=O,ne));Se[i]=N}while(0);Se[y>>2]=m,t=22;break}if(54==(0|g)||55==(0|g)){var I=s+4|0;Se[I>>2]=0,Se[e]=0;var P=xr(r,f,_);if(0==(0|P)){var M=0;t=28;break}if(Ae[Se[a]]<<24>>24==64){t=22;break}var D=qr(r);if(0==(0|D)){var M=0;t=28;break}var L=Dr(r,0|He.__str107277,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[I>>2]=L,t=22;break}if(56==(0|g)||57==(0|g)){Se[e+1]=0,Se[e]=0,Se[i]=0,t=22;break}var M=0;t=28}while(0);if(22==t){var F=0==(4096&Se[o>>2]|0);do{if(F){var X=Se[e],j=Se[i];if(0==(0|j)){var U=X;t=26;break}var x=0!=(0|X)?0|He.__str87257:0,z=0|He.__str87257,V=j,B=x,H=X;t=27;break}Se[i]=0,Se[e+1]=0,Se[e]=0;var U=0;t=26;break}while(0);if(26==t)var U,K=0!=(0|U)?0|He.__str87257:0,z=K,V=0,B=0,H=U;var H,B,V,z,Y=Se[e+1],G=Dr(r,0|He.__str108278,(ne=Oe,Oe+=32,Se[ne>>2]=c,Se[ne+4>>2]=w,Se[ne+8>>2]=H,Se[ne+12>>2]=B,Se[ne+16>>2]=V,Se[ne+20>>2]=z,Se[ne+24>>2]=p,Se[ne+28>>2]=Y,ne));Se[r+16>>2]=G;var M=1}var M;return Oe=v,M}function Br(r,a){var e,i,v,t,f=Oe;Oe+=44;var _,s=f,t=s>>2,n=f+8,o=f+12,v=o>>2,l=f+16,b=f+20,k=f+40;Se[v]=0;var i=(r+12|0)>>2,u=Se[i],c=u+1|0;Se[i]=c;var h=ge[u],d=h<<24>>24,w=(h-65&255&255)>25;r:do if(w)var p=0;else{var e=(0|r)>>2,E=Me[e],A=0==(128&E|0),g=d-65|0;do if(A){var y=g/8|0;if(0==(0|y))var m=0|He.__str76246,S=g;else if(1==(0|y))var m=0|He.__str77247,S=g;else{if(2!=(0|y)){var m=0,S=g;break}var m=0|He.__str78248,S=g}}else var m=0,S=g;while(0);var S,m,M=0==(512&E|0)&h<<24>>24<89,C=(0|S)%8;do if(M)if(2==(0|C)||3==(0|C))var R=m,T=0|He.__str79249;else if(4==(0|C)||5==(0|C))var R=m,T=0|He.__str80250;else{if(6!=(0|C)&&7!=(0|C)){var R=m,T=0;break}var O=Dr(r,0|He.__str81251,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne)),R=O,T=0|He.__str80250}else var R=m,T=0;while(0);var T,R,N=Gr(r,0),I=6==(0|C);do{if(!I){if(7==((d-56)%8|0)){_=14;break}var P=N;_=15;break}_=14}while(0);if(14==_)var D=Lr(r),L=Dr(r,0|He.__str82252,(ne=Oe,Oe+=8,Se[ne>>2]=N,Se[ne+4>>2]=D,ne)),P=L;var P,F=h<<24>>24>88;do if(F)var X=0;else{if((C-2|0)>>>0<2){var X=0;break}var j=xr(r,o,k);if(0==(0|j)){var p=0;break r}var U=Me[v],x=Se[k>>2];if(0==(0|U)&0==(0|x)){var X=0;break}var z=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=U,Se[ne+4>>2]=x,ne));Se[v]=z;var X=z}while(0);var X,V=Se[i],B=V+1|0;Se[i]=B;var H=Ae[V],K=Se[e],Y=Ur(H,n,l,K);if(0==(0|Y)){var p=0;break}Cr(b);var G=Se[i];if(Ae[G]<<24>>24==64){Se[t]=0|He.__str84254,Se[t+1]=0;var W=G+1|0;Se[i]=W}else{var Z=Pr(r,s,b,0);if(0==(0|Z)){var p=0;break}}if(0!=(4&Se[e]|0)&&(Se[t+1]=0,Se[t]=0),0==(0|a))var Q=P;else{var q=0|s,$=Se[q>>2],J=s+4|0,rr=Se[J>>2],ar=Dr(r,0|He.__str85255,(ne=Oe,Oe+=12,Se[ne>>2]=P,Se[ne+4>>2]=$,Se[ne+8>>2]=rr,ne));Se[J>>2]=0,Se[q>>2]=0;var Q=ar}var Q,er=r+44|0,ir=Se[er>>2],vr=Xr(r,b,1,40,41);if(0==(0|vr)){var p=0;break}if(0==(4096&Se[e]|0))var tr=vr,fr=X;else{Se[v]=0;var tr=0,fr=0}var fr,tr;Se[er>>2]=ir;var _r=Se[t],sr=Se[t+1];if(0==(0|_r))var nr=0;else var or=0!=(0|sr)?0:0|He.__str87257,nr=or;var nr,lr=Se[n>>2],br=0!=(0|lr)?0|He.__str87257:0,kr=Se[l>>2],ur=Dr(r,0|He.__str86256,(ne=Oe,Oe+=44,Se[ne>>2]=R,Se[ne+4>>2]=T,Se[ne+8>>2]=_r,Se[ne+12>>2]=nr,Se[ne+16>>2]=lr,Se[ne+20>>2]=br,Se[ne+24>>2]=kr,Se[ne+28>>2]=Q,Se[ne+32>>2]=tr,Se[ne+36>>2]=fr,Se[ne+40>>2]=sr,ne));Se[r+16>>2]=ur;var p=1}while(0);var p;return Oe=f,p}function Hr(r){var a,a=(r+12|0)>>2,e=Se[a];if(Ae[e]<<24>>24==36)var i=e;else{Xa(0|He.__str72242,1252,0|He.___func___handle_template,0|He.__str74244);var i=Se[a]}var i;Se[a]=i+1|0;var v=Kr(r),t=0==(0|v);do if(t)var f=0;else{var _=Xr(r,0,0,60,62);if(0==(0|_)){var f=0;break}var s=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=v,Se[ne+4>>2]=_,ne));Se[r+16>>2]=s;var f=1}while(0);var f;return f}function Kr(r){for(var a,a=(r+12|0)>>2,e=Me[a],i=e,v=Ae[e];;){var v,i;if(!((v-65&255&255)<26|(v-97&255&255)<26|(v-48&255&255)<10)&&v<<24>>24!=95&&v<<24>>24!=36){var t=0;break}var f=i+1|0;Se[a]=f;var _=ge[f];if(_<<24>>24==64){Se[a]=i+2|0;var s=f-e|0,n=r+20|0,o=Fr(r,e,s,n);if(0==(0|o)){var t=0;break}var l=Se[r+24>>2]-1-Se[n>>2]|0,b=Yr(n,l),t=b;break}var i=f,v=_}var t;return t}function Yr(r,a){0==(0|r)&&Xa(0|He.__str72242,263,0|He.___func___str_array_get_ref,0|He.__str75245);var e=Se[r>>2]+a|0;if(e>>>0<Me[r+8>>2]>>>0)var i=Se[Se[r+16>>2]+(e<<2)>>2];else var i=0;var i;return i}function Gr(r,a){var e,e=(r+44|0)>>2,i=Me[e];if(i>>>0>a>>>0){for(var v=r+56|0,t=a,f=0,_=Se[v>>2],s=i;;){var s,_,f,t,n=Me[_+(t<<2)>>2];if(0==(0|n)){Xa(0|He.__str72242,680,0|He.___func___get_class_string,0|He.__str106276);var o=Se[v>>2],l=o,b=Se[o+(t<<2)>>2],k=Se[e]}else var l=_,b=n,k=s;var k,b,l,u=Ca(b),c=u+(f+2)|0,h=t+1|0;if(h>>>0>=k>>>0)break;var t=h,f=c,_=l,s=k}var d=c-1|0}else var d=-1;var d,w=Wr(r,d);if(0==(0|w))var p=0;else{var E=Se[e]-1|0,A=(0|E)<(0|a);r:do if(A)var g=0;else for(var y=r+56|0,m=0,S=E;;){var S,m,M=Se[Se[y>>2]+(S<<2)>>2],C=Ca(M),R=w+m|0;Pa(R,M,C,1);var T=C+m|0;if((0|S)>(0|a)){var O=T+1|0;Ae[w+T|0]=58;var N=T+2|0;Ae[w+O|0]=58;var I=N}else var I=T;var I,P=S-1|0;if((0|P)<(0|a)){var g=I;break r}var m=I,S=P}while(0);var g;Ae[w+g|0]=0;var p=w}var p;return p}function Wr(r,a){var e,i=a>>>0>1020;do if(i){var v=Se[r+4>>2],t=a+4|0,f=pe[v](t);if(0==(0|f)){var _=0;break}var s=r+60|0,n=Se[s>>2],o=f;Se[o>>2]=n,Se[s>>2]=f,Se[r+64>>2]=0;var _=f+4|0}else{var e=(r+64|0)>>2,l=Me[e];if(l>>>0<a>>>0){var b=Se[r+4>>2],k=pe[b](1024);if(0==(0|k)){var _=0;break}var u=r+60|0,c=Se[u>>2],h=k;Se[h>>2]=c,Se[u>>2]=k,Se[e]=1020;var d=1020,w=k}else var d=l,w=Se[r+60>>2];var w,d;Se[e]=d-a|0;var _=w+(1024-d)|0}while(0);var _;return _}function Zr(r){var a=r<<24>>24;if(68==(0|a))var e=0|He.__str157327;else if(69==(0|a))var e=0|He.__str158328;else if(70==(0|a))var e=0|He.__str159329;else if(71==(0|a))var e=0|He.__str160330;else if(72==(0|a))var e=0|He.__str161331;else if(73==(0|a))var e=0|He.__str162332;else if(74==(0|a))var e=0|He.__str163333;else if(75==(0|a))var e=0|He.__str164334;else if(76==(0|a))var e=0|He.__str165335;else if(77==(0|a))var e=0|He.__str166336;else if(78==(0|a))var e=0|He.__str167337;else if(87==(0|a))var e=0|He.__str168338;else var e=0;var e;return e}function Qr(r){var a=r<<24>>24;if(67==(0|a))var e=0|He.__str145315;else if(68==(0|a))var e=0|He.__str146316;else if(69==(0|a))var e=0|He.__str147317;else if(70==(0|a))var e=0|He.__str148318;else if(71==(0|a))var e=0|He.__str149319;else if(72==(0|a))var e=0|He.__str150320;else if(73==(0|a))var e=0|He.__str151321;else if(74==(0|a))var e=0|He.__str152322;else if(75==(0|a))var e=0|He.__str153323;else if(77==(0|a))var e=0|He.__str154324;else if(78==(0|a))var e=0|He.__str155325;else if(79==(0|a))var e=0|He.__str156326;else if(88==(0|a))var e=0|He.__str84254;else if(90==(0|a))var e=0|He.__str110280;else var e=0;var e;return e}function qr(r){var a=r+44|0,e=Se[a>>2],i=zr(r);if(0==(0|i))var v=0;else var t=Gr(r,e),v=t;var v;return Se[a>>2]=e,v}function $r(r,a,e,i,v){var t,f,_,s=Oe;Oe+=16;var n,o=s,_=o>>2,l=s+4,b=s+8,f=b>>2;Se[l>>2]=0|ii;var t=(a+12|0)>>2,k=Se[t];if(Ae[k]<<24>>24==69){Se[l>>2]=0|He.__str134304;var u=k+1|0;Se[t]=u;var c=0|He.__str134304}else var c=0|ii;var c,h=i<<24>>24;do{if(65==(0|h)){var d=Dr(a,0|He.__str135305,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=d;n=10;break}if(66==(0|h)){var p=Dr(a,0|He.__str136306,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=p;n=10;break}if(80==(0|h)){var E=Dr(a,0|He.__str137307,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=E;n=10;break}if(81==(0|h)){var A=Dr(a,0|He.__str138308,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=A;n=10;break}if(82==(0|h)){var g=Dr(a,0|He.__str139309,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=g;n=10;break}if(83==(0|h)){var y=Dr(a,0|He.__str140310,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=y;n=10;break}if(63==(0|h)){var w=0|ii;n=10}else n=31}while(0);r:do if(10==n){var w,m=xr(a,o,l);if(0==(0|m))break;var S=a+44|0,M=Se[S>>2],C=Se[t],R=Ae[C]<<24>>24==89;a:do if(R){var T=C+1|0;Se[t]=T;var O=Lr(a);if(0==(0|O))break r;var N=Ha(O),I=Ae[w]<<24>>24==32,P=Se[_],D=0==(0|P);do{if(I){if(!D){n=17;break}var L=w+1|0;n=18;break}if(D){var L=w;n=18;break}n=17;break}while(0);if(17==n){var F=Dr(a,0|He.__str141311,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=w,ne));Se[_]=0;var X=F}else if(18==n)var L,j=Dr(a,0|He.__str142312,(ne=Oe,Oe+=4,Se[ne>>2]=L,ne)),X=j;var X;if(0==(0|N)){var U=X;break}for(var x=X,z=N;;){var z,x,V=z-1|0,B=Lr(a),H=Dr(a,0|He.__str143313,(ne=Oe,Oe+=8,Se[ne>>2]=x,Se[ne+4>>2]=B,ne));if(0==(0|V)){var U=H;break a}var x=H,z=V}}else var U=w;while(0);var U,K=Pr(a,b,e,0);if(0==(0|K))break;var Y=Se[_];if(0==(0|Y)){var G=0==(0|v);do if(G){if(Ae[U]<<24>>24==0){var W=U;break}var Z=U+1|0;if(Ae[Z]<<24>>24!=42){var W=U;break}var Q=Se[f],q=Ca(Q);if(Ae[Q+(q-1)|0]<<24>>24!=42){var W=U;break}var W=Z}else var W=U;while(0);var W,$=Se[f],J=Dr(a,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=W,ne));Se[r>>2]=J}else{var rr=Se[f],ar=Dr(a,0|He.__str144314,(ne=Oe,Oe+=12,Se[ne>>2]=rr,Se[ne+4>>2]=Y,Se[ne+8>>2]=U,ne));Se[r>>2]=ar}var er=Se[f+1];Se[r+4>>2]=er,Se[S>>2]=M}while(0);Oe=s}function Jr(r){var a,e=r>>>0<245;do{if(e){if(r>>>0<11)var i=16;else var i=r+11&-8;var i,v=i>>>3,t=Me[vi>>2],f=t>>>(v>>>0);if(0!=(3&f|0)){var _=(1&f^1)+v|0,s=_<<1,n=(s<<2)+vi+40|0,o=(s+2<<2)+vi+40|0,l=Me[o>>2],b=l+8|0,k=Me[b>>2];if((0|n)==(0|k))Se[vi>>2]=t&(1<<_^-1);else{if(k>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[o>>2]=k,Se[k+12>>2]=n}var u=_<<3;Se[l+4>>2]=3|u;var c=l+(4|u)|0,h=1|Se[c>>2];Se[c>>2]=h;var d=b;a=38;break}if(i>>>0<=Me[vi+8>>2]>>>0){var w=i;a=30;break}if(0!=(0|f)){var p=2<<v,E=f<<v&(p|-p),A=(E&-E)-1|0,g=A>>>12&16,y=A>>>(g>>>0),m=y>>>5&8,S=y>>>(m>>>0),M=S>>>2&4,C=S>>>(M>>>0),R=C>>>1&2,T=C>>>(R>>>0),O=T>>>1&1,N=(m|g|M|R|O)+(T>>>(O>>>0))|0,I=N<<1,P=(I<<2)+vi+40|0,D=(I+2<<2)+vi+40|0,L=Me[D>>2],F=L+8|0,X=Me[F>>2];if((0|P)==(0|X))Se[vi>>2]=t&(1<<N^-1);else{if(X>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[D>>2]=X,Se[X+12>>2]=P}var j=N<<3,U=j-i|0;Se[L+4>>2]=3|i;var x=L,z=x+i|0;Se[x+(4|i)>>2]=1|U,Se[x+j>>2]=U;var V=Me[vi+8>>2];if(0!=(0|V)){var B=Se[vi+20>>2],H=V>>>2&1073741822,K=(H<<2)+vi+40|0,Y=Me[vi>>2],G=1<<(V>>>3),W=0==(Y&G|0);do{if(!W){var Z=(H+2<<2)+vi+40|0,Q=Me[Z>>2];if(Q>>>0>=Me[vi+16>>2]>>>0){var q=Q,$=Z;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Y|G;var q=K,$=(H+2<<2)+vi+40|0}while(0);var $,q;Se[$>>2]=B,Se[q+12>>2]=B;var J=B+8|0;Se[J>>2]=q;var rr=B+12|0;Se[rr>>2]=K}Se[vi+8>>2]=U,Se[vi+20>>2]=z;var d=F;a=38;break}if(0==(0|Se[vi+4>>2])){var w=i;a=30;break}var ar=ra(i);if(0==(0|ar)){var w=i;a=30;break}var d=ar;a=38;break}if(r>>>0>4294967231){var w=-1;a=30;break}var er=r+11&-8;if(0==(0|Se[vi+4>>2])){var w=er;a=30;break}var ir=ea(er);if(0==(0|ir)){var w=er;a=30;break}var d=ir;a=38;break}while(0);if(30==a){var w,vr=Me[vi+8>>2];if(w>>>0>vr>>>0){var tr=Me[vi+12>>2];if(w>>>0<tr>>>0){var fr=tr-w|0;Se[vi+12>>2]=fr;var _r=Me[vi+24>>2],sr=_r;Se[vi+24>>2]=sr+w|0,Se[w+(sr+4)>>2]=1|fr,Se[_r+4>>2]=3|w;var d=_r+8|0}else var nr=aa(w),d=nr}else{var or=vr-w|0,lr=Me[vi+20>>2];if(or>>>0>15){var br=lr;Se[vi+20>>2]=br+w|0,Se[vi+8>>2]=or,Se[w+(br+4)>>2]=1|or,Se[br+vr>>2]=or,Se[lr+4>>2]=3|w}else{Se[vi+8>>2]=0,Se[vi+20>>2]=0,Se[lr+4>>2]=3|vr;var kr=vr+(lr+4)|0,ur=1|Se[kr>>2];Se[kr>>2]=ur}var d=lr+8|0}}var d;return d}function ra(r){var a,e,i,v=Se[vi+4>>2],t=(v&-v)-1|0,f=t>>>12&16,_=t>>>(f>>>0),s=_>>>5&8,n=_>>>(s>>>0),o=n>>>2&4,l=n>>>(o>>>0),b=l>>>1&2,k=l>>>(b>>>0),u=k>>>1&1,c=Me[vi+((s|f|o|b|u)+(k>>>(u>>>0))<<2)+304>>2],h=c,e=h>>2,d=(Se[c+4>>2]&-8)-r|0;r:for(;;)for(var d,h,w=h;;){var w,p=Se[w+16>>2];if(0==(0|p)){var E=Se[w+20>>2];if(0==(0|E))break r;var A=E}else var A=p;var A,g=(Se[A+4>>2]&-8)-r|0;if(g>>>0<d>>>0){var h=A,e=h>>2,d=g;continue r}var w=A}var y=h,m=Me[vi+16>>2],S=y>>>0<m>>>0;do if(!S){var M=y+r|0,C=M;if(y>>>0>=M>>>0)break;var R=Me[e+6],T=Me[e+3],O=(0|T)==(0|h);do if(O){var N=h+20|0,I=Se[N>>2];if(0==(0|I)){var P=h+16|0,D=Se[P>>2];if(0==(0|D)){var L=0,a=L>>2;break}var F=P,X=D}else{var F=N,X=I;i=14}for(;;){var X,F,j=X+20|0,U=Se[j>>2];if(0==(0|U)){var x=X+16|0,z=Me[x>>2];if(0==(0|z))break;var F=x,X=z}else var F=j,X=U}if(F>>>0<m>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[F>>2]=0;var L=X,a=L>>2}else{var V=Me[e+2];if(V>>>0<m>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[V+12>>2]=T,Se[T+8>>2]=V;var L=T,a=L>>2}while(0);var L,B=0==(0|R);r:do if(!B){var H=h+28|0,K=(Se[H>>2]<<2)+vi+304|0,Y=(0|h)==(0|Se[K>>2]);do{if(Y){if(Se[K>>2]=L,0!=(0|L))break;var G=Se[vi+4>>2]&(1<<Se[H>>2]^-1);Se[vi+4>>2]=G;break r}if(R>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var W=R+16|0;if((0|Se[W>>2])==(0|h)?Se[W>>2]=L:Se[R+20>>2]=L,0==(0|L))break r}while(0);if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=R;var Z=Me[e+4];if(0!=(0|Z)){if(Z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=Z,Se[Z+24>>2]=L}var Q=Me[e+5];if(0==(0|Q))break;if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=Q,Se[Q+24>>2]=L}while(0);if(d>>>0<16){var q=d+r|0;Se[e+1]=3|q;var $=q+(y+4)|0,J=1|Se[$>>2];Se[$>>2]=J}else{Se[e+1]=3|r,Se[r+(y+4)>>2]=1|d,Se[y+d+r>>2]=d;var rr=Me[vi+8>>2];if(0!=(0|rr)){var ar=Me[vi+20>>2],er=rr>>>2&1073741822,ir=(er<<2)+vi+40|0,vr=Me[vi>>2],tr=1<<(rr>>>3),fr=0==(vr&tr|0);do{if(!fr){var _r=(er+2<<2)+vi+40|0,sr=Me[_r>>2];if(sr>>>0>=Me[vi+16>>2]>>>0){var nr=sr,or=_r;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=vr|tr;var nr=ir,or=(er+2<<2)+vi+40|0}while(0);var or,nr;Se[or>>2]=ar,Se[nr+12>>2]=ar,Se[ar+8>>2]=nr,Se[ar+12>>2]=ir}Se[vi+8>>2]=d,Se[vi+20>>2]=C}return h+8|0}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}function aa(r){var a,e;0==(0|Se[ti>>2])&&ba();var i=0==(4&Se[vi+440>>2]|0);do{if(i){var v=Se[vi+24>>2],t=0==(0|v);do{if(!t){var f=v,_=ua(f);if(0==(0|_)){e=6;break}var s=Se[ti+8>>2],n=r+47-Se[vi+12>>2]+s&-s;if(n>>>0>=2147483647){e=14;break}var o=re(n);if((0|o)==(Se[_>>2]+Se[_+4>>2]|0)){var l=o,b=n,k=o;e=13;break}var u=o,c=n;e=15;break}e=6}while(0);do if(6==e){var h=re(0);if((0|h)==-1){e=14;break}var d=Se[ti+8>>2],w=d+(r+47)&-d,p=h,E=Se[ti+4>>2],A=E-1|0;if(0==(A&p|0))var g=w;else var g=w-p+(A+p&-E)|0;var g;if(g>>>0>=2147483647){e=14;break}var y=re(g);if((0|y)==(0|h)){var l=h,b=g,k=y;e=13;break}var u=y,c=g;e=15;break}while(0);if(13==e){var k,b,l;if((0|l)!=-1){var m=b,S=l;e=26;break}var u=k,c=b}else if(14==e){var M=4|Se[vi+440>>2];Se[vi+440>>2]=M,e=23;break}var c,u,C=0|-c,R=(0|u)!=-1&c>>>0<2147483647;do{if(R){if(c>>>0>=(r+48|0)>>>0){var T=c;e=21;break}var O=Se[ti+8>>2],N=r+47-c+O&-O;if(N>>>0>=2147483647){var T=c;e=21;break}var I=re(N);if((0|I)==-1){re(C);e=22;break}var T=N+c|0;e=21;break}var T=c;e=21}while(0);if(21==e){var T;if((0|u)!=-1){var m=T,S=u;e=26;break}}var P=4|Se[vi+440>>2];Se[vi+440>>2]=P,e=23;break}e=23}while(0);do if(23==e){var D=Se[ti+8>>2],L=D+(r+47)&-D;if(L>>>0>=2147483647){e=49;break}var F=re(L),X=re(0);if(!((0|X)!=-1&(0|F)!=-1&F>>>0<X>>>0)){e=49;break}var j=X-F|0;if(j>>>0<=(r+40|0)>>>0|(0|F)==-1){e=49;break}var m=j,S=F;e=26;break}while(0);r:do if(26==e){var S,m,U=Se[vi+432>>2]+m|0;Se[vi+432>>2]=U,U>>>0>Me[vi+436>>2]>>>0&&(Se[vi+436>>2]=U);var x=Me[vi+24>>2],z=0==(0|x);a:do if(z){var V=Me[vi+16>>2];0==(0|V)|S>>>0<V>>>0&&(Se[vi+16>>2]=S),Se[vi+444>>2]=S,Se[vi+448>>2]=m,Se[vi+456>>2]=0;var B=Se[ti>>2];Se[vi+36>>2]=B,Se[vi+32>>2]=-1,ha(),ca(S,m-40|0)}else{for(var H=vi+444|0,a=H>>2;;){var H;if(0==(0|H))break;var K=Me[a],Y=H+4|0,G=Me[Y>>2],W=K+G|0;if((0|S)==(0|W)){if(0!=(8&Se[a+3]|0))break;var Z=x;if(!(Z>>>0>=K>>>0&Z>>>0<W>>>0))break;Se[Y>>2]=G+m|0;var Q=Se[vi+24>>2],q=Se[vi+12>>2]+m|0;ca(Q,q);break a}var H=Se[a+2],a=H>>2}S>>>0<Me[vi+16>>2]>>>0&&(Se[vi+16>>2]=S);for(var $=S+m|0,J=vi+444|0;;){var J;if(0==(0|J))break;var rr=0|J,ar=Me[rr>>2];if((0|ar)==(0|$)){if(0!=(8&Se[J+12>>2]|0))break;Se[rr>>2]=S;var er=J+4|0,ir=Se[er>>2]+m|0;Se[er>>2]=ir;var vr=da(S,ar,r),tr=vr;e=50;break r}var J=Se[J+8>>2]}Ma(S,m)}while(0);var fr=Me[vi+12>>2];if(fr>>>0<=r>>>0){e=49;break}var _r=fr-r|0;Se[vi+12>>2]=_r;var sr=Me[vi+24>>2],nr=sr;Se[vi+24>>2]=nr+r|0,Se[r+(nr+4)>>2]=1|_r,Se[sr+4>>2]=3|r;var tr=sr+8|0;e=50;break}while(0);if(49==e){var or=Je();Se[or>>2]=12;var tr=0}var tr;return tr}function ea(r){var a,e,i,v,t,f,_=r>>2,s=0|-r,n=r>>>8,o=0==(0|n);do if(o)var l=0;else{if(r>>>0>16777215){var l=31;break}var b=(n+1048320|0)>>>16&8,k=n<<b,u=(k+520192|0)>>>16&4,c=k<<u,h=(c+245760|0)>>>16&2,d=14-(u|b|h)+(c<<h>>>15)|0,l=r>>>((d+7|0)>>>0)&1|d<<1}while(0);var l,w=Me[vi+(l<<2)+304>>2],p=0==(0|w);r:do if(p)var E=0,A=s,g=0;else{if(31==(0|l))var y=0;else var y=25-(l>>>1)|0;for(var y,m=0,S=s,M=w,t=M>>2,C=r<<y,R=0;;){var R,C,M,S,m,T=Se[t+1]&-8,O=T-r|0;if(O>>>0<S>>>0){if((0|T)==(0|r)){var E=M,A=O,g=M;break r}var N=M,I=O}else var N=m,I=S;var I,N,P=Me[t+5],D=Me[((C>>>31<<2)+16>>2)+t],L=0==(0|P)|(0|P)==(0|D)?R:P;if(0==(0|D)){var E=N,A=I,g=L;break r}var m=N,S=I,M=D,t=M>>2,C=C<<1,R=L}}while(0);var g,A,E,F=0==(0|g)&0==(0|E);do if(F){var X=2<<l,j=Se[vi+4>>2]&(X|-X);if(0==(0|j)){var U=g;break}var x=(j&-j)-1|0,z=x>>>12&16,V=x>>>(z>>>0),B=V>>>5&8,H=V>>>(B>>>0),K=H>>>2&4,Y=H>>>(K>>>0),G=Y>>>1&2,W=Y>>>(G>>>0),Z=W>>>1&1,U=Se[vi+((B|z|K|G|Z)+(W>>>(Z>>>0))<<2)+304>>2]}else var U=g;while(0);var U,Q=0==(0|U);r:do if(Q)var q=A,$=E,v=$>>2;else for(var J=U,i=J>>2,rr=A,ar=E;;){var ar,rr,J,er=(Se[i+1]&-8)-r|0,ir=er>>>0<rr>>>0,vr=ir?er:rr,tr=ir?J:ar,fr=Me[i+4];if(0==(0|fr)){var _r=Me[i+5];if(0==(0|_r)){var q=vr,$=tr,v=$>>2;break r}var J=_r,i=J>>2,rr=vr,ar=tr}else var J=fr,i=J>>2,rr=vr,ar=tr}while(0);var $,q,sr=0==(0|$);r:do{if(!sr){if(q>>>0>=(Se[vi+8>>2]-r|0)>>>0){var nr=0;break}var or=$,e=or>>2,lr=Me[vi+16>>2],br=or>>>0<lr>>>0;do if(!br){var kr=or+r|0,ur=kr;if(or>>>0>=kr>>>0)break;var cr=Me[v+6],hr=Me[v+3],dr=(0|hr)==(0|$);do if(dr){var wr=$+20|0,pr=Se[wr>>2];if(0==(0|pr)){var Er=$+16|0,Ar=Se[Er>>2];if(0==(0|Ar)){var gr=0,a=gr>>2;break}var yr=Er,mr=Ar}else{var yr=wr,mr=pr;f=28}for(;;){var mr,yr,Sr=mr+20|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=mr+16|0,Rr=Me[Cr>>2];if(0==(0|Rr))break;var yr=Cr,mr=Rr}else var yr=Sr,mr=Mr}if(yr>>>0<lr>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[yr>>2]=0;var gr=mr,a=gr>>2}else{var Tr=Me[v+2];if(Tr>>>0<lr>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Tr+12>>2]=hr,Se[hr+8>>2]=Tr;var gr=hr,a=gr>>2}while(0);var gr,Or=0==(0|cr);a:do if(!Or){var Nr=$+28|0,Ir=(Se[Nr>>2]<<2)+vi+304|0,Pr=(0|$)==(0|Se[Ir>>2]);do{if(Pr){if(Se[Ir>>2]=gr,0!=(0|gr))break;var Dr=Se[vi+4>>2]&(1<<Se[Nr>>2]^-1);Se[vi+4>>2]=Dr;break a}if(cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var Lr=cr+16|0;if((0|Se[Lr>>2])==(0|$)?Se[Lr>>2]=gr:Se[cr+20>>2]=gr,0==(0|gr))break a}while(0);if(gr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=cr;var Fr=Me[v+4];if(0!=(0|Fr)){if(Fr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=Fr,Se[Fr+24>>2]=gr}var Xr=Me[v+5];if(0==(0|Xr))break;if(Xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=Xr,Se[Xr+24>>2]=gr}while(0);var jr=q>>>0<16;a:do if(jr){var Ur=q+r|0;Se[v+1]=3|Ur;var xr=Ur+(or+4)|0,zr=1|Se[xr>>2];Se[xr>>2]=zr}else if(Se[v+1]=3|r,Se[_+(e+1)]=1|q,Se[(q>>2)+e+_]=q,q>>>0<256){var Vr=q>>>2&1073741822,Br=(Vr<<2)+vi+40|0,Hr=Me[vi>>2],Kr=1<<(q>>>3),Yr=0==(Hr&Kr|0);do{if(!Yr){var Gr=(Vr+2<<2)+vi+40|0,Wr=Me[Gr>>2];if(Wr>>>0>=Me[vi+16>>2]>>>0){var Zr=Wr,Qr=Gr;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Hr|Kr;var Zr=Br,Qr=(Vr+2<<2)+vi+40|0}while(0);var Qr,Zr;Se[Qr>>2]=ur,Se[Zr+12>>2]=ur,Se[_+(e+2)]=Zr,Se[_+(e+3)]=Br}else{var qr=kr,$r=q>>>8,Jr=0==(0|$r);do if(Jr)var ra=0;else{if(q>>>0>16777215){var ra=31;break}var aa=($r+1048320|0)>>>16&8,ea=$r<<aa,ia=(ea+520192|0)>>>16&4,va=ea<<ia,ta=(va+245760|0)>>>16&2,fa=14-(ia|aa|ta)+(va<<ta>>>15)|0,ra=q>>>((fa+7|0)>>>0)&1|fa<<1}while(0);var ra,_a=(ra<<2)+vi+304|0;Se[_+(e+7)]=ra;var sa=r+(or+16)|0;Se[_+(e+5)]=0,Se[sa>>2]=0;var na=Se[vi+4>>2],oa=1<<ra;if(0==(na&oa|0)){var la=na|oa;Se[vi+4>>2]=la,Se[_a>>2]=qr,Se[_+(e+6)]=_a,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr}else{if(31==(0|ra))var ba=0;else var ba=25-(ra>>>1)|0;for(var ba,ka=q<<ba,ua=Se[_a>>2];;){var ua,ka;if((Se[ua+4>>2]&-8|0)==(0|q)){var ca=ua+8|0,ha=Me[ca>>2],da=Me[vi+16>>2],wa=ua>>>0<da>>>0;do if(!wa){if(ha>>>0<da>>>0)break;Se[ha+12>>2]=qr,Se[ca>>2]=qr,Se[_+(e+2)]=ha,Se[_+(e+3)]=ua,Se[_+(e+6)]=0;break a}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var pa=(ka>>>31<<2)+ua+16|0,Ea=Me[pa>>2];if(0==(0|Ea)){if(pa>>>0>=Me[vi+16>>2]>>>0){Se[pa>>2]=qr,Se[_+(e+6)]=ua,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr;break a}throw Ka(),\\\"Reached an unreachable!\\\"}var ka=ka<<1,ua=Ea}}}while(0);var nr=$+8|0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var nr=0}while(0);var nr;return nr}function ia(r){var a;0==(0|Se[ti>>2])&&ba();var e=r>>>0<4294967232;r:do if(e){var i=Me[vi+24>>2];if(0==(0|i)){var v=0;break}var t=Me[vi+12>>2],f=t>>>0>(r+40|0)>>>0;do if(f){var _=Me[ti+8>>2],s=-40-r-1+t+_|0,n=Math.floor((s>>>0)/(_>>>0)),o=(n-1)*_|0,l=i,b=ua(l);if(0!=(8&Se[b+12>>2]|0))break;var k=re(0),a=(b+4|0)>>2;if((0|k)!=(Se[b>>2]+Se[a]|0))break;var u=o>>>0>2147483646?-2147483648-_|0:o,c=0|-u,h=re(c),d=re(0);if(!((0|h)!=-1&d>>>0<k>>>0))break;var w=k-d|0;if((0|k)==(0|d))break;var p=Se[a]-w|0;Se[a]=p;var E=Se[vi+432>>2]-w|0;Se[vi+432>>2]=E;var A=Se[vi+24>>2],g=Se[vi+12>>2]-w|0;ca(A,g);var v=(0|k)!=(0|d);break r}while(0);if(Me[vi+12>>2]>>>0<=Me[vi+28>>2]>>>0){var v=0;break}Se[vi+28>>2]=-1;var v=0}else var v=0;while(0);var v;return 1&v}function va(r){var a,e,i,v,t,f,_,s=r>>2,n=0==(0|r);r:do if(!n){var o=r-8|0,l=o,b=Me[vi+16>>2],k=o>>>0<b>>>0;a:do if(!k){var u=Me[r-4>>2],c=3&u;if(1==(0|c))break;var h=u&-8,f=h>>2,d=r+(h-8)|0,w=d,p=0==(1&u|0);e:do if(p){var E=Me[o>>2];if(0==(0|c))break r;var A=-8-E|0,t=A>>2,g=r+A|0,y=g,m=E+h|0;if(g>>>0<b>>>0)break a;if((0|y)==(0|Se[vi+20>>2])){var v=(r+(h-4)|0)>>2;if(3!=(3&Se[v]|0)){var S=y,i=S>>2,M=m;break}Se[vi+8>>2]=m;var C=Se[v]&-2;Se[v]=C,Se[t+(s+1)]=1|m,Se[d>>2]=m;break r}if(E>>>0<256){var R=Me[t+(s+2)],T=Me[t+(s+3)];if((0|R)!=(0|T)){var O=((E>>>2&1073741822)<<2)+vi+40|0,N=(0|R)!=(0|O)&R>>>0<b>>>0;do if(!N){if(!((0|T)==(0|O)|T>>>0>=b>>>0))break;Se[R+12>>2]=T,Se[T+8>>2]=R;var S=y,i=S>>2,M=m;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var I=Se[vi>>2]&(1<<(E>>>3)^-1);Se[vi>>2]=I;var S=y,i=S>>2,M=m}else{var P=g,D=Me[t+(s+6)],L=Me[t+(s+3)],F=(0|L)==(0|P);do if(F){var X=A+(r+20)|0,j=Se[X>>2];if(0==(0|j)){var U=A+(r+16)|0,x=Se[U>>2];if(0==(0|x)){var z=0,e=z>>2;break}var V=U,B=x}else{var V=X,B=j;_=21}for(;;){var B,V,H=B+20|0,K=Se[H>>2];if(0==(0|K)){var Y=B+16|0,G=Me[Y>>2];if(0==(0|G))break;var V=Y,B=G}else var V=H,B=K}if(V>>>0<b>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[V>>2]=0;var z=B,e=z>>2}else{var W=Me[t+(s+2)];if(W>>>0<b>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[W+12>>2]=L,Se[L+8>>2]=W;var z=L,e=z>>2}while(0);var z;if(0==(0|D)){var S=y,i=S>>2,M=m;break}var Z=A+(r+28)|0,Q=(Se[Z>>2]<<2)+vi+304|0,q=(0|P)==(0|Se[Q>>2]);do{if(q){if(Se[Q>>2]=z,0!=(0|z))break;var $=Se[vi+4>>2]&(1<<Se[Z>>2]^-1);Se[vi+4>>2]=$;var S=y,i=S>>2,M=m;break e}if(D>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var J=D+16|0;if((0|Se[J>>2])==(0|P)?Se[J>>2]=z:Se[D+20>>2]=z,0==(0|z)){var S=y,i=S>>2,M=m;break e}}while(0);if(z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+6]=D;var rr=Me[t+(s+4)];if(0!=(0|rr)){if(rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+4]=rr,Se[rr+24>>2]=z}var ar=Me[t+(s+5)];if(0==(0|ar)){var S=y,i=S>>2,M=m;break}if(ar>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+5]=ar,Se[ar+24>>2]=z;var S=y,i=S>>2,M=m}}else var S=l,i=S>>2,M=h;while(0);var M,S,er=S;if(er>>>0>=d>>>0)break;var ir=r+(h-4)|0,vr=Me[ir>>2];if(0==(1&vr|0))break;var tr=0==(2&vr|0);do{if(tr){if((0|w)==(0|Se[vi+24>>2])){var fr=Se[vi+12>>2]+M|0;Se[vi+12>>2]=fr,Se[vi+24>>2]=S;var _r=1|fr;if(Se[i+1]=_r,(0|S)==(0|Se[vi+20>>2])&&(Se[vi+20>>2]=0,Se[vi+8>>2]=0),fr>>>0<=Me[vi+28>>2]>>>0)break r;ia(0);break r}if((0|w)==(0|Se[vi+20>>2])){var sr=Se[vi+8>>2]+M|0;Se[vi+8>>2]=sr,Se[vi+20>>2]=S;var nr=1|sr;Se[i+1]=nr;var or=er+sr|0;Se[or>>2]=sr;break r}var lr=(vr&-8)+M|0,br=vr>>>3,kr=vr>>>0<256;e:do if(kr){var ur=Me[s+f],cr=Me[((4|h)>>2)+s];if((0|ur)!=(0|cr)){var hr=((vr>>>2&1073741822)<<2)+vi+40|0,dr=(0|ur)==(0|hr);do{if(!dr){if(ur>>>0<Me[vi+16>>2]>>>0){_=66;break}_=63;break}_=63}while(0);do if(63==_){if((0|cr)!=(0|hr)&&cr>>>0<Me[vi+16>>2]>>>0)break;Se[ur+12>>2]=cr,Se[cr+8>>2]=ur;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var wr=Se[vi>>2]&(1<<br^-1);Se[vi>>2]=wr}else{var pr=d,Er=Me[f+(s+4)],Ar=Me[((4|h)>>2)+s],gr=(0|Ar)==(0|pr);do if(gr){var yr=h+(r+12)|0,mr=Se[yr>>2];if(0==(0|mr)){var Sr=h+(r+8)|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=0,a=Cr>>2;break}var Rr=Sr,Tr=Mr}else{var Rr=yr,Tr=mr;_=73}for(;;){var Tr,Rr,Or=Tr+20|0,Nr=Se[Or>>2];if(0==(0|Nr)){var Ir=Tr+16|0,Pr=Me[Ir>>2];if(0==(0|Pr))break;var Rr=Ir,Tr=Pr}else var Rr=Or,Tr=Nr}if(Rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Rr>>2]=0;var Cr=Tr,a=Cr>>2}else{var Dr=Me[s+f];if(Dr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Dr+12>>2]=Ar,\\\\nSe[Ar+8>>2]=Dr;var Cr=Ar,a=Cr>>2}while(0);var Cr;if(0==(0|Er))break;var Lr=h+(r+20)|0,Fr=(Se[Lr>>2]<<2)+vi+304|0,Xr=(0|pr)==(0|Se[Fr>>2]);do{if(Xr){if(Se[Fr>>2]=Cr,0!=(0|Cr))break;var jr=Se[vi+4>>2]&(1<<Se[Lr>>2]^-1);Se[vi+4>>2]=jr;break e}if(Er>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var Ur=Er+16|0;if((0|Se[Ur>>2])==(0|pr)?Se[Ur>>2]=Cr:Se[Er+20>>2]=Cr,0==(0|Cr))break e}while(0);if(Cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=Er;var xr=Me[f+(s+2)];if(0!=(0|xr)){if(xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=xr,Se[xr+24>>2]=Cr}var zr=Me[f+(s+3)];if(0==(0|zr))break;if(zr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=zr,Se[zr+24>>2]=Cr}while(0);if(Se[i+1]=1|lr,Se[er+lr>>2]=lr,(0|S)!=(0|Se[vi+20>>2])){var Vr=lr;break}Se[vi+8>>2]=lr;break r}Se[ir>>2]=vr&-2,Se[i+1]=1|M,Se[er+M>>2]=M;var Vr=M}while(0);var Vr;if(Vr>>>0<256){var Br=Vr>>>2&1073741822,Hr=(Br<<2)+vi+40|0,Kr=Me[vi>>2],Yr=1<<(Vr>>>3),Gr=0==(Kr&Yr|0);do{if(!Gr){var Wr=(Br+2<<2)+vi+40|0,Zr=Me[Wr>>2];if(Zr>>>0>=Me[vi+16>>2]>>>0){var Qr=Zr,qr=Wr;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Kr|Yr;var Qr=Hr,qr=(Br+2<<2)+vi+40|0}while(0);var qr,Qr;Se[qr>>2]=S,Se[Qr+12>>2]=S,Se[i+2]=Qr,Se[i+3]=Hr;break r}var $r=S,Jr=Vr>>>8,ra=0==(0|Jr);do if(ra)var aa=0;else{if(Vr>>>0>16777215){var aa=31;break}var ea=(Jr+1048320|0)>>>16&8,va=Jr<<ea,fa=(va+520192|0)>>>16&4,_a=va<<fa,sa=(_a+245760|0)>>>16&2,na=14-(fa|ea|sa)+(_a<<sa>>>15)|0,aa=Vr>>>((na+7|0)>>>0)&1|na<<1}while(0);var aa,oa=(aa<<2)+vi+304|0;Se[i+7]=aa,Se[i+5]=0,Se[i+4]=0;var la=Se[vi+4>>2],ba=1<<aa,ka=0==(la&ba|0);e:do if(ka){var ua=la|ba;Se[vi+4>>2]=ua,Se[oa>>2]=$r,Se[i+6]=oa,Se[i+3]=S,Se[i+2]=S}else{if(31==(0|aa))var ca=0;else var ca=25-(aa>>>1)|0;for(var ca,ha=Vr<<ca,da=Se[oa>>2];;){var da,ha;if((Se[da+4>>2]&-8|0)==(0|Vr)){var wa=da+8|0,pa=Me[wa>>2],Ea=Me[vi+16>>2],Aa=da>>>0<Ea>>>0;do if(!Aa){if(pa>>>0<Ea>>>0)break;Se[pa+12>>2]=$r,Se[wa>>2]=$r,Se[i+2]=pa,Se[i+3]=da,Se[i+6]=0;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var ga=(ha>>>31<<2)+da+16|0,ya=Me[ga>>2];if(0==(0|ya)){if(ga>>>0>=Me[vi+16>>2]>>>0){Se[ga>>2]=$r,Se[i+6]=da,Se[i+3]=S,Se[i+2]=S;break e}throw Ka(),\\\"Reached an unreachable!\\\"}var ha=ha<<1,da=ya}}while(0);var ma=Se[vi+32>>2]-1|0;if(Se[vi+32>>2]=ma,0!=(0|ma))break r;ta();break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}while(0)}function ta(){var r=Se[vi+452>>2],a=0==(0|r);r:do if(!a)for(var e=r;;){var e,i=Se[e+8>>2];if(0==(0|i))break r;var e=i}while(0);Se[vi+32>>2]=-1}function fa(r,a){if(0==(0|r))var e=Jr(a),i=e;else var v=la(r,a),i=v;var i;return i}function _a(r,a){var e,i=r>>>0<9;do if(i)var v=Jr(a),t=v;else{var f=r>>>0<16?16:r,_=0==(f-1&f|0);r:do if(_)var s=f;else{if(f>>>0<=16){var s=16;break}for(var n=16;;){var n,o=n<<1;if(o>>>0>=f>>>0){var s=o;break r}var n=o}}while(0);var s;if((-64-s|0)>>>0>a>>>0){if(a>>>0<11)var l=16;else var l=a+11&-8;var l,b=Jr(l+(s+12)|0);if(0==(0|b)){var t=0;break}var k=b-8|0;if(0==((b>>>0)%(s>>>0)|0))var u=k,c=0;else{var h=b+(s-1)&-s,d=h-8|0,w=k;if((d-w|0)>>>0>15)var p=d;else var p=h+(s-8)|0;var p,E=p-w|0,e=(b-4|0)>>2,A=Se[e],g=(A&-8)-E|0;if(0==(3&A|0)){var y=Se[k>>2]+E|0;Se[p>>2]=y,Se[p+4>>2]=g;var u=p,c=0}else{var m=p+4|0,S=g|1&Se[m>>2]|2;Se[m>>2]=S;var M=g+(p+4)|0,C=1|Se[M>>2];Se[M>>2]=C;var R=E|1&Se[e]|2;Se[e]=R;var T=b+(E-4)|0,O=1|Se[T>>2];Se[T>>2]=O;var u=p,c=b}}var c,u,N=u+4|0,I=Me[N>>2],P=0==(3&I|0);do if(P)var D=0;else{var L=I&-8;if(L>>>0<=(l+16|0)>>>0){var D=0;break}var F=L-l|0;Se[N>>2]=l|1&I|2,Se[u+(4|l)>>2]=3|F;var X=u+(4|L)|0,j=1|Se[X>>2];Se[X>>2]=j;var D=l+(u+8)|0}while(0);var D;0!=(0|c)&&va(c),0!=(0|D)&&va(D);var t=u+8|0}else{var U=Je();Se[U>>2]=12;var t=0}}while(0);var t;return t}function sa(r,a,e,i){var v,t;0==(0|Se[ti>>2])&&ba();var f=0==(0|i),_=0==(0|r);do{if(f){if(_){var s=Jr(0),n=s;t=30;break}var o=r<<2;if(o>>>0<11){var l=0,b=16;t=9;break}var l=0,b=o+11&-8;t=9;break}if(_){var n=i;t=30;break}var l=i,b=0;t=9;break}while(0);do if(9==t){var b,l,k=0==(1&e|0);r:do if(k){if(_){var u=0,c=0;break}for(var h=0,d=0;;){var d,h,w=Me[a+(d<<2)>>2];if(w>>>0<11)var p=16;else var p=w+11&-8;var p,E=p+h|0,A=d+1|0;if((0|A)==(0|r)){var u=0,c=E;break r}var h=E,d=A}}else{var g=Me[a>>2];if(g>>>0<11)var y=16;else var y=g+11&-8;var y,u=y,c=y*r|0}while(0);var c,u,m=Jr(b-4+c|0);if(0==(0|m)){var n=0;break}var S=m-8|0,M=Se[m-4>>2]&-8;if(0!=(2&e|0)){var C=-4-b+M|0;Fa(m,0,C,1)}if(0==(0|l)){var R=m+c|0,T=M-c|3;Se[m+(c-4)>>2]=T;var O=R,v=O>>2,N=c}else var O=l,v=O>>2,N=M;var N,O;Se[v]=m;var I=r-1|0,P=0==(0|I);r:do if(P)var D=S,L=N;else if(0==(0|u))for(var F=S,X=N,j=0;;){var j,X,F,U=Me[a+(j<<2)>>2];if(U>>>0<11)var x=16;else var x=U+11&-8;var x,z=X-x|0;Se[F+4>>2]=3|x;var V=F+x|0,B=j+1|0;if(Se[(B<<2>>2)+v]=x+(F+8)|0,(0|B)==(0|I)){var D=V,L=z;break r}var F=V,X=z,j=B}else for(var H=3|u,K=u+8|0,Y=S,G=N,W=0;;){var W,G,Y,Z=G-u|0;Se[Y+4>>2]=H;var Q=Y+u|0,q=W+1|0;if(Se[(q<<2>>2)+v]=Y+K|0,(0|q)==(0|I)){var D=Q,L=Z;break r}var Y=Q,G=Z,W=q}while(0);var L,D;Se[D+4>>2]=3|L;var n=O}while(0);var n;return n}function na(r){var a=r>>2;0==(0|Se[ti>>2])&&ba();var e=Me[vi+24>>2];if(0==(0|e))var i=0,v=0,t=0,f=0,_=0,s=0,n=0;else{for(var o=Me[vi+12>>2],l=o+40|0,b=vi+444|0,k=l,u=l,c=1;;){var c,u,k,b,h=Me[b>>2],d=h+8|0;if(0==(7&d|0))var w=0;else var w=7&-d;for(var w,p=b+4|0,E=h+w|0,A=c,g=u,y=k;;){var y,g,A,E;if(E>>>0<h>>>0)break;if(E>>>0>=(h+Se[p>>2]|0)>>>0|(0|E)==(0|e))break;var m=Se[E+4>>2];if(7==(0|m))break;var S=m&-8,M=S+y|0;if(1==(3&m|0))var C=A+1|0,R=S+g|0;else var C=A,R=g;var R,C,E=E+S|0,A=C,g=R,y=M}var T=Me[b+8>>2];if(0==(0|T))break;var b=T,k=y,u=g,c=A}var O=Se[vi+432>>2],i=y,v=A,t=o,f=g,_=O-y|0,s=Se[vi+436>>2],n=O-g|0}var n,s,_,f,t,v,i;Se[a]=i,Se[a+1]=v,Se[a+2]=0,Se[a+3]=0,Se[a+4]=_,Se[a+5]=s,Se[a+6]=0,Se[a+7]=n,Se[a+8]=f,Se[a+9]=t}function oa(){0==(0|Se[ti>>2])&&ba();var r=Me[vi+24>>2],a=0==(0|r);r:do if(a)var e=0,i=0,v=0;else for(var t=Se[vi+436>>2],f=Me[vi+432>>2],_=vi+444|0,s=f-40-Se[vi+12>>2]|0;;){var s,_,n=Me[_>>2],o=n+8|0;if(0==(7&o|0))var l=0;else var l=7&-o;for(var l,b=_+4|0,k=n+l|0,u=s;;){var u,k;if(k>>>0<n>>>0)break;if(k>>>0>=(n+Se[b>>2]|0)>>>0|(0|k)==(0|r))break;var c=Se[k+4>>2];if(7==(0|c))break;var h=c&-8,d=1==(3&c|0)?h:0,w=u-d|0,k=k+h|0,u=w}var p=Me[_+8>>2];if(0==(0|p)){var e=t,i=f,v=u;break r}var _=p,s=u}while(0);var v,i,e,E=Se[Se[qe>>2]+12>>2],A=(Qa(E,0|He.__str339,(ne=Oe,Oe+=4,Se[ne>>2]=e,ne)),Se[Se[qe>>2]+12>>2]),g=(Qa(A,0|He.__str1340,(ne=Oe,Oe+=4,Se[ne>>2]=i,ne)),Se[Se[qe>>2]+12>>2]);Qa(g,0|He.__str2341,(ne=Oe,Oe+=4,Se[ne>>2]=v,ne))}function la(r,a){var e,i,v,t=a>>>0>4294967231;r:do{if(!t){var f=r-8|0,_=f,i=(r-4|0)>>2,s=Me[i],n=s&-8,o=n-8|0,l=r+o|0,b=f>>>0<Me[vi+16>>2]>>>0;do if(!b){var k=3&s;if(!(1!=(0|k)&(0|o)>-8))break;var e=(r+(n-4)|0)>>2;if(0==(1&Se[e]|0))break;if(a>>>0<11)var u=16;else var u=a+11&-8;var u,c=0==(0|k);do{if(c){var h=ka(_,u),d=0,w=h;v=17;break}if(n>>>0<u>>>0){if((0|l)!=(0|Se[vi+24>>2])){v=21;break}var p=Se[vi+12>>2]+n|0;if(p>>>0<=u>>>0){v=21;break}var E=p-u|0,A=r+(u-8)|0;Se[i]=u|1&s|2;var g=1|E;Se[r+(u-4)>>2]=g,Se[vi+24>>2]=A,Se[vi+12>>2]=E;var d=0,w=_;v=17;break}var y=n-u|0;if(y>>>0<=15){var d=0,w=_;v=17;break}Se[i]=u|1&s|2,Se[r+(u-4)>>2]=3|y;var m=1|Se[e];Se[e]=m;var d=r+u|0,w=_;v=17;break}while(0);do if(17==v){var w,d;if(0==(0|w))break;0!=(0|d)&&va(d);var S=w+8|0;break r}while(0);var M=Jr(a);if(0==(0|M)){var S=0;break r}var C=0==(3&Se[i]|0)?8:4,R=n-C|0,T=R>>>0<a>>>0?R:a;Pa(M,r,T,1),va(r);var S=M;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var O=Je();Se[O>>2]=12;var S=0}while(0);var S;return S}function ba(){if(0==(0|Se[ti>>2])){var r=qa(8);if(0!=(r-1&r|0))throw Ka(),\\\"Reached an unreachable!\\\";Se[ti+8>>2]=r,Se[ti+4>>2]=r,Se[ti+12>>2]=-1,Se[ti+16>>2]=2097152,Se[ti+20>>2]=0,Se[vi+440>>2]=0;var a=$a(0);Se[ti>>2]=a&-16^1431655768}}function ka(r,a){var e=Se[r+4>>2]&-8,i=a>>>0<256;do if(i)var v=0;else{if(e>>>0>=(a+4|0)>>>0&&(e-a|0)>>>0<=Se[ti+8>>2]<<1>>>0){var v=r;break}var v=0}while(0);var v;return v}function ua(r){for(var a,e=vi+444|0,a=e>>2;;){var e,i=Me[a];if(i>>>0<=r>>>0&&(i+Se[a+1]|0)>>>0>r>>>0){var v=e;break}var t=Me[a+2];if(0==(0|t)){var v=0;break}var e=t,a=e>>2}var v;return v}function ca(r,a){var e=r,i=r+8|0;if(0==(7&i|0))var v=0;else var v=7&-i;var v,t=a-v|0;Se[vi+24>>2]=e+v|0,Se[vi+12>>2]=t,Se[v+(e+4)>>2]=1|t,Se[a+(e+4)>>2]=40;var f=Se[ti+16>>2];Se[vi+28>>2]=f}function ha(){for(var r=0;;){var r,a=r<<1,e=(a<<2)+vi+40|0;Se[vi+(a+3<<2)+40>>2]=e,Se[vi+(a+2<<2)+40>>2]=e;var i=r+1|0;if(32==(0|i))break;var r=i}}function da(r,a,e){var i,v,t,f,_=a>>2,s=r>>2,n=r+8|0;if(0==(7&n|0))var o=0;else var o=7&-n;var o,l=a+8|0;if(0==(7&l|0))var b=0,t=b>>2;else var b=7&-l,t=b>>2;var b,k=a+b|0,u=k,c=o+e|0,v=c>>2,h=r+c|0,d=h,w=k-(r+o)-e|0;Se[(o+4>>2)+s]=3|e;var p=(0|u)==(0|Se[vi+24>>2]);r:do if(p){var E=Se[vi+12>>2]+w|0;Se[vi+12>>2]=E,Se[vi+24>>2]=d;var A=1|E;Se[v+(s+1)]=A}else if((0|u)==(0|Se[vi+20>>2])){var g=Se[vi+8>>2]+w|0;Se[vi+8>>2]=g,Se[vi+20>>2]=d;var y=1|g;Se[v+(s+1)]=y;var m=r+g+c|0;Se[m>>2]=g}else{var S=Me[t+(_+1)];if(1==(3&S|0)){var M=S&-8,C=S>>>3,R=S>>>0<256;a:do if(R){var T=Me[((8|b)>>2)+_],O=Me[t+(_+3)];if((0|T)!=(0|O)){var N=((S>>>2&1073741822)<<2)+vi+40|0,I=(0|T)==(0|N);do{if(!I){if(T>>>0<Me[vi+16>>2]>>>0){f=18;break}f=15;break}f=15}while(0);do if(15==f){if((0|O)!=(0|N)&&O>>>0<Me[vi+16>>2]>>>0)break;Se[T+12>>2]=O,Se[O+8>>2]=T;break a}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var P=Se[vi>>2]&(1<<C^-1);Se[vi>>2]=P}else{var D=k,L=Me[((24|b)>>2)+_],F=Me[t+(_+3)],X=(0|F)==(0|D);do if(X){var j=16|b,U=j+(a+4)|0,x=Se[U>>2];if(0==(0|x)){var z=a+j|0,V=Se[z>>2];if(0==(0|V)){var B=0,i=B>>2;break}var H=z,K=V}else{var H=U,K=x;f=25}for(;;){var K,H,Y=K+20|0,G=Se[Y>>2];if(0==(0|G)){var W=K+16|0,Z=Me[W>>2];if(0==(0|Z))break;var H=W,K=Z}else var H=Y,K=G}if(H>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[H>>2]=0;var B=K,i=B>>2}else{var Q=Me[((8|b)>>2)+_];if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Q+12>>2]=F,Se[F+8>>2]=Q;var B=F,i=B>>2}while(0);var B;if(0==(0|L))break;var q=b+(a+28)|0,$=(Se[q>>2]<<2)+vi+304|0,J=(0|D)==(0|Se[$>>2]);do{if(J){if(Se[$>>2]=B,0!=(0|B))break;var rr=Se[vi+4>>2]&(1<<Se[q>>2]^-1);Se[vi+4>>2]=rr;break a}if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var ar=L+16|0;if((0|Se[ar>>2])==(0|D)?Se[ar>>2]=B:Se[L+20>>2]=B,0==(0|B))break a}while(0);if(B>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+6]=L;var er=16|b,ir=Me[(er>>2)+_];if(0!=(0|ir)){if(ir>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+4]=ir,Se[ir+24>>2]=B}var vr=Me[(er+4>>2)+_];if(0==(0|vr))break;if(vr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+5]=vr,Se[vr+24>>2]=B}while(0);var tr=a+(M|b)|0,fr=M+w|0}else var tr=u,fr=w;var fr,tr,_r=tr+4|0,sr=Se[_r>>2]&-2;if(Se[_r>>2]=sr,Se[v+(s+1)]=1|fr,Se[(fr>>2)+s+v]=fr,fr>>>0<256){var nr=fr>>>2&1073741822,or=(nr<<2)+vi+40|0,lr=Me[vi>>2],br=1<<(fr>>>3),kr=0==(lr&br|0);do{if(!kr){var ur=(nr+2<<2)+vi+40|0,cr=Me[ur>>2];if(cr>>>0>=Me[vi+16>>2]>>>0){var hr=cr,dr=ur;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=lr|br;var hr=or,dr=(nr+2<<2)+vi+40|0}while(0);var dr,hr;Se[dr>>2]=d,Se[hr+12>>2]=d,Se[v+(s+2)]=hr,Se[v+(s+3)]=or}else{var wr=h,pr=fr>>>8,Er=0==(0|pr);do if(Er)var Ar=0;else{if(fr>>>0>16777215){var Ar=31;break}var gr=(pr+1048320|0)>>>16&8,yr=pr<<gr,mr=(yr+520192|0)>>>16&4,Sr=yr<<mr,Mr=(Sr+245760|0)>>>16&2,Cr=14-(mr|gr|Mr)+(Sr<<Mr>>>15)|0,Ar=fr>>>((Cr+7|0)>>>0)&1|Cr<<1}while(0);var Ar,Rr=(Ar<<2)+vi+304|0;Se[v+(s+7)]=Ar;var Tr=c+(r+16)|0;Se[v+(s+5)]=0,Se[Tr>>2]=0;var Or=Se[vi+4>>2],Nr=1<<Ar;if(0==(Or&Nr|0)){var Ir=Or|Nr;Se[vi+4>>2]=Ir,Se[Rr>>2]=wr,Se[v+(s+6)]=Rr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr}else{if(31==(0|Ar))var Pr=0;else var Pr=25-(Ar>>>1)|0;for(var Pr,Dr=fr<<Pr,Lr=Se[Rr>>2];;){var Lr,Dr;if((Se[Lr+4>>2]&-8|0)==(0|fr)){var Fr=Lr+8|0,Xr=Me[Fr>>2],jr=Me[vi+16>>2],Ur=Lr>>>0<jr>>>0;do if(!Ur){if(Xr>>>0<jr>>>0)break;Se[Xr+12>>2]=wr,Se[Fr>>2]=wr,Se[v+(s+2)]=Xr,Se[v+(s+3)]=Lr,Se[v+(s+6)]=0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var xr=(Dr>>>31<<2)+Lr+16|0,zr=Me[xr>>2];if(0==(0|zr)){if(xr>>>0>=Me[vi+16>>2]>>>0){Se[xr>>2]=wr,Se[v+(s+6)]=Lr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr;break r}throw Ka(),\\\"Reached an unreachable!\\\"}var Dr=Dr<<1,Lr=zr}}}}while(0);return r+(8|o)|0}function wa(r){return 0|He.__str3342}function pa(r){return 0|He.__str14343}function Ea(r){Se[r>>2]=si+8|0}function Aa(r){0!=(0|r)&&va(r)}function ga(r){ya(r);var a=r;Aa(a)}function ya(r){var a=0|r;Ye(a)}function ma(r){var a=0|r;Ea(a),Se[r>>2]=ni+8|0}function Sa(r){var a=0|r;ya(a);var e=r;Aa(e)}function Ma(r,a){var e,i,v=Me[vi+24>>2],i=v>>2,t=v,f=ua(t),_=Se[f>>2],s=Se[f+4>>2],n=_+s|0,o=_+(s-39)|0;if(0==(7&o|0))var l=0;else var l=7&-o;var l,b=_+(s-47)+l|0,k=b>>>0<(v+16|0)>>>0?t:b,u=k+8|0,e=u>>2,c=u,h=r,d=a-40|0;ca(h,d);var w=k+4|0;Se[w>>2]=27,Se[e]=Se[vi+444>>2],Se[e+1]=Se[vi+448>>2],Se[e+2]=Se[vi+452>>2],Se[e+3]=Se[vi+456>>2],Se[vi+444>>2]=r,Se[vi+448>>2]=a,Se[vi+456>>2]=0,Se[vi+452>>2]=c;var p=k+28|0;Se[p>>2]=7;var E=(k+32|0)>>>0<n>>>0;r:do if(E)for(var A=p;;){var A,g=A+4|0;if(Se[g>>2]=7,(A+8|0)>>>0>=n>>>0)break r;var A=g}while(0);var y=(0|k)==(0|t);r:do if(!y){var m=k-v|0,S=t+m|0,M=m+(t+4)|0,C=Se[M>>2]&-2;Se[M>>2]=C;var R=1|m;Se[i+1]=R;var T=S;if(Se[T>>2]=m,m>>>0<256){var O=m>>>2&1073741822,N=(O<<2)+vi+40|0,I=Me[vi>>2],P=1<<(m>>>3),D=0==(I&P|0);do{if(!D){var L=(O+2<<2)+vi+40|0,F=Me[L>>2];if(F>>>0>=Me[vi+16>>2]>>>0){var X=F,j=L;break}throw Ka(),\\\"Reached an unreachable!\\\"}var U=I|P;Se[vi>>2]=U;var X=N,j=(O+2<<2)+vi+40|0}while(0);var j,X;Se[j>>2]=v,Se[X+12>>2]=v,Se[i+2]=X,Se[i+3]=N}else{var x=v,z=m>>>8,V=0==(0|z);do if(V)var B=0;else{if(m>>>0>16777215){var B=31;break}var H=(z+1048320|0)>>>16&8,K=z<<H,Y=(K+520192|0)>>>16&4,G=K<<Y,W=(G+245760|0)>>>16&2,Z=14-(Y|H|W)+(G<<W>>>15)|0,B=m>>>((Z+7|0)>>>0)&1|Z<<1}while(0);var B,Q=(B<<2)+vi+304|0;Se[i+7]=B,Se[i+5]=0,Se[i+4]=0;var q=Se[vi+4>>2],$=1<<B;if(0==(q&$|0)){var J=q|$;Se[vi+4>>2]=J,Se[Q>>2]=x,Se[i+6]=Q,Se[i+3]=v,Se[i+2]=v}else{if(31==(0|B))var rr=0;else var rr=25-(B>>>1)|0;for(var rr,ar=m<<rr,er=Se[Q>>2];;){var er,ar;if((Se[er+4>>2]&-8|0)==(0|m)){var ir=er+8|0,vr=Me[ir>>2],tr=Me[vi+16>>2],fr=er>>>0<tr>>>0;do if(!fr){if(vr>>>0<tr>>>0)break;Se[vr+12>>2]=x,Se[ir>>2]=x,Se[i+2]=vr,Se[i+3]=er,Se[i+6]=0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var _r=(ar>>>31<<2)+er+16|0,sr=Me[_r>>2];if(0==(0|sr)){if(_r>>>0>=Me[vi+16>>2]>>>0){Se[_r>>2]=x,Se[i+6]=er,Se[i+3]=v,Se[i+2]=v;break r}throw Ka(),\\\"Reached an unreachable!\\\"}var ar=ar<<1,er=sr}}}}while(0)}function Ca(r){return d(r)}function Ra(r,a){var e=0;do Ae[r+e]=Ae[a+e],e++;while(0!=Ae[a+e-1]);return r}function Ta(){var r=Ta;return r.LLVM_SAVEDSTACKS||(r.LLVM_SAVEDSTACKS=[]),r.LLVM_SAVEDSTACKS.push(le.stackSave()),r.LLVM_SAVEDSTACKS.length-1}function Oa(r){var a=Ta,e=a.LLVM_SAVEDSTACKS[r];a.LLVM_SAVEDSTACKS.splice(r,1),le.stackRestore(e)}function Na(r,a,e){for(var i=0;i<e;){var v=Ae[r+i],t=Ae[a+i];if(v==t&&0==v)return 0;if(0==v)return-1;if(0==t)return 1;if(v!=t)return v>t?1:-1;i++}return 0}function Ia(r,a){var e=Ca(r),i=0;do Ae[r+e+i]=Ae[a+i],i++;while(0!=Ae[a+i-1]);return r}function Pa(r,a,e,i){if(e>=20&&a%2==r%2)if(a%4==r%4){for(var v=a+e;a%4;)Ae[r++]=Ae[a++];for(var t=a>>2,f=r>>2,_=v>>2;t<_;)Se[f++]=Se[t++];for(a=t<<2,r=f<<2;a<v;)Ae[r++]=Ae[a++]}else{var v=a+e;a%2&&(Ae[r++]=Ae[a++]);for(var s=a>>1,n=r>>1,o=v>>1;s<o;)ye[n++]=ye[s++];a=s<<1,r=n<<1,a<v&&(Ae[r++]=Ae[a++])}else for(;e--;)Ae[r++]=Ae[a++]}function Da(r,a){return Na(r,a,Le)}function La(r,a,e){for(var i=0;i<e;i++){var v=Ae[r+i],t=Ae[a+i];if(v!=t)return v>t?1:-1}return 0}function Fa(r,a,e,i){if(e>=20){for(var v=r+e;r%4;)Ae[r++]=a;a<0&&(a+=256);for(var t=r>>2,f=v>>2,_=a|a<<8|a<<16|a<<24;t<f;)Se[t++]=_;for(r=t<<2;r<v;)Ae[r++]=a}else for(;e--;)Ae[r++]=a}function Xa(r,a,e,i){throw\\\"Assertion failed: \\\"+s(i)+\\\", at: \\\"+[s(r),a,s(e)]}function ja(r){var a=d(r),e=Jr(a+1);return Pa(e,r,a,1),Ae[e+a]=0,e}function Ua(r,a){function e(r){var e;return\\\"double\\\"===r?(xe[0]=Se[a+_>>2],xe[1]=Se[a+_+4>>2],e=ze[0]):\\\"i64\\\"==r?e=[Se[a+_>>2],Se[a+_+4>>2]]:(r=\\\"i32\\\",e=Se[a+_>>2]),_+=le.getNativeFieldSize(r),e}for(var i,v,t,f=r,_=0,s=[];;){var n=f;if(i=Ae[f],0===i)break;if(v=Ae[f+1],i==\\\"%\\\".charCodeAt(0)){var o=!1,l=!1,b=!1,k=!1;r:for(;;){switch(v){case\\\"+\\\".charCodeAt(0):o=!0;break;case\\\"-\\\".charCodeAt(0):l=!0;break;case\\\"#\\\".charCodeAt(0):b=!0;break;case\\\"0\\\".charCodeAt(0):if(k)break r;k=!0;break;default:break r}f++,v=Ae[f+1]}var u=0;if(v==\\\"*\\\".charCodeAt(0))u=e(\\\"i32\\\"),f++,v=Ae[f+1];else for(;v>=\\\"0\\\".charCodeAt(0)&&v<=\\\"9\\\".charCodeAt(0);)u=10*u+(v-\\\"0\\\".charCodeAt(0)),f++,v=Ae[f+1];var c=!1;if(v==\\\".\\\".charCodeAt(0)){var h=0;if(c=!0,f++,v=Ae[f+1],v==\\\"*\\\".charCodeAt(0))h=e(\\\"i32\\\"),f++;else for(;;){var d=Ae[f+1];if(d<\\\"0\\\".charCodeAt(0)||d>\\\"9\\\".charCodeAt(0))break;h=10*h+(d-\\\"0\\\".charCodeAt(0)),f++}v=Ae[f+1]}else var h=6;var E;switch(String.fromCharCode(v)){case\\\"h\\\":var A=Ae[f+2];A==\\\"h\\\".charCodeAt(0)?(f++,E=1):E=2;break;case\\\"l\\\":var A=Ae[f+2];A==\\\"l\\\".charCodeAt(0)?(f++,E=8):E=4;break;case\\\"L\\\":case\\\"q\\\":case\\\"j\\\":E=8;break;case\\\"z\\\":case\\\"t\\\":case\\\"I\\\":E=4;break;default:E=null}if(E&&f++,v=Ae[f+1],[\\\"d\\\",\\\"i\\\",\\\"u\\\",\\\"o\\\",\\\"x\\\",\\\"X\\\",\\\"p\\\"].indexOf(String.fromCharCode(v))!=-1){var m=v==\\\"d\\\".charCodeAt(0)||v==\\\"i\\\".charCodeAt(0);E=E||4;var t=e(\\\"i\\\"+8*E);if(8==E&&(t=le.makeBigInt(t[0],t[1],v==\\\"u\\\".charCodeAt(0))),E<=4){var S=Math.pow(256,E)-1;t=(m?y:g)(t&S,8*E)}var M,C=Math.abs(t),R=\\\"\\\";if(v==\\\"d\\\".charCodeAt(0)||v==\\\"i\\\".charCodeAt(0))M=y(t,8*E,1).toString(10);else if(v==\\\"u\\\".charCodeAt(0))M=g(t,8*E,1).toString(10),t=Math.abs(t);else if(v==\\\"o\\\".charCodeAt(0))M=(b?\\\"0\\\":\\\"\\\")+C.toString(8);else if(v==\\\"x\\\".charCodeAt(0)||v==\\\"X\\\".charCodeAt(0)){if(R=b?\\\"0x\\\":\\\"\\\",t<0){t=-t,M=(C-1).toString(16);for(var T=[],O=0;O<M.length;O++)T.push((15-parseInt(M[O],16)).toString(16));for(M=T.join(\\\"\\\");M.length<2*E;)M=\\\"f\\\"+M}else M=C.toString(16);v==\\\"X\\\".charCodeAt(0)&&(R=R.toUpperCase(),M=M.toUpperCase())}else v==\\\"p\\\".charCodeAt(0)&&(0===C?M=\\\"(nil)\\\":(R=\\\"0x\\\",M=C.toString(16)));if(c)for(;M.length<h;)M=\\\"0\\\"+M;for(o&&(R=t<0?\\\"-\\\"+R:\\\"+\\\"+R);R.length+M.length<u;)l?M+=\\\" \\\":k?M=\\\"0\\\"+M:R=\\\" \\\"+R;M=R+M,M.split(\\\"\\\").forEach(function(r){s.push(r.charCodeAt(0))})}else if([\\\"f\\\",\\\"F\\\",\\\"e\\\",\\\"E\\\",\\\"g\\\",\\\"G\\\"].indexOf(String.fromCharCode(v))!=-1){var M,t=e(\\\"double\\\");if(isNaN(t))M=\\\"nan\\\",k=!1;else if(isFinite(t)){var N=!1,I=Math.min(h,20);if(v==\\\"g\\\".charCodeAt(0)||v==\\\"G\\\".charCodeAt(0)){N=!0,h=h||1;var P=parseInt(t.toExponential(I).split(\\\"e\\\")[1],10);h>P&&P>=-4?(v=(v==\\\"g\\\".charCodeAt(0)?\\\"f\\\":\\\"F\\\").charCodeAt(0),h-=P+1):(v=(v==\\\"g\\\".charCodeAt(0)?\\\"e\\\":\\\"E\\\").charCodeAt(0),h--),I=Math.min(h,20)}v==\\\"e\\\".charCodeAt(0)||v==\\\"E\\\".charCodeAt(0)?(M=t.toExponential(I),/[eE][-+]\\\\\\\\d$/.test(M)&&(M=M.slice(0,-1)+\\\"0\\\"+M.slice(-1))):v!=\\\"f\\\".charCodeAt(0)&&v!=\\\"F\\\".charCodeAt(0)||(M=t.toFixed(I));var D=M.split(\\\"e\\\");if(N&&!b)for(;D[0].length>1&&D[0].indexOf(\\\".\\\")!=-1&&(\\\"0\\\"==D[0].slice(-1)||\\\".\\\"==D[0].slice(-1));)D[0]=D[0].slice(0,-1);else for(b&&M.indexOf(\\\".\\\")==-1&&(D[0]+=\\\".\\\");h>I++;)D[0]+=\\\"0\\\";M=D[0]+(D.length>1?\\\"e\\\"+D[1]:\\\"\\\"),v==\\\"E\\\".charCodeAt(0)&&(M=M.toUpperCase()),o&&t>=0&&(M=\\\"+\\\"+M)}else M=(t<0?\\\"-\\\":\\\"\\\")+\\\"inf\\\",k=!1;for(;M.length<u;)l?M+=\\\" \\\":M=!k||\\\"-\\\"!=M[0]&&\\\"+\\\"!=M[0]?(k?\\\"0\\\":\\\" \\\")+M:M[0]+\\\"0\\\"+M.slice(1);v<\\\"a\\\".charCodeAt(0)&&(M=M.toUpperCase()),M.split(\\\"\\\").forEach(function(r){s.push(r.charCodeAt(0))})}else if(v==\\\"s\\\".charCodeAt(0)){var L,F=e(\\\"i8*\\\");if(F?(L=w(F),c&&L.length>h&&(L=L.slice(0,h))):L=p(\\\"(null)\\\",!0),!l)for(;L.length<u--;)s.push(\\\" \\\".charCodeAt(0));if(s=s.concat(L),l)for(;L.length<u--;)s.push(\\\" \\\".charCodeAt(0))}else if(v==\\\"c\\\".charCodeAt(0)){for(l&&s.push(e(\\\"i8\\\"));--u>0;)s.push(\\\" \\\".charCodeAt(0));l||s.push(e(\\\"i8\\\"))}else if(v==\\\"n\\\".charCodeAt(0)){var X=e(\\\"i32*\\\");Se[X>>2]=s.length}else if(v==\\\"%\\\".charCodeAt(0))s.push(i);else for(var O=n;O<f+2;O++)s.push(Ae[O]);f+=2}else s.push(i),f+=1}return s}function xa(r,a,e,i){for(var v=Ua(e,i),t=void 0===a?v.length:Math.min(v.length,a-1),f=0;f<t;f++)Ae[r+f]=v[f];return Ae[r+f]=0,v.length}function za(r,a,e){return xa(r,void 0,a,e)}function Va(r){return r in{32:0,9:0,10:0,11:0,12:0,13:0}}function Ba(r){return r>=\\\"0\\\".charCodeAt(0)&&r<=\\\"9\\\".charCodeAt(0)}function Ha(r){for(var a;(a=Ae[r])&&Va(a);)r++;if(!a||!Ba(a))return 0;for(var e=r;(a=Ae[e])&&Ba(a);)e++;return Math.floor(Number(s(r).substr(0,e-r)))}function Ka(r){throw ke=!0,\\\"ABORT: \\\"+r+\\\", at \\\"+(new Error).stack}function Ya(r){return Ya.ret||(Ya.ret=_([0],\\\"i32\\\",we)),Se[Ya.ret>>2]=r,r}function Ga(r,a,e,i){var v=$e.streams[r];if(!v||v.object.isDevice)return Ya(Ge.EBADF),-1;if(v.isWrite){if(v.object.isFolder)return Ya(Ge.EISDIR),-1;if(e<0||i<0)return Ya(Ge.EINVAL),-1;for(var t=v.object.contents;t.length<i;)t.push(0);for(var f=0;f<e;f++)t[i+f]=ge[a+f];return v.object.timestamp=Date.now(),f}return Ya(Ge.EACCES),-1}function Wa(r,a,e){var i=$e.streams[r];if(i){if(i.isWrite){if(e<0)return Ya(Ge.EINVAL),-1;if(i.object.isDevice){if(i.object.output){for(var v=0;v<e;v++)try{i.object.output(Ae[a+v])}catch(r){return Ya(Ge.EIO),-1}return i.object.timestamp=Date.now(),v}return Ya(Ge.ENXIO),-1}var t=Ga(r,a,e,i.position);return t!=-1&&(i.position+=t),t}return Ya(Ge.EACCES),-1}return Ya(Ge.EBADF),-1}function Za(r,a,e,i){var v=e*a;if(0==v)return 0;var t=Wa(i,r,v);return t==-1?($e.streams[i]&&($e.streams[i].error=!0),-1):Math.floor(t/a)}function Qa(r,a,e){var i=Ua(a,e),v=le.stackSave(),t=Za(_(i,\\\"i8\\\",de),1,i.length,r);return le.stackRestore(v),t}function qa(r){switch(r){case 8:return Pe;case 54:case 56:case 21:case 61:case 63:case 22:case 67:case 23:case 24:case 25:case 26:case 27:case 69:case 28:case 101:case 70:case 71:case 29:case 30:case 199:case 75:case 76:case 32:case 43:case 44:case 80:case 46:case 47:case 45:case 48:case 49:case 42:case 82:case 33:case 7:case 108:case 109:case 107:case 112:case 119:case 121:return 200809;case 13:case 104:case 94:case 95:case 34:case 35:case 77:case 81:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 94:case 95:case 110:case 111:case 113:case 114:case 115:case 116:case 117:case 118:case 120:case 40:case 16:case 79:case 19:return-1;case 92:case 93:case 5:case 72:case 6:case 74:case 92:case 93:case 96:case 97:case 98:case 99:case 102:case 103:case 105:return 1;case 38:case 66:case 50:case 51:case 4:return 1024;case 15:case 64:case 41:return 32;case 55:case 37:case 17:return 2147483647;case 18:case 1:return 47839;case 59:case 57:return 99;case 68:case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1e3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4}return Ya(Ge.EINVAL),-1}function $a(r){var a=Math.floor(Date.now()/1e3);return r&&(Se[r>>2]=a),a}function Ja(){return Ya.ret}function re(r){var a=re;a.called||(Ie=o(Ie),a.called=!0);var e=Ie;return 0!=r&&le.staticAlloc(r),e}function ae(){return Se[ae.buf>>2]}function ee(r){r=r||Module.arguments,k();var a=null;return Module._main&&(a=Module.callMain(r),Module.noExitRuntime||u()),a}var ie=[],ve=false,te=\\\"object\\\"==typeof window,fe=\\\"function\\\"==typeof importScripts,_e=!te&&!ve&&!fe;if(ve){print=function(r){process.stdout.write(r+\\\"\\\\\\\\n\\\")},printErr=function(r){process.stderr.write(r+\\\"\\\\\\\\n\\\")};var se=require(\\\"fs\\\");read=function(r){var a=se.readFileSync(r).toString();return a||\\\"/\\\"==r[0]||(r=__dirname.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\")+\\\"/src/\\\"+r,a=se.readFileSync(r).toString()),a},load=function(a){r(read(a))},ie=process.argv.slice(2)}else if(_e)this.read||(this.read=function(r){snarf(r)}),\\\"undefined\\\"!=typeof scriptArgs?ie=scriptArgs:\\\"undefined\\\"!=typeof arguments&&(ie=arguments);else if(te)this.print=printErr=function(r){console.log(r)},this.read=function(r){var a=new XMLHttpRequest;return a.open(\\\"GET\\\",r,!1),a.send(null),a.responseText},this.arguments&&(ie=arguments);else{if(!fe)throw\\\"Unknown runtime environment. Where are we?\\\";this.load=importScripts}\\\"undefined\\\"==typeof load&&\\\"undefined\\\"!=typeof read&&(this.load=function(a){r(read(a))}),\\\"undefined\\\"==typeof printErr&&(this.printErr=function(){}),\\\"undefined\\\"==typeof print&&(this.print=printErr);try{this.Module=Module}catch(r){this.Module=Module={}}Module.arguments||(Module.arguments=ie),Module.print&&(print=Module.print);var ne,oe,le={stackSave:function(){return Oe},stackRestore:function(r){Oe=r},forceAlign:function(r,a){if(a=a||4,1==a)return r;if(isNumber(r)&&isNumber(a))return Math.ceil(r/a)*a;if(isNumber(a)&&isPowerOfTwo(a)){var e=log2(a);return\\\"((((\\\"+r+\\\")+\\\"+(a-1)+\\\")>>\\\"+e+\\\")<<\\\"+e+\\\")\\\"}return\\\"Math.ceil((\\\"+r+\\\")/\\\"+a+\\\")*\\\"+a},isNumberType:function(r){return r in le.INT_TYPES||r in le.FLOAT_TYPES},isPointerType:function(r){return\\\"*\\\"==r[r.length-1]},isStructType:function(r){return!isPointerType(r)&&(!!/^\\\\\\\\[\\\\\\\\d+\\\\\\\\ x\\\\\\\\ (.*)\\\\\\\\]/.test(r)||(!!/<?{ [^}]* }>?/.test(r)||\\\"%\\\"==r[0]))},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{float:0,double:0},bitshift64:function(r,e,i,v){var t=Math.pow(2,v)-1;if(v<32)switch(i){case\\\"shl\\\":return[r<<v,e<<v|(r&t<<32-v)>>>32-v];case\\\"ashr\\\":return[(r>>>v|(e&t)<<32-v)>>0>>>0,e>>v>>>0];case\\\"lshr\\\":return[(r>>>v|(e&t)<<32-v)>>>0,e>>>v]}else if(32==v)switch(i){case\\\"shl\\\":return[0,r];case\\\"ashr\\\":return[e,(0|e)<0?t:0];case\\\"lshr\\\":return[e,0]}else switch(i){case\\\"shl\\\":return[0,r<<v-32];case\\\"ashr\\\":return[e>>v-32>>>0,(0|e)<0?t:0];case\\\"lshr\\\":return[e>>>v-32,0]}a(\\\"unknown bitshift64 op: \\\"+[value,i,v])},or64:function(r,a){var e=0|r|(0|a),i=4294967296*(Math.round(r/4294967296)|Math.round(a/4294967296));return e+i},and64:function(r,a){var e=(0|r)&(0|a),i=4294967296*(Math.round(r/4294967296)&Math.round(a/4294967296));return e+i},xor64:function(r,a){var e=(0|r)^(0|a),i=4294967296*(Math.round(r/4294967296)^Math.round(a/4294967296));return e+i},getNativeTypeSize:function(r,a){if(1==le.QUANTUM_SIZE)return 1;var i={\\\"%i1\\\":1,\\\"%i8\\\":1,\\\"%i16\\\":2,\\\"%i32\\\":4,\\\"%i64\\\":8,\\\"%float\\\":4,\\\"%double\\\":8}[\\\"%\\\"+r];if(!i)if(\\\"*\\\"==r[r.length-1])i=le.QUANTUM_SIZE;else if(\\\"i\\\"==r[0]){var v=parseInt(r.substr(1));e(v%8==0),i=v/8}return i},getNativeFieldSize:function(r){return Math.max(le.getNativeTypeSize(r),le.QUANTUM_SIZE)},dedup:function(r,a){var e={};return a?r.filter(function(r){return!e[r[a]]&&(e[r[a]]=!0,!0)}):r.filter(function(r){return!e[r]&&(e[r]=!0,!0)})},set:function(){for(var r=\\\"object\\\"==typeof arguments[0]?arguments[0]:arguments,a={},e=0;e<r.length;e++)a[r[e]]=0;return a},calculateStructAlignment:function(r){r.flatSize=0,r.alignSize=0;var a=[],e=-1;return r.flatIndexes=r.fields.map(function(i){var v,t;if(le.isNumberType(i)||le.isPointerType(i))v=le.getNativeTypeSize(i),t=v;else{if(!le.isStructType(i))throw\\\"Unclear type in struct: \\\"+i+\\\", in \\\"+r.name_+\\\" :: \\\"+dump(Types.types[r.name_]);v=Types.types[i].flatSize,t=Types.types[i].alignSize}t=r.packed?1:Math.min(t,le.QUANTUM_SIZE),r.alignSize=Math.max(r.alignSize,t);var f=le.alignMemory(r.flatSize,t);return r.flatSize=f+v,e>=0&&a.push(f-e),e=f,f}),r.flatSize=le.alignMemory(r.flatSize,r.alignSize),0==a.length?r.flatFactor=r.flatSize:1==le.dedup(a).length&&(r.flatFactor=a[0]),r.needsFlattening=1!=r.flatFactor,r.flatIndexes},generateStructInfo:function(r,a,i){var v,t;if(a){if(i=i||0,v=(\\\"undefined\\\"==typeof Types?le.typeInfo:Types.types)[a],!v)return null;e(v.fields.length===r.length,\\\"Number of named fields must match the type for \\\"+a),t=v.flatIndexes}else{var v={fields:r.map(function(r){return r[0]})};t=le.calculateStructAlignment(v)}var f={__size__:v.flatSize};return a?r.forEach(function(r,a){if(\\\"string\\\"==typeof r)f[r]=t[a]+i;else{var e;for(var _ in r)e=_;f[e]=le.generateStructInfo(r[e],v.fields[a],t[a])}}):r.forEach(function(r,a){f[r[1]]=t[a]}),f},stackAlloc:function(r){var a=Oe;return Oe+=r,Oe=Oe+3>>2<<2,a},staticAlloc:function(r){var a=Ie;return Ie+=r,Ie=Ie+3>>2<<2,Ie>=Le&&l(),a},alignMemory:function(r,a){var e=r=Math.ceil(r/(a?a:4))*(a?a:4);return e},makeBigInt:function(r,a,e){var i=e?(r>>>0)+4294967296*(a>>>0):(r>>>0)+4294967296*(0|a);return i},QUANTUM_SIZE:4,__dummy__:0},be={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(r,e,i){e||(this.corrections++,this.corrections>=this.MAX_ALLOWED&&a(\\\"\\\\\\\\n\\\\\\\\nToo many corrections!\\\"))},print:function(){}},ke=!1,ue=0,ce=this;Module.ccall=i,Module.setValue=t,Module.getValue=f;var he=0,de=1,we=2;Module.ALLOC_NORMAL=he,Module.ALLOC_STACK=de,Module.ALLOC_STATIC=we,Module.allocate=_,Module.Pointer_stringify=s,Module.Array_stringify=n;var pe,Ee,Ae,ge,ye,me,Se,Me,Ce,Re,Te,Oe,Ne,Ie,Pe=4096,De=Module.TOTAL_STACK||5242880,Le=Module.TOTAL_MEMORY||10485760;Module.FAST_MEMORY||2097152;e(!!(Int32Array&&Float64Array&&new Int32Array(1).subarray&&new Int32Array(1).set),\\\"Cannot fallback to non-typed array case: Code is too specialized\\\");var Fe=new ArrayBuffer(Le);Ae=new Int8Array(Fe),ye=new Int16Array(Fe),Se=new Int32Array(Fe),ge=new Uint8Array(Fe),me=new Uint16Array(Fe),Me=new Uint32Array(Fe),Ce=new Float32Array(Fe),Re=new Float64Array(Fe),Se[0]=255,e(255===ge[0]&&0===ge[3],\\\"Typed arrays 2 must be run on a little-endian system\\\");var Xe=p(\\\"(null)\\\");Ie=Xe.length;for(var je=0;je<Xe.length;je++)Ae[je]=Xe[je];Module.HEAP=Ee,Module.HEAP8=Ae,Module.HEAP16=ye,Module.HEAP32=Se,Module.HEAPU8=ge,Module.HEAPU16=me,Module.HEAPU32=Me,Module.HEAPF32=Ce,Module.HEAPF64=Re,Te=Oe=le.alignMemory(Ie),Ne=Te+De;var Ue=le.alignMemory(Ne,8),xe=(Ae.subarray(Ue),Se.subarray(Ue>>2)),ze=(Ce.subarray(Ue>>2),Re.subarray(Ue>>3));Ne=Ue+8,Ie=o(Ne);var Ve=[],Be=[];Module.Array_copy=c,Module.TypedArray_copy=h,Module.String_len=d,Module.String_copy=w,Module.intArrayFromString=p,Module.intArrayToString=E,Module.writeStringToMemory=A;var He=[],Ke=0;O.X=1,N.X=1,V.X=1,H.X=1,G.X=1,W.X=1,q.X=1,$.X=1,rr.X=1,ar.X=1,er.X=1,vr.X=1,nr.X=1,or.X=1,kr.X=1,hr.X=1,Ar.X=1,Sr.X=1,Tr.X=1,Ir.X=1,Pr.X=1,Dr.X=1,Lr.X=1,Fr.X=1,Xr.X=1,zr.X=1,Vr.X=1,Br.X=1,Gr.X=1,$r.X=1,Module._malloc=Jr,Jr.X=1,ra.X=1,aa.X=1,ea.X=1,ia.X=1,Module._free=va,va.X=1,_a.X=1,sa.X=1,na.X=1,oa.X=1,la.X=1,da.X=1,Ma.X=1;var Ye,Ge={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18},We=0,Ze=0,Qe=0,qe=0,$e={currentPath:\\\"/\\\",nextInode:2,streams:[null],ignorePermissions:!0,absolutePath:function(r,a){if(\\\"string\\\"!=typeof r)return null;void 0===a&&(a=$e.currentPath),r&&\\\"/\\\"==r[0]&&(a=\\\"\\\");for(var e=a+\\\"/\\\"+r,i=e.split(\\\"/\\\").reverse(),v=[\\\"\\\"];i.length;){var t=i.pop();\\\"\\\"==t||\\\".\\\"==t||(\\\"..\\\"==t?v.length>1&&v.pop():v.push(t))}return 1==v.length?\\\"/\\\":v.join(\\\"/\\\")},analyzePath:function(r,a,e){var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};if(r=$e.absolutePath(r),\\\"/\\\"==r)i.isRoot=!0,i.exists=i.parentExists=!0,i.name=\\\"/\\\",i.path=i.parentPath=\\\"/\\\",i.object=i.parentObject=$e.root;else if(null!==r){e=e||0,r=r.slice(1).split(\\\"/\\\");for(var v=$e.root,t=[\\\"\\\"];r.length;){1==r.length&&v.isFolder&&(i.parentExists=!0,i.parentPath=1==t.length?\\\"/\\\":t.join(\\\"/\\\"),i.parentObject=v,i.name=r[0]);var f=r.shift();if(!v.isFolder){i.error=Ge.ENOTDIR;break}if(!v.read){i.error=Ge.EACCES;break}if(!v.contents.hasOwnProperty(f)){i.error=Ge.ENOENT;break}if(v=v.contents[f],v.link&&(!a||0!=r.length)){if(e>40){i.error=Ge.ELOOP;break}var _=$e.absolutePath(v.link,t.join(\\\"/\\\"));return $e.analyzePath([_].concat(r).join(\\\"/\\\"),a,e+1)}t.push(f),0==r.length&&(i.exists=!0,i.path=t.join(\\\"/\\\"),i.object=v)}return i}return i},findObject:function(r,a){$e.ensureRoot();var e=$e.analyzePath(r,a);return e.exists?e.object:(Ya(e.error),null)},createObject:function(r,a,e,i,v){if(r||(r=\\\"/\\\"),\\\"string\\\"==typeof r&&(r=$e.findObject(r)),!r)throw Ya(Ge.EACCES),new Error(\\\"Parent path must exist.\\\");if(!r.isFolder)throw Ya(Ge.ENOTDIR),\\\\nnew Error(\\\"Parent must be a folder.\\\");if(!r.write&&!$e.ignorePermissions)throw Ya(Ge.EACCES),new Error(\\\"Parent folder must be writeable.\\\");if(!a||\\\".\\\"==a||\\\"..\\\"==a)throw Ya(Ge.ENOENT),new Error(\\\"Name must not be empty.\\\");if(r.contents.hasOwnProperty(a))throw Ya(Ge.EEXIST),new Error(\\\"Can\\\\'t overwrite object.\\\");r.contents[a]={read:void 0===i||i,write:void 0!==v&&v,timestamp:Date.now(),inodeNumber:$e.nextInode++};for(var t in e)e.hasOwnProperty(t)&&(r.contents[a][t]=e[t]);return r.contents[a]},createFolder:function(r,a,e,i){var v={isFolder:!0,isDevice:!1,contents:{}};return $e.createObject(r,a,v,e,i)},createPath:function(r,a,e,i){var v=$e.findObject(r);if(null===v)throw new Error(\\\"Invalid parent.\\\");for(a=a.split(\\\"/\\\").reverse();a.length;){var t=a.pop();t&&(v.contents.hasOwnProperty(t)||$e.createFolder(v,t,e,i),v=v.contents[t])}return v},createFile:function(r,a,e,i,v){return e.isFolder=!1,$e.createObject(r,a,e,i,v)},createDataFile:function(r,a,e,i,v){if(\\\"string\\\"==typeof e){for(var t=new Array(e.length),f=0,_=e.length;f<_;++f)t[f]=e.charCodeAt(f);e=t}var s={isDevice:!1,contents:e};return $e.createFile(r,a,s,i,v)},createLazyFile:function(r,a,e,i,v){var t={isDevice:!1,url:e};return $e.createFile(r,a,t,i,v)},createLink:function(r,a,e,i,v){var t={isDevice:!1,link:e};return $e.createFile(r,a,t,i,v)},createDevice:function(r,a,e,i){if(!e&&!i)throw new Error(\\\"A device must have at least one callback defined.\\\");var v={isDevice:!0,input:e,output:i};return $e.createFile(r,a,v,Boolean(e),Boolean(i))},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;var a=!0;if(\\\"undefined\\\"!=typeof XMLHttpRequest)e(\\\"Cannot do synchronous binary XHRs in modern browsers. Use --embed-file or --preload-file in emcc\\\");else{if(\\\"undefined\\\"==typeof read)throw new Error(\\\"Cannot load without read() or XMLHttpRequest.\\\");try{r.contents=p(read(r.url),!0)}catch(r){a=!1}}return a||Ya(Ge.EIO),a},ensureRoot:function(){$e.root||($e.root={read:!0,write:!0,isFolder:!0,isDevice:!1,timestamp:Date.now(),inodeNumber:1,contents:{}})},init:function(r,a,i){function v(r){null===r||r===\\\"\\\\\\\\n\\\".charCodeAt(0)?(a.printer(a.buffer.join(\\\"\\\")),a.buffer=[]):a.buffer.push(String.fromCharCode(r))}e(!$e.init.initialized,\\\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\\\"),$e.init.initialized=!0,$e.ensureRoot(),r=r||Module.stdin,a=a||Module.stdout,i=i||Module.stderr;var t=!0,f=!0,s=!0;r||(t=!1,r=function(){if(!r.cache||!r.cache.length){var a;\\\"undefined\\\"!=typeof window&&\\\"function\\\"==typeof window.prompt?a=window.prompt(\\\"Input: \\\"):\\\"function\\\"==typeof readline&&(a=readline()),a||(a=\\\"\\\"),r.cache=p(a+\\\"\\\\\\\\n\\\",!0)}return r.cache.shift()}),a||(f=!1,a=v),a.printer||(a.printer=print),a.buffer||(a.buffer=[]),i||(s=!1,i=v),i.printer||(i.printer=print),i.buffer||(i.buffer=[]),$e.createFolder(\\\"/\\\",\\\"tmp\\\",!0,!0);var n=$e.createFolder(\\\"/\\\",\\\"dev\\\",!0,!0),o=$e.createDevice(n,\\\"stdin\\\",r),l=$e.createDevice(n,\\\"stdout\\\",null,a),b=$e.createDevice(n,\\\"stderr\\\",null,i);$e.createDevice(n,\\\"tty\\\",r,a),$e.streams[1]={path:\\\"/dev/stdin\\\",object:o,position:0,isRead:!0,isWrite:!1,isAppend:!1,isTerminal:!t,error:!1,eof:!1,ungotten:[]},$e.streams[2]={path:\\\"/dev/stdout\\\",object:l,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!f,error:!1,eof:!1,ungotten:[]},$e.streams[3]={path:\\\"/dev/stderr\\\",object:b,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!s,error:!1,eof:!1,ungotten:[]},We=_([1],\\\"void*\\\",we),Ze=_([2],\\\"void*\\\",we),Qe=_([3],\\\"void*\\\",we),$e.createPath(\\\"/\\\",\\\"dev/shm/tmp\\\",!0,!0),$e.streams[We]=$e.streams[1],$e.streams[Ze]=$e.streams[2],$e.streams[Qe]=$e.streams[3],qe=_([_([0,0,0,0,We,0,0,0,Ze,0,0,0,Qe,0,0,0],\\\"void*\\\",we)],\\\"void*\\\",we)},quit:function(){$e.init.initialized&&($e.streams[2]&&$e.streams[2].object.output.buffer.length>0&&$e.streams[2].object.output(\\\"\\\\\\\\n\\\".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output(\\\"\\\\\\\\n\\\".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,\\\"void*\\\",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p(\\\"/bin/this.program\\\"),\\\"i8\\\",we)];a();for(var v=0;v<e-1;v+=1)i.push(_(p(r[v]),\\\"i8\\\",we)),a();return i.push(0),i=_(i,\\\"i32\\\",we),_main(e,i,0)};var ri,ai,ei,ii,vi,ti,qe,fi,_i,si,ni,oi,li,bi,ki,ui,ci,hi,di,wi;if(He.__str=_([97,78,0],\\\"i8\\\",we),He.__str1=_([38,61,0],\\\"i8\\\",we),He.__str2=_([97,83,0],\\\"i8\\\",we),He.__str3=_([61,0],\\\"i8\\\",we),He.__str4=_([97,97,0],\\\"i8\\\",we),He.__str5=_([38,38,0],\\\"i8\\\",we),He.__str6=_([97,100,0],\\\"i8\\\",we),He.__str7=_([38,0],\\\"i8\\\",we),He.__str8=_([97,110,0],\\\"i8\\\",we),He.__str9=_([99,108,0],\\\"i8\\\",we),He.__str10=_([40,41,0],\\\"i8\\\",we),He.__str11=_([99,109,0],\\\"i8\\\",we),He.__str12=_([44,0],\\\"i8\\\",we),He.__str13=_([99,111,0],\\\"i8\\\",we),He.__str14=_([126,0],\\\"i8\\\",we),He.__str15=_([100,86,0],\\\"i8\\\",we),He.__str16=_([47,61,0],\\\"i8\\\",we),He.__str17=_([100,97,0],\\\"i8\\\",we),He.__str18=_([100,101,108,101,116,101,91,93,0],\\\"i8\\\",we),He.__str19=_([100,101,0],\\\"i8\\\",we),He.__str20=_([42,0],\\\"i8\\\",we),He.__str21=_([100,108,0],\\\"i8\\\",we),He.__str22=_([100,101,108,101,116,101,0],\\\"i8\\\",we),He.__str23=_([100,118,0],\\\"i8\\\",we),He.__str24=_([47,0],\\\"i8\\\",we),He.__str25=_([101,79,0],\\\"i8\\\",we),He.__str26=_([94,61,0],\\\"i8\\\",we),He.__str27=_([101,111,0],\\\"i8\\\",we),He.__str28=_([94,0],\\\"i8\\\",we),He.__str29=_([101,113,0],\\\"i8\\\",we),He.__str30=_([61,61,0],\\\"i8\\\",we),He.__str31=_([103,101,0],\\\"i8\\\",we),He.__str32=_([62,61,0],\\\"i8\\\",we),He.__str33=_([103,116,0],\\\"i8\\\",we),He.__str34=_([62,0],\\\"i8\\\",we),He.__str35=_([105,120,0],\\\"i8\\\",we),He.__str36=_([91,93,0],\\\"i8\\\",we),He.__str37=_([108,83,0],\\\"i8\\\",we),He.__str38=_([60,60,61,0],\\\"i8\\\",we),He.__str39=_([108,101,0],\\\"i8\\\",we),He.__str40=_([60,61,0],\\\"i8\\\",we),He.__str41=_([108,115,0],\\\"i8\\\",we),He.__str42=_([60,60,0],\\\"i8\\\",we),He.__str43=_([108,116,0],\\\"i8\\\",we),He.__str44=_([60,0],\\\"i8\\\",we),He.__str45=_([109,73,0],\\\"i8\\\",we),He.__str46=_([45,61,0],\\\"i8\\\",we),He.__str47=_([109,76,0],\\\"i8\\\",we),He.__str48=_([42,61,0],\\\"i8\\\",we),He.__str49=_([109,105,0],\\\"i8\\\",we),He.__str51=_([109,108,0],\\\"i8\\\",we),He.__str52=_([109,109,0],\\\"i8\\\",we),He.__str53=_([45,45,0],\\\"i8\\\",we),He.__str54=_([110,97,0],\\\"i8\\\",we),He.__str55=_([110,101,119,91,93,0],\\\"i8\\\",we),He.__str56=_([110,101,0],\\\"i8\\\",we),He.__str57=_([33,61,0],\\\"i8\\\",we),He.__str58=_([110,103,0],\\\"i8\\\",we),He.__str59=_([110,116,0],\\\"i8\\\",we),He.__str60=_([33,0],\\\"i8\\\",we),He.__str61=_([110,119,0],\\\"i8\\\",we),He.__str62=_([110,101,119,0],\\\"i8\\\",we),He.__str63=_([111,82,0],\\\"i8\\\",we),He.__str64=_([124,61,0],\\\"i8\\\",we),He.__str65=_([111,111,0],\\\"i8\\\",we),He.__str66=_([124,124,0],\\\"i8\\\",we),He.__str67=_([111,114,0],\\\"i8\\\",we),He.__str68=_([124,0],\\\"i8\\\",we),He.__str69=_([112,76,0],\\\"i8\\\",we),He.__str70=_([43,61,0],\\\"i8\\\",we),He.__str71=_([112,108,0],\\\"i8\\\",we),He.__str72=_([43,0],\\\"i8\\\",we),He.__str73=_([112,109,0],\\\"i8\\\",we),He.__str74=_([45,62,42,0],\\\"i8\\\",we),He.__str75=_([112,112,0],\\\"i8\\\",we),He.__str76=_([43,43,0],\\\"i8\\\",we),He.__str77=_([112,115,0],\\\"i8\\\",we),He.__str78=_([112,116,0],\\\"i8\\\",we),He.__str79=_([45,62,0],\\\"i8\\\",we),He.__str80=_([113,117,0],\\\"i8\\\",we),He.__str81=_([63,0],\\\"i8\\\",we),He.__str82=_([114,77,0],\\\"i8\\\",we),He.__str83=_([37,61,0],\\\"i8\\\",we),He.__str84=_([114,83,0],\\\"i8\\\",we),He.__str85=_([62,62,61,0],\\\"i8\\\",we),He.__str86=_([114,109,0],\\\"i8\\\",we),He.__str87=_([37,0],\\\"i8\\\",we),He.__str88=_([114,115,0],\\\"i8\\\",we),He.__str89=_([62,62,0],\\\"i8\\\",we),He.__str90=_([115,116,0],\\\"i8\\\",we),He.__str91=_([115,105,122,101,111,102,32,0],\\\"i8\\\",we),He.__str92=_([115,122,0],\\\"i8\\\",we),ri=_([0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str95=_([98,111,111,108,101,97,110,0],\\\"i8\\\",we),He.__str97=_([98,121,116,101,0],\\\"i8\\\",we),He.__str101=_([95,95,102,108,111,97,116,49,50,56,0],\\\"i8\\\",we),He.__str105=_([117,110,115,105,103,110,101,100,0],\\\"i8\\\",we),He.__str114=_([108,111,110,103,32,108,111,110,103,0],\\\"i8\\\",we),He.__str115=_([117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0],\\\"i8\\\",we),ai=_([0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,0,0,8,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,9,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,0,0,0,6,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0],[\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str117=_([95,71,76,79,66,65,76,95,0],\\\"i8\\\",we),He.__str118=_([103,108,111,98,97,108,32,99,111,110,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\\\"i8\\\",we),He.__str119=_([103,108,111,98,97,108,32,100,101,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\\\"i8\\\",we),He.__str120=_([58,58,0],\\\"i8\\\",we),He.__str121=_([118,116,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str122=_([86,84,84,32,102,111,114,32,0],\\\"i8\\\",we),He.__str123=_([99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str124=_([45,105,110,45,0],\\\"i8\\\",we),He.__str125=_([116,121,112,101,105,110,102,111,32,102,111,114,32,0],\\\"i8\\\",we),He.__str126=_([116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str127=_([116,121,112,101,105,110,102,111,32,102,110,32,102,111,114,32,0],\\\"i8\\\",we),He.__str128=_([110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str129=_([118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str130=_([99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str131=_([106,97,118,97,32,67,108,97,115,115,32,102,111,114,32,0],\\\"i8\\\",we),He.__str132=_([103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str133=_([114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0],\\\"i8\\\",we),He.__str134=_([104,105,100,100,101,110,32,97,108,105,97,115,32,102,111,114,32,0],\\\"i8\\\",we),He.__str135=_([58,58,42,0],\\\"i8\\\",we),He.__str136=_([44,32,0],\\\"i8\\\",we),He.__str137=_([111,112,101,114,97,116,111,114,0],\\\"i8\\\",we),He.__str139=_([41,32,0],\\\"i8\\\",we),He.__str140=_([32,40,0],\\\"i8\\\",we),He.__str141=_([41,32,58,32,40,0],\\\"i8\\\",we),He.__str142=_([117,108,0],\\\"i8\\\",we),He.__str143=_([108,108,0],\\\"i8\\\",we),He.__str144=_([117,108,108,0],\\\"i8\\\",we),He.__str145=_([102,97,108,115,101,0],\\\"i8\\\",we),He.__str146=_([116,114,117,101,0],\\\"i8\\\",we),He.__str147=_([32,114,101,115,116,114,105,99,116,0],\\\"i8\\\",we),He.__str148=_([32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str149=_([32,99,111,110,115,116,0],\\\"i8\\\",we),He.__str150=_([99,111,109,112,108,101,120,32,0],\\\"i8\\\",we),He.__str151=_([105,109,97,103,105,110,97,114,121,32,0],\\\"i8\\\",we),ei=_([116,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,9,0,0,0,98,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,12,0,0,0,115,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,12,0,0,0,105,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,111,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,100,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,14,0,0,0],[\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str152=_([115,116,100,0],\\\"i8\\\",we),He.__str153=_([115,116,100,58,58,97,108,108,111,99,97,116,111,114,0],\\\"i8\\\",we),He.__str154=_([97,108,108,111,99,97,116,111,114,0],\\\"i8\\\",we),He.__str155=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str156=_([98,97,115,105,99,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str157=_([115,116,100,58,58,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str158=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str159=_([115,116,100,58,58,105,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str160=_([115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str161=_([98,97,115,105,99,95,105,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str162=_([115,116,100,58,58,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str163=_([115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str164=_([98,97,115,105,99,95,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str165=_([115,116,100,58,58,105,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str166=_([115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str167=_([98,97,115,105,99,95,105,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str168=_([115,116,114,105,110,103,32,108,105,116,101,114,97,108,0],\\\"i8\\\",we),He.__str169=_([40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0],\\\"i8\\\",we),He._symbol_demangle_dashed_null=_([45,45,110,117,108,108,45,45,0],\\\"i8\\\",we),He.__str170=_([37,115,37,115,0],\\\"i8\\\",we),He.__str1171=_([111,112,101,114,97,116,111,114,32,110,101,119,0],\\\"i8\\\",we),He.__str2172=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0],\\\"i8\\\",we),He.__str3173=_([111,112,101,114,97,116,111,114,61,0],\\\"i8\\\",we),He.__str4174=_([111,112,101,114,97,116,111,114,62,62,0],\\\"i8\\\",we),He.__str5175=_([111,112,101,114,97,116,111,114,60,60,0],\\\"i8\\\",we),He.__str6176=_([111,112,101,114,97,116,111,114,33,0],\\\"i8\\\",we),He.__str7177=_([111,112,101,114,97,116,111,114,61,61,0],\\\"i8\\\",we),He.__str8178=_([111,112,101,114,97,116,111,114,33,61,0],\\\"i8\\\",we),He.__str9179=_([111,112,101,114,97,116,111,114,91,93,0],\\\"i8\\\",we),He.__str10180=_([111,112,101,114,97,116,111,114,32,0],\\\"i8\\\",we),He.__str11181=_([111,112,101,114,97,116,111,114,45,62,0],\\\"i8\\\",we),He.__str12182=_([111,112,101,114,97,116,111,114,42,0],\\\"i8\\\",we),He.__str13183=_([111,112,101,114,97,116,111,114,43,43,0],\\\"i8\\\",we),He.__str14184=_([111,112,101,114,97,116,111,114,45,45,0],\\\"i8\\\",we),He.__str15185=_([111,112,101,114,97,116,111,114,45,0],\\\"i8\\\",we),He.__str16186=_([111,112,101,114,97,116,111,114,43,0],\\\"i8\\\",we),He.__str17187=_([111,112,101,114,97,116,111,114,38,0],\\\"i8\\\",we),He.__str18188=_([111,112,101,114,97,116,111,114,45,62,42,0],\\\"i8\\\",we),He.__str19189=_([111,112,101,114,97,116,111,114,47,0],\\\"i8\\\",we),He.__str20190=_([111,112,101,114,97,116,111,114,37,0],\\\"i8\\\",we),He.__str21191=_([111,112,101,114,97,116,111,114,60,0],\\\"i8\\\",we),He.__str22192=_([111,112,101,114,97,116,111,114,60,61,0],\\\"i8\\\",we),He.__str23193=_([111,112,101,114,97,116,111,114,62,0],\\\"i8\\\",we),He.__str24194=_([111,112,101,114,97,116,111,114,62,61,0],\\\"i8\\\",we),He.__str25195=_([111,112,101,114,97,116,111,114,44,0],\\\"i8\\\",we),He.__str26196=_([111,112,101,114,97,116,111,114,40,41,0],\\\"i8\\\",we),He.__str27197=_([111,112,101,114,97,116,111,114,126,0],\\\"i8\\\",we),He.__str28198=_([111,112,101,114,97,116,111,114,94,0],\\\"i8\\\",we),He.__str29199=_([111,112,101,114,97,116,111,114,124,0],\\\"i8\\\",we),He.__str30200=_([111,112,101,114,97,116,111,114,38,38,0],\\\"i8\\\",we),He.__str31201=_([111,112,101,114,97,116,111,114,124,124,0],\\\"i8\\\",we),He.__str32202=_([111,112,101,114,97,116,111,114,42,61,0],\\\"i8\\\",we),He.__str33203=_([111,112,101,114,97,116,111,114,43,61,0],\\\"i8\\\",we),He.__str34204=_([111,112,101,114,97,116,111,114,45,61,0],\\\"i8\\\",we),He.__str35205=_([111,112,101,114,97,116,111,114,47,61,0],\\\"i8\\\",we),He.__str36206=_([111,112,101,114,97,116,111,114,37,61,0],\\\"i8\\\",we),He.__str37207=_([111,112,101,114,97,116,111,114,62,62,61,0],\\\"i8\\\",we),He.__str38208=_([111,112,101,114,97,116,111,114,60,60,61,0],\\\"i8\\\",we),He.__str39209=_([111,112,101,114,97,116,111,114,38,61,0],\\\"i8\\\",we),He.__str40210=_([111,112,101,114,97,116,111,114,124,61,0],\\\"i8\\\",we),He.__str41211=_([111,112,101,114,97,116,111,114,94,61,0],\\\"i8\\\",we),He.__str42212=_([96,118,102,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str43213=_([96,118,98,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str44214=_([96,118,99,97,108,108,39,0],\\\"i8\\\",we),He.__str45215=_([96,116,121,112,101,111,102,39,0],\\\"i8\\\",we),He.__str46216=_([96,108,111,99,97,108,32,115,116,97,116,105,99,32,103,117,97,114,100,39,0],\\\"i8\\\",we),He.__str47217=_([96,115,116,114,105,110,103,39,0],\\\"i8\\\",we),He.__str48218=_([96,118,98,97,115,101,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str49219=_([96,118,101,99,116,111,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str50220=_([96,100,101,102,97,117,108,116,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str51221=_([96,115,99,97,108,97,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str52222=_([96,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str53223=_([96,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str54224=_([96,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str55225=_([96,118,105,114,116,117,97,108,32,100,105,115,112,108,97,99,101,109,101,110,116,32,109,97,112,39,0],\\\"i8\\\",we),He.__str56226=_([96,101,104,32,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str57227=_([96,101,104,32,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str58228=_([96,101,104,32,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str59229=_([96,99,111,112,121,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str60230=_([37,115,37,115,32,96,82,84,84,73,32,84,121,112,101,32,68,101,115,99,114,105,112,116,111,114,39,0],\\\"i8\\\",we),He.__str61231=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,68,101,115,99,114,105,112,116,111,114,32,97,116,32,40,37,115,44,37,115,44,37,115,44,37,115,41,39,0],\\\"i8\\\",we),He.__str62232=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,65,114,114,97,121,39,0],\\\"i8\\\",we),He.__str63233=_([96,82,84,84,73,32,67,108,97,115,115,32,72,105,101,114,97,114,99,104,121,32,68,101,115,99,114,105,112,116,111,114,39,0],\\\"i8\\\",we),He.__str64234=_([96,82,84,84,73,32,67,111,109,112,108,101,116,101,32,79,98,106,101,99,116,32,76,111,99,97,116,111,114,39,0],\\\"i8\\\",we),He.__str65235=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str66236=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str67237=_([111,112,101,114,97,116,111,114,32,110,101,119,91,93,0],\\\"i8\\\",we),He.__str68238=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0],\\\"i8\\\",we),He.__str69239=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str70240=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,91,93,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str71241=_([126,37,115,0],\\\"i8\\\",we),He.__str72242=_([117,110,100,110,97,109,101,46,99,0],\\\"i8\\\",we),He.___func___symbol_demangle=_([115,121,109,98,111,108,95,100,101,109,97,110,103,108,101,0],\\\"i8\\\",we),He.__str73243=_([115,121,109,45,62,114,101,115,117,108,116,0],\\\"i8\\\",we),He.___func___handle_template=_([104,97,110,100,108,101,95,116,101,109,112,108,97,116,101,0],\\\"i8\\\",we),He.__str74244=_([42,115,121,109,45,62,99,117,114,114,101,110,116,32,61,61,32,39,36,39,0],\\\"i8\\\",we),He.___func___str_array_get_ref=_([115,116,114,95,97,114,114,97,121,95,103,101,116,95,114,101,102,0],\\\"i8\\\",we),He.__str75245=_([99,114,101,102,0],\\\"i8\\\",we),He.__str76246=_([112,114,105,118,97,116,101,58,32,0],\\\"i8\\\",we),He.__str77247=_([112,114,111,116,101,99,116,101,100,58,32,0],\\\"i8\\\",we),He.__str78248=_([112,117,98,108,105,99,58,32,0],\\\"i8\\\",we),He.__str79249=_([115,116,97,116,105,99,32,0],\\\"i8\\\",we),He.__str80250=_([118,105,114,116,117,97,108,32,0],\\\"i8\\\",we),He.__str81251=_([91,116,104,117,110,107,93,58,37,115,0],\\\"i8\\\",we),He.__str82252=_([37,115,96,97,100,106,117,115,116,111,114,123,37,115,125,39,32,0],\\\"i8\\\",we),He.__str83253=_([37,115,32,37,115,0],\\\"i8\\\",we),He.__str84254=_([118,111,105,100,0],\\\"i8\\\",we),He.__str85255=_([37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str86256=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str87257=_([32,0],\\\"i8\\\",we),He.__str88258=_([100,108,108,95,101,120,112,111,114,116,32,0],\\\"i8\\\",we),He.__str89259=_([99,100,101,99,108,0],\\\"i8\\\",we),He.__str90260=_([112,97,115,99,97,108,0],\\\"i8\\\",we),He.__str91261=_([116,104,105,115,99,97,108,108,0],\\\"i8\\\",we),He.__str92262=_([115,116,100,99,97,108,108,0],\\\"i8\\\",we),He.__str93263=_([102,97,115,116,99,97,108,108,0],\\\"i8\\\",we),He.__str94264=_([99,108,114,99,97,108,108,0],\\\"i8\\\",we),He.__str95265=_([95,95,100,108,108,95,101,120,112,111,114,116,32,0],\\\"i8\\\",we),He.__str96266=_([95,95,99,100,101,99,108,0],\\\"i8\\\",we),He.__str97267=_([95,95,112,97,115,99,97,108,0],\\\"i8\\\",we),He.__str98268=_([95,95,116,104,105,115,99,97,108,108,0],\\\"i8\\\",we),He.__str99269=_([95,95,115,116,100,99,97,108,108,0],\\\"i8\\\",we),He.__str100270=_([95,95,102,97,115,116,99,97,108,108,0],\\\"i8\\\",we),He.__str101271=_([95,95,99,108,114,99,97,108,108,0],\\\"i8\\\",we),He.__str102272=_([95,95,112,116,114,54,52,0],\\\"i8\\\",we),He.__str103273=_([99,111,110,115,116,0],\\\"i8\\\",we),He.__str104274=_([118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str105275=_([99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.___func___get_class_string=_([103,101,116,95,99,108,97,115,115,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str106276=_([97,45,62,101,108,116,115,91,105,93,0],\\\"i8\\\",we),He.__str107277=_([123,102,111,114,32,96,37,115,39,125,0],\\\"i8\\\",we),He.__str108278=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str109279=_([96,37,115,39,0],\\\"i8\\\",we),He.__str110280=_([46,46,46,0],\\\"i8\\\",we),He.__str111281=_([37,99,118,111,105,100,37,99,0],\\\"i8\\\",we),He.__str112282=_([37,115,44,37,115,0],\\\"i8\\\",we),He.__str113283=_([37,99,37,115,37,115,32,37,99,0],\\\"i8\\\",we),He.__str114284=_([37,99,37,115,37,115,37,99,0],\\\"i8\\\",we),He.___func___str_array_push=_([115,116,114,95,97,114,114,97,121,95,112,117,115,104,0],\\\"i8\\\",we),He.__str115285=_([112,116,114,0],\\\"i8\\\",we),He.__str116286=_([97,0],\\\"i8\\\",we),He.__str117287=_([97,45,62,101,108,116,115,91,97,45,62,110,117,109,93,0],\\\"i8\\\",we),He.__str118288=_([37,115,37,100,0],\\\"i8\\\",we),He.__str119289=_([45,0],\\\"i8\\\",we),ii=_(1,\\\"i8\\\",we),He.___func___demangle_datatype=_([100,101,109,97,110,103,108,101,95,100,97,116,97,116,121,112,101,0],\\\"i8\\\",we),He.__str121291=_([99,116,0],\\\"i8\\\",we),He.__str122292=_([117,110,105,111,110,32,0],\\\"i8\\\",we),He.__str123293=_([115,116,114,117,99,116,32,0],\\\"i8\\\",we),He.__str124294=_([99,108,97,115,115,32,0],\\\"i8\\\",we),He.__str125295=_([99,111,105,110,116,101,114,102,97,99,101,32,0],\\\"i8\\\",we),He.__str126296=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,45,37,115,39,0],\\\"i8\\\",we),He.__str127297=_([37,115,37,115,32,40,37,115,42,0],\\\"i8\\\",we),He.__str128298=_([41,37,115,0],\\\"i8\\\",we),He.__str129299=_([101,110,117,109,32,37,115,0],\\\"i8\\\",we),He.__str130300=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\\\"i8\\\",we),He.__str131301=_([123,37,115,44,37,115,125,0],\\\"i8\\\",we),He.__str132302=_([123,37,115,44,37,115,44,37,115,125,0],\\\"i8\\\",we),He.__str133303=_([96,110,111,110,45,116,121,112,101,45,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\\\"i8\\\",we),He.__str134304=_([32,95,95,112,116,114,54,52,0],\\\"i8\\\",we),He.__str135305=_([32,38,37,115,0],\\\"i8\\\",we),He.__str136306=_([32,38,37,115,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str137307=_([32,42,37,115,0],\\\"i8\\\",we),He.__str138308=_([32,42,37,115,32,99,111,110,115,116,0],\\\"i8\\\",we),He.__str139309=_([32,42,37,115,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str140310=_([32,42,37,115,32,99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str141311=_([32,40,37,115,37,115,41,0],\\\"i8\\\",we),He.__str142312=_([32,40,37,115,41,0],\\\"i8\\\",we),He.__str143313=_([37,115,91,37,115,93,0],\\\"i8\\\",we),He.__str144314=_([37,115,32,37,115,37,115,0],\\\"i8\\\",we),He.__str145315=_([115,105,103,110,101,100,32,99,104,97,114,0],\\\"i8\\\",we),He.__str146316=_([99,104,97,114,0],\\\"i8\\\",we),He.__str147317=_([117,110,115,105,103,110,101,100,32,99,104,97,114,0],\\\"i8\\\",we),He.__str148318=_([115,104,111,114,116,0],\\\"i8\\\",we),He.__str149319=_([117,110,115,105,103,110,101,100,32,115,104,111,114,116,0],\\\"i8\\\",we),He.__str150320=_([105,110,116,0],\\\"i8\\\",we),He.__str151321=_([117,110,115,105,103,110,101,100,32,105,110,116,0],\\\"i8\\\",we),He.__str152322=_([108,111,110,103,0],\\\"i8\\\",we),He.__str153323=_([117,110,115,105,103,110,101,100,32,108,111,110,103,0],\\\"i8\\\",we),He.__str154324=_([102,108,111,97,116,0],\\\"i8\\\",we),He.__str155325=_([100,111,117,98,108,101,0],\\\"i8\\\",we),He.__str156326=_([108,111,110,103,32,100,111,117,98,108,101,0],\\\"i8\\\",we),He.__str157327=_([95,95,105,110,116,56,0],\\\"i8\\\",we),He.__str158328=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,56,0],\\\"i8\\\",we),He.__str159329=_([95,95,105,110,116,49,54,0],\\\"i8\\\",we),He.__str160330=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,54,0],\\\"i8\\\",we),He.__str161331=_([95,95,105,110,116,51,50,0],\\\"i8\\\",we),He.__str162332=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,51,50,0],\\\"i8\\\",we),He.__str163333=_([95,95,105,110,116,54,52,0],\\\"i8\\\",we),He.__str164334=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,54,52,0],\\\"i8\\\",we),\\\\nHe.__str165335=_([95,95,105,110,116,49,50,56,0],\\\"i8\\\",we),He.__str166336=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0],\\\"i8\\\",we),He.__str167337=_([98,111,111,108,0],\\\"i8\\\",we),He.__str168338=_([119,99,104,97,114,95,116,0],\\\"i8\\\",we),vi=_(468,[\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0],we),ti=_(24,\\\"i32\\\",we),He.__str339=_([109,97,120,32,115,121,115,116,101,109,32,98,121,116,101,115,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),He.__str1340=_([115,121,115,116,101,109,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),He.__str2341=_([105,110,32,117,115,101,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),fi=_([ue],\\\"i8\\\",we),_i=_(1,\\\"void ()*\\\",we),si=_([0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0],we),_(1,\\\"void*\\\",we),He.__str3342=_([115,116,100,58,58,98,97,100,95,97,108,108,111,99,0],\\\"i8\\\",we),ni=_([0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,14,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0],we),_(1,\\\"void*\\\",we),He.__str14343=_([98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\\\"i8\\\",we),He.__ZTSSt9bad_alloc=_([83,116,57,98,97,100,95,97,108,108,111,99,0],\\\"i8\\\",we),bi=_(12,\\\"*\\\",we),He.__ZTSSt20bad_array_new_length=_([83,116,50,48,98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\\\"i8\\\",we),ki=_(12,\\\"*\\\",we),Se[ri>>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],[\\\"i8*\\\",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v(\\\"__cxa_demangle\\\",\\\"string\\\",[\\\"string\\\",\\\"string\\\",\\\"number\\\",\\\"number\\\"]);return function(r){return pi(r,\\\"\\\",1,0)}}();\\\\n'},121:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.Flamechart=void 0;const t=a(844),i=a(293);r.Flamechart=class{constructor(e){this.source=e,this.layers=[],this.totalWeight=0,this.minFrameWidth=1;const r=[];this.minFrameWidth=1/0,this.totalWeight=e.getTotalWeight(),e.forEachCall(((e,a)=>{const i=t.lastOf(r),n={node:e,parent:i,children:[],start:a,end:a};i&&i.children.push(n),r.push(n)}),((e,a)=>{console.assert(r.length>0);const t=r.pop();if(t.end=a,t.end-t.start==0)return;const i=r.length;for(;this.layers.length<=i;)this.layers.push([]);this.layers[i].push(t),this.minFrameWidth=Math.min(this.minFrameWidth,t.end-t.start)})),isFinite(this.minFrameWidth)||(this.minFrameWidth=1)}getTotalWeight(){return this.totalWeight}getLayers(){return this.layers}getColorBucketForFrame(e){return this.source.getColorBucketForFrame(e)}getMinFrameWidth(){return this.minFrameWidth}formatValue(e){return this.source.formatValue(e)}getClampedViewportWidth(e){const r=this.getTotalWeight(),a=Math.pow(2,40),t=i.clamp(3*this.getMinFrameWidth(),r/a,r);return i.clamp(e,t,r)}getClampedConfigSpaceViewportRect({configSpaceViewportRect:e,renderInverted:r}){const a=new i.Vec2(this.getTotalWeight(),this.getLayers().length),t=this.getClampedViewportWidth(e.size.x),n=e.size.withX(t),s=i.Vec2.clamp(e.origin,new i.Vec2(0,r?0:-1),i.Vec2.max(i.Vec2.zero,a.minus(n).plus(new i.Vec2(0,1))));return new i.Rect(s,e.size.withX(t))}}},293:(e,r)=>{\\\"use strict\\\";function a(e,r,a){return e<r?r:e>a?a:e}Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.Rect=r.AffineTransform=r.Vec2=r.clamp=void 0,r.clamp=a;let t=(()=>{class e{constructor(e,r){this.x=e,this.y=r}withX(r){return new e(r,this.y)}withY(r){return new e(this.x,r)}plus(r){return new e(this.x+r.x,this.y+r.y)}minus(r){return new e(this.x-r.x,this.y-r.y)}times(r){return new e(this.x*r,this.y*r)}timesPointwise(r){return new e(this.x*r.x,this.y*r.y)}dividedByPointwise(r){return new e(this.x/r.x,this.y/r.y)}dot(e){return this.x*e.x+this.y*e.y}equals(e){return this.x===e.x&&this.y===e.y}approxEquals(e,r=1e-9){return Math.abs(this.x-e.x)<r&&Math.abs(this.y-e.y)<r}length2(){return this.dot(this)}length(){return Math.sqrt(this.length2())}abs(){return new e(Math.abs(this.x),Math.abs(this.y))}static min(r,a){return new e(Math.min(r.x,a.x),Math.min(r.y,a.y))}static max(r,a){return new e(Math.max(r.x,a.x),Math.max(r.y,a.y))}static clamp(r,t,i){return new e(a(r.x,t.x,i.x),a(r.y,t.y,i.y))}flatten(){return[this.x,this.y]}}return e.zero=new e(0,0),e.unit=new e(1,1),e})();r.Vec2=t;class i{constructor(e=1,r=0,a=0,t=0,i=1,n=0){this.m00=e,this.m01=r,this.m02=a,this.m10=t,this.m11=i,this.m12=n}withScale(e){let{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return r=e.x,s=e.y,new i(r,a,t,n,s,v)}static withScale(e){return(new i).withScale(e)}scaledBy(e){return i.withScale(e).times(this)}getScale(){return new t(this.m00,this.m11)}withTranslation(e){let{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return t=e.x,v=e.y,new i(r,a,t,n,s,v)}static withTranslation(e){return(new i).withTranslation(e)}getTranslation(){return new t(this.m02,this.m12)}translatedBy(e){return i.withTranslation(e).times(this)}static betweenRects(e,r){return i.withTranslation(e.origin.times(-1)).scaledBy(new t(r.size.x/e.size.x,r.size.y/e.size.y)).translatedBy(r.origin)}times(e){const r=this.m00*e.m00+this.m01*e.m10,a=this.m00*e.m01+this.m01*e.m11,t=this.m00*e.m02+this.m01*e.m12+this.m02,n=this.m10*e.m00+this.m11*e.m10,s=this.m10*e.m01+this.m11*e.m11,v=this.m10*e.m02+this.m11*e.m12+this.m12;return new i(r,a,t,n,s,v)}equals(e){return this.m00==e.m00&&this.m01==e.m01&&this.m02==e.m02&&this.m10==e.m10&&this.m11==e.m11&&this.m12==e.m12}approxEquals(e,r=1e-9){return Math.abs(this.m00-e.m00)<r&&Math.abs(this.m01-e.m01)<r&&Math.abs(this.m02-e.m02)<r&&Math.abs(this.m10-e.m10)<r&&Math.abs(this.m11-e.m11)<r&&Math.abs(this.m12-e.m12)<r}timesScalar(e){const{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return new i(e*r,e*a,e*t,e*n,e*s,e*v)}det(){const{m00:e,m01:r,m02:a,m10:t,m11:i,m12:n}=this;return e*(1*i-0*n)-r*(1*t-0*n)+a*(0*t-0*i)}adj(){const{m00:e,m01:r,m02:a,m10:t,m11:n,m12:s}=this;return new i(+(1*n-0*s),-(1*r-0*a),+(r*s-a*n),-(1*t-0*s),+(1*e-0*a),-(e*s-a*t))}inverted(){const e=this.det();return 0===e?null:this.adj().timesScalar(1/e)}transformVector(e){return new t(e.x*this.m00+e.y*this.m01,e.x*this.m10+e.y*this.m11)}inverseTransformVector(e){const r=this.inverted();return r?r.transformVector(e):null}transformPosition(e){return new t(e.x*this.m00+e.y*this.m01+this.m02,e.x*this.m10+e.y*this.m11+this.m12)}inverseTransformPosition(e){const r=this.inverted();return r?r.transformPosition(e):null}transformRect(e){const r=this.transformVector(e.size),a=this.transformPosition(e.origin);return r.x<0&&r.y<0?new n(a.plus(r),r.abs()):r.x<0?new n(a.withX(a.x+r.x),r.abs()):r.y<0?new n(a.withY(a.y+r.y),r.abs()):new n(a,r)}inverseTransformRect(e){const r=this.inverted();return r?r.transformRect(e):null}flatten(){return[this.m00,this.m10,0,this.m01,this.m11,0,this.m02,this.m12,1]}}r.AffineTransform=i;let n=(()=>{class e{constructor(e,r){this.origin=e,this.size=r}isEmpty(){return 0==this.width()||0==this.height()}width(){return this.size.x}height(){return this.size.y}left(){return this.origin.x}right(){return this.left()+this.width()}top(){return this.origin.y}bottom(){return this.top()+this.height()}topLeft(){return this.origin}topRight(){return this.origin.plus(new t(this.width(),0))}bottomRight(){return this.origin.plus(this.size)}bottomLeft(){return this.origin.plus(new t(0,this.height()))}withOrigin(r){return new e(r,this.size)}withSize(r){return new e(this.origin,r)}closestPointTo(e){return new t(a(e.x,this.left(),this.right()),a(e.y,this.top(),this.bottom()))}distanceFrom(e){return e.minus(this.closestPointTo(e)).length()}contains(e){return 0===this.distanceFrom(e)}hasIntersectionWith(e){const r=Math.max(this.top(),e.top());if(Math.max(r,Math.min(this.bottom(),e.bottom()))-r==0)return!1;const a=Math.max(this.left(),e.left());return Math.max(a,Math.min(this.right(),e.right()))-a!=0}intersectWith(r){const a=t.max(this.topLeft(),r.topLeft()),i=t.max(a,t.min(this.bottomRight(),r.bottomRight()));return new e(a,i.minus(a))}equals(e){return this.origin.equals(e.origin)&&this.size.equals(e.size)}approxEquals(e){return this.origin.approxEquals(e.origin)&&this.size.approxEquals(e.size)}area(){return this.size.x*this.size.y}}return e.empty=new e(t.zero,t.zero),e.unit=new e(t.zero,t.unit),e.NDC=new e(new t(-1,-1),new t(2,2)),e})();r.Rect=n},211:function(e,r,a){\\\"use strict\\\";var t=this&&this.__createBinding||(Object.create?function(e,r,a,t){void 0===t&&(t=a),Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[a]}})}:function(e,r,a,t){void 0===t&&(t=a),e[t]=r[a]}),i=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,\\\"default\\\",{enumerable:!0,value:r})}:function(e,r){e.default=r}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var a in e)Object.hasOwnProperty.call(e,a)&&t(r,e,a);return i(r,e),r},s=this&&this.__awaiter||function(e,r,a,t){return new(a||(a=Promise))((function(i,n){function s(e){try{o(t.next(e))}catch(e){n(e)}}function v(e){try{o(t.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?i(e.value):(r=e.value,r instanceof a?r:new a((function(e){e(r)}))).then(s,v)}o((t=t.apply(e,r||[])).next())}))};Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.CallTreeProfileBuilder=r.StackListProfileBuilder=r.Profile=r.CallTreeNode=r.Frame=r.HasWeights=void 0;const v=a(844),o=a(218),f=Promise.resolve().then((()=>n(a(765))));f.then((()=>{}));class l{constructor(){this.selfWeight=0,this.totalWeight=0}getSelfWeight(){return this.selfWeight}getTotalWeight(){return this.totalWeight}addToTotalWeight(e){this.totalWeight+=e}addToSelfWeight(e){this.selfWeight+=e}overwriteWeightWith(e){this.selfWeight=e.selfWeight,this.totalWeight=e.totalWeight}}r.HasWeights=l;let _=(()=>{class e extends l{constructor(e){super(),this.key=e.key,this.name=e.name,this.file=e.file,this.line=e.line,this.col=e.col}static getOrInsert(r,a){return r.getOrInsert(new e(a))}}return e.root=new e({key:\\\"(speedscope root)\\\",name:\\\"(speedscope root)\\\"}),e})();r.Frame=_;class S extends l{constructor(e,r){super(),this.frame=e,this.parent=r,this.children=[],this.frozen=!1}isRoot(){return this.frame===_.root}isFrozen(){return this.frozen}freeze(){this.frozen=!0}}r.CallTreeNode=S;class u{constructor(e=0){this.name=\\\"\\\",this.frames=new v.KeyedSet,this.appendOrderCalltreeRoot=new S(_.root,null),this.groupedCalltreeRoot=new S(_.root,null),this.samples=[],this.weights=[],this.valueFormatter=new o.RawValueFormatter,this.totalNonIdleWeight=null,this.totalWeight=e}getAppendOrderCalltreeRoot(){return this.appendOrderCalltreeRoot}getGroupedCalltreeRoot(){return this.groupedCalltreeRoot}formatValue(e){return this.valueFormatter.format(e)}setValueFormatter(e){this.valueFormatter=e}getWeightUnit(){return this.valueFormatter.unit}getName(){return this.name}setName(e){this.name=e}getTotalWeight(){return this.totalWeight}getTotalNonIdleWeight(){return null===this.totalNonIdleWeight&&(this.totalNonIdleWeight=this.groupedCalltreeRoot.children.reduce(((e,r)=>e+r.getTotalWeight()),0)),this.totalNonIdleWeight}sortGroupedCallTree(){!function e(r){r.children.sort(((e,r)=>-(e.getTotalWeight()-r.getTotalWeight()))),r.children.forEach(e)}(this.groupedCalltreeRoot)}forEachCallGrouped(e,r){!function a(t,i){t.frame!==_.root&&e(t,i);let n=0;t.children.forEach((function(e){a(e,i+n),n+=e.getTotalWeight()})),t.frame!==_.root&&r(t,i+t.getTotalWeight())}(this.groupedCalltreeRoot,0)}forEachCall(e,r){let a=[],t=0,i=0;for(let n of this.samples){let s=null;for(s=n;s&&s.frame!=_.root&&-1===a.indexOf(s);s=s.parent);for(;a.length>0&&v.lastOf(a)!=s;)r(a.pop(),t);const o=[];for(let e=n;e&&e.frame!=_.root&&e!=s;e=e.parent)o.push(e);o.reverse();for(let r of o)e(r,t);a=a.concat(o),t+=this.weights[i++]}for(let e=a.length-1;e>=0;e--)r(a[e],t)}forEachFrame(e){this.frames.forEach(e)}getProfileWithRecursionFlattened(){const e=new h,r=[],a=new Set;this.forEachCall((function(t,i){a.has(t.frame)?r.push(null):(a.add(t.frame),r.push(t),e.enterFrame(t.frame,i))}),(function(t,i){const n=r.pop();n&&(a.delete(n.frame),e.leaveFrame(n.frame,i))}));const t=e.build();return t.name=this.name,t.valueFormatter=this.valueFormatter,this.forEachFrame((e=>{t.frames.getOrInsert(e).overwriteWeightWith(e)})),t}getInvertedProfileForCallersOf(e){const r=_.getOrInsert(this.frames,e),a=new c,t=[];!function e(a){if(a.frame===r)t.push(a);else for(let r of a.children)e(r)}(this.appendOrderCalltreeRoot);for(let e of t){const r=[];for(let a=e;null!=a&&a.frame!==_.root;a=a.parent)r.push(a.frame);a.appendSampleWithWeight(r,e.getTotalWeight())}const i=a.build();return i.name=this.name,i.valueFormatter=this.valueFormatter,i}getProfileForCalleesOf(e){const r=_.getOrInsert(this.frames,e),a=new c;!function e(t){if(t.frame===r)!function(e){const r=[];!function e(t){r.push(t.frame),a.appendSampleWithWeight(r,t.getSelfWeight());for(let r of t.children)e(r);r.pop()}(e)}(t);else for(let r of t.children)e(r)}(this.appendOrderCalltreeRoot);const t=a.build();return t.name=this.name,t.valueFormatter=this.valueFormatter,t}demangle(){return s(this,void 0,void 0,(function*(){let e=null;for(let r of this.frames)r.name.startsWith(\\\"__Z\\\")&&(e||(e=(yield f).demangleCpp),r.name=e(r.name))}))}remapNames(e){for(let r of this.frames)r.name=e(r.name)}}r.Profile=u;class c extends u{constructor(){super(...arguments),this.pendingSample=null}_appendSample(e,r,a){if(isNaN(r))throw new Error(\\\"invalid weight\\\");let t=a?this.appendOrderCalltreeRoot:this.groupedCalltreeRoot,i=new Set;for(let n of e){const e=_.getOrInsert(this.frames,n),s=a?v.lastOf(t.children):t.children.find((r=>r.frame===e));if(s&&!s.isFrozen()&&s.frame==e)t=s;else{const r=t;t=new S(e,t),r.children.push(t)}t.addToTotalWeight(r),i.add(t.frame)}if(t.addToSelfWeight(r),a)for(let e of t.children)e.freeze();if(a){t.frame.addToSelfWeight(r);for(let e of i)e.addToTotalWeight(r);t===v.lastOf(this.samples)?this.weights[this.weights.length-1]+=r:(this.samples.push(t),this.weights.push(r))}}appendSampleWithWeight(e,r){if(0!==r){if(r<0)throw new Error(\\\"Samples must have positive weights\\\");this._appendSample(e,r,!0),this._appendSample(e,r,!1)}}appendSampleWithTimestamp(e,r){if(this.pendingSample){if(r<this.pendingSample.centralTimestamp)throw new Error(\\\"Timestamps received out of order\\\");const a=(r+this.pendingSample.centralTimestamp)/2;this.appendSampleWithWeight(this.pendingSample.stack,a-this.pendingSample.startTimestamp),this.pendingSample={stack:e,startTimestamp:a,centralTimestamp:r}}else this.pendingSample={stack:e,startTimestamp:r,centralTimestamp:r}}build(){return this.pendingSample&&(this.samples.length>0?this.appendSampleWithWeight(this.pendingSample.stack,this.pendingSample.centralTimestamp-this.pendingSample.startTimestamp):(this.appendSampleWithWeight(this.pendingSample.stack,1),this.setValueFormatter(new o.RawValueFormatter))),this.totalWeight=Math.max(this.totalWeight,this.weights.reduce(((e,r)=>e+r),0)),this.sortGroupedCallTree(),this}}r.StackListProfileBuilder=c;class h extends u{constructor(){super(...arguments),this.appendOrderStack=[this.appendOrderCalltreeRoot],this.groupedOrderStack=[this.groupedCalltreeRoot],this.framesInStack=new Map,this.stack=[],this.lastValue=0}addWeightsToFrames(e){const r=e-this.lastValue;for(let e of this.framesInStack.keys())e.addToTotalWeight(r);const a=v.lastOf(this.stack);a&&a.addToSelfWeight(r)}addWeightsToNodes(e,r){const a=e-this.lastValue;for(let e of r)e.addToTotalWeight(a);const t=v.lastOf(r);t&&t.addToSelfWeight(a)}_enterFrame(e,r,a){let t=a?this.appendOrderStack:this.groupedOrderStack;this.addWeightsToNodes(r,t);let i=v.lastOf(t);if(i){if(a){const e=r-this.lastValue;if(e>0)this.samples.push(i),this.weights.push(r-this.lastValue);else if(e<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}const n=a?v.lastOf(i.children):i.children.find((r=>r.frame===e));let s;n&&!n.isFrozen()&&n.frame==e?s=n:(s=new S(e,i),i.children.push(s)),t.push(s)}}enterFrame(e,r){const a=_.getOrInsert(this.frames,e);this.addWeightsToFrames(r),this._enterFrame(a,r,!0),this._enterFrame(a,r,!1),this.stack.push(a);const t=this.framesInStack.get(a)||0;this.framesInStack.set(a,t+1),this.lastValue=r}_leaveFrame(e,r,a){let t=a?this.appendOrderStack:this.groupedOrderStack;if(this.addWeightsToNodes(r,t),a){const a=this.appendOrderStack.pop();if(null==a)throw new Error(`Trying to leave ${e.key} when stack is empty`);if(null==this.lastValue)throw new Error(`Trying to leave a ${e.key} before any have been entered`);if(a.freeze(),a.frame.key!==e.key)throw new Error(`Tried to leave frame \\\"${e.name}\\\" while frame \\\"${a.frame.name}\\\" was at the top at ${r}`);const t=r-this.lastValue;if(t>0)this.samples.push(a),this.weights.push(r-this.lastValue);else if(t<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}else this.groupedOrderStack.pop()}leaveFrame(e,r){const a=_.getOrInsert(this.frames,e);this.addWeightsToFrames(r),this._leaveFrame(a,r,!0),this._leaveFrame(a,r,!1),this.stack.pop();const t=this.framesInStack.get(a);null!=t&&(1===t?this.framesInStack.delete(a):this.framesInStack.set(a,t-1),this.lastValue=r,this.totalWeight=Math.max(this.totalWeight,this.lastValue))}build(){if(this.appendOrderStack.length>1||this.groupedOrderStack.length>1)throw new Error(\\\"Tried to complete profile construction with a non-empty stack\\\");return this.sortGroupedCallTree(),this}}r.CallTreeProfileBuilder=h},844:(e,r)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.decodeBase64=r.lazyStatic=r.memoizeByReference=r.memoizeByShallowEquality=r.objectsHaveShallowEquality=r.noop=r.binarySearch=r.triangle=r.fract=r.formatPercent=r.zeroPad=r.itReduce=r.itForEach=r.itMap=r.KeyedSet=r.getOrThrow=r.getOrElse=r.getOrInsert=r.sortBy=r.lastOf=void 0,r.lastOf=function(e){return e[e.length-1]||null},r.sortBy=function(e,r){e.sort((function(e,a){const t=r(e),i=r(a);return t<i?-1:t>i?1:0}))},r.getOrInsert=function(e,r,a){return e.has(r)||e.set(r,a(r)),e.get(r)},r.getOrElse=function(e,r,a){return e.has(r)?e.get(r):a(r)},r.getOrThrow=function(e,r){if(!e.has(r))throw new Error(`Expected key ${r}`);return e.get(r)};class a{constructor(){this.map=new Map}getOrInsert(e){const r=e.key;return this.map.get(r)||(this.map.set(r,e),e)}forEach(e){this.map.forEach(e)}[Symbol.iterator](){return this.map.values()}}function t(e){return e-Math.floor(e)}function i(e,r){for(let a in e)if(e[a]!==r[a])return!1;for(let a in r)if(e[a]!==r[a])return!1;return!0}function n(e){let r=null;return()=>(null==r&&(r={result:e()}),r.result)}r.KeyedSet=a,r.itMap=function*(e,r){for(let a of e)yield r(a)},r.itForEach=function(e,r){for(let a of e)r(a)},r.itReduce=function(e,r,a){let t=a;for(let a of e)t=r(t,a);return t},r.zeroPad=function(e,r){return new Array(Math.max(r-e.length,0)+1).join(\\\"0\\\")+e},r.formatPercent=function(e){let r=`${e.toFixed(0)}%`;return 100===e?r=\\\"100%\\\":e>99?r=\\\">99%\\\":e<.01?r=\\\"<0.01%\\\":e<1?r=`${e.toFixed(2)}%`:e<10&&(r=`${e.toFixed(1)}%`),r},r.fract=t,r.triangle=function(e){return 2*Math.abs(t(e)-.5)-1},r.binarySearch=function(e,r,a,t,i=1){for(console.assert(!isNaN(i)&&!isNaN(t));;){if(r-e<=i)return[e,r];const n=(r+e)/2;a(n)<t?e=n:r=n}},r.noop=function(...e){},r.objectsHaveShallowEquality=i,r.memoizeByShallowEquality=function(e){let r=null;return a=>{let t;return null==r?(t=e(a),r={args:a,result:t},t):(i(r.args,a)||(r.args=a,r.result=e(a)),r.result)}},r.memoizeByReference=function(e){let r=null;return a=>{let t;return null==r?(t=e(a),r={args:a,result:t},t):(r.args===a||(r.args=a,r.result=e(a)),r.result)}},r.lazyStatic=n;const s=n((()=>{const e=new Map;for(let r=0;r<64;r++)e.set(\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\".charAt(r),r);return e.set(\\\"=\\\",-1),e}));r.decodeBase64=function(e){const r=s();if(e.length%4!=0)throw new Error(`Invalid length for base64 encoded string. Expected length % 4 = 0, got length = ${e.length}`);const a=e.length/4;let t;t=e.length>=4&&\\\"=\\\"===e.charAt(e.length-1)?\\\"=\\\"===e.charAt(e.length-2)?3*a-2:3*a-1:3*a;const i=new Uint8Array(t);let n=0;for(let t=0;t<a;t++){const a=e.charAt(4*t+0),s=e.charAt(4*t+1),v=e.charAt(4*t+2),o=e.charAt(4*t+3),f=r.get(a),l=r.get(s),_=r.get(v),S=r.get(o);if(null==f||null==l||null==_||null==S)throw new Error(`Invalid quartet at indices ${4*t} .. ${4*t+3}: ${e.substring(4*t,4*t+3)}`);i[n++]=f<<2|l>>4,\\\"=\\\"!==v&&(i[n++]=(15&l)<<4|_>>2),\\\"=\\\"!==o&&(i[n++]=(7&_)<<6|S)}if(n!==t)throw new Error(`Expected to decode ${t} bytes, but only decoded ${n})`);return i}},218:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.ByteFormatter=r.TimeFormatter=r.RawValueFormatter=void 0;const t=a(844);r.RawValueFormatter=class{constructor(){this.unit=\\\"none\\\"}format(e){return e.toLocaleString()}},r.TimeFormatter=class{constructor(e){this.unit=e,this.multiplier=\\\"nanoseconds\\\"===e?1e-9:\\\"microseconds\\\"===e?1e-6:\\\"milliseconds\\\"===e?.001:1}formatUnsigned(e){const r=e*this.multiplier;if(r/60>=1){const e=Math.floor(r/60),a=Math.floor(r-60*e).toString();return`${e}:${t.zeroPad(a,2)}`}return r/1>=1?`${r.toFixed(2)}s`:r/.001>=1?`${(r/.001).toFixed(2)}ms`:r/1e-6>=1?`${(r/1e-6).toFixed(2)}µs`:`${(r/1e-9).toFixed(2)}ns`}format(e){return`${e<0?\\\"-\\\":\\\"\\\"}${this.formatUnsigned(Math.abs(e))}`}},r.ByteFormatter=class{constructor(){this.unit=\\\"bytes\\\"}format(e){return e<1024?`${e.toFixed(0)} B`:(e/=1024)<1024?`${e.toFixed(2)} KB`:(e/=1024)<1024?`${e.toFixed(2)} MB`:`${(e/=1024).toFixed(2)} GB`}}},41:function(e,r,a){\\\"use strict\\\";var t=this&&this.__createBinding||(Object.create?function(e,r,a,t){void 0===t&&(t=a),Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[a]}})}:function(e,r,a,t){void 0===t&&(t=a),e[t]=r[a]}),i=this&&this.__exportStar||function(e,r){for(var a in e)\\\"default\\\"===a||r.hasOwnProperty(a)||t(r,e,a)};Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),i(a(496),r),i(a(121),r)},715:function(e,r,a){var t,i,n;!function(s,v){\\\"use strict\\\";i=[a(356)],void 0===(n=\\\"function\\\"==typeof(t=function(e){var r=/(^|@)\\\\S+:\\\\d+/,a=/^\\\\s*at .*(\\\\S+:\\\\d+|\\\\(native\\\\))/m,t=/^(eval@)?(\\\\[native code])?$/;return{parse:function(e){if(void 0!==e.stacktrace||void 0!==e[\\\"opera#sourceloc\\\"])return this.parseOpera(e);if(e.stack&&e.stack.match(a))return this.parseV8OrIE(e);if(e.stack)return this.parseFFOrSafari(e);throw new Error(\\\"Cannot parse given Error object\\\")},extractLocation:function(e){if(-1===e.indexOf(\\\":\\\"))return[e];var r=/(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/.exec(e.replace(/[()]/g,\\\"\\\"));return[r[1],r[2]||void 0,r[3]||void 0]},parseV8OrIE:function(r){return r.stack.split(\\\"\\\\n\\\").filter((function(e){return!!e.match(a)}),this).map((function(r){r.indexOf(\\\"(eval \\\")>-1&&(r=r.replace(/eval code/g,\\\"eval\\\").replace(/(\\\\(eval at [^()]*)|(\\\\),.*$)/g,\\\"\\\"));var a=r.replace(/^\\\\s+/,\\\"\\\").replace(/\\\\(eval code/g,\\\"(\\\"),t=a.match(/ (\\\\((.+):(\\\\d+):(\\\\d+)\\\\)$)/),i=(a=t?a.replace(t[0],\\\"\\\"):a).split(/\\\\s+/).slice(1),n=this.extractLocation(t?t[1]:i.pop()),s=i.join(\\\" \\\")||void 0,v=[\\\"eval\\\",\\\"<anonymous>\\\"].indexOf(n[0])>-1?void 0:n[0];return new e({functionName:s,fileName:v,lineNumber:n[1],columnNumber:n[2],source:r})}),this)},parseFFOrSafari:function(r){return r.stack.split(\\\"\\\\n\\\").filter((function(e){return!e.match(t)}),this).map((function(r){if(r.indexOf(\\\" > eval\\\")>-1&&(r=r.replace(/ line (\\\\d+)(?: > eval line \\\\d+)* > eval:\\\\d+:\\\\d+/g,\\\":$1\\\")),-1===r.indexOf(\\\"@\\\")&&-1===r.indexOf(\\\":\\\"))return new e({functionName:r});var a=/((.*\\\".+\\\"[^@]*)?[^@]*)(?:@)/,t=r.match(a),i=t&&t[1]?t[1]:void 0,n=this.extractLocation(r.replace(a,\\\"\\\"));return new e({functionName:i,fileName:n[0],lineNumber:n[1],columnNumber:n[2],source:r})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf(\\\"\\\\n\\\")>-1&&e.message.split(\\\"\\\\n\\\").length>e.stacktrace.split(\\\"\\\\n\\\").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(r){for(var a=/Line (\\\\d+).*script (?:in )?(\\\\S+)/i,t=r.message.split(\\\"\\\\n\\\"),i=[],n=2,s=t.length;n<s;n+=2){var v=a.exec(t[n]);v&&i.push(new e({fileName:v[2],lineNumber:v[1],source:t[n]}))}return i},parseOpera10:function(r){for(var a=/Line (\\\\d+).*script (?:in )?(\\\\S+)(?:: In function (\\\\S+))?$/i,t=r.stacktrace.split(\\\"\\\\n\\\"),i=[],n=0,s=t.length;n<s;n+=2){var v=a.exec(t[n]);v&&i.push(new e({functionName:v[3]||void 0,fileName:v[2],lineNumber:v[1],source:t[n]}))}return i},parseOpera11:function(a){return a.stack.split(\\\"\\\\n\\\").filter((function(e){return!!e.match(r)&&!e.match(/^Error created at/)}),this).map((function(r){var a,t=r.split(\\\"@\\\"),i=this.extractLocation(t.pop()),n=t.shift()||\\\"\\\",s=n.replace(/<anonymous function(: (\\\\w+))?>/,\\\"$2\\\").replace(/\\\\([^)]*\\\\)/g,\\\"\\\")||void 0;n.match(/\\\\(([^)]*)\\\\)/)&&(a=n.replace(/^[^(]+\\\\(([^)]*)\\\\)$/,\\\"$1\\\"));var v=void 0===a||\\\"[arguments not available]\\\"===a?void 0:a.split(\\\",\\\");return new e({functionName:s,args:v,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:r})}),this)}}})?t.apply(r,i):t)||(e.exports=n)}()},69:e=>{\\\"use strict\\\";function r(e,r){if(null!=e)return e;var a=new Error(void 0!==r?r:\\\"Got unexpected \\\"+e);throw a.framesToPop=1,a}e.exports=r,e.exports.default=r,Object.defineProperty(e.exports,\\\"__esModule\\\",{value:!0})},356:function(e,r){var a,t,i;!function(n,s){\\\"use strict\\\";t=[],void 0===(i=\\\"function\\\"==typeof(a=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function r(e){return function(){return this[e]}}var a=[\\\"isConstructor\\\",\\\"isEval\\\",\\\"isNative\\\",\\\"isToplevel\\\"],t=[\\\"columnNumber\\\",\\\"lineNumber\\\"],i=[\\\"fileName\\\",\\\"functionName\\\",\\\"source\\\"],n=a.concat(t,i,[\\\"args\\\"]);function s(r){if(r)for(var a=0;a<n.length;a++)void 0!==r[n[a]]&&this[\\\"set\\\"+e(n[a])](r[n[a]])}s.prototype={getArgs:function(){return this.args},setArgs:function(e){if(\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new TypeError(\\\"Args must be an Array\\\");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof s)this.evalOrigin=e;else{if(!(e instanceof Object))throw new TypeError(\\\"Eval Origin must be an Object or StackFrame\\\");this.evalOrigin=new s(e)}},toString:function(){var e=this.getFileName()||\\\"\\\",r=this.getLineNumber()||\\\"\\\",a=this.getColumnNumber()||\\\"\\\",t=this.getFunctionName()||\\\"\\\";return this.getIsEval()?e?\\\"[eval] (\\\"+e+\\\":\\\"+r+\\\":\\\"+a+\\\")\\\":\\\"[eval]:\\\"+r+\\\":\\\"+a:t?t+\\\" (\\\"+e+\\\":\\\"+r+\\\":\\\"+a+\\\")\\\":e+\\\":\\\"+r+\\\":\\\"+a}},s.fromString=function(e){var r=e.indexOf(\\\"(\\\"),a=e.lastIndexOf(\\\")\\\"),t=e.substring(0,r),i=e.substring(r+1,a).split(\\\",\\\"),n=e.substring(a+1);if(0===n.indexOf(\\\"@\\\"))var v=/@(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/.exec(n,\\\"\\\"),o=v[1],f=v[2],l=v[3];return new s({functionName:t,args:i||void 0,fileName:o,lineNumber:f||void 0,columnNumber:l||void 0})};for(var v=0;v<a.length;v++)s.prototype[\\\"get\\\"+e(a[v])]=r(a[v]),s.prototype[\\\"set\\\"+e(a[v])]=function(e){return function(r){this[e]=Boolean(r)}}(a[v]);for(var o=0;o<t.length;o++)s.prototype[\\\"get\\\"+e(t[o])]=r(t[o]),s.prototype[\\\"set\\\"+e(t[o])]=function(e){return function(r){if(a=r,isNaN(parseFloat(a))||!isFinite(a))throw new TypeError(e+\\\" must be a Number\\\");var a;this[e]=Number(r)}}(t[o]);for(var f=0;f<i.length;f++)s.prototype[\\\"get\\\"+e(i[f])]=r(i[f]),s.prototype[\\\"set\\\"+e(i[f])]=function(e){return function(r){this[e]=String(r)}}(i[f]);return s})?a.apply(r,t):a)||(e.exports=i)}()},853:e=>{var r=function(e){\\\"use strict\\\";var r,a=Object.prototype,t=a.hasOwnProperty,i=\\\"function\\\"==typeof Symbol?Symbol:{},n=i.iterator||\\\"@@iterator\\\",s=i.asyncIterator||\\\"@@asyncIterator\\\",v=i.toStringTag||\\\"@@toStringTag\\\";function o(e,r,a){return Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}),e[r]}try{o({},\\\"\\\")}catch(e){o=function(e,r,a){return e[r]=a}}function f(e,r,a,t){var i=r&&r.prototype instanceof d?r:d,n=Object.create(i.prototype),s=new O(t||[]);return n._invoke=function(e,r,a){var t=_;return function(i,n){if(t===u)throw new Error(\\\"Generator is already running\\\");if(t===c){if(\\\"throw\\\"===i)throw n;return T()}for(a.method=i,a.arg=n;;){var s=a.delegate;if(s){var v=A(s,a);if(v){if(v===h)continue;return v}}if(\\\"next\\\"===a.method)a.sent=a._sent=a.arg;else if(\\\"throw\\\"===a.method){if(t===_)throw t=c,a.arg;a.dispatchException(a.arg)}else\\\"return\\\"===a.method&&a.abrupt(\\\"return\\\",a.arg);t=u;var o=l(e,r,a);if(\\\"normal\\\"===o.type){if(t=a.done?c:S,o.arg===h)continue;return{value:o.arg,done:a.done}}\\\"throw\\\"===o.type&&(t=c,a.method=\\\"throw\\\",a.arg=o.arg)}}}(e,a,s),n}function l(e,r,a){try{return{type:\\\"normal\\\",arg:e.call(r,a)}}catch(e){return{type:\\\"throw\\\",arg:e}}}e.wrap=f;var _=\\\"suspendedStart\\\",S=\\\"suspendedYield\\\",u=\\\"executing\\\",c=\\\"completed\\\",h={};function d(){}function b(){}function p(){}var m={};m[n]=function(){return this};var k=Object.getPrototypeOf,w=k&&k(k(C([])));w&&w!==a&&t.call(w,n)&&(m=w);var g=p.prototype=d.prototype=Object.create(m);function H(e){[\\\"next\\\",\\\"throw\\\",\\\"return\\\"].forEach((function(r){o(e,r,(function(e){return this._invoke(r,e)}))}))}function M(e,r){function a(i,n,s,v){var o=l(e[i],e,n);if(\\\"throw\\\"!==o.type){var f=o.arg,_=f.value;return _&&\\\"object\\\"==typeof _&&t.call(_,\\\"__await\\\")?r.resolve(_.__await).then((function(e){a(\\\"next\\\",e,s,v)}),(function(e){a(\\\"throw\\\",e,s,v)})):r.resolve(_).then((function(e){f.value=e,s(f)}),(function(e){return a(\\\"throw\\\",e,s,v)}))}v(o.arg)}var i;this._invoke=function(e,t){function n(){return new r((function(r,i){a(e,t,r,i)}))}return i=i?i.then(n,n):n()}}function A(e,a){var t=e.iterator[a.method];if(t===r){if(a.delegate=null,\\\"throw\\\"===a.method){if(e.iterator.return&&(a.method=\\\"return\\\",a.arg=r,A(e,a),\\\"throw\\\"===a.method))return h;a.method=\\\"throw\\\",a.arg=new TypeError(\\\"The iterator does not provide a 'throw' method\\\")}return h}var i=l(t,e.iterator,a.arg);if(\\\"throw\\\"===i.type)return a.method=\\\"throw\\\",a.arg=i.arg,a.delegate=null,h;var n=i.arg;return n?n.done?(a[e.resultName]=n.value,a.next=e.nextLoc,\\\"return\\\"!==a.method&&(a.method=\\\"next\\\",a.arg=r),a.delegate=null,h):n:(a.method=\\\"throw\\\",a.arg=new TypeError(\\\"iterator result is not an object\\\"),a.delegate=null,h)}function y(e){var r={tryLoc:e[0]};1 in e&&(r.catchLoc=e[1]),2 in e&&(r.finallyLoc=e[2],r.afterLoc=e[3]),this.tryEntries.push(r)}function E(e){var r=e.completion||{};r.type=\\\"normal\\\",delete r.arg,e.completion=r}function O(e){this.tryEntries=[{tryLoc:\\\"root\\\"}],e.forEach(y,this),this.reset(!0)}function C(e){if(e){var a=e[n];if(a)return a.call(e);if(\\\"function\\\"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,s=function a(){for(;++i<e.length;)if(t.call(e,i))return a.value=e[i],a.done=!1,a;return a.value=r,a.done=!0,a};return s.next=s}}return{next:T}}function T(){return{value:r,done:!0}}return b.prototype=g.constructor=p,p.constructor=b,b.displayName=o(p,v,\\\"GeneratorFunction\\\"),e.isGeneratorFunction=function(e){var r=\\\"function\\\"==typeof e&&e.constructor;return!!r&&(r===b||\\\"GeneratorFunction\\\"===(r.displayName||r.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,o(e,v,\\\"GeneratorFunction\\\")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},H(M.prototype),M.prototype[s]=function(){return this},e.AsyncIterator=M,e.async=function(r,a,t,i,n){void 0===n&&(n=Promise);var s=new M(f(r,a,t,i),n);return e.isGeneratorFunction(a)?s:s.next().then((function(e){return e.done?e.value:s.next()}))},H(g),o(g,v,\\\"Generator\\\"),g[n]=function(){return this},g.toString=function(){return\\\"[object Generator]\\\"},e.keys=function(e){var r=[];for(var a in e)r.push(a);return r.reverse(),function a(){for(;r.length;){var t=r.pop();if(t in e)return a.value=t,a.done=!1,a}return a.done=!0,a}},e.values=C,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method=\\\"next\\\",this.arg=r,this.tryEntries.forEach(E),!e)for(var a in this)\\\"t\\\"===a.charAt(0)&&t.call(this,a)&&!isNaN(+a.slice(1))&&(this[a]=r)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\\\"throw\\\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var a=this;function i(t,i){return v.type=\\\"throw\\\",v.arg=e,a.next=t,i&&(a.method=\\\"next\\\",a.arg=r),!!i}for(var n=this.tryEntries.length-1;n>=0;--n){var s=this.tryEntries[n],v=s.completion;if(\\\"root\\\"===s.tryLoc)return i(\\\"end\\\");if(s.tryLoc<=this.prev){var o=t.call(s,\\\"catchLoc\\\"),f=t.call(s,\\\"finallyLoc\\\");if(o&&f){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(o){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!f)throw new Error(\\\"try statement without catch or finally\\\");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(e,r){for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&t.call(i,\\\"finallyLoc\\\")&&this.prev<i.finallyLoc){var n=i;break}}n&&(\\\"break\\\"===e||\\\"continue\\\"===e)&&n.tryLoc<=r&&r<=n.finallyLoc&&(n=null);var s=n?n.completion:{};return s.type=e,s.arg=r,n?(this.method=\\\"next\\\",this.next=n.finallyLoc,h):this.complete(s)},complete:function(e,r){if(\\\"throw\\\"===e.type)throw e.arg;return\\\"break\\\"===e.type||\\\"continue\\\"===e.type?this.next=e.arg:\\\"return\\\"===e.type?(this.rval=this.arg=e.arg,this.method=\\\"return\\\",this.next=\\\"end\\\"):\\\"normal\\\"===e.type&&r&&(this.next=r),h},finish:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.finallyLoc===e)return this.complete(a.completion,a.afterLoc),E(a),h}},catch:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc===e){var t=a.completion;if(\\\"throw\\\"===t.type){var i=t.arg;E(a)}return i}}throw new Error(\\\"illegal catch attempt\\\")},delegateYield:function(e,a,t){return this.delegate={iterator:C(e),resultName:a,nextLoc:t},\\\"next\\\"===this.method&&(this.arg=r),h}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function(\\\"r\\\",\\\"regeneratorRuntime = r\\\")(r)}}},r={};function a(t){var i=r[t];if(void 0!==i)return i.exports;var n=r[t]={exports:{}};return e[t].call(n.exports,n,n.exports,a),n.exports}a.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return a.d(r,{a:r}),r},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r);var t={};(()=>{\\\"use strict\\\";a.d(t,{importFile:()=>g}),a(853);var e=a(41);const r=(parseInt(\\\"22px\\\",10),parseInt(\\\"18px\\\",10),31),i=1;class n extends Error{}function s(e,r){if(e.length!==r.length)return!1;for(var a=0;a<e.length;a++)if(e[a]!==r[a])return!1;return!0}const v=function(e,r){var a;void 0===r&&(r=s);var t,i=[],n=!1;return function(){for(var s=[],v=0;v<arguments.length;v++)s[v]=arguments[v];return n&&a===this&&r(s,i)||(t=e.apply(this,s),n=!0,a=this,i=s),t}}((function(e,r,a=0){const t=r.batchUIDToMeasuresMap.get(e);if(null==t||0===t.length)throw Error(`Could not find measures with batch UID \\\"${e}\\\"`);const i=t[t.length-1],n=i.timestamp+i.duration;if(n<a)return[0,0];let s=a;for(let e=0;e<t.length;e++){const r=t[e];if(r.timestamp>=a){s=r.timestamp;break}}return[s,n]}));var o=a(715),f=a.n(o);const l=\\\"An event handler scheduled a big update with React. Consider using the Transition API to defer some of this work.\\\",_=\\\"A component suspended during an update which caused a fallback to be shown. Consider using the Transition API to avoid hiding components after they've been mounted.\\\";function S(e){const a=parseInt(e,10);if(a<0)return[];const t=[];let i=0;for(;i<=r;)1<<i&a&&t.push(i),i++;return t}let u=null;function c(e,r,a,t,i){const{batchUID:n,measureStack:s}=i,v=function(e){if(e.length>0){const{depth:r,type:a}=e[e.length-1];return\\\"render-idle\\\"===a?r:r+1}return 0}(s),o={type:e,batchUID:n,depth:v,lanes:a,timestamp:r,duration:0};i.measureStack.push({depth:v,measure:o,startTime:r,type:e});const f=t.batchUIDToMeasuresMap.get(n);null!=f?f.push(o):t.batchUIDToMeasuresMap.set(i.batchUID,[o]),a.forEach((e=>{t.laneToReactMeasureMap.get(e).push(o)}))}function h(e,r,a,t){if(0===t.length)return void console.error('Unexpected type \\\"%s\\\" completed at %sms while stack is empty.',e,r);const i=t[t.length-1];i.type!==e&&console.error('Unexpected type \\\"%s\\\" completed at %sms before \\\"%s\\\" completed.',e,r,i.type);const{measure:n,startTime:s}=t.pop();n||console.error('Could not find matching measure for type \\\"%s\\\".',e),n.duration=r-s}function d(e){null!==e.currentReactComponentMeasure&&console.error(\\\"Component measure started while another measure in progress:\\\",e.currentReactComponentMeasure)}function b(e,r){null===e.currentReactComponentMeasure?console.error(`Component measure type \\\"${r}\\\" stopped while no measure was in progress`):e.currentReactComponentMeasure.type!==r&&console.error(`Component measure type \\\"${r}\\\" stopped while type ${e.currentReactComponentMeasure.type} in progress`)}function p(e){const r=new Error;r.stack=e;const a=f().parse(r);return 1===a.length?a[0]:null}async function m(a){const t=function(r){let a;try{a=(0,e.importFromChromeTimeline)(r,\\\"react-devtools\\\")}catch(e){const r=new n(e.message);throw r.stack=e.stack,r}const t=a.profiles[0];return new e.Flamechart({getTotalWeight:t.getTotalWeight.bind(t),forEachCall:t.forEachCall.bind(t),formatValue:t.formatValue.bind(t),getColorBucketForFrame:()=>0}).getLayers().map((e=>e.map((({start:e,end:r,node:{frame:{name:a,file:t,line:i,col:n}}})=>({name:a,timestamp:e/1e3,duration:(r-e)/1e3,scriptUrl:t,locationLine:i,locationColumn:n})))))}(a),s=new Map;for(let e=0;e<r;e++)s.set(e,[]);const o={batchUIDToMeasuresMap:new Map,componentMeasures:[],duration:0,flamechart:t,internalModuleSourceToRanges:new Map,laneToLabelMap:new Map,laneToReactMeasureMap:s,nativeEvents:[],networkMeasures:[],otherUserTimingMarks:[],reactVersion:null,schedulingEvents:[],snapshots:[],snapshotHeight:0,startTime:0,suspenseEvents:[],thrownErrors:[]},f=(a=a.filter(Boolean).sort(((e,r)=>e.ts>r.ts?1:-1))).findIndex((e=>\\\"Profile\\\"===e.name));if(-1===f)return o;o.startTime=a[f].args.data.startTime,o.duration=(a[a.length-1].ts-o.startTime)/1e3;const m={asyncProcessingPromises:[],batchUID:0,currentReactComponentMeasure:null,internalModuleCurrentStackFrame:null,internalModuleStackStringSet:new Set,measureStack:[],nativeEventStack:[],nextRenderShouldGenerateNewBatchID:!0,potentialLongEvents:[],potentialLongNestedUpdate:null,potentialLongNestedUpdates:[],potentialSuspenseEventsOutsideOfTransition:[],requestIdToNetworkMeasureMap:new Map,uidCounter:0,unresolvedSuspenseEvents:new Map};if(a.forEach((e=>function(e,r,a){const{cat:t,name:s,ts:v,ph:o}=e,f=(v-r.startTime)/1e3;switch(t){case\\\"disabled-by-default-devtools.screenshot\\\":!function(e,r,a,t){const i={height:0,image:null,imageSource:`data:image/png;base64,${e.args.snapshot}`,timestamp:r,width:0};let n=null;t.asyncProcessingPromises.push(new Promise((e=>{n=e}))),fetch(i.imageSource).then((e=>e.blob())).then((e=>{createImageBitmap(e).then((e=>{i.height=e.height,i.width=e.width,n()}))})),a.snapshots.push(i)}(e,f,r,a);break;case\\\"devtools.timeline\\\":switch(s){case\\\"EventDispatch\\\":!function(e,r,a,t){const i=e.args.data,n=i.type;if(n.startsWith(\\\"react-\\\")){const e=i.stackTrace;if(e&&e[e.length-1].url.includes(\\\"/react-dom.\\\"))return}if(\\\"blur\\\"===n||\\\"click\\\"===n||\\\"input\\\"===n||n.startsWith(\\\"focus\\\")||n.startsWith(\\\"key\\\")||n.startsWith(\\\"mouse\\\")||n.startsWith(\\\"pointer\\\")){const i=e.dur/1e3;let s=0;for(;t.nativeEventStack.length>0;){const e=t.nativeEventStack[t.nativeEventStack.length-1];if(r<e.timestamp+e.duration){s=e.depth+1;break}t.nativeEventStack.pop()}const v={depth:s,duration:i,timestamp:r,type:n,warning:null};a.nativeEvents.push(v),t.nativeEventStack.push(v)}}(e,f,r,a);break;case\\\"ResourceFinish\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(n.finishTimestamp=r,0===n.firstReceivedDataTimestamp&&(n.firstReceivedDataTimestamp=r),0===n.lastReceivedDataTimestamp&&(n.lastReceivedDataTimestamp=r),t.requestIdToNetworkMeasureMap.delete(e.args.data.requestId))}(e,f,0,a);break;case\\\"ResourceReceivedData\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(0===n.firstReceivedDataTimestamp&&(n.firstReceivedDataTimestamp=r),n.lastReceivedDataTimestamp=r,n.finishTimestamp=r)}(e,f,0,a);break;case\\\"ResourceReceiveResponse\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(n.receiveResponseTimestamp=r)}(e,f,0,a);break;case\\\"ResourceSendRequest\\\":!function(e,r,a,t){const i=e.args.data,n=i.requestId,s=new Array(t.requestIdToNetworkMeasureMap.size+1).fill(!0);t.requestIdToNetworkMeasureMap.forEach((({depth:e})=>{s[e]=!1}));let v=0;for(let e=0;e<s.length;e++)if(s[e]){v=e;break}const o={depth:v,finishTimestamp:0,firstReceivedDataTimestamp:0,lastReceivedDataTimestamp:0,requestId:n,requestMethod:i.requestMethod,priority:i.priority,sendRequestTimestamp:r,receiveResponseTimestamp:0,url:i.url};t.requestIdToNetworkMeasureMap.set(n,o),a.networkMeasures.push(o),o.sendRequestTimestamp=r}(e,f,r,a)}break;case\\\"blink.user_timing\\\":if(s.startsWith(\\\"--react-version-\\\")){const[e]=s.slice(16).split(\\\"-\\\");r.reactVersion=e}else if(s.startsWith(\\\"--profiler-version-\\\")){const[e]=s.slice(19).split(\\\"-\\\");if(u=parseInt(e,10),u!==i)throw new n(`This version of profiling data (${e}) is not supported by the current profiler.`)}else if(s.startsWith(\\\"--react-lane-labels-\\\")){const[e]=s.slice(20).split(\\\"-\\\");!function(e,r){if(0===e.laneToLabelMap.size){const a=r.split(\\\",\\\");for(let r=0;r<a.length;r++)e.laneToLabelMap.set(r,a[r])}}(r,e)}else if(s.startsWith(\\\"--component-\\\"))!function(e,r,a,t){if(e.startsWith(\\\"--component-render-start-\\\")){const[a]=e.slice(25).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"render\\\",warning:null}}else if(\\\"--component-render-stop\\\"===e){if(b(t,\\\"render\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-layout-effect-mount-start-\\\")){const[a]=e.slice(38).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"layout-effect-mount\\\",warning:null}}else if(\\\"--component-layout-effect-mount-stop\\\"===e){if(b(t,\\\"layout-effect-mount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-layout-effect-unmount-start-\\\")){const[a]=e.slice(40).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"layout-effect-unmount\\\",warning:null}}else if(\\\"--component-layout-effect-unmount-stop\\\"===e){if(b(t,\\\"layout-effect-unmount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-passive-effect-mount-start-\\\")){const[a]=e.slice(39).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"passive-effect-mount\\\",warning:null}}else if(\\\"--component-passive-effect-mount-stop\\\"===e){if(b(t,\\\"passive-effect-mount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-passive-effect-unmount-start-\\\")){const[a]=e.slice(41).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"passive-effect-unmount\\\",warning:null}}else if(\\\"--component-passive-effect-unmount-stop\\\"===e&&(b(t,\\\"passive-effect-unmount\\\"),null!==t.currentReactComponentMeasure)){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}(s,f,r,a);else if(s.startsWith(\\\"--schedule-render-\\\")){const[e]=s.slice(18).split(\\\"-\\\");r.schedulingEvents.push({type:\\\"schedule-render\\\",lanes:S(e),timestamp:f,warning:null})}else if(s.startsWith(\\\"--schedule-forced-update-\\\")){const[e,t]=s.slice(25).split(\\\"-\\\"),i={type:\\\"schedule-force-update\\\",lanes:S(e),componentName:t,timestamp:f,warning:null};a.measureStack.find((({type:e})=>\\\"commit\\\"===e))&&(a.potentialLongNestedUpdate=i),r.schedulingEvents.push(i)}else if(s.startsWith(\\\"--schedule-state-update-\\\")){const[e,t]=s.slice(24).split(\\\"-\\\"),i={type:\\\"schedule-state-update\\\",lanes:S(e),componentName:t,timestamp:f,warning:null};a.measureStack.find((({type:e})=>\\\"commit\\\"===e))&&(a.potentialLongNestedUpdate=i),r.schedulingEvents.push(i)}else if(s.startsWith(\\\"--error-\\\")){const[e,a,t]=s.slice(8).split(\\\"-\\\");r.thrownErrors.push({componentName:e,message:t,phase:a,timestamp:f,type:\\\"thrown-error\\\"})}else if(s.startsWith(\\\"--suspense-suspend-\\\")){const[e,t,i,n,v]=s.slice(19).split(\\\"-\\\"),o=S(n),l=new Array(a.unresolvedSuspenseEvents.size+1).fill(!0);a.unresolvedSuspenseEvents.forEach((({depth:e})=>{l[e]=!1}));let _=0;for(let e=0;e<l.length;e++)if(l[e]){_=e;break}const u={componentName:t,depth:_,duration:null,id:e,phase:i,promiseName:v||null,resolution:\\\"unresolved\\\",timestamp:f,type:\\\"suspense\\\",warning:null};\\\"update\\\"===i&&a.potentialSuspenseEventsOutsideOfTransition.push([u,o]),r.suspenseEvents.push(u),a.unresolvedSuspenseEvents.set(e,u)}else if(s.startsWith(\\\"--suspense-resolved-\\\")){const[e]=s.slice(20).split(\\\"-\\\"),r=a.unresolvedSuspenseEvents.get(e);null!=r&&(a.unresolvedSuspenseEvents.delete(e),r.duration=f-r.timestamp,r.resolution=\\\"resolved\\\")}else if(s.startsWith(\\\"--suspense-rejected-\\\")){const[e]=s.slice(20).split(\\\"-\\\"),r=a.unresolvedSuspenseEvents.get(e);null!=r&&(a.unresolvedSuspenseEvents.delete(e),r.duration=f-r.timestamp,r.resolution=\\\"rejected\\\")}else if(s.startsWith(\\\"--render-start-\\\")){a.nextRenderShouldGenerateNewBatchID&&(a.nextRenderShouldGenerateNewBatchID=!1,a.batchUID=a.uidCounter++),null!==a.potentialLongNestedUpdate&&(a.potentialLongNestedUpdates.push([a.potentialLongNestedUpdate,a.batchUID]),a.potentialLongNestedUpdate=null);const[e]=s.slice(15).split(\\\"-\\\");!function(e,r){const a=r.length-1;if(a>=0){const t=r[a];if(void 0===t.stopTime&&t.type===e)throw new n(`Unexpected type \\\"${e}\\\" started before \\\"${t.type}\\\" completed.`)}}(\\\"render\\\",a.measureStack),\\\"render-idle\\\"!==function(e){if(e.length>0){const{type:r}=e[e.length-1];return r}return null}(a.measureStack)&&c(\\\"render-idle\\\",f,S(e),r,a),c(\\\"render\\\",f,S(e),r,a);for(let e=0;e<a.nativeEventStack.length;e++){const r=a.nativeEventStack[e];r.timestamp+r.duration>f&&a.potentialLongEvents.push([r,a.batchUID])}}else if(s.startsWith(\\\"--render-stop\\\")||s.startsWith(\\\"--render-yield\\\"))h(\\\"render\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--commit-start-\\\")){a.nextRenderShouldGenerateNewBatchID=!0;const[e]=s.slice(15).split(\\\"-\\\");c(\\\"commit\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--commit-stop\\\"))h(\\\"commit\\\",f,0,a.measureStack),h(\\\"render-idle\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--layout-effects-start-\\\")){const[e]=s.slice(23).split(\\\"-\\\");c(\\\"layout-effects\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--layout-effects-stop\\\"))h(\\\"layout-effects\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--passive-effects-start-\\\")){const[e]=s.slice(24).split(\\\"-\\\");c(\\\"passive-effects\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--passive-effects-stop\\\"))h(\\\"passive-effects\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--react-internal-module-start-\\\")){const e=s.slice(30);if(!a.internalModuleStackStringSet.has(e)){a.internalModuleStackStringSet.add(e);const r=p(e);a.internalModuleCurrentStackFrame=r}}else if(s.startsWith(\\\"--react-internal-module-stop-\\\")){const e=s.slice(29);if(!a.internalModuleStackStringSet.has(e)){a.internalModuleStackStringSet.add(e);const t=p(e);if(null!==t&&null!==a.internalModuleCurrentStackFrame){const e=a.internalModuleCurrentStackFrame;a.internalModuleCurrentStackFrame=null;const i=[e,t],n=r.internalModuleSourceToRanges.get(e.fileName);null==n?r.internalModuleSourceToRanges.set(e.fileName,[i]):n.push(i)}}}else if(\\\"R\\\"===o||\\\"n\\\"===o)r.otherUserTimingMarks.push({name:s,timestamp:f});else if(\\\"b\\\"===o);else if(\\\"e\\\"===o);else if(\\\"i\\\"!==o&&\\\"I\\\"!==o)throw new n(`Unrecognized event ${JSON.stringify(e)}! This is likely a bug in this profiler tool.`)}}(e,o,m))),null===u){if(0===o.schedulingEvents.length&&0===o.batchUIDToMeasuresMap.size)throw new n(\\\"No React marks were found in the provided profile. Please provide profiling data from an React application running in development or profiling mode.\\\");throw new n(\\\"This version of profiling data is not supported by the current profiler.\\\")}const{measureStack:k}=m;if(k.length>0&&console.error(\\\"Incomplete events or measures\\\",k),m.potentialLongEvents.forEach((([e,r])=>{const[a,t]=v(r,o,e.timestamp);t-a>20&&(e.warning=l)})),m.potentialLongNestedUpdates.forEach((([e,r])=>{const[a,t]=v(r,o);t-a>20&&e.lanes.some((e=>\\\"Transition\\\"===o.laneToLabelMap.get(e)))})),m.potentialSuspenseEventsOutsideOfTransition.forEach((([e,r])=>{r.some((e=>\\\"Transition\\\"===o.laneToLabelMap.get(e)))||(e.warning=_)})),await Promise.all(m.asyncProcessingPromises),o.snapshots.length>0){const e=o.snapshots[0];o.snapshotHeight=Math.min(e.height,60)}return o}var k=a(69),w=a.n(k);const g=async function(e){try{const r=await(e=>{if(!e.name.endsWith(\\\".json\\\"))throw new n(\\\"Invalid file type. Only JSON performance profiles are supported\\\");const r=new FileReader;return new Promise(((a,t)=>{r.onload=()=>{const e=w()(r.result);\\\"string\\\"==typeof e&&a(e),t(new n(\\\"Input file was not read as a string\\\"))},r.onerror=()=>t(r.error),r.readAsText(e)}))})(e),a=JSON.parse(r);if(0===a.length)throw new n(\\\"No profiling data found in file.\\\");return{status:\\\"SUCCESS\\\",processedData:await m(a)}}catch(e){return e instanceof n?{status:\\\"INVALID_PROFILE_ERROR\\\",error:e}:{status:\\\"UNEXPECTED_ERROR\\\",error:e}}};addEventListener(\\\"message\\\",(function(e){var r,a=e.data,i=a.type,n=a.method,s=a.id,v=a.params;\\\"RPC\\\"===i&&n&&((r=t[n])?Promise.resolve().then((function(){return r.apply(t,v)})):Promise.reject(\\\"No such method\\\")).then((function(e){postMessage({type:\\\"RPC\\\",id:s,result:e})})).catch((function(e){var r={message:e};e.stack&&(r.message=e.message,r.stack=e.stack,r.name=e.name),postMessage({type:\\\"RPC\\\",id:s,error:r})}))})),postMessage({type:\\\"RPC\\\",method:\\\"ready\\\"})})()})();\\n//# sourceMappingURL=importFile.worker.worker.js.map\"])), { name: \"[name].worker.js\" })\n\t\t\t\t\tURL.revokeObjectURL(URL.createObjectURL(new Blob([\"(()=>{var e={496:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.importFromOldV8CPUProfile=r.importFromChromeCPUProfile=r.importFromChromeTimeline=r.isChromeTimeline=void 0;const t=a(211),i=a(844),n=a(218),s=a(320);r.isChromeTimeline=function(e){if(!Array.isArray(e))return!1;if(e.length<1)return!1;const r=e[0];return\\\"pid\\\"in r&&\\\"tid\\\"in r&&\\\"ph\\\"in r&&\\\"cat\\\"in r&&!!e.find((e=>\\\"CpuProfile\\\"===e.name||\\\"Profile\\\"===e.name||\\\"ProfileChunk\\\"===e.name))},r.importFromChromeTimeline=function(e,r){const a=new Map,t=new Map,n=new Map;i.sortBy(e,(e=>e.ts));for(let r of e){if(\\\"CpuProfile\\\"===r.name){const e=`${r.pid}:${r.tid}`,i=r.id||e;a.set(i,r.args.data.cpuProfile),t.set(i,e)}if(\\\"Profile\\\"===r.name){const e=`${r.pid}:${r.tid}`;a.set(r.id||e,Object.assign({startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[]},r.args.data)),r.id&&t.set(r.id,`${r.pid}:${r.tid}`)}if(\\\"thread_name\\\"===r.name&&n.set(`${r.pid}:${r.tid}`,r.args.name),\\\"ProfileChunk\\\"===r.name){const e=`${r.pid}:${r.tid}`,t=a.get(r.id||e);if(t){const e=r.args.data;e.cpuProfile&&(e.cpuProfile.nodes&&(t.nodes=t.nodes.concat(e.cpuProfile.nodes)),e.cpuProfile.samples&&(t.samples=t.samples.concat(e.cpuProfile.samples))),e.timeDeltas&&(t.timeDeltas=t.timeDeltas.concat(e.timeDeltas)),null!=e.startTime&&(t.startTime=e.startTime),null!=e.endTime&&(t.endTime=e.endTime)}else console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${r.id||e}`)}}if(a.size>0){const e=[];let s=0;return i.itForEach(a.keys(),(i=>{let v=null,o=t.get(i);o&&(v=n.get(o)||null);const f=_(a.get(i));v&&a.size>1?(f.setName(`${r} - ${v}`),\\\"CrRendererMain\\\"===v&&(s=e.length)):f.setName(`${r}`),e.push(f)})),{name:r,indexToView:s,profiles:e}}throw new Error(\\\"Could not find CPU profile in Timeline\\\")};const v=new Map;function o(e){return i.getOrInsert(v,e,(e=>{const r=e.functionName||\\\"(anonymous)\\\",a=e.url,t=e.lineNumber,i=e.columnNumber;return{key:`${r}:${a}:${t}:${i}`,name:r,file:a,line:t,col:i}}))}function f(e){const{functionName:r,url:a}=e;return\\\"native dummy.js\\\"===a||\\\"(root)\\\"===r||\\\"(idle)\\\"===r}function l(e){return\\\"(garbage collector)\\\"===e||\\\"(program)\\\"===e}function _(e){const r=new t.CallTreeProfileBuilder(e.endTime-e.startTime),a=new Map;for(let r of e.nodes)a.set(r.id,r);for(let r of e.nodes)if(\\\"number\\\"==typeof r.parent&&(r.parent=a.get(r.parent)),r.children)for(let e of r.children){const t=a.get(e);t&&(t.parent=r)}const s=[],v=[];let _=e.timeDeltas[0],S=_,u=NaN;for(let r=0;r<e.samples.length;r++){const a=e.samples[r];a!=u&&(s.push(a),_<S?v.push(S):(v.push(_),S=_)),r===e.samples.length-1?isNaN(u)||(s.push(u),_<S?v.push(S):(v.push(_),S=_)):(_+=e.timeDeltas[r+1],u=a)}let c=[];for(let e=0;e<s.length;e++){const t=v[e],n=s[e];let _=a.get(n);if(!_)continue;let S=null;for(S=_;S&&-1===c.indexOf(S);S=l(S.callFrame.functionName)?i.lastOf(c):S.parent||null);for(;c.length>0&&i.lastOf(c)!=S;){const e=o(c.pop().callFrame);r.leaveFrame(e,t)}const u=[];for(let e=_;e&&e!=S&&!f(e.callFrame);e=l(e.callFrame.functionName)?i.lastOf(c):e.parent||null)u.push(e);u.reverse();for(let e of u)r.enterFrame(o(e.callFrame),t);c=c.concat(u)}for(let e=c.length-1;e>=0;e--)r.leaveFrame(o(c[e].callFrame),i.lastOf(v));return r.setValueFormatter(new n.TimeFormatter(\\\"microseconds\\\")),r.build()}r.importFromChromeCPUProfile=_,r.importFromOldV8CPUProfile=function(e){return _(s.chromeTreeToNodes(e))}},320:(e,r)=>{\\\"use strict\\\";function a(e){const r=[];return function e(a){r.push({id:a.id,callFrame:{columnNumber:0,functionName:a.functionName,lineNumber:a.lineNumber,scriptId:a.scriptId,url:a.url},hitCount:a.hitCount,children:a.children.map((e=>e.id))}),a.children.forEach(e)}(e),r}Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.chromeTreeToNodes=void 0,r.chromeTreeToNodes=function(e){return{samples:e.samples,startTime:1e6*e.startTime,endTime:1e6*e.endTime,nodes:a(e.head),timeDeltas:(r=e.timestamps,t=e.startTime,r.map(((e,a)=>e-(0===a?1e6*t:r[a-1]))))};var r,t}},765:(e,r)=>{\\\"use strict\\\";let a;Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.demangleCpp=void 0;const t=new Map;r.demangleCpp=function(e){if(e.startsWith(\\\"__Z\\\")){let r=t.get(e);void 0!==r||(a||(a=new Function(\\\"exports\\\",i)()),r=a(e.slice(1)),r=\\\"(null)\\\"===r?e:r,t.set(e,r)),e=r}return e};const i='\\\\nreturn function(){function r(r){eval.call(null,r)}function a(r){throw print(r+\\\":\\\\\\\\n\\\"+(new Error).stack),ke=!0,\\\"Assertion: \\\"+r}function e(r,e){r||a(\\\"Assertion failed: \\\"+e)}function i(r,a,i,v){function t(r,a){if(\\\"string\\\"==a){var e=Oe;return le.stackAlloc(r.length+1),A(r,e),e}return r}function f(r,a){return\\\"string\\\"==a?s(r):r}try{func=ce.Module[\\\"_\\\"+r]}catch(r){}e(func,\\\"Cannot call unknown function \\\"+r+\\\" (perhaps LLVM optimizations or closure removed it?)\\\");var _=0,n=v?v.map(function(r){return t(r,i[_++])}):[];return f(func.apply(null,n),a)}function v(r,a,e){return function(){return i(r,a,e,Array.prototype.slice.call(arguments))}}function t(r,e,i,v){switch(i=i||\\\"i8\\\",\\\"*\\\"===i[i.length-1]&&(i=\\\"i32\\\"),i){case\\\"i1\\\":Ae[r]=e;break;case\\\"i8\\\":Ae[r]=e;break;case\\\"i16\\\":ye[r>>1]=e;break;case\\\"i32\\\":Se[r>>2]=e;break;case\\\"i64\\\":Se[r>>2]=e;break;case\\\"float\\\":Ce[r>>2]=e;break;case\\\"double\\\":ze[0]=e,Se[r>>2]=xe[0],Se[r+4>>2]=xe[1];break;default:a(\\\"invalid type for setValue: \\\"+i)}}function f(r,e,i){switch(e=e||\\\"i8\\\",\\\"*\\\"===e[e.length-1]&&(e=\\\"i32\\\"),e){case\\\"i1\\\":return Ae[r];case\\\"i8\\\":return Ae[r];case\\\"i16\\\":return ye[r>>1];case\\\"i32\\\":return Se[r>>2];case\\\"i64\\\":return Se[r>>2];case\\\"float\\\":return Ce[r>>2];case\\\"double\\\":return xe[0]=Se[r>>2],xe[1]=Se[r+4>>2],ze[0];default:a(\\\"invalid type for setValue: \\\"+e)}return null}function _(r,a,e){var i,v;\\\"number\\\"==typeof r?(i=!0,v=r):(i=!1,v=r.length);var f=\\\"string\\\"==typeof a?a:null,_=[Jr,le.stackAlloc,le.staticAlloc][void 0===e?we:e](Math.max(v,f?1:a.length));if(i)return Fa(_,0,v),_;for(var s,n=0;n<v;){var o=r[n];\\\"function\\\"==typeof o&&(o=le.getFunctionIndex(o)),s=f||a[n],0!==s?(\\\"i64\\\"==s&&(s=\\\"i32\\\"),t(_+n,o,s),n+=le.getNativeTypeSize(s)):n++}return _}function s(r,a){for(var e,i=\\\"undefined\\\"==typeof a,v=\\\"\\\",t=0,f=String.fromCharCode(0);;){if(e=String.fromCharCode(ge[r+t]),i&&e==f)break;if(v+=e,t+=1,!i&&t==a)break}return v}function n(r){for(var a=\\\"\\\",e=0;e<r.length;e++)a+=String.fromCharCode(r[e]);return a}function o(r){return r+4095>>12<<12}function l(){for(;Le<=Ie;)Le=o(2*Le);var r=Ae,a=new ArrayBuffer(Le);Ae=new Int8Array(a),ye=new Int16Array(a),Se=new Int32Array(a),ge=new Uint8Array(a),me=new Uint16Array(a),Me=new Uint32Array(a),Ce=new Float32Array(a),Re=new Float64Array(a),Ae.set(r)}function b(r){for(;r.length>0;){var a=r.shift(),e=a.func;\\\"number\\\"==typeof e&&(e=pe[e]),e(void 0===a.arg?null:a.arg)}}function k(){b(Ve)}function u(){b(Be),be.print()}function c(r,a){return Array.prototype.slice.call(Ae.subarray(r,r+a))}function h(r,a){for(var e=new Uint8Array(a),i=0;i<a;++i)e[i]=Ae[r+i];return e.buffer}function d(r){for(var a=0;Ae[r+a];)a++;return a}function w(r,a){var e=d(r);a&&e++;var i=c(r,e);return a&&(i[e-1]=0),i}function p(r,a){for(var e=[],i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),e.push(v),i+=1}return a||e.push(0),e}function E(r){for(var a=[],e=0;e<r.length;e++){var i=r[e];i>255&&(i&=255),a.push(String.fromCharCode(i))}return a.join(\\\"\\\")}function A(r,a,e){for(var i=0;i<r.length;){var v=r.charCodeAt(i);v>255&&(v&=255),Ae[a+i]=v,i+=1}e||(Ae[a+i]=0)}function g(r,a,e,i){return r>=0?r:a<=32?2*Math.abs(1<<a-1)+r:Math.pow(2,a)+r}function y(r,a,e,i){if(r<=0)return r;var v=a<=32?Math.abs(1<<a-1):Math.pow(2,a-1);return r>=v&&(a<=32||r>v)&&(r=-2*v+r),r}function m(r,a,e){if(0==(0|r)|0==(0|a)|0==(0|e))var i=0;else{Se[r>>2]=0,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function S(r,a,e){if(0==(0|r)|(0|a)<0|0==(0|e))var i=0;else{Se[r>>2]=41,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function M(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=6,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function C(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=7,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function R(r,a){var e,i=0==(0|a);do if(i)var v=0;else{var e=(r+32|0)>>2,t=Se[e];if((0|t)>=(0|Se[r+36>>2])){var v=0;break}var f=(t<<2)+Se[r+28>>2]|0;Se[f>>2]=a;var _=Se[e]+1|0;Se[e]=_;var v=1}while(0);var v;return v}function T(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==95;do if(t){var f=i+2|0;if(Se[e]=f,Ae[v]<<24>>24!=90){var _=0;break}var s=O(r,a),_=s}else var _=0;while(0);var _;return _}function O(r,a){var e=r+12|0,i=Ae[Se[e>>2]];r:do if(i<<24>>24==71||i<<24>>24==84)var v=Tr(r),t=v;else{var f=Ar(r),_=0==(0|f)|0==(0|a);do if(!_){if(0!=(1&Se[r+8>>2]|0))break;var s=Me[f>>2],n=(s-25|0)>>>0<3;a:do if(n)for(var o=f;;){var o,l=Me[o+4>>2],b=Me[l>>2];if((b-25|0)>>>0>=3){var k=l,u=b;break a}var o=l}else var k=f,u=s;while(0);var u,k;if(2!=(0|u)){var t=k;break r}var c=k+8|0,h=Me[c>>2],d=(Se[h>>2]-25|0)>>>0<3;a:do if(d)for(var w=h;;){var w,p=Me[w+4>>2];if((Se[p>>2]-25|0)>>>0>=3){var E=p;break a}var w=p}else var E=h;while(0);var E;Se[c>>2]=E;var t=k;break r}while(0);var A=Ae[Se[e>>2]];if(A<<24>>24==0||A<<24>>24==69){var t=f;break}var g=Or(f),y=Sr(r,g),m=D(r,3,f,y),t=m}while(0);var t;return t}function N(r){var a,e,i=Oe;Oe+=4;var v=i,e=v>>2,a=(r+12|0)>>2,t=Me[a],f=Ae[t],_=f<<24>>24;r:do if(f<<24>>24==114||f<<24>>24==86||f<<24>>24==75){var s=I(r,v,0);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=Se[e],b=R(r,l);if(0==(0|b)){var n=0;break}var n=Se[e]}else{do{if(97==(0|_)||98==(0|_)||99==(0|_)||100==(0|_)||101==(0|_)||102==(0|_)||103==(0|_)||104==(0|_)||105==(0|_)||106==(0|_)||108==(0|_)||109==(0|_)||110==(0|_)||111==(0|_)||115==(0|_)||116==(0|_)||118==(0|_)||119==(0|_)||120==(0|_)||121==(0|_)||122==(0|_)){var k=ai+20*(_-97)|0,u=P(r,k);Se[e]=u;var c=r+48|0,h=Se[c>>2]+Se[Se[u+4>>2]+4>>2]|0;Se[c>>2]=h;var d=Se[a]+1|0;Se[a]=d;var n=u;break r}if(117==(0|_)){Se[a]=t+1|0;var w=L(r),p=D(r,34,w,0);Se[e]=p;var E=p}else if(70==(0|_)){var A=F(r);Se[e]=A;var E=A}else if(48==(0|_)||49==(0|_)||50==(0|_)||51==(0|_)||52==(0|_)||53==(0|_)||54==(0|_)||55==(0|_)||56==(0|_)||57==(0|_)||78==(0|_)||90==(0|_)){var g=X(r);Se[e]=g;var E=g}else if(65==(0|_)){var y=j(r);Se[e]=y;var E=y}else if(77==(0|_)){var m=U(r);Se[e]=m;var E=m}else if(84==(0|_)){var S=x(r);if(Se[e]=S,Ae[Se[a]]<<24>>24!=73){var E=S;break}var M=R(r,S);if(0==(0|M)){var n=0;break r}var C=Se[e],T=z(r),O=D(r,4,C,T);Se[e]=O;var E=O}else if(83==(0|_)){var B=ge[t+1|0];if((B-48&255&255)<10|B<<24>>24==95|(B-65&255&255)<26){var H=V(r,0);if(Se[e]=H,Ae[Se[a]]<<24>>24!=73){var n=H;break r}var K=z(r),Y=D(r,4,H,K);Se[e]=Y;var E=Y}else{var G=X(r);if(Se[e]=G,0==(0|G)){var E=0;break}if(21==(0|Se[G>>2])){var n=G;break r}var E=G}}else if(80==(0|_)){Se[a]=t+1|0;var W=N(r),Z=D(r,29,W,0);Se[e]=Z;var E=Z}else if(82==(0|_)){Se[a]=t+1|0;var Q=N(r),q=D(r,30,Q,0);Se[e]=q;var E=q}else if(67==(0|_)){Se[a]=t+1|0;var $=N(r),J=D(r,31,$,0);Se[e]=J;var E=J}else if(71==(0|_)){Se[a]=t+1|0;var rr=N(r),ar=D(r,32,rr,0);Se[e]=ar;var E=ar}else{if(85!=(0|_)){var n=0;break r}Se[a]=t+1|0;var er=L(r);Se[e]=er;var ir=N(r),vr=Se[e],tr=D(r,28,ir,vr);Se[e]=tr;var E=tr}}while(0);var E,fr=R(r,E);if(0==(0|fr)){var n=0;break}var n=Se[e]}while(0);var n;return Oe=i,n}function I(r,a,e){for(var i,v=r+12|0,t=0!=(0|e),f=t?25:22,i=(r+48|0)>>2,_=t?26:23,s=t?27:24,n=a;;){var n,o=Se[v>>2],l=Ae[o];if(l<<24>>24!=114&&l<<24>>24!=86&&l<<24>>24!=75){var b=n;break}var k=o+1|0;if(Se[v>>2]=k,l<<24>>24==114){var u=Se[i]+9|0;Se[i]=u;var c=f}else if(l<<24>>24==86){var h=Se[i]+9|0;Se[i]=h;var c=_}else{var d=Se[i]+6|0;Se[i]=d;var c=s}var c,w=D(r,c,0,0);if(Se[n>>2]=w,0==(0|w)){var b=0;break}var n=w+4|0}var b;return b}function P(r,a){var e=0==(0|a);do if(e)var i=0;else{var v=J(r);if(0==(0|v)){var i=0;break}Se[v>>2]=33,Se[v+4>>2]=a;var i=v}while(0);var i;return i}function D(r,a,e,i){var v,t;do{if(1==(0|a)||2==(0|a)||3==(0|a)||4==(0|a)||10==(0|a)||28==(0|a)||37==(0|a)||43==(0|a)||44==(0|a)||45==(0|a)||46==(0|a)||47==(0|a)||48==(0|a)||49==(0|a)||50==(0|a)){if(0==(0|e)|0==(0|i)){var f=0;t=7;break}t=5;break}if(8==(0|a)||9==(0|a)||11==(0|a)||12==(0|a)||13==(0|a)||14==(0|a)||15==(0|a)||16==(0|a)||17==(0|a)||18==(0|a)||19==(0|a)||20==(0|a)||29==(0|a)||30==(0|a)||31==(0|a)||32==(0|a)||34==(0|a)||38==(0|a)||39==(0|a)||42==(0|a)){if(0==(0|e)){var f=0;t=7;break}t=5;break}if(36==(0|a)){if(0==(0|i)){var f=0;t=7;break}t=5;break}if(35==(0|a)||22==(0|a)||23==(0|a)||24==(0|a)||25==(0|a)||26==(0|a)||27==(0|a))t=5;else{var f=0;t=7}}while(0);do if(5==t){var _=J(r),v=_>>2;if(0==(0|_)){var f=0;break}Se[v]=a,Se[v+1]=e,Se[v+2]=i;var f=_}while(0);var f;return f}function L(r){var a=sr(r);if((0|a)<1)var e=0;else{var i=Rr(r,a);Se[r+44>>2]=i;var e=i}var e;return e}function F(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;if(Se[a]=i,Ae[e]<<24>>24==70){if(Ae[i]<<24>>24==89){var v=e+2|0;Se[a]=v}var t=Sr(r,1),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else var n=0;var n;return n}function X(r){var a=Ar(r);return a}function j(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==65;do if(v){var t=Ae[i];if(t<<24>>24==95)var f=0;else if((t-48&255&255)<10){for(var _=i;;){var _,s=_+1|0;if(Se[a]=s,(Ae[s]-48&255&255)>=10)break;var _=s}var n=s-i|0,o=lr(r,i,n);if(0==(0|o)){var l=0;break}var f=o}else{var b=nr(r);if(0==(0|b)){var l=0;break}var f=b}var f,k=Se[a],u=k+1|0;if(Se[a]=u,Ae[k]<<24>>24!=95){var l=0;break}var c=N(r),h=D(r,36,f,c),l=h}else var l=0;while(0);var l;return l}function U(r){var a=Oe;Oe+=4;var e=a,i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24==77;r:do if(f){var _=N(r),s=I(r,e,1);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=(0|s)==(0|e);do if(!l){if(35==(0|Se[o>>2]))break;var b=Se[e>>2],k=R(r,b);if(0==(0|k)){var n=0;break r}}while(0);var u=Se[e>>2],c=D(r,37,_,u),n=c}else var n=0;while(0);var n;return Oe=a,n}function x(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==84;do if(v){if(Ae[i]<<24>>24==95)var t=0,f=i;else{var _=sr(r);if((0|_)<0){var s=0;break}var t=_+1|0,f=Se[a]}var f,t;if(Se[a]=f+1|0,Ae[f]<<24>>24!=95){var s=0;break}var n=r+40|0,o=Se[n>>2]+1|0;Se[n>>2]=o;var l=Er(r,t),s=l}else var s=0;while(0);var s;return s}function z(r){var a,e=Oe;Oe+=4;var i=e,v=r+44|0,t=Se[v>>2],a=(r+12|0)>>2,f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==73;r:do if(s){Se[i>>2]=0;for(var n=i;;){var n,o=_r(r);if(0==(0|o)){var l=0;break r}var b=D(r,39,o,0);if(Se[n>>2]=b,0==(0|b)){var l=0;break r}var k=Se[a];if(Ae[k]<<24>>24==69)break;var n=b+8|0}var u=k+1|0;Se[a]=u,Se[v>>2]=t;var l=Se[i>>2]}else var l=0;while(0);var l;return Oe=e,l}function V(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==83;r:do if(t){var f=i+2|0;Se[e]=f;var _=ge[v];if(_<<24>>24==95)var s=0;else{if(!((_-48&255&255)<10|(_-65&255&255)<26)){var n=8&Se[r+8>>2],o=n>>>3,l=0!=(0|n)|0==(0|a);do if(l)var b=o;else{if((Ae[f]-67&255&255)>=2){var b=o;break}var b=1}while(0);for(var b,k=0|ei;;){var k;if(k>>>0>=(ei+196|0)>>>0){var u=0;break r}if(_<<24>>24==Ae[0|k]<<24>>24)break;var k=k+28|0}var c=Se[k+20>>2];if(0!=(0|c)){var h=Se[k+24>>2],d=fr(r,c,h);Se[r+44>>2]=d}if(0==(0|b))var w=k+8|0,p=k+4|0;else var w=k+16|0,p=k+12|0;var p,w,E=Se[w>>2],A=Se[p>>2],g=r+48|0,y=Se[g>>2]+E|0;Se[g>>2]=y;var m=fr(r,A,E),u=m;break}for(var S=_,M=0,C=f;;){var C,M,S;if((S-48&255&255)<10)var R=36*M-48|0;else{if((S-65&255&255)>=26){var u=0;break r}var R=36*M-55|0}var R,T=(S<<24>>24)+R|0;if((0|T)<0){var u=0;break r}var O=C+1|0;Se[e]=O;var N=ge[C];if(N<<24>>24==95)break;var S=N,M=T,C=O}var s=T+1|0}var s;if((0|s)>=(0|Se[r+32>>2])){var u=0;break}var I=r+40|0,P=Se[I>>2]+1|0;Se[I>>2]=P;var u=Se[Se[r+28>>2]+(s<<2)>>2]}else var u=0;while(0);var u;return u}function B(r,a,e,i){var v,t,f,_,s=Oe;Oe+=28;var n,o=s,_=o>>2;Se[_]=r;var l=e+1|0,f=(o+12|0)>>2;Se[f]=l;var b=Jr(l),t=(o+4|0)>>2;if(Se[t]=b,0==(0|b))var k=0,u=1;else{var v=(o+8|0)>>2;Se[v]=0,Se[_+4]=0,Se[_+5]=0;var c=o+24|0;Se[c>>2]=0,H(o,a);var h=Me[t],d=0==(0|h);do{if(!d){var w=Me[v];if(w>>>0>=Me[f]>>>0){n=5;break}Se[v]=w+1|0,Ae[h+w|0]=0,n=6;break}n=5}while(0);5==n&&Y(o,0);var p=Se[t],E=0==(0|p)?Se[c>>2]:Se[f],k=p,u=E}var u,k;return Se[i>>2]=u,Oe=s,k}function H(r,a){var e,i,v,t,f,_,s,n,o,l,b,k,u,c,h,d,w,p,E,A,g,y,m,S,M,C,R,T,O,N,I,P,D,L,F,X,j,U,x,z,V,B,K,G,W,J,vr,tr,fr,_r,sr,nr,or,lr,br,kr,ur,cr,hr,dr,wr,pr=a>>2,Er=r>>2,Ar=Oe;Oe+=184;var gr,yr=Ar,wr=yr>>2,mr=Ar+64,dr=mr>>2,Sr=Ar+72,Mr=Ar+88,Cr=Ar+104,hr=Cr>>2,Rr=Ar+168,Tr=0==(0|a);r:do if(Tr)Z(r);else{var cr=(r+4|0)>>2,Or=Me[cr];if(0==(0|Or))break;var Nr=0|a,Ir=Me[Nr>>2];a:do{if(0==(0|Ir)){if(0!=(4&Se[Er]|0)){var Pr=Se[pr+1],Dr=Se[pr+2];q(r,Pr,Dr);break r}var ur=(r+8|0)>>2,Lr=Me[ur],Fr=a+8|0,Xr=Me[Fr>>2];if((Xr+Lr|0)>>>0>Me[Er+3]>>>0){var jr=Se[pr+1];Q(r,jr,Xr);break r}var Ur=Or+Lr|0,xr=Se[pr+1];Pa(Ur,xr,Xr,1);var zr=Se[ur]+Se[Fr>>2]|0;Se[ur]=zr;break r}if(1==(0|Ir)||2==(0|Ir)){var Vr=Se[pr+1];H(r,Vr);var Br=0==(4&Se[Er]|0),Hr=Me[cr],Kr=0!=(0|Hr);e:do if(Br){do if(Kr){var kr=(r+8|0)>>2,Yr=Me[kr];if((Yr+2|0)>>>0>Me[Er+3]>>>0)break;var Gr=Hr+Yr|0;oe=14906,Ae[Gr]=255&oe,oe>>=8,Ae[Gr+1]=255&oe;var Wr=Se[kr]+2|0;Se[kr]=Wr;break e}while(0);Q(r,0|He.__str120,2)}else{do if(Kr){var Zr=r+8|0,Qr=Me[Zr>>2];if(Qr>>>0>=Me[Er+3]>>>0)break;Se[Zr>>2]=Qr+1|0,Ae[Hr+Qr|0]=46;break e}while(0);Y(r,46)}while(0);var qr=Se[pr+2];H(r,qr);break r}if(3==(0|Ir)){for(var br=(r+20|0)>>2,$r=Me[br],lr=(r+16|0)>>2,Jr=a,ra=0,aa=$r;;){var aa,ra,Jr,ea=Me[Jr+4>>2];if(0==(0|ea)){var ia=ra,va=0;gr=33;break}if(ra>>>0>3){Z(r);break r}var ta=(ra<<4)+yr|0;Se[ta>>2]=aa,Se[br]=ta,Se[((ra<<4)+4>>2)+wr]=ea,Se[((ra<<4)+8>>2)+wr]=0;var fa=Me[lr];Se[((ra<<4)+12>>2)+wr]=fa;var _a=ra+1|0,sa=0|ea,na=Me[sa>>2];if((na-25|0)>>>0>=3){gr=25;break}var Jr=ea,ra=_a,aa=ta}e:do if(25==gr){if(4==(0|na)){Se[dr]=fa,Se[lr]=mr,Se[dr+1]=ea;var oa=Se[sa>>2],la=mr}else var oa=na,la=fa;var la,oa;if(2!=(0|oa)){var ia=_a,va=sa;break}for(var ba=_a,ka=ea+8|0;;){var ka,ba,ua=Me[ka>>2];if((Se[ua>>2]-25|0)>>>0>=3){var ia=ba,va=sa;break e}if(ba>>>0>3)break;var ca=(ba<<4)+yr|0,ha=ba-1|0,da=(ha<<4)+yr|0,or=ca>>2,nr=da>>2;Se[or]=Se[nr],Se[or+1]=Se[nr+1],Se[or+2]=Se[nr+2],Se[or+3]=Se[nr+3],Se[ca>>2]=da,Se[br]=ca,Se[((ha<<4)+4>>2)+wr]=ua,Se[((ha<<4)+8>>2)+wr]=0,Se[((ha<<4)+12>>2)+wr]=la;var ba=ba+1|0,ka=ua+4|0}Z(r);break r}while(0);var va,ia,wa=Se[pr+2];if(H(r,wa),4==(0|Se[va>>2])){var pa=Se[dr];Se[lr]=pa}var Ea=0==(0|ia);e:do if(!Ea)for(var Aa=r+8|0,ga=r+12|0,ya=ia;;){var ya,ma=ya-1|0;if(0==(0|Se[((ma<<4)+8>>2)+wr])){var Sa=Me[cr],Ma=0==(0|Sa);do{if(!Ma){var Ca=Me[Aa>>2];if(Ca>>>0>=Me[ga>>2]>>>0){gr=41;break}Se[Aa>>2]=Ca+1|0,Ae[Sa+Ca|0]=32,gr=42;break}gr=41}while(0);41==gr&&Y(r,32);var Ra=Se[((ma<<4)+4>>2)+wr];$(r,Ra)}if(0==(0|ma))break e;var ya=ma}while(0);Se[br]=$r;break r}if(4==(0|Ir)){var sr=(r+20|0)>>2,Ta=Se[sr];Se[sr]=0;var Oa=Se[pr+1];H(r,Oa);var Na=Me[cr],Ia=0==(0|Na);do{if(!Ia){var _r=(r+8|0)>>2,Da=Me[_r],La=0==(0|Da);do if(!La){if(Ae[Na+(Da-1)|0]<<24>>24!=60)break;Da>>>0<Me[Er+3]>>>0?(Se[_r]=Da+1|0,Ae[Na+Da|0]=32):Y(r,32)}while(0);var Fa=Me[cr];if(0==(0|Fa)){gr=54;break}var Xa=Me[_r];if(Xa>>>0>=Me[Er+3]>>>0){gr=54;break}Se[_r]=Xa+1|0,Ae[Fa+Xa|0]=60,gr=55;break}gr=54}while(0);54==gr&&Y(r,60);var ja=Se[pr+2];H(r,ja);var Ua=Me[cr],xa=0==(0|Ua);do{if(!xa){var fr=(r+8|0)>>2,za=Me[fr],Va=0==(0|za);do if(!Va){if(Ae[Ua+(za-1)|0]<<24>>24!=62)break;za>>>0<Me[Er+3]>>>0?(Se[fr]=za+1|0,Ae[Ua+za|0]=32):Y(r,32)}while(0);var Ba=Me[cr];if(0==(0|Ba)){gr=64;break}var Ha=Me[fr];if(Ha>>>0>=Me[Er+3]>>>0){gr=64;break}Se[fr]=Ha+1|0,Ae[Ba+Ha|0]=62,gr=65;break}gr=64}while(0);64==gr&&Y(r,62),Se[sr]=Ta;break r}if(5==(0|Ir)){var tr=(r+16|0)>>2,Ka=Me[tr];if(0==(0|Ka)){Z(r);break r}for(var Ya=Se[pr+1],Ga=Se[Ka+4>>2];;){var Ga,Ya,Wa=Se[Ga+8>>2];if(0==(0|Wa))break;if(39!=(0|Se[Wa>>2])){Z(r);break r}if((0|Ya)<1){if(0!=(0|Ya))break;var Za=Se[Ka>>2];Se[tr]=Za;var Qa=Se[Wa+4>>2];H(r,Qa),Se[tr]=Ka;break r}var Ya=Ya-1|0,Ga=Wa}Z(r);break r}if(6==(0|Ir)){var qa=Se[pr+2];H(r,qa);break r}if(7==(0|Ir)){var $a=r+8|0,Ja=Me[$a>>2];Ja>>>0<Me[Er+3]>>>0?(Se[$a>>2]=Ja+1|0,Ae[Or+Ja|0]=126):Y(r,126);var re=Se[pr+2];H(r,re);break r}if(8==(0|Ir)){var vr=(r+8|0)>>2,ae=Me[vr];if((ae+11|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str121,11);else{for(var ee=Or+ae|0,ie=0|He.__str121,ve=ee,te=ie+11;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var fe=Se[vr]+11|0;Se[vr]=fe}var _e=Se[pr+1];H(r,_e);break r}if(9==(0|Ir)){var J=(r+8|0)>>2,se=Me[J];if((se+8|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str122,8);else{var ne=Or+se|0,le=0|ne;oe=542397526,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=ne+4|0;oe=544370534,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var ke=Se[J]+8|0;Se[J]=ke}var ue=Se[pr+1];H(r,ue);break r}if(10==(0|Ir)){var W=(r+8|0)>>2,ce=Me[W],he=r+12|0;if((ce+24|0)>>>0>Me[he>>2]>>>0)Q(r,0|He.__str123,24);else{var de=Or+ce|0;Pa(de,0|He.__str123,24,1);var we=Se[W]+24|0;Se[W]=we}var pe=Se[pr+1];H(r,pe);var Ee=Me[cr],ge=0==(0|Ee);do{if(!ge){var ye=Me[W];if((ye+4|0)>>>0>Me[he>>2]>>>0){gr=96;break}var me=Ee+ye|0;oe=762210605,Ae[me]=255&oe,oe>>=8,Ae[me+1]=255&oe,oe>>=8,Ae[me+2]=255&oe,oe>>=8,Ae[me+3]=255&oe;var Ce=Se[W]+4|0;Se[W]=Ce,gr=97;break}gr=96}while(0);96==gr&&Q(r,0|He.__str124,4);var Re=Se[pr+2];H(r,Re);break r}if(11==(0|Ir)){var G=(r+8|0)>>2,Te=Me[G];if((Te+13|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str125,13);else{for(var Ne=Or+Te|0,ie=0|He.__str125,ve=Ne,te=ie+13;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ie=Se[G]+13|0;Se[G]=Ie}var Pe=Se[pr+1];H(r,Pe);break r}if(12==(0|Ir)){var K=(r+8|0)>>2,De=Me[K];if((De+18|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str126,18);else{for(var Le=Or+De|0,ie=0|He.__str126,ve=Le,te=ie+18;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Fe=Se[K]+18|0;Se[K]=Fe}var Xe=Se[pr+1];H(r,Xe);break r}if(13==(0|Ir)){var B=(r+8|0)>>2,je=Me[B];if((je+16|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str127,16);else{for(var Ue=Or+je|0,ie=0|He.__str127,ve=Ue,te=ie+16;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var xe=Se[B]+16|0;Se[B]=xe}var ze=Se[pr+1];H(r,ze);break r}if(14==(0|Ir)){var V=(r+8|0)>>2,Ve=Me[V];if((Ve+21|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str128,21);else{var Be=Or+Ve|0;Pa(Be,0|He.__str128,21,1);var Ke=Se[V]+21|0;Se[V]=Ke}var Ye=Se[pr+1];H(r,Ye);break r}if(15==(0|Ir)){var z=(r+8|0)>>2,Ge=Me[z];if((Ge+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str129,17);else{for(var We=Or+Ge|0,ie=0|He.__str129,ve=We,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var Ze=Se[z]+17|0;Se[z]=Ze}var Qe=Se[pr+1];H(r,Qe);break r}if(16==(0|Ir)){var x=(r+8|0)>>2,qe=Me[x];if((qe+26|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str130,26);else{var $e=Or+qe|0;Pa($e,0|He.__str130,26,1);var Je=Se[x]+26|0;Se[x]=Je}var ri=Se[pr+1];H(r,ri);break r}if(17==(0|Ir)){var U=(r+8|0)>>2,ai=Me[U];if((ai+15|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str131,15);else{for(var ei=Or+ai|0,ie=0|He.__str131,ve=ei,te=ie+15;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ii=Se[U]+15|0;Se[U]=ii}var vi=Se[pr+1];H(r,vi);break r}if(18==(0|Ir)){var j=(r+8|0)>>2,ti=Me[j];if((ti+19|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str132,19);else{for(var fi=Or+ti|0,ie=0|He.__str132,ve=fi,te=ie+19;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var _i=Se[j]+19|0;Se[j]=_i}var si=Se[pr+1];H(r,si);break r}if(19==(0|Ir)){var X=(r+8|0)>>2,ni=Me[X];if((ni+24|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str133,24);else{var oi=Or+ni|0;Pa(oi,0|He.__str133,24,1);var li=Se[X]+24|0;Se[X]=li}var bi=Se[pr+1];H(r,bi);break r}if(20==(0|Ir)){var F=(r+8|0)>>2,ki=Me[F];if((ki+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str134,17);else{for(var ui=Or+ki|0,ie=0|He.__str134,ve=ui,te=ie+17;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var ci=Se[F]+17|0;Se[F]=ci}var hi=Se[pr+1];H(r,hi);break r}if(21==(0|Ir)){var L=(r+8|0)>>2,di=Me[L],wi=a+8|0,pi=Me[wi>>2];if((pi+di|0)>>>0>Me[Er+3]>>>0){var Ei=Se[pr+1];Q(r,Ei,pi);break r}var Ai=Or+di|0,gi=Se[pr+1];Pa(Ai,gi,pi,1);var yi=Se[L]+Se[wi>>2]|0;Se[L]=yi;break r}if(22==(0|Ir)||23==(0|Ir)||24==(0|Ir)){for(var mi=r+20|0;;){var mi,Si=Me[mi>>2];if(0==(0|Si))break a;if(0==(0|Se[Si+8>>2])){var Mi=Me[Se[Si+4>>2]>>2];if((Mi-22|0)>>>0>=3)break a;if((0|Mi)==(0|Ir))break}var mi=0|Si}var Ci=Se[pr+1];H(r,Ci);break r}if(25!=(0|Ir)&&26!=(0|Ir)&&27!=(0|Ir)&&28!=(0|Ir)&&29!=(0|Ir)&&30!=(0|Ir)&&31!=(0|Ir)&&32!=(0|Ir)){if(33==(0|Ir)){var D=(r+8|0)>>2,Ri=Me[D],P=(a+4|0)>>2,I=Me[P]>>2;if(0==(4&Se[Er]|0)){var Ti=Me[I+1];if((Ti+Ri|0)>>>0>Me[Er+3]>>>0){var Oi=Se[I];Q(r,Oi,Ti);break r}var Ni=Or+Ri|0,Ii=Se[I];Pa(Ni,Ii,Ti,1);var Pi=Se[D]+Se[Se[P]+4>>2]|0;Se[D]=Pi;break r}var Di=Me[I+3];if((Di+Ri|0)>>>0>Me[Er+3]>>>0){var Li=Se[I+2];Q(r,Li,Di);break r}var Fi=Or+Ri|0,Xi=Se[I+2];Pa(Fi,Xi,Di,1);var ji=Se[D]+Se[Se[P]+12>>2]|0;Se[D]=ji;break r}if(34==(0|Ir)){var Ui=Se[pr+1];H(r,Ui);break r}if(35==(0|Ir)){var N=(0|r)>>2;if(0!=(32&Se[N]|0)){var xi=Se[Er+5];rr(r,a,xi)}var zi=a+4|0,Vi=0==(0|Se[zi>>2]);e:do if(!Vi){var O=(r+20|0)>>2,Bi=Se[O],Hi=0|Mr;Se[Hi>>2]=Bi,Se[O]=Mr,Se[Mr+4>>2]=a;var Ki=Mr+8|0;Se[Ki>>2]=0;var Yi=Se[Er+4];Se[Mr+12>>2]=Yi;var Gi=Se[zi>>2];H(r,Gi);var Wi=Se[Hi>>2];if(Se[O]=Wi,0!=(0|Se[Ki>>2]))break r;if(0!=(32&Se[N]|0))break;var Zi=Me[cr],Qi=0==(0|Zi);do if(!Qi){var qi=r+8|0,$i=Me[qi>>2];if($i>>>0>=Me[Er+3]>>>0)break;Se[qi>>2]=$i+1|0,Ae[Zi+$i|0]=32;break e}while(0);Y(r,32)}while(0);if(0!=(32&Se[N]|0))break r;var Ji=Se[Er+5];rr(r,a,Ji);break r}if(36==(0|Ir)){var T=(r+20|0)>>2,rv=Me[T],av=0|Cr;Se[hr]=rv,Se[T]=av,Se[hr+1]=a;var ev=Cr+8|0;Se[ev>>2]=0;var iv=Se[Er+4];Se[hr+3]=iv;for(var vv=rv,tv=1;;){var tv,vv;if(0==(0|vv))break;if((Se[Se[vv+4>>2]>>2]-22|0)>>>0>=3)break;var fv=vv+8|0;if(0==(0|Se[fv>>2])){if(tv>>>0>3){Z(r);break r}var _v=(tv<<4)+Cr|0,R=_v>>2,C=vv>>2;Se[R]=Se[C],Se[R+1]=Se[C+1],Se[R+2]=Se[C+2],Se[R+3]=Se[C+3];var sv=Se[T];Se[_v>>2]=sv,Se[T]=_v,Se[fv>>2]=1;var nv=tv+1|0}else var nv=tv;var nv,vv=Se[vv>>2],tv=nv}var ov=Se[pr+2];if(H(r,ov),Se[T]=rv,0!=(0|Se[ev>>2]))break r;if(tv>>>0>1){for(var lv=tv;;){var lv,bv=lv-1|0,kv=Se[((bv<<4)+4>>2)+hr];if($(r,kv),bv>>>0<=1)break;var lv=bv}var uv=Se[T]}else var uv=rv;var uv;ar(r,a,uv);break r}if(37==(0|Ir)){var M=(r+20|0)>>2,cv=Se[M],hv=0|Rr;Se[hv>>2]=cv,Se[M]=Rr,Se[Rr+4>>2]=a;var dv=Rr+8|0;Se[dv>>2]=0;var wv=Se[Er+4];Se[Rr+12>>2]=wv;var pv=a+4|0,Ev=Se[pr+2];H(r,Ev);var Av=0==(0|Se[dv>>2]);e:do if(Av){var gv=Me[cr],yv=0==(0|gv);do{if(!yv){var mv=r+8|0,Sv=Me[mv>>2];if(Sv>>>0>=Me[Er+3]>>>0){gr=187;break}Se[mv>>2]=Sv+1|0,Ae[gv+Sv|0]=32,gr=188;break}gr=187}while(0);187==gr&&Y(r,32);var Mv=Se[pv>>2];H(r,Mv);var Cv=Me[cr],Rv=0==(0|Cv);do if(!Rv){var S=(r+8|0)>>2,Tv=Me[S];if((Tv+3|0)>>>0>Me[Er+3]>>>0)break;var Ov=Cv+Tv|0;Ae[Ov]=Ae[0|He.__str135],Ae[Ov+1]=Ae[(0|He.__str135)+1],Ae[Ov+2]=Ae[(0|He.__str135)+2];var Nv=Se[S]+3|0;Se[S]=Nv;break e}while(0);Q(r,0|He.__str135,3)}while(0);var Iv=Se[hv>>2];Se[M]=Iv;break r}if(38==(0|Ir)||39==(0|Ir)){var Pv=Se[pr+1];H(r,Pv);var Dv=a+8|0;if(0==(0|Se[Dv>>2]))break r;var Lv=Me[cr],Fv=0==(0|Lv);do{if(!Fv){var m=(r+8|0)>>2,Xv=Me[m];if((Xv+2|0)>>>0>Me[Er+3]>>>0){gr=197;break}var jv=Lv+Xv|0;oe=8236,Ae[jv]=255&oe,oe>>=8,Ae[jv+1]=255&oe;var Uv=Se[m]+2|0;Se[m]=Uv,gr=198;break}gr=197}while(0);197==gr&&Q(r,0|He.__str136,2);var xv=Se[Dv>>2];H(r,xv);break r}if(40==(0|Ir)){var y=(r+8|0)>>2,zv=Me[y],g=(r+12|0)>>2;if((zv+8|0)>>>0>Me[g]>>>0)Q(r,0|He.__str137,8);else{var Vv=Or+zv|0,le=0|Vv;oe=1919250543,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=Vv+4|0;oe=1919906913,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var Bv=Se[y]+8|0;Se[y]=Bv}var A=(a+4|0)>>2,Hv=(Ae[Se[Se[A]+4>>2]]-97&255&255)<26;e:do if(Hv){var Kv=Me[cr],Yv=0==(0|Kv);do if(!Yv){var Gv=Me[y];if(Gv>>>0>=Me[g]>>>0)break;Se[y]=Gv+1|0,Ae[Kv+Gv|0]=32;break e}while(0);Y(r,32)}while(0);var Wv=Me[cr],Zv=0==(0|Wv);do{if(!Zv){var Qv=Me[y],qv=Me[A],$v=Me[qv+8>>2];if(($v+Qv|0)>>>0>Me[g]>>>0){var Jv=qv,rt=$v;break}var at=Wv+Qv|0,et=Se[qv+4>>2];Pa(at,et,$v,1);var it=Se[y]+Se[Se[A]+8>>2]|0;Se[y]=it;break r}var vt=Me[A],Jv=vt,rt=Se[vt+8>>2]}while(0);var rt,Jv,tt=Se[Jv+4>>2];Q(r,tt,rt);break r}if(41==(0|Ir)){var E=(r+8|0)>>2,ft=Me[E];if((ft+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var _t=Or+ft|0,ie=0|He.__str10180,ve=_t,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var st=Se[E]+9|0;Se[E]=st}var nt=Se[pr+2];H(r,nt);break r}if(42==(0|Ir)){var p=(r+8|0)>>2,ot=Me[p];if((ot+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var lt=Or+ot|0,ie=0|He.__str10180,ve=lt,te=ie+9;ie<te;ie++,ve++)Ae[ve]=Ae[ie];var bt=Se[p]+9|0;Se[p]=bt}er(r,a);break r}if(43==(0|Ir)){var kt=a+4|0,ut=Se[kt>>2],ct=42==(0|Se[ut>>2]);e:do if(ct){var w=(r+8|0)>>2,ht=Me[w],dt=r+12|0;ht>>>0<Me[dt>>2]>>>0?(Se[w]=ht+1|0,Ae[Or+ht|0]=40):Y(r,40);var wt=Se[kt>>2];er(r,wt);var pt=Me[cr],Et=0==(0|pt);do if(!Et){var At=Me[w];if(At>>>0>=Me[dt>>2]>>>0)break;Se[w]=At+1|0,Ae[pt+At|0]=41;break e}while(0);Y(r,41)}else ir(r,ut);while(0);var gt=Me[cr],yt=0==(0|gt);do{if(!yt){var mt=r+8|0,St=Me[mt>>2];if(St>>>0>=Me[Er+3]>>>0){gr=232;break}Se[mt>>2]=St+1|0,Ae[gt+St|0]=40,gr=233;break}gr=232}while(0);232==gr&&Y(r,40);var Mt=Se[pr+2];H(r,Mt);var Ct=Me[cr],Rt=0==(0|Ct);do if(!Rt){var Tt=r+8|0,Ot=Me[Tt>>2];if(Ot>>>0>=Me[Er+3]>>>0)break;Se[Tt>>2]=Ot+1|0,Ae[Ct+Ot|0]=41;break r}while(0);Y(r,41);break r}if(44==(0|Ir)){var d=(a+8|0)>>2;if(45==(0|Se[Se[d]>>2])){var h=(a+4|0)>>2,Nt=Se[h],It=40==(0|Se[Nt>>2]);do if(It){var Pt=Se[Nt+4>>2];if(1!=(0|Se[Pt+8>>2]))break;if(Ae[Se[Pt+4>>2]]<<24>>24!=62)break;var Dt=r+8|0,Lt=Me[Dt>>2];Lt>>>0<Me[Er+3]>>>0?(Se[Dt>>2]=Lt+1|0,Ae[Or+Lt|0]=40):Y(r,40)}while(0);var Ft=Me[cr],Xt=0==(0|Ft);do{if(!Xt){var jt=r+8|0,Ut=Me[jt>>2];if(Ut>>>0>=Me[Er+3]>>>0){gr=248;break}Se[jt>>2]=Ut+1|0,Ae[Ft+Ut|0]=40,gr=249;break}gr=248}while(0);248==gr&&Y(r,40);var xt=Se[Se[d]+4>>2];H(r,xt);var zt=Me[cr],Vt=0==(0|zt);do{if(!Vt){var c=(r+8|0)>>2,Bt=Me[c];if((Bt+2|0)>>>0>Me[Er+3]>>>0){gr=252;break}var Ht=zt+Bt|0;oe=8233,Ae[Ht]=255&oe,oe>>=8,Ae[Ht+1]=255&oe;var Kt=Se[c]+2|0;Se[c]=Kt,gr=253;break}gr=252}while(0);252==gr&&Q(r,0|He.__str139,2);var Yt=Se[h];ir(r,Yt);var Gt=Me[cr],Wt=0==(0|Gt);do{if(!Wt){var u=(r+8|0)>>2,Zt=Me[u];if((Zt+2|0)>>>0>Me[Er+3]>>>0){gr=256;break}var Qt=Gt+Zt|0;oe=10272,Ae[Qt]=255&oe,oe>>=8,Ae[Qt+1]=255&oe;var qt=Se[u]+2|0;Se[u]=qt,gr=257;break}gr=256}while(0);256==gr&&Q(r,0|He.__str140,2);var $t=Se[Se[d]+8>>2];H(r,$t);var Jt=Me[cr],rf=0==(0|Jt);do{if(!rf){var af=r+8|0,ef=Me[af>>2];if(ef>>>0>=Me[Er+3]>>>0){gr=260;break}Se[af>>2]=ef+1|0,Ae[Jt+ef|0]=41,gr=261;break}gr=260}while(0);260==gr&&Y(r,41);var vf=Se[h];if(40!=(0|Se[vf>>2]))break r;var tf=Se[vf+4>>2];if(1!=(0|Se[tf+8>>2]))break r;if(Ae[Se[tf+4>>2]]<<24>>24!=62)break r;var ff=Me[cr],_f=0==(0|ff);do if(!_f){var sf=r+8|0,nf=Me[sf>>2];if(nf>>>0>=Me[Er+3]>>>0)break;Se[sf>>2]=nf+1|0,Ae[ff+nf|0]=41;break r}while(0);Y(r,41);break r}Z(r);break r}if(45==(0|Ir)){Z(r);break r}if(46==(0|Ir)){var of=a+4|0,k=(a+8|0)>>2,lf=Se[k],bf=47==(0|Se[lf>>2]);do if(bf){if(48!=(0|Se[Se[lf+8>>2]>>2]))break;var b=(r+8|0)>>2,kf=Me[b],l=(r+12|0)>>2;kf>>>0<Me[l]>>>0?(Se[b]=kf+1|0,Ae[Or+kf|0]=40):Y(r,40);var uf=Se[Se[k]+4>>2];H(r,uf);var cf=Me[cr],hf=0==(0|cf);do{if(!hf){var df=Me[b];if((df+2|0)>>>0>Me[l]>>>0){gr=278;break}var wf=cf+df|0;oe=8233,Ae[wf]=255&oe,oe>>=8,Ae[wf+1]=255&oe;var pf=Se[b]+2|0;Se[b]=pf,gr=279;break}gr=278}while(0);278==gr&&Q(r,0|He.__str139,2);var Ef=Se[of>>2];ir(r,Ef);var Af=Me[cr],gf=0==(0|Af);do{if(!gf){var yf=Me[b];if((yf+2|0)>>>0>Me[l]>>>0){gr=282;break}var mf=Af+yf|0;oe=10272,Ae[mf]=255&oe,oe>>=8,Ae[mf+1]=255&oe;var Sf=Se[b]+2|0;Se[b]=Sf,gr=283;break}gr=282}while(0);282==gr&&Q(r,0|He.__str140,2);var Mf=Se[Se[Se[k]+8>>2]+4>>2];H(r,Mf);var Cf=Me[cr],Rf=0==(0|Cf);do{if(!Rf){var Tf=Me[b];if((Tf+5|0)>>>0>Me[l]>>>0){gr=286;break}var Of=Cf+Tf|0;Ae[Of]=Ae[0|He.__str141],Ae[Of+1]=Ae[(0|He.__str141)+1],Ae[Of+2]=Ae[(0|He.__str141)+2],Ae[Of+3]=Ae[(0|He.__str141)+3],Ae[Of+4]=Ae[(0|He.__str141)+4];var Nf=Se[b]+5|0;Se[b]=Nf,gr=287;break}gr=286}while(0);286==gr&&Q(r,0|He.__str141,5);var If=Se[Se[Se[k]+8>>2]+8>>2];H(r,If);var Pf=Me[cr],Df=0==(0|Pf);do if(!Df){var Lf=Me[b];if(Lf>>>0>=Me[l]>>>0)break;Se[b]=Lf+1|0,Ae[Pf+Lf|0]=41;break r}while(0);Y(r,41);break r}while(0);Z(r);break r}if(47==(0|Ir)||48==(0|Ir)){Z(r);break r}if(49==(0|Ir)||50==(0|Ir)){var Ff=a+4|0,Xf=Se[Ff>>2],jf=33==(0|Se[Xf>>2]);do{if(jf){var Uf=Me[Se[Xf+4>>2]+16>>2];if(1==(0|Uf)||2==(0|Uf)||3==(0|Uf)||4==(0|Uf)||5==(0|Uf)||6==(0|Uf)){var xf=a+8|0;if(0!=(0|Se[Se[xf>>2]>>2])){var zf=Uf;break}if(50==(0|Ir)){var Vf=r+8|0,Bf=Me[Vf>>2];Bf>>>0<Me[Er+3]>>>0?(Se[Vf>>2]=Bf+1|0,Ae[Or+Bf|0]=45):Y(r,45)}var Hf=Se[xf>>2];if(H(r,Hf),2==(0|Uf)){var Kf=Me[cr],Yf=0==(0|Kf);do if(!Yf){var Gf=r+8|0,Wf=Me[Gf>>2];if(Wf>>>0>=Me[Er+3]>>>0)break;Se[Gf>>2]=Wf+1|0,Ae[Kf+Wf|0]=117;break r}while(0);Y(r,117);break r}if(3==(0|Uf)){var Zf=Me[cr],Qf=0==(0|Zf);do if(!Qf){var qf=r+8|0,$f=Me[qf>>2];if($f>>>0>=Me[Er+3]>>>0)break;Se[qf>>2]=$f+1|0,Ae[Zf+$f|0]=108;break r}while(0);Y(r,108);break r}if(4==(0|Uf)){var Jf=Me[cr],r_=0==(0|Jf);do if(!r_){var o=(r+8|0)>>2,a_=Me[o];if((a_+2|0)>>>0>Me[Er+3]>>>0)break;var e_=Jf+a_|0;oe=27765,Ae[e_]=255&oe,oe>>=8,Ae[e_+1]=255&oe;var i_=Se[o]+2|0;Se[o]=i_;break r}while(0);Q(r,0|He.__str142,2);break r}if(5==(0|Uf)){var v_=Me[cr],t_=0==(0|v_);do if(!t_){var n=(r+8|0)>>2,f_=Me[n];if((f_+2|0)>>>0>Me[Er+3]>>>0)break;var __=v_+f_|0;oe=27756,Ae[__]=255&oe,oe>>=8,Ae[__+1]=255&oe;var s_=Se[n]+2|0;Se[n]=s_;break r}while(0);Q(r,0|He.__str143,2);break r}if(6==(0|Uf)){var n_=Me[cr],o_=0==(0|n_);do if(!o_){var s=(r+8|0)>>2,l_=Me[s];if((l_+3|0)>>>0>Me[Er+3]>>>0)break;var b_=n_+l_|0;Ae[b_]=Ae[0|He.__str144],Ae[b_+1]=Ae[(0|He.__str144)+1],Ae[b_+2]=Ae[(0|He.__str144)+2];var k_=Se[s]+3|0;Se[s]=k_;break r}while(0);Q(r,0|He.__str144,3);break r}break r}if(7==(0|Uf)){var _=Se[pr+2]>>2;if(0!=(0|Se[_])){var zf=7;break}if(!(1==(0|Se[_+2])&49==(0|Ir))){var zf=Uf;break}var u_=Ae[Se[_+1]]<<24>>24;if(48==(0|u_)){var f=(r+8|0)>>2,c_=Me[f];if((c_+5|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str145,5);break r}var h_=Or+c_|0;Ae[h_]=Ae[0|He.__str145],Ae[h_+1]=Ae[(0|He.__str145)+1],Ae[h_+2]=Ae[(0|He.__str145)+2],Ae[h_+3]=Ae[(0|He.__str145)+3],Ae[h_+4]=Ae[(0|He.__str145)+4];var d_=Se[f]+5|0;Se[f]=d_;break r}if(49==(0|u_)){var t=(r+8|0)>>2,w_=Me[t];if((w_+4|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str146,4);break r}var p_=Or+w_|0;oe=1702195828,Ae[p_]=255&oe,oe>>=8,Ae[p_+1]=255&oe,oe>>=8,Ae[p_+2]=255&oe,oe>>=8,Ae[p_+3]=255&oe;var E_=Se[t]+4|0;Se[t]=E_;break r}var zf=Uf;break}var zf=Uf;break}var zf=0}while(0);var zf,v=(r+8|0)>>2,A_=Me[v],i=(r+12|0)>>2;A_>>>0<Me[i]>>>0?(Se[v]=A_+1|0,Ae[Or+A_|0]=40):Y(r,40);var g_=Se[Ff>>2];H(r,g_);var y_=Me[cr],m_=0==(0|y_);do{if(!m_){var S_=Me[v];if(S_>>>0>=Me[i]>>>0){gr=335;break}Se[v]=S_+1|0,Ae[y_+S_|0]=41,gr=336;break}gr=335}while(0);335==gr&&Y(r,41);var M_=50==(0|Se[Nr>>2]);e:do if(M_){var C_=Me[cr],R_=0==(0|C_);do if(!R_){var T_=Me[v];if(T_>>>0>=Me[i]>>>0)break;Se[v]=T_+1|0,Ae[C_+T_|0]=45;break e}while(0);Y(r,45)}while(0);if(8==(0|zf)){var O_=Me[cr],N_=0==(0|O_);do{if(!N_){var I_=Me[v];if(I_>>>0>=Me[i]>>>0){gr=345;break}Se[v]=I_+1|0,Ae[O_+I_|0]=91,gr=346;break}gr=345}while(0);345==gr&&Y(r,91);var P_=Se[pr+2];H(r,P_);var D_=Me[cr],L_=0==(0|D_);do if(!L_){var F_=Me[v];if(F_>>>0>=Me[i]>>>0)break;Se[v]=F_+1|0,Ae[D_+F_|0]=93;break r}while(0);Y(r,93);break r}var X_=Se[pr+2];H(r,X_);break r}Z(r);break r}}while(0);var e=(r+20|0)>>2,j_=Se[e],U_=0|Sr;Se[U_>>2]=j_,Se[e]=Sr,Se[Sr+4>>2]=a;var x_=Sr+8|0;Se[x_>>2]=0;var z_=Se[Er+4];Se[Sr+12>>2]=z_;var V_=Se[pr+1];H(r,V_),0==(0|Se[x_>>2])&&$(r,a);var B_=Se[U_>>2];Se[e]=B_}while(0);Oe=Ar}function K(r,a,e,i){var v=i>>2;Se[v]=r,Se[v+1]=r+e|0,Se[v+2]=a,Se[v+3]=r,Se[v+6]=e<<1,Se[v+5]=0,Se[v+9]=e,Se[v+8]=0,Se[v+10]=0,Se[v+11]=0,Se[v+12]=0}function Y(r,a){var e,i=r+4|0,v=Me[i>>2],t=0==(0|v);do if(!t){var e=(r+8|0)>>2,f=Me[e];if(f>>>0<Me[r+12>>2]>>>0)var _=v,s=f;else{tr(r,1);var n=Me[i>>2];if(0==(0|n))break;var _=n,s=Se[e]}var s,_;Ae[_+s|0]=255&a;var o=Se[e]+1|0;Se[e]=o}while(0)}function G(r,a,e,i){var v,t=i>>2,f=Oe;Oe+=4;var _=f,v=_>>2,s=0==(0|r);do if(s){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var o=0==(0|e);if(0!=(0|a)&o){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var l=W(r,_);if(0==(0|l)){if(0==(0|i)){var n=0;break}if(1==(0|Se[v])){Se[t]=-1;var n=0}else{Se[t]=-2;var n=0}}else{var b=0==(0|a);do if(b){if(o){var k=l;break}var u=Se[v];Se[e>>2]=u;var k=l}else{var c=Ca(l);if(c>>>0<Me[e>>2]>>>0){Ra(a,l);va(l);var k=a}else{va(a);var h=Se[v];Se[e>>2]=h;var k=l}}while(0);var k;if(0==(0|i)){var n=k;break}Se[t]=0;var n=k}}}while(0);var n;return Oe=f,n}function W(r,a){var e,i=Oe;Oe+=52;var v,t=i,e=t>>2;Se[a>>2]=0;var f=Ca(r),_=Ae[r]<<24>>24==95;do{if(_){if(Ae[r+1|0]<<24>>24==90){var s=0;v=13;break}v=3;break}v=3}while(0);do if(3==v){var n=Na(r,0|He.__str117,8);if(0!=(0|n)){var s=1;v=13;break}var o=Ae[r+8|0];if(o<<24>>24!=46&&o<<24>>24!=95&&o<<24>>24!=36){var s=1;v=13;break}var l=r+9|0,b=Ae[l];if(b<<24>>24!=68&&b<<24>>24!=73){\\\\nvar s=1;v=13;break}if(Ae[r+10|0]<<24>>24!=95){var s=1;v=13;break}var k=f+29|0,u=Jr(k);if(0==(0|u)){Se[a>>2]=1;var c=0;v=19;break}Ae[l]<<24>>24==73?Pa(u,0|He.__str118,30,1):Pa(u,0|He.__str119,29,1);var h=r+11|0,c=(Ia(u,h),u);v=19;break}while(0);if(13==v){var s;K(r,17,f,t);var d=Se[e+6],w=Ta(),p=Oe;Oe+=12*d,Oe=Oe+3>>2<<2;var E=Oe;if(Oe+=4*Se[e+9],Oe=Oe+3>>2<<2,Se[e+4]=p,Se[e+7]=E,s)var A=N(t),g=A;else var y=T(t,1),g=y;var g,m=Ae[Se[e+3]]<<24>>24==0?g:0,S=Se[e+12]+f+10*Se[e+10]|0;if(0==(0|m))var M=0;else var C=S/8+S|0,R=B(17,m,C,a),M=R;var M;Oa(w);var c=M}var c;return Oe=i,c}function Z(r){var a=r+4|0,e=Se[a>>2];va(e),Se[a>>2]=0}function Q(r,a,e){var i,v=r+4|0,t=Me[v>>2],f=0==(0|t);do if(!f){var i=(r+8|0)>>2,_=Me[i];if((_+e|0)>>>0>Me[r+12>>2]>>>0){tr(r,e);var s=Me[v>>2];if(0==(0|s))break;var n=s,o=Se[i]}else var n=t,o=_;var o,n;Pa(n+o|0,a,e,1);var l=Se[i]+e|0;Se[i]=l}while(0)}function q(r,a,e){var i,v,t=a+e|0,f=(0|e)>0;r:do if(f)for(var _=t,s=r+4|0,i=(r+8|0)>>2,n=r+12|0,o=a;;){var o,l=(_-o|0)>3;a:do{if(l){if(Ae[o]<<24>>24!=95){v=21;break}if(Ae[o+1|0]<<24>>24!=95){v=21;break}if(Ae[o+2|0]<<24>>24!=85){v=21;break}for(var b=o+3|0,k=0;;){var k,b;if(b>>>0>=t>>>0){v=21;break a}var u=ge[b],c=u<<24>>24;if((u-48&255&255)<10)var h=c-48|0;else if((u-65&255&255)<6)var h=c-55|0;else{if((u-97&255&255)>=6)break;var h=c-87|0}var h,b=b+1|0,k=(k<<4)+h|0}if(!(u<<24>>24==95&k>>>0<256)){v=21;break}var d=Me[s>>2],w=0==(0|d);do if(!w){var p=Me[i];if(p>>>0>=Me[n>>2]>>>0)break;Se[i]=p+1|0,Ae[d+p|0]=255&k;var E=b;v=25;break a}while(0);Y(r,k);var E=b;v=25;break}v=21}while(0);a:do if(21==v){var A=Me[s>>2],g=0==(0|A);do if(!g){var y=Me[i];if(y>>>0>=Me[n>>2]>>>0)break;var m=Ae[o];Se[i]=y+1|0,Ae[A+y|0]=m;var E=o;break a}while(0);var S=Ae[o]<<24>>24;Y(r,S);var E=o}while(0);var E,M=E+1|0;if(M>>>0>=t>>>0)break r;var o=M}while(0)}function $(r,a){var e,i,v,t,f,_,s,n=r>>2,o=Se[a>>2];r:do if(22==(0|o)||25==(0|o)){var l=Me[n+1],b=0==(0|l);do if(!b){var _=(r+8|0)>>2,k=Me[_];if((k+9|0)>>>0>Me[n+3]>>>0)break;for(var u=l+k|0,c=0|He.__str147,h=u,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var w=Se[_]+9|0;Se[_]=w;break r}while(0);Q(r,0|He.__str147,9)}else if(23==(0|o)||26==(0|o)){var p=Me[n+1],E=0==(0|p);do if(!E){var f=(r+8|0)>>2,A=Me[f];if((A+9|0)>>>0>Me[n+3]>>>0)break;for(var g=p+A|0,c=0|He.__str148,h=g,d=c+9;c<d;c++,h++)Ae[h]=Ae[c];var y=Se[f]+9|0;Se[f]=y;break r}while(0);Q(r,0|He.__str148,9)}else if(24==(0|o)||27==(0|o)){var m=Me[n+1],S=0==(0|m);do if(!S){var t=(r+8|0)>>2,M=Me[t];if((M+6|0)>>>0>Me[n+3]>>>0)break;var C=m+M|0;Ae[C]=Ae[0|He.__str149],Ae[C+1]=Ae[(0|He.__str149)+1],Ae[C+2]=Ae[(0|He.__str149)+2],Ae[C+3]=Ae[(0|He.__str149)+3],Ae[C+4]=Ae[(0|He.__str149)+4],Ae[C+5]=Ae[(0|He.__str149)+5];var R=Se[t]+6|0;Se[t]=R;break r}while(0);Q(r,0|He.__str149,6)}else if(28==(0|o)){var T=Me[n+1],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[n+3]>>>0){s=17;break}Se[N>>2]=I+1|0,Ae[T+I|0]=32,s=18;break}s=17}while(0);17==s&&Y(r,32);var P=Se[a+8>>2];H(r,P)}else if(29==(0|o)){if(0!=(4&Se[n]|0))break;var D=Me[n+1],L=0==(0|D);do if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[n+3]>>>0)break;Se[F>>2]=X+1|0,Ae[D+X|0]=42;break r}while(0);Y(r,42)}else if(30==(0|o)){var j=Me[n+1],U=0==(0|j);do if(!U){var x=r+8|0,z=Me[x>>2];if(z>>>0>=Me[n+3]>>>0)break;Se[x>>2]=z+1|0,Ae[j+z|0]=38;break r}while(0);Y(r,38)}else if(31==(0|o)){var V=Me[n+1],B=0==(0|V);do if(!B){var v=(r+8|0)>>2,K=Me[v];if((K+8|0)>>>0>Me[n+3]>>>0)break;var G=V+K|0,W=0|G;oe=1886220131,Ae[W]=255&oe,oe>>=8,Ae[W+1]=255&oe,oe>>=8,Ae[W+2]=255&oe,oe>>=8,Ae[W+3]=255&oe;var Z=G+4|0;oe=544761196,Ae[Z]=255&oe,oe>>=8,Ae[Z+1]=255&oe,oe>>=8,Ae[Z+2]=255&oe,oe>>=8,Ae[Z+3]=255&oe;var q=Se[v]+8|0;Se[v]=q;break r}while(0);Q(r,0|He.__str150,8)}else if(32==(0|o)){var $=Me[n+1],J=0==(0|$);do if(!J){var i=(r+8|0)>>2,rr=Me[i];if((rr+10|0)>>>0>Me[n+3]>>>0)break;for(var ar=$+rr|0,c=0|He.__str151,h=ar,d=c+10;c<d;c++,h++)Ae[h]=Ae[c];var er=Se[i]+10|0;Se[i]=er;break r}while(0);Q(r,0|He.__str151,10)}else if(37==(0|o)){var ir=r+4|0,vr=Me[ir>>2],tr=0==(0|vr);do{if(!tr){var fr=r+8|0,_r=Me[fr>>2];if(0!=(0|_r)&&Ae[vr+(_r-1)|0]<<24>>24==40){s=42;break}if(_r>>>0>=Me[n+3]>>>0){s=41;break}Se[fr>>2]=_r+1|0,Ae[vr+_r|0]=32,s=42;break}s=41}while(0);41==s&&Y(r,32);var sr=Se[a+4>>2];H(r,sr);var nr=Me[ir>>2],or=0==(0|nr);do if(!or){var e=(r+8|0)>>2,lr=Me[e];if((lr+3|0)>>>0>Me[n+3]>>>0)break;var br=nr+lr|0;Ae[br]=Ae[0|He.__str135],Ae[br+1]=Ae[(0|He.__str135)+1],Ae[br+2]=Ae[(0|He.__str135)+2];var kr=Se[e]+3|0;Se[e]=kr;break r}while(0);Q(r,0|He.__str135,3)}else if(3==(0|o)){var ur=Se[a+4>>2];H(r,ur)}else H(r,a);while(0)}function J(r){var a=r+20|0,e=Se[a>>2];if((0|e)<(0|Se[r+24>>2])){var i=Se[r+16>>2]+12*e|0,v=e+1|0;Se[a>>2]=v;var t=i}else var t=0;var t;return t}function rr(r,a,e){var i,v,t,f,_=r>>2,s=e,t=s>>2,n=0;r:for(;;){var n,s,o=0==(0|s);do if(!o){if(0!=(0|Se[t+2]))break;var l=Se[Se[t+1]>>2];if(29==(0|l)||30==(0|l)){f=9;break r}if(22==(0|l)||23==(0|l)||24==(0|l)||28==(0|l)||31==(0|l)||32==(0|l)||37==(0|l)){var b=Se[_+1];f=12;break r}var s=Se[t],t=s>>2,n=1;continue r}while(0);if(0!=(0|Se[a+4>>2])&0==(0|n)){f=9;break}var k=0,u=r+4|0,v=u>>2;f=22;break}do if(9==f){var c=Se[_+1];if(0==(0|c)){f=17;break}var h=Se[_+2];if(0==(0|h)){var d=c;f=13;break}var w=Ae[c+(h-1)|0];if(w<<24>>24==40||w<<24>>24==42){f=18;break}var b=c;f=12;break}while(0);do if(12==f){var b;if(0==(0|b)){f=17;break}var d=b;f=13;break}while(0);do if(13==f){var d,p=r+8|0,E=Me[p>>2];if(0!=(0|E)&&Ae[d+(E-1)|0]<<24>>24==32){f=18;break}if(E>>>0>=Me[_+3]>>>0){f=17;break}Se[p>>2]=E+1|0,Ae[d+E|0]=32,f=18;break}while(0);do if(17==f){Y(r,32),f=18;break}while(0);r:do if(18==f){var A=r+4|0,g=Me[A>>2],y=0==(0|g);do if(!y){var m=r+8|0,S=Me[m>>2];if(S>>>0>=Me[_+3]>>>0)break;Se[m>>2]=S+1|0,Ae[g+S|0]=40;var k=1,u=A,v=u>>2;break r}while(0);Y(r,40);var k=1,u=A,v=u>>2}while(0);var u,k,i=(r+20|0)>>2,M=Se[i];Se[i]=0,vr(r,e,0);r:do if(k){var C=Me[v],R=0==(0|C);do if(!R){var T=r+8|0,O=Me[T>>2];if(O>>>0>=Me[_+3]>>>0)break;Se[T>>2]=O+1|0,Ae[C+O|0]=41;break r}while(0);Y(r,41)}while(0);var N=Me[v],I=0==(0|N);do{if(!I){var P=r+8|0,D=Me[P>>2];if(D>>>0>=Me[_+3]>>>0){f=30;break}Se[P>>2]=D+1|0,Ae[N+D|0]=40,f=31;break}f=30}while(0);30==f&&Y(r,40);var L=Se[a+8>>2];0!=(0|L)&&H(r,L);var F=Me[v],X=0==(0|F);do{if(!X){var j=r+8|0,U=Me[j>>2];if(U>>>0>=Me[_+3]>>>0){f=36;break}Se[j>>2]=U+1|0,Ae[F+U|0]=41,f=37;break}f=36}while(0);36==f&&Y(r,41),vr(r,e,1),Se[i]=M}function ar(r,a,e){var i,v,t,f=r>>2,_=0==(0|e);do{if(!_){var s=e,v=s>>2;r:for(;;){var s;if(0==(0|s)){var n=1;t=14;break}if(0==(0|Se[v+2])){var o=36==(0|Se[Se[v+1]>>2]),l=1&o^1;if(o){var n=l;t=14;break}var b=r+4|0,k=Me[b>>2],u=0==(0|k);do{if(!u){var i=(r+8|0)>>2,c=Me[i];if((c+2|0)>>>0>Me[f+3]>>>0){t=9;break}var h=k+c|0;oe=10272,Ae[h]=255&oe,oe>>=8,Ae[h+1]=255&oe;var d=Se[i]+2|0;Se[i]=d,vr(r,e,0),t=10;break}t=9}while(0);9==t&&(Q(r,0|He.__str140,2),vr(r,e,0));var w=Me[b>>2],p=0==(0|w);do if(!p){var E=r+8|0,A=Me[E>>2];if(A>>>0>=Me[f+3]>>>0)break;Se[E>>2]=A+1|0,Ae[w+A|0]=41;var g=l;t=15;break r}while(0);Y(r,41);var g=l;t=15;break}var s=Se[v],v=s>>2}if(14==t){var n;vr(r,e,0);var g=n}var g;if(0!=(0|g)){t=17;break}var y=r+4|0;t=21;break}t=17}while(0);r:do if(17==t){var m=r+4|0,S=Me[m>>2],M=0==(0|S);do if(!M){var C=r+8|0,R=Me[C>>2];if(R>>>0>=Me[f+3]>>>0)break;Se[C>>2]=R+1|0,Ae[S+R|0]=32;var y=m;break r}while(0);Y(r,32);var y=m}while(0);var y,T=Me[y>>2],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[f+3]>>>0){t=24;break}Se[N>>2]=I+1|0,Ae[T+I|0]=91,t=25;break}t=24}while(0);24==t&&Y(r,91);var P=Se[a+4>>2];0!=(0|P)&&H(r,P);var D=Me[y>>2],L=0==(0|D);do{if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[f+3]>>>0){t=30;break}Se[F>>2]=X+1|0,Ae[D+X|0]=93,t=31;break}t=30}while(0);30==t&&Y(r,93)}function er(r,a){var e,i,v,t,f,_,s=Oe;Oe+=8;var n,o=s,_=(a+4|0)>>2,l=Se[_];if(4==(0|Se[l>>2])){var f=(r+20|0)>>2,b=Se[f];Se[f]=0;var t=(r+16|0)>>2,k=Se[t],u=0|o;Se[u>>2]=k,Se[t]=o;var c=Se[_];Se[o+4>>2]=c;var h=Se[c+4>>2];H(r,h);var d=Se[u>>2];Se[t]=d;var v=(r+4|0)>>2,w=Me[v],p=0==(0|w);do{if(!p){var i=(r+8|0)>>2,E=Me[i],A=0==(0|E);do if(!A){if(Ae[w+(E-1)|0]<<24>>24!=60)break;E>>>0<Me[r+12>>2]>>>0?(Se[i]=E+1|0,Ae[w+E|0]=32):Y(r,32)}while(0);var g=Me[v];if(0==(0|g)){n=12;break}var y=Me[i];if(y>>>0>=Me[r+12>>2]>>>0){n=12;break}Se[i]=y+1|0,Ae[g+y|0]=60,n=13;break}n=12}while(0);12==n&&Y(r,60);var m=Se[Se[_]+8>>2];H(r,m);var S=Me[v],M=0==(0|S);do{if(!M){var e=(r+8|0)>>2,C=Me[e],R=0==(0|C);do if(!R){if(Ae[S+(C-1)|0]<<24>>24!=62)break;C>>>0<Me[r+12>>2]>>>0?(Se[e]=C+1|0,Ae[S+C|0]=32):Y(r,32)}while(0);var T=Me[v];if(0==(0|T)){n=22;break}var O=Me[e];if(O>>>0>=Me[r+12>>2]>>>0){n=22;break}Se[e]=O+1|0,Ae[T+O|0]=62,n=23;break}n=22}while(0);22==n&&Y(r,62),Se[f]=b}else H(r,l);Oe=s}function ir(r,a){var e,i=40==(0|Se[a>>2]);r:do if(i){var v=Me[r+4>>2],t=0==(0|v);do{if(!t){var e=(r+8|0)>>2,f=Me[e],_=a+4|0,s=Me[_>>2],n=Me[s+8>>2];if((n+f|0)>>>0>Me[r+12>>2]>>>0){var o=s,l=n;break}var b=v+f|0,k=Se[s+4>>2];Pa(b,k,n,1);var u=Se[e]+Se[Se[_>>2]+8>>2]|0;Se[e]=u;break r}var c=Me[a+4>>2],o=c,l=Se[c+8>>2]}while(0);var l,o,h=Se[o+4>>2];Q(r,h,l)}else H(r,a);while(0)}function vr(r,a,e){var i,v,t,f,_,f=(r+4|0)>>2,s=0==(0|e),t=(r+16|0)>>2;r:do if(s)for(var n=a;;){var n;if(0==(0|n)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var o=n+8|0,l=0==(0|Se[o>>2]);do if(l){var b=n+4|0;if((Se[Se[b>>2]>>2]-25|0)>>>0<3)break;Se[o>>2]=1;var k=Me[t],u=Se[n+12>>2];Se[t]=u;var c=Me[b>>2],h=Se[c>>2];if(35==(0|h)){var d=n,w=k,p=c;_=14;break r}if(36==(0|h)){var E=n,A=k,g=c;_=15;break r}if(2==(0|h)){var y=k,m=b;_=16;break r}$(r,c),Se[t]=k}while(0);var n=Se[n>>2]}else for(var S=a;;){var S;if(0==(0|S)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var M=S+8|0;if(0==(0|Se[M>>2])){Se[M>>2]=1;var C=Me[t],R=Se[S+12>>2];Se[t]=R;var T=S+4|0,O=Me[T>>2],N=Se[O>>2];if(35==(0|N)){var d=S,w=C,p=O;_=14;break r}if(36==(0|N)){var E=S,A=C,g=O;_=15;break r}if(2==(0|N)){var y=C,m=T;_=16;break r}$(r,O),Se[t]=C}var S=Se[S>>2]}while(0);if(14==_){var p,w,d,I=Se[d>>2];rr(r,p,I),Se[t]=w}else if(15==_){var g,A,E,P=Se[E>>2];ar(r,g,P),Se[t]=A}else if(16==_){var m,y,v=(r+20|0)>>2,D=Se[v];Se[v]=0;var L=Se[Se[m>>2]+4>>2];H(r,L),Se[v]=D;var F=0==(4&Se[r>>2]|0),X=Me[f],j=0!=(0|X);r:do if(F){do if(j){var i=(r+8|0)>>2,U=Me[i];if((U+2|0)>>>0>Me[r+12>>2]>>>0)break;var x=X+U|0;oe=14906,Ae[x]=255&oe,oe>>=8,Ae[x+1]=255&oe;var z=Se[i]+2|0;Se[i]=z;break r}while(0);Q(r,0|He.__str120,2)}else{do if(j){var V=r+8|0,B=Me[V>>2];if(B>>>0>=Me[r+12>>2]>>>0)break;Se[V>>2]=B+1|0,Ae[X+B|0]=46;break r}while(0);Y(r,46)}while(0);var K=Me[Se[m>>2]+8>>2],G=(Se[K>>2]-25|0)>>>0<3;r:do if(G)for(var W=K;;){var W,Z=Me[W+4>>2];if((Se[Z>>2]-25|0)>>>0>=3){var q=Z;break r}var W=Z}else var q=K;while(0);var q;H(r,q),Se[t]=y}}function tr(r,a){var e,e=(r+4|0)>>2,i=Se[e],v=0==(0|i);r:do if(!v){for(var t=Se[r+8>>2]+a|0,f=r+12|0,_=Se[f>>2],s=i;;){var s,_;if(t>>>0<=_>>>0)break r;var n=_<<1,o=fa(s,n);if(0==(0|o))break;Se[e]=o,Se[f>>2]=n;var _=n,s=o}var l=Se[e];va(l),Se[e]=0,Se[r+24>>2]=1}while(0)}function fr(r,a,e){var i,v=J(r),i=v>>2;return 0!=(0|v)&&(Se[i]=21,Se[i+1]=a,Se[i+2]=e),v}function _r(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;if(88==(0|i)){var v=e+1|0;Se[a]=v;var t=nr(r),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else if(76==(0|i))var o=or(r),n=o;else var l=N(r),n=l;var n;return n}function sr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==110){var v=e+1|0;Se[a]=v;var t=1,f=Ae[v],_=v}else var t=0,f=i,_=e;var _,f,t,s=(f-48&255&255)<10;r:do if(s)for(var n=f,o=0,l=_;;){var l,o,n,b=(n<<24>>24)-48+10*o|0,k=l+1|0;Se[a]=k;var u=ge[k];if((u-48&255&255)>=10){var c=b;break r}var n=u,o=b,l=k}else var c=0;while(0);var c,h=0==(0|t)?c:0|-c;return h}function nr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=Ae[i];do{if(v<<24>>24==76){var t=or(r),f=t;e=21;break}if(v<<24>>24==84){var _=x(r),f=_;e=21;break}if(v<<24>>24==115){if(Ae[i+1|0]<<24>>24!=114){e=8;break}var s=i+2|0;Se[a]=s;var n=N(r),o=br(r);if(Ae[Se[a]]<<24>>24==73){var l=z(r),b=D(r,4,o,l),k=D(r,1,n,b),f=k;e=21;break}var u=D(r,1,n,o),f=u;e=21;break}e=8}while(0);r:do if(8==e){var c=kr(r);if(0==(0|c)){var f=0;break}var h=0|c,d=Se[h>>2],w=40==(0|d);do{if(w){var p=c+4|0,E=r+48|0,A=Se[Se[p>>2]+8>>2]-2+Se[E>>2]|0;Se[E>>2]=A;var g=Se[h>>2];if(40!=(0|g)){var y=g;e=13;break}var m=Se[p>>2],S=Se[m>>2],M=Da(S,0|He.__str90);if(0!=(0|M)){var C=m;e=15;break}var R=N(r),T=D(r,43,c,R),f=T;break r}var y=d;e=13}while(0);do if(13==e){var y;if(40==(0|y)){var C=Se[c+4>>2];e=15;break}if(41==(0|y)){var O=c+4|0;e=17;break}if(42==(0|y)){e=18;break}var f=0;break r}while(0);do if(15==e){var C,O=C+12|0;e=17;break}while(0);do if(17==e){var O,I=Se[O>>2];if(1==(0|I))break;if(2==(0|I)){var P=nr(r),L=nr(r),F=D(r,45,P,L),X=D(r,44,c,F);return X}if(3==(0|I)){var j=nr(r),U=nr(r),V=nr(r),B=D(r,48,U,V),H=D(r,47,j,B),K=D(r,46,c,H);return K}var f=0;break r}while(0);var Y=nr(r),G=D(r,43,c,Y);return G}while(0);var f;return f}function or(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==76;r:do if(v){if(Ae[i]<<24>>24==95)var t=T(r,0),f=t;else{var _=N(r);if(0==(0|_)){var s=0;break}var n=33==(0|Se[_>>2]);do if(n){var o=Se[_+4>>2];if(0==(0|Se[o+16>>2]))break;var l=r+48|0,b=Se[l>>2]-Se[o+4>>2]|0;Se[l>>2]=b}while(0);var k=Se[a];if(Ae[k]<<24>>24==110){var u=k+1|0;Se[a]=u;var c=50,h=u}else var c=49,h=k;for(var h,c,d=h;;){var d,w=Ae[d];if(w<<24>>24==69)break;if(w<<24>>24==0){var s=0;break r}var p=d+1|0;Se[a]=p;var d=p}var E=lr(r,h,d-h|0),A=D(r,c,_,E),f=A}var f,g=Se[a],y=g+1|0;Se[a]=y;var m=Ae[g]<<24>>24==69?f:0,s=m}else var s=0;while(0);var s;return s}function lr(r,a,e){var i=J(r),v=m(i,a,e),t=0==(0|v)?0:i;return t}function br(r){var a=r+12|0,e=Me[a>>2],i=ge[e],v=(i-48&255&255)<10;do if(v)var t=L(r),f=t;else if((i-97&255&255)<26){var _=kr(r);if(0==(0|_)){var f=0;break}if(40!=(0|Se[_>>2])){var f=_;break}var s=r+48|0,n=Se[Se[_+4>>2]+8>>2]+Se[s>>2]+7|0;Se[s>>2]=n;var f=_}else if(i<<24>>24==67||i<<24>>24==68)var o=hr(r),f=o;else{if(i<<24>>24!=76){var f=0;break}Se[a>>2]=e+1|0;var l=L(r);if(0==(0|l)){var f=0;break}var b=dr(r),k=0==(0|b)?0:l,f=k}while(0);var f;return f}function kr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=i+1|0;Se[a]=v;var t=ge[i],f=i+2|0;Se[a]=f;var _=ge[v];do{if(t<<24>>24==118){if((_-48&255&255)>=10){var s=49,n=0;e=6;break}var o=(_<<24>>24)-48|0,l=L(r),b=ur(r,o,l),k=b;e=14;break}if(t<<24>>24==99){if(_<<24>>24!=118){var s=49,n=0;e=6;break}var u=N(r),c=D(r,42,u,0),k=c;e=14;break}var s=49,n=0;e=6}while(0);r:do if(6==e){for(;;){var n,s,h=(s-n)/2+n|0,d=(h<<4)+ri|0,w=Se[d>>2],p=Ae[w],E=t<<24>>24==p<<24>>24;if(E&&_<<24>>24==Ae[w+1|0]<<24>>24)break;var A=t<<24>>24<p<<24>>24;do if(A)var g=h,y=n;else{if(E&&_<<24>>24<Ae[w+1|0]<<24>>24){var g=h,y=n;break}var g=s,y=h+1|0}while(0);var y,g;if((0|y)==(0|g)){var k=0;break r}var s=g,n=y}var m=cr(r,d),k=m}while(0);var k;return k}function ur(r,a,e){var i=J(r),v=S(i,a,e),t=0==(0|v)?0:i;return t}function cr(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=40,Se[e+4>>2]=a),e}function hr(r){var a,e,i=Se[r+44>>2],e=i>>2,v=0==(0|i);do if(!v){var t=Se[e];if(0==(0|t)){var f=r+48|0,_=Se[f>>2]+Se[e+2]|0;Se[f>>2]=_}else{if(21!=(0|t))break;var s=r+48|0,n=Se[s>>2]+Se[e+2]|0;Se[s>>2]=n}}while(0);var a=(r+12|0)>>2,o=Se[a],l=o+1|0;Se[a]=l;var b=Ae[o]<<24>>24;do if(67==(0|b)){var k=o+2|0;Se[a]=k;var u=Ae[l]<<24>>24;if(49==(0|u))var c=1;else if(50==(0|u))var c=2;else{if(51!=(0|u)){var h=0;break}var c=3}var c,d=wr(r,c,i),h=d}else if(68==(0|b)){var w=o+2|0;Se[a]=w;var p=Ae[l]<<24>>24;if(48==(0|p))var E=1;else if(49==(0|p))var E=2;else{if(50!=(0|p)){var h=0;break}var E=3}var E,A=pr(r,E,i),h=A}else var h=0;while(0);var h;return h}function dr(r){var a=r+12|0,e=Se[a>>2];if(Ae[e]<<24>>24==95){var i=e+1|0;Se[a>>2]=i;var v=sr(r),t=v>>>31^1}else var t=1;var t;return t}function wr(r,a,e){var i=J(r),v=M(i,a,e),t=0==(0|v)?0:i;return t}function pr(r,a,e){var i=J(r),v=C(i,a,e),t=0==(0|v)?0:i;return t}function Er(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=5,Se[e+4>>2]=a),e}function Ar(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;do if(78==(0|i))var v=gr(r),t=v;else if(90==(0|i))var f=yr(r),t=f;else if(76==(0|i))var _=br(r),t=_;else if(83==(0|i)){if(Ae[e+1|0]<<24>>24==116){var s=e+2|0;Se[a]=s;var n=lr(r,0|He.__str152,3),o=br(r),l=D(r,1,n,o),b=r+48|0,k=Se[b>>2]+3|0;Se[b>>2]=k;var u=0,c=l}else var h=V(r,0),u=1,c=h;var c,u;if(Ae[Se[a]]<<24>>24!=73){var t=c;break}if(0==(0|u)){var d=R(r,c);if(0==(0|d)){var t=0;break}}var w=z(r),p=D(r,4,c,w),t=p}else{var E=br(r);if(Ae[Se[a]]<<24>>24!=73){var t=E;break}var A=R(r,E);if(0==(0|A)){var t=0;break}var g=z(r),y=D(r,4,E,g),t=y}while(0);var t;return t}function gr(r){var a,e=Oe;Oe+=4;var i=e,a=(r+12|0)>>2,v=Se[a],t=v+1|0;Se[a]=t;var f=Ae[v]<<24>>24==78;do if(f){var _=I(r,i,1);if(0==(0|_)){var s=0;break}var n=mr(r);if(Se[_>>2]=n,0==(0|n)){var s=0;break}var o=Se[a],l=o+1|0;if(Se[a]=l,Ae[o]<<24>>24!=69){var s=0;break}var s=Se[i>>2]}else var s=0;while(0);var s;return Oe=e,s}function yr(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==90;do if(v){var t=O(r,0),f=Se[a],_=f+1|0;if(Se[a]=_,Ae[f]<<24>>24!=69){var s=0;break}if(Ae[_]<<24>>24==115){var n=f+2|0;Se[a]=n;var o=dr(r);if(0==(0|o)){var s=0;break}var l=lr(r,0|He.__str168,14),b=D(r,2,t,l),s=b}else{var k=Ar(r),u=dr(r);if(0==(0|u)){var s=0;break}var c=D(r,2,t,k),s=c}}else var s=0;while(0);var s;return s}function mr(r){var a,e=r+12|0,i=0;r:for(;;){var i,v=ge[Se[e>>2]];if(v<<24>>24==0){var t=0;break}var f=(v-48&255&255)<10|(v-97&255&255)<26;do{if(!f){if(v<<24>>24==76||v<<24>>24==68||v<<24>>24==67){a=5;break}if(v<<24>>24==83){var _=V(r,1),s=_;a=10;break}if(v<<24>>24==73){if(0==(0|i)){var t=0;break r}var n=z(r),o=4,l=n;a=11;break}if(v<<24>>24==84){var b=x(r),s=b;a=10;break}if(v<<24>>24==69){var t=i;break r}var t=0;break r}a=5}while(0);do if(5==a){var k=br(r),s=k;a=10;break}while(0);do if(10==a){var s;if(0==(0|i)){var u=s;a=12;break}var o=1,l=s;a=11;break}while(0);if(11==a)var l,o,c=D(r,o,i,l),u=c;var u;if(v<<24>>24!=83)if(Ae[Se[e>>2]]<<24>>24!=69){var h=R(r,u);if(0==(0|h)){var t=0;break}var i=u}else var i=u;else var i=u}var t;return t}function Sr(r,a){var e,i,v=Oe;Oe+=4;var t=v,i=t>>2,e=(r+12|0)>>2,f=Se[e];if(Ae[f]<<24>>24==74){var _=f+1|0;Se[e]=_;var s=1}else var s=a;var s;Se[i]=0;var n=s,o=0,l=t;r:for(;;)for(var l,o,n,b=n,k=o;;){var k,b,u=Ae[Se[e]];if(u<<24>>24==0||u<<24>>24==69){var c=Se[i];if(0==(0|c)){var h=0;break r}var d=0==(0|Se[c+8>>2]);do if(d){var w=Se[c+4>>2];if(33!=(0|Se[w>>2])){var p=c;break}var E=Se[w+4>>2];if(9!=(0|Se[E+16>>2])){var p=c;break}var A=r+48|0,g=Se[A>>2]-Se[E+4>>2]|0;Se[A>>2]=g,Se[i]=0;var p=0}else var p=c;while(0);var p,y=D(r,35,k,p),h=y;break r}var m=N(r);if(0==(0|m)){var h=0;break r}if(0==(0|b)){var S=D(r,38,m,0);if(Se[l>>2]=S,0==(0|S)){var h=0;break r}var n=0,o=k,l=S+8|0;continue r}var b=0,k=m}var h;return Oe=v,h}function Mr(r){for(var a=r;;){var a;if(0==(0|a)){var e=0;break}var i=Se[a>>2];if(1!=(0|i)&&2!=(0|i)){if(6==(0|i)||7==(0|i)||42==(0|i)){var e=1;break}var e=0;break}var a=Se[a+8>>2]}var e;return e}function Cr(r){var a=r>>2;Se[a+3]=0,Se[a+2]=0,Se[a+1]=0,Se[a]=0,Se[a+4]=0}function Rr(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=(Se[r+4>>2]-i|0)<(0|a);r:do if(v)var t=0;else{var f=i+a|0;Se[e]=f;var _=0==(4&Se[r+8>>2]|0);do if(!_){if(Ae[f]<<24>>24!=36)break;var s=a+(i+1)|0;Se[e]=s}while(0);var n=(0|a)>9;do if(n){var o=La(i,0|He.__str117,8);if(0!=(0|o))break;var l=Ae[i+8|0];if(l<<24>>24!=46&&l<<24>>24!=95&&l<<24>>24!=36)break;if(Ae[i+9|0]<<24>>24!=78)break;var b=r+48|0,k=22-a+Se[b>>2]|0;Se[b>>2]=k;var u=lr(r,0|He.__str169,21),t=u;break r}while(0);var c=lr(r,i,a),t=c}while(0);var t;return t}function Tr(r){var a,e,e=(r+48|0)>>2,i=Se[e],v=i+20|0;Se[e]=v;var a=(r+12|0)>>2,t=Se[a],f=t+1|0;Se[a]=f;var _=Ae[t];do if(_<<24>>24==84){var s=t+2|0;Se[a]=s;var n=Ae[f]<<24>>24;if(86==(0|n)){var o=i+15|0;Se[e]=o;var l=N(r),b=D(r,8,l,0),k=b}else if(84==(0|n)){var u=i+10|0;Se[e]=u;var c=N(r),h=D(r,9,c,0),k=h}else if(73==(0|n))var d=N(r),w=D(r,11,d,0),k=w;else if(83==(0|n))var p=N(r),E=D(r,12,p,0),k=E;else if(104==(0|n)){var A=Nr(r,104);if(0==(0|A)){var k=0;break}var g=O(r,0),y=D(r,14,g,0),k=y}else if(118==(0|n)){var m=Nr(r,118);if(0==(0|m)){var k=0;break}var S=O(r,0),M=D(r,15,S,0),k=M}else if(99==(0|n)){var C=Nr(r,0);if(0==(0|C)){var k=0;break}var R=Nr(r,0);if(0==(0|R)){var k=0;break}var T=O(r,0),I=D(r,16,T,0),k=I}else if(67==(0|n)){var P=N(r),L=sr(r);if((0|L)<0){var k=0;break}var F=Se[a],X=F+1|0;if(Se[a]=X,Ae[F]<<24>>24!=95){var k=0;break}var j=N(r),U=Se[e]+5|0;Se[e]=U;var x=D(r,10,j,P),k=x}else if(70==(0|n))var z=N(r),V=D(r,13,z,0),k=V;else{if(74!=(0|n)){var k=0;break}var B=N(r),H=D(r,17,B,0),k=H}}else if(_<<24>>24==71){var K=t+2|0;Se[a]=K;var Y=Ae[f]<<24>>24;if(86==(0|Y))var G=Ar(r),W=D(r,18,G,0),k=W;else if(82==(0|Y))var Z=Ar(r),Q=D(r,19,Z,0),k=Q;else{if(65!=(0|Y)){var k=0;break}var q=O(r,0),$=D(r,20,q,0),k=$}}else var k=0;while(0);var k;return k}function Or(r){for(var a,e=r,a=e>>2;;){var e;if(0==(0|e)){var i=0;break}var v=Se[a];if(4==(0|v)){var t=Se[a+1],f=Mr(t),i=0==(0|f)&1;break}if(25!=(0|v)&&26!=(0|v)&&27!=(0|v)){var i=0;break}var e=Se[a+1],a=e>>2}var i;return i}function Nr(r,a){var e;if(0==(0|a)){var i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24}else var f=a;var f;do{if(104==(0|f)){var _=(sr(r),r+12|0);e=7;break}if(118==(0|f)){var s=(sr(r),r+12|0),n=Se[s>>2],o=n+1|0;if(Se[s>>2]=o,Ae[n]<<24>>24!=95){var l=0;e=8;break}var _=(sr(r),s);e=7;break}var l=0;e=8}while(0);if(7==e){var _,b=Se[_>>2],k=b+1|0;Se[_>>2]=k;var l=Ae[b]<<24>>24==95&1}var l;return l}function Ir(r){var a,e,i=r>>2,v=Oe;Oe+=56;var t,f=v,_=v+8,s=v+16,n=v+36,e=(0|r)>>2,o=Se[e],l=0==(8192&o|0);r:do{if(l){var a=(r+12|0)>>2,b=Se[a];if(Ae[b]<<24>>24!=63){var k=0;t=111;break}var u=b+1|0;Se[a]=u;var c=Ae[u];do if(c<<24>>24==63){if(Ae[b+2|0]<<24>>24==36){var h=b+3|0;if(Ae[h]<<24>>24!=63){var d=5;t=90;break}Se[a]=h;var w=6,p=h}else var w=0,p=u;var p,w,E=p+1|0;Se[a]=E;var A=Ae[E]<<24>>24;do if(48==(0|A)){var g=1;t=81}else{if(49==(0|A)){var g=2;t=81;break}if(50!=(0|A)){if(51==(0|A)){var y=0|He.__str2172,m=E;t=82;break}if(52==(0|A)){var y=0|He.__str3173,m=E;t=82;break}if(53==(0|A)){var y=0|He.__str4174,m=E;t=82;break}if(54==(0|A)){var y=0|He.__str5175,m=E;t=82;break}if(55==(0|A)){var y=0|He.__str6176,m=E;t=82;break}if(56==(0|A)){var y=0|He.__str7177,m=E;t=82;break}if(57==(0|A)){var y=0|He.__str8178,m=E;t=82;break}if(65==(0|A)){var y=0|He.__str9179,m=E;t=82;break}if(66==(0|A)){Se[a]=p+2|0;var S=0|He.__str10180,M=3;t=88;break}if(67==(0|A)){var y=0|He.__str11181,m=E;t=82;break}if(68==(0|A)){var y=0|He.__str12182,m=E;t=82;break}if(69==(0|A)){var y=0|He.__str13183,m=E;t=82;break}if(70==(0|A)){var y=0|He.__str14184,m=E;t=82;break}if(71==(0|A)){var y=0|He.__str15185,m=E;t=82;break}if(72==(0|A)){var y=0|He.__str16186,m=E;t=82;break}if(73==(0|A)){var y=0|He.__str17187,m=E;t=82;break}if(74==(0|A)){var y=0|He.__str18188,m=E;t=82;break}if(75==(0|A)){var y=0|He.__str19189,m=E;t=82;break}if(76==(0|A)){var y=0|He.__str20190,m=E;t=82;break}if(77==(0|A)){var y=0|He.__str21191,m=E;t=82;break}if(78==(0|A)){var y=0|He.__str22192,m=E;t=82;break}if(79==(0|A)){var y=0|He.__str23193,m=E;t=82;break}if(80==(0|A)){var y=0|He.__str24194,m=E;t=82;break}if(81==(0|A)){var y=0|He.__str25195,m=E;t=82;break}if(82==(0|A)){var y=0|He.__str26196,m=E;t=82;break}if(83==(0|A)){var y=0|He.__str27197,m=E;t=82;break}if(84==(0|A)){var y=0|He.__str28198,m=E;t=82;break}if(85==(0|A)){var y=0|He.__str29199,m=E;t=82;break}if(86==(0|A)){var y=0|He.__str30200,m=E;t=82;break}if(87==(0|A)){var y=0|He.__str31201,m=E;t=82;break}if(88==(0|A)){var y=0|He.__str32202,m=E;t=82;break}if(89==(0|A)){var y=0|He.__str33203,m=E;t=82;break}if(90==(0|A)){var y=0|He.__str34204,m=E;t=82;break}if(95==(0|A)){var C=p+2|0;Se[a]=C;var R=Ae[C]<<24>>24;if(48==(0|R)){var y=0|He.__str35205,m=C;t=82;break}if(49==(0|R)){var y=0|He.__str36206,m=C;t=82;break}if(50==(0|R)){var y=0|He.__str37207,m=C;t=82;break}if(51==(0|R)){var y=0|He.__str38208,m=C;t=82;break}if(52==(0|R)){var y=0|He.__str39209,m=C;t=82;break}if(53==(0|R)){var y=0|He.__str40210,m=C;t=82;break}if(54==(0|R)){var y=0|He.__str41211,m=C;t=82;break}if(55==(0|R)){var y=0|He.__str42212,m=C;t=82;break}if(56==(0|R)){var y=0|He.__str43213,m=C;t=82;break}if(57==(0|R)){var y=0|He.__str44214,m=C;t=82;break}if(65==(0|R)){var y=0|He.__str45215,m=C;t=82;break}if(66==(0|R)){var y=0|He.__str46216,m=C;t=82;break}if(67==(0|R)){Se[a]=p+3|0;var T=0|He.__str47217;t=84;break}if(68==(0|R)){var y=0|He.__str48218,m=C;t=82;break}if(69==(0|R)){var y=0|He.__str49219,m=C;t=82;break}if(70==(0|R)){var y=0|He.__str50220,m=C;t=82;break}if(71==(0|R)){var y=0|He.__str51221,m=C;t=82;break}if(72==(0|R)){var y=0|He.__str52222,m=C;t=82;break}if(73==(0|R)){var y=0|He.__str53223,m=C;t=82;break}if(74==(0|R)){var y=0|He.__str54224,m=C;t=82;break}if(75==(0|R)){var y=0|He.__str55225,m=C;t=82;break}if(76==(0|R)){var y=0|He.__str56226,m=C;t=82;break}if(77==(0|R)){var y=0|He.__str57227,m=C;t=82;break}if(78==(0|R)){var y=0|He.__str58228,m=C;t=82;break}if(79==(0|R)){var y=0|He.__str59229,m=C;t=82;break}if(82==(0|R)){var O=4|o;Se[e]=O;var N=p+3|0;Se[a]=N;var I=Ae[N]<<24>>24;if(48==(0|I)){Se[a]=p+4|0,Cr(s);var P=(Pr(r,_,s,0),Se[_>>2]),D=Se[_+4>>2],L=Dr(r,0|He.__str60230,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=D,ne)),F=Se[a]-1|0;Se[a]=F;var y=L,m=F;t=82;break}if(49==(0|I)){Se[a]=p+4|0;var X=Lr(r),j=Lr(r),U=Lr(r),x=Lr(r),z=Se[a]-1|0;Se[a]=z;var V=Dr(r,0|He.__str61231,(ne=Oe,Oe+=16,Se[ne>>2]=X,Se[ne+4>>2]=j,Se[ne+8>>2]=U,Se[ne+12>>2]=x,ne)),y=V,m=Se[a];t=82;break}if(50==(0|I)){var y=0|He.__str62232,m=N;t=82;break}if(51==(0|I)){var y=0|He.__str63233,m=N;t=82;break}if(52==(0|I)){var y=0|He.__str64234,m=N;t=82;break}var y=0,m=N;t=82;break}if(83==(0|R)){var y=0|He.__str65235,m=C;t=82;break}if(84==(0|R)){var y=0|He.__str66236,m=C;t=82;break}if(85==(0|R)){var y=0|He.__str67237,m=C;t=82;break}if(86==(0|R)){var y=0|He.__str68238,m=C;t=82;break}if(88==(0|R)){var y=0|He.__str69239,m=C;t=82;break}if(89==(0|R)){var y=0|He.__str70240,m=C;t=82;break}var k=0;t=111;break r}var k=0;t=111;break r}var y=0|He.__str1171,m=E;t=82}while(0);do{if(81==t){var g;Se[a]=p+2|0;var B=g;t=83;break}if(82==t){var m,y;if(Se[a]=m+1|0,1==(0|w)||2==(0|w)){var B=w;t=83;break}if(4==(0|w)){var T=y;t=84;break}if(6!=(0|w)){var S=y,M=w;t=88;break}Cr(n);var H=Xr(r,n,0,60,62);if(0==(0|H))var K=y;else var Y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=y,Se[ne+4>>2]=H,ne)),K=Y;var K;Se[i+6]=0;var S=K,M=w;t=88;break}}while(0);if(83==t){var B,G=r+40|0,W=Fr(r,0|He._symbol_demangle_dashed_null,-1,G);if(0==(0|W)){var k=0;t=111;break r}var d=B;t=90;break}if(84==t){var T;Se[i+4]=T;var Z=1,Q=T;t=109;break r}if(88==t){var M,S,q=r+40|0,$=Fr(r,S,-1,q);if(0==(0|$)){var k=0;t=111;break r}var d=M;t=90;break}}else{if(c<<24>>24==36){var J=b+2|0;Se[a]=J;var rr=jr(r);Se[i+4]=rr;var ar=0!=(0|rr)&1;t=107;break}var d=0;t=90}while(0);if(90==t){var d,er=Me[a],ir=Ae[er]<<24>>24;if(64==(0|ir))Se[a]=er+1|0;else if(36==(0|ir))t=93;else{var vr=zr(r);if(0==(0|vr)){var k=-1;t=111;break}}if(5==(0|d)){var tr=r+20|0,fr=Se[tr>>2]+1|0;Se[tr>>2]=fr}else if(1==(0|d)||2==(0|d)){if(Me[i+11]>>>0<2){var k=-1;t=111;break}var _r=r+56|0,sr=Me[_r>>2],nr=Se[sr+4>>2];if(1==(0|d))Se[sr>>2]=nr;else{var or=Dr(r,0|He.__str71241,(ne=Oe,Oe+=4,Se[ne>>2]=nr,ne)),lr=Se[_r>>2];Se[lr>>2]=or}var br=4|Se[e];Se[e]=br}else if(3==(0|d)){var kr=Se[e]&-5;Se[e]=kr}var ur=ge[Se[a]];if((ur-48&255&255)<10)var cr=Vr(r),ar=cr;else if((ur-65&255&255)<26)var hr=Br(r,3==(0|d)&1),ar=hr;else{if(ur<<24>>24!=36){var k=-1;t=111;break}var dr=Hr(r),ar=dr}}var ar;if(0==(0|ar)){var k=-1;t=111;break}var Z=ar,Q=Se[i+4];t=109;break}var wr=Pr(r,f,0,0);if(0==(0|wr)){var k=-1;t=111;break}var pr=Se[f>>2],Er=Se[f+4>>2],Ar=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=pr,Se[ne+4>>2]=Er,ne));Se[i+4]=Ar;var Z=1,Q=Ar;t=109;break}while(0);do if(109==t){var Q,Z;if(0!=(0|Q)){var k=Z;break}Xa(0|He.__str72242,1499,0|He.___func___symbol_demangle,0|He.__str73243);var k=Z}while(0);var k;return Oe=v,k}function Pr(r,a,e,i){var v,t,f,_=Oe;Oe+=24;var s=_,n=_+4,o=_+8,l=_+16,b=_+20;0==(0|a)&&Xa(0|He.__str72242,829,0|He.___func___demangle_datatype,0|He.__str121291);var f=(a+4|0)>>2;Se[f]=0;var t=(0|a)>>2;Se[t]=0;var v=(r+12|0)>>2,k=Me[v],u=k+1|0;Se[v]=u;var c=Ae[k],h=c<<24>>24;do if(95==(0|h)){Se[v]=k+2|0;var d=Ae[u],w=Zr(d);Se[t]=w}else if(67==(0|h)||68==(0|h)||69==(0|h)||70==(0|h)||71==(0|h)||72==(0|h)||73==(0|h)||74==(0|h)||75==(0|h)||77==(0|h)||78==(0|h)||79==(0|h)||88==(0|h)||90==(0|h)){var p=Qr(c);Se[t]=p}else if(84==(0|h)||85==(0|h)||86==(0|h)||89==(0|h)){var E=qr(r);if(0==(0|E))break;var A=0==(32768&Se[r>>2]|0);do if(A)if(84==(0|h))var g=0|He.__str122292;else if(85==(0|h))var g=0|He.__str123293;else if(86==(0|h))var g=0|He.__str124294;else{if(89!=(0|h)){var g=0;break}var g=0|He.__str125295}else var g=0;while(0);var g,y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=g,Se[ne+4>>2]=E,ne));Se[t]=y}else if(63==(0|h))if(0==(0|i))$r(a,r,e,63,0);else{var m=Lr(r);if(0==(0|m))break;var S=Dr(r,0|He.__str126296,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne));Se[t]=S}else if(65==(0|h)||66==(0|h))$r(a,r,e,c,i);else if(81==(0|h)||82==(0|h)||83==(0|h)){var M=0==(0|i)?80:c;$r(a,r,e,M,i)}else if(80==(0|h))if(((Ae[u]<<24>>24)-48|0)>>>0<10){var C=k+2|0;if(Se[v]=C,Ae[u]<<24>>24!=54)break;var R=r+44|0,T=Se[R>>2];Se[v]=k+3|0;var O=Ae[C],N=Se[r>>2]&-17,I=Ur(O,s,n,N);if(0==(0|I))break;var P=Pr(r,o,e,0);if(0==(0|P))break;var D=Xr(r,e,1,40,41);if(0==(0|D))break;Se[R>>2]=T;var L=Se[o>>2],F=Se[o+4>>2],X=Se[s>>2],j=Dr(r,0|He.__str127297,(ne=Oe,Oe+=12,Se[ne>>2]=L,Se[ne+4>>2]=F,Se[ne+8>>2]=X,ne));Se[t]=j;var U=Dr(r,0|He.__str128298,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[f]=U}else $r(a,r,e,80,i);else if(87==(0|h)){if(Ae[u]<<24>>24!=52)break;Se[v]=k+2|0;var x=qr(r);if(0==(0|x))break;if(0==(32768&Se[r>>2]|0)){var z=Dr(r,0|He.__str129299,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne));Se[t]=z}else Se[t]=x}else if(48==(0|h)||49==(0|h)||50==(0|h)||51==(0|h)||52==(0|h)||53==(0|h)||54==(0|h)||55==(0|h)||56==(0|h)||57==(0|h)){var V=h<<1,B=V-96|0,H=Yr(e,B);Se[t]=H;var K=V-95|0,Y=Yr(e,K);Se[f]=Y}else if(36==(0|h)){var G=k+2|0;Se[v]=G;var W=Ae[u]<<24>>24;if(48==(0|W)){var Z=Lr(r);Se[t]=Z}else if(68==(0|W)){var Q=Lr(r);if(0==(0|Q))break;var q=Dr(r,0|He.__str130300,(ne=Oe,Oe+=4,Se[ne>>2]=Q,ne));Se[t]=q}else if(70==(0|W)){var $=Lr(r);if(0==(0|$))break;var J=Lr(r);if(0==(0|J))break;var rr=Dr(r,0|He.__str131301,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=J,ne));Se[t]=rr}else if(71==(0|W)){var ar=Lr(r);if(0==(0|ar))break;var er=Lr(r);if(0==(0|er))break;var ir=Lr(r);if(0==(0|ir))break;var vr=Dr(r,0|He.__str132302,(ne=Oe,Oe+=12,Se[ne>>2]=ar,Se[ne+4>>2]=er,Se[ne+8>>2]=ir,ne));Se[t]=vr}else if(81==(0|W)){var tr=Lr(r);if(0==(0|tr))break;var fr=Dr(r,0|He.__str133303,(ne=Oe,Oe+=4,Se[ne>>2]=tr,ne));Se[t]=fr}else{if(36!=(0|W))break;if(Ae[G]<<24>>24!=67)break;Se[v]=k+3|0;var _r=xr(r,l,b);if(0==(0|_r))break;var sr=Pr(r,a,e,i);if(0==(0|sr))break;var nr=Se[t],or=Se[l>>2],lr=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=nr,Se[ne+4>>2]=or,ne));Se[t]=lr}}while(0);var br=0!=(0|Se[t])&1;return Oe=_,br}function Dr(r,a){var e,i=Oe;Oe+=4;var v=i,e=v>>2,t=v;Se[t>>2]=arguments[Dr.length];var f=1,_=0;r:for(;;){var _,f,s=Ae[a+_|0];do{if(s<<24>>24==0)break r;if(s<<24>>24==37){var n=_+1|0,o=Ae[a+n|0]<<24>>24;if(115==(0|o)){var l=Se[e],b=l,k=l+4|0;Se[e]=k;var u=Se[b>>2];if(0==(0|u)){var c=f,h=n;break}var d=Ca(u),c=d+f|0,h=n;break}if(99==(0|o)){var w=Se[e]+4|0;Se[e]=w;var c=f+1|0,h=n;break}if(37==(0|o))var p=n;else var p=_;var p,c=f+1|0,h=p}else var c=f+1|0,h=_}while(0);var h,c,f=c,_=h+1|0}var E=Wr(r,f);if(0==(0|E))var A=0;else{Se[t>>2]=arguments[Dr.length];var g=E,y=0;r:for(;;){var y,g,m=Ae[a+y|0];do{if(m<<24>>24==0)break r;if(m<<24>>24==37){var S=y+1|0,M=Ae[a+S|0]<<24>>24;if(115==(0|M)){var C=Se[e],R=C,T=C+4|0;Se[e]=T;var O=Se[R>>2];if(0==(0|O)){var N=g,I=S;break}var P=Ca(O);Pa(g,O,P,1);var N=g+P|0,I=S;break}if(99==(0|M)){var D=Se[e],L=D,F=D+4|0;Se[e]=F,Ae[g]=255&Se[L>>2];var N=g+1|0,I=S;break}if(37==(0|M))var X=S;else var X=y;var X;Ae[g]=37;var N=g+1|0,I=X}else{Ae[g]=m;var N=g+1|0,I=y}}while(0);var I,N,g=N,y=I+1|0}Ae[g]=0;var A=E}var A;return Oe=i,A}function Lr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==63){var v=e+1|0;Se[a]=v;var t=1,f=v,_=Ae[v]}else var t=0,f=e,_=i;var _,f,t,s=(_-48&255&255)<9;do if(s){var n=Wr(r,3),o=0!=(0|t);o&&(Ae[n]=45);var l=Ae[Se[a]]+1&255;Ae[n+t|0]=l;var b=o?2:1;\\\\nAe[n+b|0]=0;var k=Se[a]+1|0;Se[a]=k;var u=n}else if(_<<24>>24==57){var c=Wr(r,4),h=0!=(0|t);h&&(Ae[c]=45),Ae[c+t|0]=49;var d=h?2:1;Ae[c+d|0]=48;var w=h?3:2;Ae[c+w|0]=0;var p=Se[a]+1|0;Se[a]=p;var u=c}else{if((_-65&255&255)>=16){var u=0;break}for(var E=0,A=f;;){var A,E,g=A+1|0;Se[a]=g;var y=(Ae[A]<<24>>24)+((E<<4)-65)|0,m=ge[g];if((m-65&255&255)>=16)break;var E=y,A=g}if(m<<24>>24!=64){var u=0;break}var S=Wr(r,17),M=0!=(0|t)?0|He.__str119289:0|ii,C=(za(S,0|He.__str118288,(ne=Oe,Oe+=8,Se[ne>>2]=M,Se[ne+4>>2]=y,ne)),Se[a]+1|0);Se[a]=C;var u=S}while(0);var u;return u}function Fr(r,a,e,i){var v,t,f,_;0==(0|a)&&Xa(0|He.__str72242,212,0|He.___func___str_array_push,0|He.__str115285),0==(0|i)&&Xa(0|He.__str72242,213,0|He.___func___str_array_push,0|He.__str116286);var f=(i+12|0)>>2,s=Me[f],n=0==(0|s);do{if(n){Se[f]=32;var o=Wr(r,128);if(0==(0|o)){var l=0;_=17;break}Se[i+16>>2]=o,_=11;break}if(Me[i+8>>2]>>>0<s>>>0){_=11;break}var b=s<<3,k=Wr(r,b);if(0==(0|k)){var l=0;_=17;break}var u=k,c=i+16|0,h=Se[c>>2],d=Se[f]<<2;Pa(k,h,d,1);var w=Se[f]<<1;Se[f]=w,Se[c>>2]=u,_=11;break}while(0);do if(11==_){if((0|e)==-1)var p=Ca(a),E=p;else var E=e;var E,A=ja(a),g=E+1|0,y=Wr(r,g),t=(i+4|0)>>2,v=(i+16|0)>>2,m=(Se[t]<<2)+Se[v]|0;Se[m>>2]=y;var S=Se[Se[v]+(Se[t]<<2)>>2];if(0==(0|S)){Xa(0|He.__str72242,233,0|He.___func___str_array_push,0|He.__str117287);var M=Se[Se[v]+(Se[t]<<2)>>2]}else var M=S;var M;Pa(M,A,E,1),va(A),Ae[Se[Se[v]+(Se[t]<<2)>>2]+g|0]=0;var C=Se[t]+1|0;Se[t]=C;var R=i+8|0;if(C>>>0<Me[R>>2]>>>0){var l=1;break}Se[R>>2]=C;var l=1}while(0);var l;return l}function Xr(r,a,e,i,v){var t,f,_=Oe;Oe+=28;var s,n=_,o=_+8;Cr(o);var f=(r+12|0)>>2,l=0==(0|e),t=(0|n)>>2,b=n+4|0;r:do if(l)for(;;){var k=Se[f],u=Ae[k];if(u<<24>>24==0){s=12;break r}if(u<<24>>24==64){var c=k;s=7;break r}var h=Pr(r,n,a,1);if(0==(0|h)){var d=0;s=25;break r}var w=Se[t],p=Se[b>>2],E=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=w,Se[ne+4>>2]=p,ne)),A=Fr(r,E,-1,o);if(0==(0|A)){var d=0;s=25;break r}var g=Se[t],y=Da(g,0|He.__str110280);if(0==(0|y)){s=12;break r}}else for(;;){var m=Se[f],S=Ae[m];if(S<<24>>24==0){s=12;break r}if(S<<24>>24==64){var c=m;s=7;break r}var M=Pr(r,n,a,1);if(0==(0|M)){var d=0;s=25;break r}var C=Se[t],R=Da(C,0|He.__str84254);if(0==(0|R)){s=13;break r}var T=Se[b>>2],O=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=C,Se[ne+4>>2]=T,ne)),N=Fr(r,O,-1,o);if(0==(0|N)){var d=0;s=25;break r}var I=Se[t],P=Da(I,0|He.__str110280);if(0==(0|P)){s=12;break r}}while(0);do if(7==s){var c;Se[f]=c+1|0,s=12;break}while(0);do if(12==s){if(l){s=14;break}s=13;break}while(0);do if(13==s){var D=Se[f],L=D+1|0;if(Se[f]=L,Ae[D]<<24>>24==90){s=14;break}var d=0;s=25;break}while(0);r:do if(14==s){var F=o+4|0,X=Me[F>>2];do{if(0!=(0|X)){if(1==(0|X)){var j=o+16|0,U=Se[Se[j>>2]>>2],x=Da(U,0|He.__str84254);if(0==(0|x)){s=17;break}var z=j;s=20;break}var V=o+16|0;if(X>>>0<=1){var z=V;s=20;break}for(var B=0,H=1;;){var H,B,K=Se[Se[V>>2]+(H<<2)>>2],Y=Dr(r,0|He.__str112282,(ne=Oe,Oe+=8,Se[ne>>2]=B,Se[ne+4>>2]=K,ne)),G=H+1|0;if(G>>>0>=Me[F>>2]>>>0)break;var B=Y,H=G}if(0==(0|Y)){var z=V;s=20;break}var W=Y,Z=Y;s=21;break}s=17}while(0);if(17==s){var Q=i<<24>>24,q=v<<24>>24,$=Dr(r,0|He.__str111281,(ne=Oe,Oe+=8,Se[ne>>2]=Q,Se[ne+4>>2]=q,ne)),d=$;break}if(20==s)var z,W=Se[Se[z>>2]>>2],Z=0;var Z,W,J=v<<24>>24,rr=v<<24>>24==62;do if(rr){var ar=Ca(W);if(Ae[W+(ar-1)|0]<<24>>24!=62)break;var er=i<<24>>24,ir=Se[Se[o+16>>2]>>2],vr=Dr(r,0|He.__str113283,(ne=Oe,Oe+=16,Se[ne>>2]=er,Se[ne+4>>2]=ir,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=vr;break r}while(0);var tr=i<<24>>24,fr=Se[Se[o+16>>2]>>2],_r=Dr(r,0|He.__str114284,(ne=Oe,Oe+=16,Se[ne>>2]=tr,Se[ne+4>>2]=fr,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=_r}while(0);var d;return Oe=_,d}function jr(r){var a,e=Oe;Oe+=20;var i=e,v=r+24|0,t=Se[v>>2],a=(r+20|0)>>2,f=Se[a],_=r+44|0,s=Se[_>>2];Se[a]=t;var n=Kr(r);if(0==(0|n))var o=0;else{Cr(i);var l=Xr(r,i,0,60,62);if(0==(0|l))var b=n;else var k=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=n,Se[ne+4>>2]=l,ne)),b=k;var b;Se[v>>2]=t,Se[a]=f,Se[_>>2]=s;var o=b}var o;return Oe=e,o}function Ur(r,a,e,i){var v,t=a>>2;Se[e>>2]=0,Se[t]=0;var f=0==(18&i|0);do{if(f){var _=r<<24>>24,s=1==((_-65)%2|0);if(0==(1&i|0)){if(s?Se[e>>2]=0|He.__str95265:v=14,65==(0|_)||66==(0|_)){Se[t]=0|He.__str96266,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str97267,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str98268,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str99269,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str100270,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str101271,v=21;break}var n=0;v=22;break}if(s?Se[e>>2]=0|He.__str88258:v=5,65==(0|_)||66==(0|_)){Se[t]=0|He.__str89259,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str90260,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str91261,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str92262,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str93263,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str94264,v=21;break}var n=0;v=22;break}v=21}while(0);if(21==v)var n=1;var n;return n}function xr(r,a,e){var i;Se[e>>2]=0;var i=(r+12|0)>>2,v=Se[i];if(Ae[v]<<24>>24==69){Se[e>>2]=0|He.__str102272;var t=Se[i]+1|0;Se[i]=t;var f=t}else var f=v;var f;Se[i]=f+1|0;var _=Ae[f]<<24>>24;if(65==(0|_)){Se[a>>2]=0;var s=1}else if(66==(0|_)){Se[a>>2]=0|He.__str103273;var s=1}else if(67==(0|_)){Se[a>>2]=0|He.__str104274;var s=1}else if(68==(0|_)){Se[a>>2]=0|He.__str105275;var s=1}else var s=0;var s;return s}function zr(r){var a,e,a=(r+12|0)>>2,i=r+40|0,v=r+20|0,t=0|i,f=r+44|0,_=r+48|0,s=r+52|0,n=r+56|0,o=r+20|0,l=r+24|0,b=r+16|0,k=0;r:for(;;){var k,u=Se[a],c=Ae[u];if(c<<24>>24==64){var h=u+1|0;Se[a]=h;var d=1;break}var w=c<<24>>24;do{if(0==(0|w)){var d=0;break r}if(48==(0|w)||49==(0|w)||50==(0|w)||51==(0|w)||52==(0|w)||53==(0|w)||54==(0|w)||55==(0|w)||56==(0|w)||57==(0|w)){var p=u+1|0;Se[a]=p;var E=(Ae[u]<<24>>24)-48|0,A=Yr(v,E),g=A;e=14;break}if(63==(0|w)){var y=u+1|0;Se[a]=y;var m=Ae[y]<<24>>24;if(36==(0|m)){var S=u+2|0;Se[a]=S;var M=jr(r);if(0==(0|M)){var d=0;break r}var C=Fr(r,M,-1,v);if(0==(0|C)){var d=0;break r}var R=M;e=15;break}if(63==(0|m)){var T=Se[t>>2],O=Se[f>>2],N=Se[_>>2],I=Se[s>>2],P=Se[n>>2],D=Se[o>>2],L=Se[l>>2];Cr(i);var F=Ir(r);if(0==(0|F))var X=k;else var j=Se[b>>2],U=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=j,ne)),X=U;var X;Se[o>>2]=D,Se[l>>2]=L,Se[t>>2]=T,Se[f>>2]=O,Se[_>>2]=N,Se[s>>2]=I,Se[n>>2]=P;var g=X;e=14;break}var x=Lr(r);if(0==(0|x)){var d=0;break r}var z=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne)),g=z;e=14;break}var V=Kr(r),g=V;e=14;break}while(0);if(14==e){var g;if(0==(0|g)){var d=0;break}var R=g}var R,B=Fr(r,R,-1,i);if(0==(0|B)){var d=0;break}var k=R}var d;return d}function Vr(r){var a,e,i,v=Oe;Oe+=36;var t,f=v,i=f>>2,_=v+4,s=v+8,e=s>>2,n=v+16;Se[i]=0;var o=0|r,l=Se[o>>2],b=0==(128&l|0),k=r+12|0;do if(b){var u=Ae[Se[k>>2]]<<24>>24;if(48==(0|u))var c=0|He.__str76246,h=k,a=h>>2;else if(49==(0|u))var c=0|He.__str77247,h=k,a=h>>2;else{if(50!=(0|u)){var c=0,h=k,a=h>>2;break}var c=0|He.__str78248,h=k,a=h>>2}}else var c=0,h=k,a=h>>2;while(0);var h,c,d=0==(512&l|0);do if(d){if((Ae[Se[a]]-48&255&255)>=3){var w=0;break}var w=0|He.__str79249}else var w=0;while(0);var w,p=Gr(r,0),E=Se[a],A=E+1|0;Se[a]=A;var g=Ae[E]<<24>>24;do{if(48==(0|g)||49==(0|g)||50==(0|g)||51==(0|g)||52==(0|g)||53==(0|g)){var y=r+44|0,m=Se[y>>2];Cr(n);var S=Pr(r,s,n,0);if(0==(0|S)){var M=0;t=28;break}var C=xr(r,f,_);if(0==(0|C)){var M=0;t=28;break}var R=Se[i],T=0==(0|R),O=Se[_>>2];do if(T)Se[i]=O;else{if(0==(0|O))break;var N=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=R,Se[ne+4>>2]=O,ne));Se[i]=N}while(0);Se[y>>2]=m,t=22;break}if(54==(0|g)||55==(0|g)){var I=s+4|0;Se[I>>2]=0,Se[e]=0;var P=xr(r,f,_);if(0==(0|P)){var M=0;t=28;break}if(Ae[Se[a]]<<24>>24==64){t=22;break}var D=qr(r);if(0==(0|D)){var M=0;t=28;break}var L=Dr(r,0|He.__str107277,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[I>>2]=L,t=22;break}if(56==(0|g)||57==(0|g)){Se[e+1]=0,Se[e]=0,Se[i]=0,t=22;break}var M=0;t=28}while(0);if(22==t){var F=0==(4096&Se[o>>2]|0);do{if(F){var X=Se[e],j=Se[i];if(0==(0|j)){var U=X;t=26;break}var x=0!=(0|X)?0|He.__str87257:0,z=0|He.__str87257,V=j,B=x,H=X;t=27;break}Se[i]=0,Se[e+1]=0,Se[e]=0;var U=0;t=26;break}while(0);if(26==t)var U,K=0!=(0|U)?0|He.__str87257:0,z=K,V=0,B=0,H=U;var H,B,V,z,Y=Se[e+1],G=Dr(r,0|He.__str108278,(ne=Oe,Oe+=32,Se[ne>>2]=c,Se[ne+4>>2]=w,Se[ne+8>>2]=H,Se[ne+12>>2]=B,Se[ne+16>>2]=V,Se[ne+20>>2]=z,Se[ne+24>>2]=p,Se[ne+28>>2]=Y,ne));Se[r+16>>2]=G;var M=1}var M;return Oe=v,M}function Br(r,a){var e,i,v,t,f=Oe;Oe+=44;var _,s=f,t=s>>2,n=f+8,o=f+12,v=o>>2,l=f+16,b=f+20,k=f+40;Se[v]=0;var i=(r+12|0)>>2,u=Se[i],c=u+1|0;Se[i]=c;var h=ge[u],d=h<<24>>24,w=(h-65&255&255)>25;r:do if(w)var p=0;else{var e=(0|r)>>2,E=Me[e],A=0==(128&E|0),g=d-65|0;do if(A){var y=g/8|0;if(0==(0|y))var m=0|He.__str76246,S=g;else if(1==(0|y))var m=0|He.__str77247,S=g;else{if(2!=(0|y)){var m=0,S=g;break}var m=0|He.__str78248,S=g}}else var m=0,S=g;while(0);var S,m,M=0==(512&E|0)&h<<24>>24<89,C=(0|S)%8;do if(M)if(2==(0|C)||3==(0|C))var R=m,T=0|He.__str79249;else if(4==(0|C)||5==(0|C))var R=m,T=0|He.__str80250;else{if(6!=(0|C)&&7!=(0|C)){var R=m,T=0;break}var O=Dr(r,0|He.__str81251,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne)),R=O,T=0|He.__str80250}else var R=m,T=0;while(0);var T,R,N=Gr(r,0),I=6==(0|C);do{if(!I){if(7==((d-56)%8|0)){_=14;break}var P=N;_=15;break}_=14}while(0);if(14==_)var D=Lr(r),L=Dr(r,0|He.__str82252,(ne=Oe,Oe+=8,Se[ne>>2]=N,Se[ne+4>>2]=D,ne)),P=L;var P,F=h<<24>>24>88;do if(F)var X=0;else{if((C-2|0)>>>0<2){var X=0;break}var j=xr(r,o,k);if(0==(0|j)){var p=0;break r}var U=Me[v],x=Se[k>>2];if(0==(0|U)&0==(0|x)){var X=0;break}var z=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=U,Se[ne+4>>2]=x,ne));Se[v]=z;var X=z}while(0);var X,V=Se[i],B=V+1|0;Se[i]=B;var H=Ae[V],K=Se[e],Y=Ur(H,n,l,K);if(0==(0|Y)){var p=0;break}Cr(b);var G=Se[i];if(Ae[G]<<24>>24==64){Se[t]=0|He.__str84254,Se[t+1]=0;var W=G+1|0;Se[i]=W}else{var Z=Pr(r,s,b,0);if(0==(0|Z)){var p=0;break}}if(0!=(4&Se[e]|0)&&(Se[t+1]=0,Se[t]=0),0==(0|a))var Q=P;else{var q=0|s,$=Se[q>>2],J=s+4|0,rr=Se[J>>2],ar=Dr(r,0|He.__str85255,(ne=Oe,Oe+=12,Se[ne>>2]=P,Se[ne+4>>2]=$,Se[ne+8>>2]=rr,ne));Se[J>>2]=0,Se[q>>2]=0;var Q=ar}var Q,er=r+44|0,ir=Se[er>>2],vr=Xr(r,b,1,40,41);if(0==(0|vr)){var p=0;break}if(0==(4096&Se[e]|0))var tr=vr,fr=X;else{Se[v]=0;var tr=0,fr=0}var fr,tr;Se[er>>2]=ir;var _r=Se[t],sr=Se[t+1];if(0==(0|_r))var nr=0;else var or=0!=(0|sr)?0:0|He.__str87257,nr=or;var nr,lr=Se[n>>2],br=0!=(0|lr)?0|He.__str87257:0,kr=Se[l>>2],ur=Dr(r,0|He.__str86256,(ne=Oe,Oe+=44,Se[ne>>2]=R,Se[ne+4>>2]=T,Se[ne+8>>2]=_r,Se[ne+12>>2]=nr,Se[ne+16>>2]=lr,Se[ne+20>>2]=br,Se[ne+24>>2]=kr,Se[ne+28>>2]=Q,Se[ne+32>>2]=tr,Se[ne+36>>2]=fr,Se[ne+40>>2]=sr,ne));Se[r+16>>2]=ur;var p=1}while(0);var p;return Oe=f,p}function Hr(r){var a,a=(r+12|0)>>2,e=Se[a];if(Ae[e]<<24>>24==36)var i=e;else{Xa(0|He.__str72242,1252,0|He.___func___handle_template,0|He.__str74244);var i=Se[a]}var i;Se[a]=i+1|0;var v=Kr(r),t=0==(0|v);do if(t)var f=0;else{var _=Xr(r,0,0,60,62);if(0==(0|_)){var f=0;break}var s=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=v,Se[ne+4>>2]=_,ne));Se[r+16>>2]=s;var f=1}while(0);var f;return f}function Kr(r){for(var a,a=(r+12|0)>>2,e=Me[a],i=e,v=Ae[e];;){var v,i;if(!((v-65&255&255)<26|(v-97&255&255)<26|(v-48&255&255)<10)&&v<<24>>24!=95&&v<<24>>24!=36){var t=0;break}var f=i+1|0;Se[a]=f;var _=ge[f];if(_<<24>>24==64){Se[a]=i+2|0;var s=f-e|0,n=r+20|0,o=Fr(r,e,s,n);if(0==(0|o)){var t=0;break}var l=Se[r+24>>2]-1-Se[n>>2]|0,b=Yr(n,l),t=b;break}var i=f,v=_}var t;return t}function Yr(r,a){0==(0|r)&&Xa(0|He.__str72242,263,0|He.___func___str_array_get_ref,0|He.__str75245);var e=Se[r>>2]+a|0;if(e>>>0<Me[r+8>>2]>>>0)var i=Se[Se[r+16>>2]+(e<<2)>>2];else var i=0;var i;return i}function Gr(r,a){var e,e=(r+44|0)>>2,i=Me[e];if(i>>>0>a>>>0){for(var v=r+56|0,t=a,f=0,_=Se[v>>2],s=i;;){var s,_,f,t,n=Me[_+(t<<2)>>2];if(0==(0|n)){Xa(0|He.__str72242,680,0|He.___func___get_class_string,0|He.__str106276);var o=Se[v>>2],l=o,b=Se[o+(t<<2)>>2],k=Se[e]}else var l=_,b=n,k=s;var k,b,l,u=Ca(b),c=u+(f+2)|0,h=t+1|0;if(h>>>0>=k>>>0)break;var t=h,f=c,_=l,s=k}var d=c-1|0}else var d=-1;var d,w=Wr(r,d);if(0==(0|w))var p=0;else{var E=Se[e]-1|0,A=(0|E)<(0|a);r:do if(A)var g=0;else for(var y=r+56|0,m=0,S=E;;){var S,m,M=Se[Se[y>>2]+(S<<2)>>2],C=Ca(M),R=w+m|0;Pa(R,M,C,1);var T=C+m|0;if((0|S)>(0|a)){var O=T+1|0;Ae[w+T|0]=58;var N=T+2|0;Ae[w+O|0]=58;var I=N}else var I=T;var I,P=S-1|0;if((0|P)<(0|a)){var g=I;break r}var m=I,S=P}while(0);var g;Ae[w+g|0]=0;var p=w}var p;return p}function Wr(r,a){var e,i=a>>>0>1020;do if(i){var v=Se[r+4>>2],t=a+4|0,f=pe[v](t);if(0==(0|f)){var _=0;break}var s=r+60|0,n=Se[s>>2],o=f;Se[o>>2]=n,Se[s>>2]=f,Se[r+64>>2]=0;var _=f+4|0}else{var e=(r+64|0)>>2,l=Me[e];if(l>>>0<a>>>0){var b=Se[r+4>>2],k=pe[b](1024);if(0==(0|k)){var _=0;break}var u=r+60|0,c=Se[u>>2],h=k;Se[h>>2]=c,Se[u>>2]=k,Se[e]=1020;var d=1020,w=k}else var d=l,w=Se[r+60>>2];var w,d;Se[e]=d-a|0;var _=w+(1024-d)|0}while(0);var _;return _}function Zr(r){var a=r<<24>>24;if(68==(0|a))var e=0|He.__str157327;else if(69==(0|a))var e=0|He.__str158328;else if(70==(0|a))var e=0|He.__str159329;else if(71==(0|a))var e=0|He.__str160330;else if(72==(0|a))var e=0|He.__str161331;else if(73==(0|a))var e=0|He.__str162332;else if(74==(0|a))var e=0|He.__str163333;else if(75==(0|a))var e=0|He.__str164334;else if(76==(0|a))var e=0|He.__str165335;else if(77==(0|a))var e=0|He.__str166336;else if(78==(0|a))var e=0|He.__str167337;else if(87==(0|a))var e=0|He.__str168338;else var e=0;var e;return e}function Qr(r){var a=r<<24>>24;if(67==(0|a))var e=0|He.__str145315;else if(68==(0|a))var e=0|He.__str146316;else if(69==(0|a))var e=0|He.__str147317;else if(70==(0|a))var e=0|He.__str148318;else if(71==(0|a))var e=0|He.__str149319;else if(72==(0|a))var e=0|He.__str150320;else if(73==(0|a))var e=0|He.__str151321;else if(74==(0|a))var e=0|He.__str152322;else if(75==(0|a))var e=0|He.__str153323;else if(77==(0|a))var e=0|He.__str154324;else if(78==(0|a))var e=0|He.__str155325;else if(79==(0|a))var e=0|He.__str156326;else if(88==(0|a))var e=0|He.__str84254;else if(90==(0|a))var e=0|He.__str110280;else var e=0;var e;return e}function qr(r){var a=r+44|0,e=Se[a>>2],i=zr(r);if(0==(0|i))var v=0;else var t=Gr(r,e),v=t;var v;return Se[a>>2]=e,v}function $r(r,a,e,i,v){var t,f,_,s=Oe;Oe+=16;var n,o=s,_=o>>2,l=s+4,b=s+8,f=b>>2;Se[l>>2]=0|ii;var t=(a+12|0)>>2,k=Se[t];if(Ae[k]<<24>>24==69){Se[l>>2]=0|He.__str134304;var u=k+1|0;Se[t]=u;var c=0|He.__str134304}else var c=0|ii;var c,h=i<<24>>24;do{if(65==(0|h)){var d=Dr(a,0|He.__str135305,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=d;n=10;break}if(66==(0|h)){var p=Dr(a,0|He.__str136306,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=p;n=10;break}if(80==(0|h)){var E=Dr(a,0|He.__str137307,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=E;n=10;break}if(81==(0|h)){var A=Dr(a,0|He.__str138308,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=A;n=10;break}if(82==(0|h)){var g=Dr(a,0|He.__str139309,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=g;n=10;break}if(83==(0|h)){var y=Dr(a,0|He.__str140310,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=y;n=10;break}if(63==(0|h)){var w=0|ii;n=10}else n=31}while(0);r:do if(10==n){var w,m=xr(a,o,l);if(0==(0|m))break;var S=a+44|0,M=Se[S>>2],C=Se[t],R=Ae[C]<<24>>24==89;a:do if(R){var T=C+1|0;Se[t]=T;var O=Lr(a);if(0==(0|O))break r;var N=Ha(O),I=Ae[w]<<24>>24==32,P=Se[_],D=0==(0|P);do{if(I){if(!D){n=17;break}var L=w+1|0;n=18;break}if(D){var L=w;n=18;break}n=17;break}while(0);if(17==n){var F=Dr(a,0|He.__str141311,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=w,ne));Se[_]=0;var X=F}else if(18==n)var L,j=Dr(a,0|He.__str142312,(ne=Oe,Oe+=4,Se[ne>>2]=L,ne)),X=j;var X;if(0==(0|N)){var U=X;break}for(var x=X,z=N;;){var z,x,V=z-1|0,B=Lr(a),H=Dr(a,0|He.__str143313,(ne=Oe,Oe+=8,Se[ne>>2]=x,Se[ne+4>>2]=B,ne));if(0==(0|V)){var U=H;break a}var x=H,z=V}}else var U=w;while(0);var U,K=Pr(a,b,e,0);if(0==(0|K))break;var Y=Se[_];if(0==(0|Y)){var G=0==(0|v);do if(G){if(Ae[U]<<24>>24==0){var W=U;break}var Z=U+1|0;if(Ae[Z]<<24>>24!=42){var W=U;break}var Q=Se[f],q=Ca(Q);if(Ae[Q+(q-1)|0]<<24>>24!=42){var W=U;break}var W=Z}else var W=U;while(0);var W,$=Se[f],J=Dr(a,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=W,ne));Se[r>>2]=J}else{var rr=Se[f],ar=Dr(a,0|He.__str144314,(ne=Oe,Oe+=12,Se[ne>>2]=rr,Se[ne+4>>2]=Y,Se[ne+8>>2]=U,ne));Se[r>>2]=ar}var er=Se[f+1];Se[r+4>>2]=er,Se[S>>2]=M}while(0);Oe=s}function Jr(r){var a,e=r>>>0<245;do{if(e){if(r>>>0<11)var i=16;else var i=r+11&-8;var i,v=i>>>3,t=Me[vi>>2],f=t>>>(v>>>0);if(0!=(3&f|0)){var _=(1&f^1)+v|0,s=_<<1,n=(s<<2)+vi+40|0,o=(s+2<<2)+vi+40|0,l=Me[o>>2],b=l+8|0,k=Me[b>>2];if((0|n)==(0|k))Se[vi>>2]=t&(1<<_^-1);else{if(k>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[o>>2]=k,Se[k+12>>2]=n}var u=_<<3;Se[l+4>>2]=3|u;var c=l+(4|u)|0,h=1|Se[c>>2];Se[c>>2]=h;var d=b;a=38;break}if(i>>>0<=Me[vi+8>>2]>>>0){var w=i;a=30;break}if(0!=(0|f)){var p=2<<v,E=f<<v&(p|-p),A=(E&-E)-1|0,g=A>>>12&16,y=A>>>(g>>>0),m=y>>>5&8,S=y>>>(m>>>0),M=S>>>2&4,C=S>>>(M>>>0),R=C>>>1&2,T=C>>>(R>>>0),O=T>>>1&1,N=(m|g|M|R|O)+(T>>>(O>>>0))|0,I=N<<1,P=(I<<2)+vi+40|0,D=(I+2<<2)+vi+40|0,L=Me[D>>2],F=L+8|0,X=Me[F>>2];if((0|P)==(0|X))Se[vi>>2]=t&(1<<N^-1);else{if(X>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[D>>2]=X,Se[X+12>>2]=P}var j=N<<3,U=j-i|0;Se[L+4>>2]=3|i;var x=L,z=x+i|0;Se[x+(4|i)>>2]=1|U,Se[x+j>>2]=U;var V=Me[vi+8>>2];if(0!=(0|V)){var B=Se[vi+20>>2],H=V>>>2&1073741822,K=(H<<2)+vi+40|0,Y=Me[vi>>2],G=1<<(V>>>3),W=0==(Y&G|0);do{if(!W){var Z=(H+2<<2)+vi+40|0,Q=Me[Z>>2];if(Q>>>0>=Me[vi+16>>2]>>>0){var q=Q,$=Z;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Y|G;var q=K,$=(H+2<<2)+vi+40|0}while(0);var $,q;Se[$>>2]=B,Se[q+12>>2]=B;var J=B+8|0;Se[J>>2]=q;var rr=B+12|0;Se[rr>>2]=K}Se[vi+8>>2]=U,Se[vi+20>>2]=z;var d=F;a=38;break}if(0==(0|Se[vi+4>>2])){var w=i;a=30;break}var ar=ra(i);if(0==(0|ar)){var w=i;a=30;break}var d=ar;a=38;break}if(r>>>0>4294967231){var w=-1;a=30;break}var er=r+11&-8;if(0==(0|Se[vi+4>>2])){var w=er;a=30;break}var ir=ea(er);if(0==(0|ir)){var w=er;a=30;break}var d=ir;a=38;break}while(0);if(30==a){var w,vr=Me[vi+8>>2];if(w>>>0>vr>>>0){var tr=Me[vi+12>>2];if(w>>>0<tr>>>0){var fr=tr-w|0;Se[vi+12>>2]=fr;var _r=Me[vi+24>>2],sr=_r;Se[vi+24>>2]=sr+w|0,Se[w+(sr+4)>>2]=1|fr,Se[_r+4>>2]=3|w;var d=_r+8|0}else var nr=aa(w),d=nr}else{var or=vr-w|0,lr=Me[vi+20>>2];if(or>>>0>15){var br=lr;Se[vi+20>>2]=br+w|0,Se[vi+8>>2]=or,Se[w+(br+4)>>2]=1|or,Se[br+vr>>2]=or,Se[lr+4>>2]=3|w}else{Se[vi+8>>2]=0,Se[vi+20>>2]=0,Se[lr+4>>2]=3|vr;var kr=vr+(lr+4)|0,ur=1|Se[kr>>2];Se[kr>>2]=ur}var d=lr+8|0}}var d;return d}function ra(r){var a,e,i,v=Se[vi+4>>2],t=(v&-v)-1|0,f=t>>>12&16,_=t>>>(f>>>0),s=_>>>5&8,n=_>>>(s>>>0),o=n>>>2&4,l=n>>>(o>>>0),b=l>>>1&2,k=l>>>(b>>>0),u=k>>>1&1,c=Me[vi+((s|f|o|b|u)+(k>>>(u>>>0))<<2)+304>>2],h=c,e=h>>2,d=(Se[c+4>>2]&-8)-r|0;r:for(;;)for(var d,h,w=h;;){var w,p=Se[w+16>>2];if(0==(0|p)){var E=Se[w+20>>2];if(0==(0|E))break r;var A=E}else var A=p;var A,g=(Se[A+4>>2]&-8)-r|0;if(g>>>0<d>>>0){var h=A,e=h>>2,d=g;continue r}var w=A}var y=h,m=Me[vi+16>>2],S=y>>>0<m>>>0;do if(!S){var M=y+r|0,C=M;if(y>>>0>=M>>>0)break;var R=Me[e+6],T=Me[e+3],O=(0|T)==(0|h);do if(O){var N=h+20|0,I=Se[N>>2];if(0==(0|I)){var P=h+16|0,D=Se[P>>2];if(0==(0|D)){var L=0,a=L>>2;break}var F=P,X=D}else{var F=N,X=I;i=14}for(;;){var X,F,j=X+20|0,U=Se[j>>2];if(0==(0|U)){var x=X+16|0,z=Me[x>>2];if(0==(0|z))break;var F=x,X=z}else var F=j,X=U}if(F>>>0<m>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[F>>2]=0;var L=X,a=L>>2}else{var V=Me[e+2];if(V>>>0<m>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[V+12>>2]=T,Se[T+8>>2]=V;var L=T,a=L>>2}while(0);var L,B=0==(0|R);r:do if(!B){var H=h+28|0,K=(Se[H>>2]<<2)+vi+304|0,Y=(0|h)==(0|Se[K>>2]);do{if(Y){if(Se[K>>2]=L,0!=(0|L))break;var G=Se[vi+4>>2]&(1<<Se[H>>2]^-1);Se[vi+4>>2]=G;break r}if(R>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var W=R+16|0;if((0|Se[W>>2])==(0|h)?Se[W>>2]=L:Se[R+20>>2]=L,0==(0|L))break r}while(0);if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=R;var Z=Me[e+4];if(0!=(0|Z)){if(Z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=Z,Se[Z+24>>2]=L}var Q=Me[e+5];if(0==(0|Q))break;if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=Q,Se[Q+24>>2]=L}while(0);if(d>>>0<16){var q=d+r|0;Se[e+1]=3|q;var $=q+(y+4)|0,J=1|Se[$>>2];Se[$>>2]=J}else{Se[e+1]=3|r,Se[r+(y+4)>>2]=1|d,Se[y+d+r>>2]=d;var rr=Me[vi+8>>2];if(0!=(0|rr)){var ar=Me[vi+20>>2],er=rr>>>2&1073741822,ir=(er<<2)+vi+40|0,vr=Me[vi>>2],tr=1<<(rr>>>3),fr=0==(vr&tr|0);do{if(!fr){var _r=(er+2<<2)+vi+40|0,sr=Me[_r>>2];if(sr>>>0>=Me[vi+16>>2]>>>0){var nr=sr,or=_r;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=vr|tr;var nr=ir,or=(er+2<<2)+vi+40|0}while(0);var or,nr;Se[or>>2]=ar,Se[nr+12>>2]=ar,Se[ar+8>>2]=nr,Se[ar+12>>2]=ir}Se[vi+8>>2]=d,Se[vi+20>>2]=C}return h+8|0}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}function aa(r){var a,e;0==(0|Se[ti>>2])&&ba();var i=0==(4&Se[vi+440>>2]|0);do{if(i){var v=Se[vi+24>>2],t=0==(0|v);do{if(!t){var f=v,_=ua(f);if(0==(0|_)){e=6;break}var s=Se[ti+8>>2],n=r+47-Se[vi+12>>2]+s&-s;if(n>>>0>=2147483647){e=14;break}var o=re(n);if((0|o)==(Se[_>>2]+Se[_+4>>2]|0)){var l=o,b=n,k=o;e=13;break}var u=o,c=n;e=15;break}e=6}while(0);do if(6==e){var h=re(0);if((0|h)==-1){e=14;break}var d=Se[ti+8>>2],w=d+(r+47)&-d,p=h,E=Se[ti+4>>2],A=E-1|0;if(0==(A&p|0))var g=w;else var g=w-p+(A+p&-E)|0;var g;if(g>>>0>=2147483647){e=14;break}var y=re(g);if((0|y)==(0|h)){var l=h,b=g,k=y;e=13;break}var u=y,c=g;e=15;break}while(0);if(13==e){var k,b,l;if((0|l)!=-1){var m=b,S=l;e=26;break}var u=k,c=b}else if(14==e){var M=4|Se[vi+440>>2];Se[vi+440>>2]=M,e=23;break}var c,u,C=0|-c,R=(0|u)!=-1&c>>>0<2147483647;do{if(R){if(c>>>0>=(r+48|0)>>>0){var T=c;e=21;break}var O=Se[ti+8>>2],N=r+47-c+O&-O;if(N>>>0>=2147483647){var T=c;e=21;break}var I=re(N);if((0|I)==-1){re(C);e=22;break}var T=N+c|0;e=21;break}var T=c;e=21}while(0);if(21==e){var T;if((0|u)!=-1){var m=T,S=u;e=26;break}}var P=4|Se[vi+440>>2];Se[vi+440>>2]=P,e=23;break}e=23}while(0);do if(23==e){var D=Se[ti+8>>2],L=D+(r+47)&-D;if(L>>>0>=2147483647){e=49;break}var F=re(L),X=re(0);if(!((0|X)!=-1&(0|F)!=-1&F>>>0<X>>>0)){e=49;break}var j=X-F|0;if(j>>>0<=(r+40|0)>>>0|(0|F)==-1){e=49;break}var m=j,S=F;e=26;break}while(0);r:do if(26==e){var S,m,U=Se[vi+432>>2]+m|0;Se[vi+432>>2]=U,U>>>0>Me[vi+436>>2]>>>0&&(Se[vi+436>>2]=U);var x=Me[vi+24>>2],z=0==(0|x);a:do if(z){var V=Me[vi+16>>2];0==(0|V)|S>>>0<V>>>0&&(Se[vi+16>>2]=S),Se[vi+444>>2]=S,Se[vi+448>>2]=m,Se[vi+456>>2]=0;var B=Se[ti>>2];Se[vi+36>>2]=B,Se[vi+32>>2]=-1,ha(),ca(S,m-40|0)}else{for(var H=vi+444|0,a=H>>2;;){var H;if(0==(0|H))break;var K=Me[a],Y=H+4|0,G=Me[Y>>2],W=K+G|0;if((0|S)==(0|W)){if(0!=(8&Se[a+3]|0))break;var Z=x;if(!(Z>>>0>=K>>>0&Z>>>0<W>>>0))break;Se[Y>>2]=G+m|0;var Q=Se[vi+24>>2],q=Se[vi+12>>2]+m|0;ca(Q,q);break a}var H=Se[a+2],a=H>>2}S>>>0<Me[vi+16>>2]>>>0&&(Se[vi+16>>2]=S);for(var $=S+m|0,J=vi+444|0;;){var J;if(0==(0|J))break;var rr=0|J,ar=Me[rr>>2];if((0|ar)==(0|$)){if(0!=(8&Se[J+12>>2]|0))break;Se[rr>>2]=S;var er=J+4|0,ir=Se[er>>2]+m|0;Se[er>>2]=ir;var vr=da(S,ar,r),tr=vr;e=50;break r}var J=Se[J+8>>2]}Ma(S,m)}while(0);var fr=Me[vi+12>>2];if(fr>>>0<=r>>>0){e=49;break}var _r=fr-r|0;Se[vi+12>>2]=_r;var sr=Me[vi+24>>2],nr=sr;Se[vi+24>>2]=nr+r|0,Se[r+(nr+4)>>2]=1|_r,Se[sr+4>>2]=3|r;var tr=sr+8|0;e=50;break}while(0);if(49==e){var or=Je();Se[or>>2]=12;var tr=0}var tr;return tr}function ea(r){var a,e,i,v,t,f,_=r>>2,s=0|-r,n=r>>>8,o=0==(0|n);do if(o)var l=0;else{if(r>>>0>16777215){var l=31;break}var b=(n+1048320|0)>>>16&8,k=n<<b,u=(k+520192|0)>>>16&4,c=k<<u,h=(c+245760|0)>>>16&2,d=14-(u|b|h)+(c<<h>>>15)|0,l=r>>>((d+7|0)>>>0)&1|d<<1}while(0);var l,w=Me[vi+(l<<2)+304>>2],p=0==(0|w);r:do if(p)var E=0,A=s,g=0;else{if(31==(0|l))var y=0;else var y=25-(l>>>1)|0;for(var y,m=0,S=s,M=w,t=M>>2,C=r<<y,R=0;;){var R,C,M,S,m,T=Se[t+1]&-8,O=T-r|0;if(O>>>0<S>>>0){if((0|T)==(0|r)){var E=M,A=O,g=M;break r}var N=M,I=O}else var N=m,I=S;var I,N,P=Me[t+5],D=Me[((C>>>31<<2)+16>>2)+t],L=0==(0|P)|(0|P)==(0|D)?R:P;if(0==(0|D)){var E=N,A=I,g=L;break r}var m=N,S=I,M=D,t=M>>2,C=C<<1,R=L}}while(0);var g,A,E,F=0==(0|g)&0==(0|E);do if(F){var X=2<<l,j=Se[vi+4>>2]&(X|-X);if(0==(0|j)){var U=g;break}var x=(j&-j)-1|0,z=x>>>12&16,V=x>>>(z>>>0),B=V>>>5&8,H=V>>>(B>>>0),K=H>>>2&4,Y=H>>>(K>>>0),G=Y>>>1&2,W=Y>>>(G>>>0),Z=W>>>1&1,U=Se[vi+((B|z|K|G|Z)+(W>>>(Z>>>0))<<2)+304>>2]}else var U=g;while(0);var U,Q=0==(0|U);r:do if(Q)var q=A,$=E,v=$>>2;else for(var J=U,i=J>>2,rr=A,ar=E;;){var ar,rr,J,er=(Se[i+1]&-8)-r|0,ir=er>>>0<rr>>>0,vr=ir?er:rr,tr=ir?J:ar,fr=Me[i+4];if(0==(0|fr)){var _r=Me[i+5];if(0==(0|_r)){var q=vr,$=tr,v=$>>2;break r}var J=_r,i=J>>2,rr=vr,ar=tr}else var J=fr,i=J>>2,rr=vr,ar=tr}while(0);var $,q,sr=0==(0|$);r:do{if(!sr){if(q>>>0>=(Se[vi+8>>2]-r|0)>>>0){var nr=0;break}var or=$,e=or>>2,lr=Me[vi+16>>2],br=or>>>0<lr>>>0;do if(!br){var kr=or+r|0,ur=kr;if(or>>>0>=kr>>>0)break;var cr=Me[v+6],hr=Me[v+3],dr=(0|hr)==(0|$);do if(dr){var wr=$+20|0,pr=Se[wr>>2];if(0==(0|pr)){var Er=$+16|0,Ar=Se[Er>>2];if(0==(0|Ar)){var gr=0,a=gr>>2;break}var yr=Er,mr=Ar}else{var yr=wr,mr=pr;f=28}for(;;){var mr,yr,Sr=mr+20|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=mr+16|0,Rr=Me[Cr>>2];if(0==(0|Rr))break;var yr=Cr,mr=Rr}else var yr=Sr,mr=Mr}if(yr>>>0<lr>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[yr>>2]=0;var gr=mr,a=gr>>2}else{var Tr=Me[v+2];if(Tr>>>0<lr>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Tr+12>>2]=hr,Se[hr+8>>2]=Tr;var gr=hr,a=gr>>2}while(0);var gr,Or=0==(0|cr);a:do if(!Or){var Nr=$+28|0,Ir=(Se[Nr>>2]<<2)+vi+304|0,Pr=(0|$)==(0|Se[Ir>>2]);do{if(Pr){if(Se[Ir>>2]=gr,0!=(0|gr))break;var Dr=Se[vi+4>>2]&(1<<Se[Nr>>2]^-1);Se[vi+4>>2]=Dr;break a}if(cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var Lr=cr+16|0;if((0|Se[Lr>>2])==(0|$)?Se[Lr>>2]=gr:Se[cr+20>>2]=gr,0==(0|gr))break a}while(0);if(gr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=cr;var Fr=Me[v+4];if(0!=(0|Fr)){if(Fr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=Fr,Se[Fr+24>>2]=gr}var Xr=Me[v+5];if(0==(0|Xr))break;if(Xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=Xr,Se[Xr+24>>2]=gr}while(0);var jr=q>>>0<16;a:do if(jr){var Ur=q+r|0;Se[v+1]=3|Ur;var xr=Ur+(or+4)|0,zr=1|Se[xr>>2];Se[xr>>2]=zr}else if(Se[v+1]=3|r,Se[_+(e+1)]=1|q,Se[(q>>2)+e+_]=q,q>>>0<256){var Vr=q>>>2&1073741822,Br=(Vr<<2)+vi+40|0,Hr=Me[vi>>2],Kr=1<<(q>>>3),Yr=0==(Hr&Kr|0);do{if(!Yr){var Gr=(Vr+2<<2)+vi+40|0,Wr=Me[Gr>>2];if(Wr>>>0>=Me[vi+16>>2]>>>0){var Zr=Wr,Qr=Gr;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Hr|Kr;var Zr=Br,Qr=(Vr+2<<2)+vi+40|0}while(0);var Qr,Zr;Se[Qr>>2]=ur,Se[Zr+12>>2]=ur,Se[_+(e+2)]=Zr,Se[_+(e+3)]=Br}else{var qr=kr,$r=q>>>8,Jr=0==(0|$r);do if(Jr)var ra=0;else{if(q>>>0>16777215){var ra=31;break}var aa=($r+1048320|0)>>>16&8,ea=$r<<aa,ia=(ea+520192|0)>>>16&4,va=ea<<ia,ta=(va+245760|0)>>>16&2,fa=14-(ia|aa|ta)+(va<<ta>>>15)|0,ra=q>>>((fa+7|0)>>>0)&1|fa<<1}while(0);var ra,_a=(ra<<2)+vi+304|0;Se[_+(e+7)]=ra;var sa=r+(or+16)|0;Se[_+(e+5)]=0,Se[sa>>2]=0;var na=Se[vi+4>>2],oa=1<<ra;if(0==(na&oa|0)){var la=na|oa;Se[vi+4>>2]=la,Se[_a>>2]=qr,Se[_+(e+6)]=_a,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr}else{if(31==(0|ra))var ba=0;else var ba=25-(ra>>>1)|0;for(var ba,ka=q<<ba,ua=Se[_a>>2];;){var ua,ka;if((Se[ua+4>>2]&-8|0)==(0|q)){var ca=ua+8|0,ha=Me[ca>>2],da=Me[vi+16>>2],wa=ua>>>0<da>>>0;do if(!wa){if(ha>>>0<da>>>0)break;Se[ha+12>>2]=qr,Se[ca>>2]=qr,Se[_+(e+2)]=ha,Se[_+(e+3)]=ua,Se[_+(e+6)]=0;break a}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var pa=(ka>>>31<<2)+ua+16|0,Ea=Me[pa>>2];if(0==(0|Ea)){if(pa>>>0>=Me[vi+16>>2]>>>0){Se[pa>>2]=qr,Se[_+(e+6)]=ua,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr;break a}throw Ka(),\\\"Reached an unreachable!\\\"}var ka=ka<<1,ua=Ea}}}while(0);var nr=$+8|0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var nr=0}while(0);var nr;return nr}function ia(r){var a;0==(0|Se[ti>>2])&&ba();var e=r>>>0<4294967232;r:do if(e){var i=Me[vi+24>>2];if(0==(0|i)){var v=0;break}var t=Me[vi+12>>2],f=t>>>0>(r+40|0)>>>0;do if(f){var _=Me[ti+8>>2],s=-40-r-1+t+_|0,n=Math.floor((s>>>0)/(_>>>0)),o=(n-1)*_|0,l=i,b=ua(l);if(0!=(8&Se[b+12>>2]|0))break;var k=re(0),a=(b+4|0)>>2;if((0|k)!=(Se[b>>2]+Se[a]|0))break;var u=o>>>0>2147483646?-2147483648-_|0:o,c=0|-u,h=re(c),d=re(0);if(!((0|h)!=-1&d>>>0<k>>>0))break;var w=k-d|0;if((0|k)==(0|d))break;var p=Se[a]-w|0;Se[a]=p;var E=Se[vi+432>>2]-w|0;Se[vi+432>>2]=E;var A=Se[vi+24>>2],g=Se[vi+12>>2]-w|0;ca(A,g);var v=(0|k)!=(0|d);break r}while(0);if(Me[vi+12>>2]>>>0<=Me[vi+28>>2]>>>0){var v=0;break}Se[vi+28>>2]=-1;var v=0}else var v=0;while(0);var v;return 1&v}function va(r){var a,e,i,v,t,f,_,s=r>>2,n=0==(0|r);r:do if(!n){var o=r-8|0,l=o,b=Me[vi+16>>2],k=o>>>0<b>>>0;a:do if(!k){var u=Me[r-4>>2],c=3&u;if(1==(0|c))break;var h=u&-8,f=h>>2,d=r+(h-8)|0,w=d,p=0==(1&u|0);e:do if(p){var E=Me[o>>2];if(0==(0|c))break r;var A=-8-E|0,t=A>>2,g=r+A|0,y=g,m=E+h|0;if(g>>>0<b>>>0)break a;if((0|y)==(0|Se[vi+20>>2])){var v=(r+(h-4)|0)>>2;if(3!=(3&Se[v]|0)){var S=y,i=S>>2,M=m;break}Se[vi+8>>2]=m;var C=Se[v]&-2;Se[v]=C,Se[t+(s+1)]=1|m,Se[d>>2]=m;break r}if(E>>>0<256){var R=Me[t+(s+2)],T=Me[t+(s+3)];if((0|R)!=(0|T)){var O=((E>>>2&1073741822)<<2)+vi+40|0,N=(0|R)!=(0|O)&R>>>0<b>>>0;do if(!N){if(!((0|T)==(0|O)|T>>>0>=b>>>0))break;Se[R+12>>2]=T,Se[T+8>>2]=R;var S=y,i=S>>2,M=m;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var I=Se[vi>>2]&(1<<(E>>>3)^-1);Se[vi>>2]=I;var S=y,i=S>>2,M=m}else{var P=g,D=Me[t+(s+6)],L=Me[t+(s+3)],F=(0|L)==(0|P);do if(F){var X=A+(r+20)|0,j=Se[X>>2];if(0==(0|j)){var U=A+(r+16)|0,x=Se[U>>2];if(0==(0|x)){var z=0,e=z>>2;break}var V=U,B=x}else{var V=X,B=j;_=21}for(;;){var B,V,H=B+20|0,K=Se[H>>2];if(0==(0|K)){var Y=B+16|0,G=Me[Y>>2];if(0==(0|G))break;var V=Y,B=G}else var V=H,B=K}if(V>>>0<b>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[V>>2]=0;var z=B,e=z>>2}else{var W=Me[t+(s+2)];if(W>>>0<b>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[W+12>>2]=L,Se[L+8>>2]=W;var z=L,e=z>>2}while(0);var z;if(0==(0|D)){var S=y,i=S>>2,M=m;break}var Z=A+(r+28)|0,Q=(Se[Z>>2]<<2)+vi+304|0,q=(0|P)==(0|Se[Q>>2]);do{if(q){if(Se[Q>>2]=z,0!=(0|z))break;var $=Se[vi+4>>2]&(1<<Se[Z>>2]^-1);Se[vi+4>>2]=$;var S=y,i=S>>2,M=m;break e}if(D>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var J=D+16|0;if((0|Se[J>>2])==(0|P)?Se[J>>2]=z:Se[D+20>>2]=z,0==(0|z)){var S=y,i=S>>2,M=m;break e}}while(0);if(z>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+6]=D;var rr=Me[t+(s+4)];if(0!=(0|rr)){if(rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+4]=rr,Se[rr+24>>2]=z}var ar=Me[t+(s+5)];if(0==(0|ar)){var S=y,i=S>>2,M=m;break}if(ar>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[e+5]=ar,Se[ar+24>>2]=z;var S=y,i=S>>2,M=m}}else var S=l,i=S>>2,M=h;while(0);var M,S,er=S;if(er>>>0>=d>>>0)break;var ir=r+(h-4)|0,vr=Me[ir>>2];if(0==(1&vr|0))break;var tr=0==(2&vr|0);do{if(tr){if((0|w)==(0|Se[vi+24>>2])){var fr=Se[vi+12>>2]+M|0;Se[vi+12>>2]=fr,Se[vi+24>>2]=S;var _r=1|fr;if(Se[i+1]=_r,(0|S)==(0|Se[vi+20>>2])&&(Se[vi+20>>2]=0,Se[vi+8>>2]=0),fr>>>0<=Me[vi+28>>2]>>>0)break r;ia(0);break r}if((0|w)==(0|Se[vi+20>>2])){var sr=Se[vi+8>>2]+M|0;Se[vi+8>>2]=sr,Se[vi+20>>2]=S;var nr=1|sr;Se[i+1]=nr;var or=er+sr|0;Se[or>>2]=sr;break r}var lr=(vr&-8)+M|0,br=vr>>>3,kr=vr>>>0<256;e:do if(kr){var ur=Me[s+f],cr=Me[((4|h)>>2)+s];if((0|ur)!=(0|cr)){var hr=((vr>>>2&1073741822)<<2)+vi+40|0,dr=(0|ur)==(0|hr);do{if(!dr){if(ur>>>0<Me[vi+16>>2]>>>0){_=66;break}_=63;break}_=63}while(0);do if(63==_){if((0|cr)!=(0|hr)&&cr>>>0<Me[vi+16>>2]>>>0)break;Se[ur+12>>2]=cr,Se[cr+8>>2]=ur;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var wr=Se[vi>>2]&(1<<br^-1);Se[vi>>2]=wr}else{var pr=d,Er=Me[f+(s+4)],Ar=Me[((4|h)>>2)+s],gr=(0|Ar)==(0|pr);do if(gr){var yr=h+(r+12)|0,mr=Se[yr>>2];if(0==(0|mr)){var Sr=h+(r+8)|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=0,a=Cr>>2;break}var Rr=Sr,Tr=Mr}else{var Rr=yr,Tr=mr;_=73}for(;;){var Tr,Rr,Or=Tr+20|0,Nr=Se[Or>>2];if(0==(0|Nr)){var Ir=Tr+16|0,Pr=Me[Ir>>2];if(0==(0|Pr))break;var Rr=Ir,Tr=Pr}else var Rr=Or,Tr=Nr}if(Rr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Rr>>2]=0;var Cr=Tr,a=Cr>>2}else{var Dr=Me[s+f];if(Dr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Dr+12>>2]=Ar,\\\\nSe[Ar+8>>2]=Dr;var Cr=Ar,a=Cr>>2}while(0);var Cr;if(0==(0|Er))break;var Lr=h+(r+20)|0,Fr=(Se[Lr>>2]<<2)+vi+304|0,Xr=(0|pr)==(0|Se[Fr>>2]);do{if(Xr){if(Se[Fr>>2]=Cr,0!=(0|Cr))break;var jr=Se[vi+4>>2]&(1<<Se[Lr>>2]^-1);Se[vi+4>>2]=jr;break e}if(Er>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var Ur=Er+16|0;if((0|Se[Ur>>2])==(0|pr)?Se[Ur>>2]=Cr:Se[Er+20>>2]=Cr,0==(0|Cr))break e}while(0);if(Cr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+6]=Er;var xr=Me[f+(s+2)];if(0!=(0|xr)){if(xr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+4]=xr,Se[xr+24>>2]=Cr}var zr=Me[f+(s+3)];if(0==(0|zr))break;if(zr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[a+5]=zr,Se[zr+24>>2]=Cr}while(0);if(Se[i+1]=1|lr,Se[er+lr>>2]=lr,(0|S)!=(0|Se[vi+20>>2])){var Vr=lr;break}Se[vi+8>>2]=lr;break r}Se[ir>>2]=vr&-2,Se[i+1]=1|M,Se[er+M>>2]=M;var Vr=M}while(0);var Vr;if(Vr>>>0<256){var Br=Vr>>>2&1073741822,Hr=(Br<<2)+vi+40|0,Kr=Me[vi>>2],Yr=1<<(Vr>>>3),Gr=0==(Kr&Yr|0);do{if(!Gr){var Wr=(Br+2<<2)+vi+40|0,Zr=Me[Wr>>2];if(Zr>>>0>=Me[vi+16>>2]>>>0){var Qr=Zr,qr=Wr;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=Kr|Yr;var Qr=Hr,qr=(Br+2<<2)+vi+40|0}while(0);var qr,Qr;Se[qr>>2]=S,Se[Qr+12>>2]=S,Se[i+2]=Qr,Se[i+3]=Hr;break r}var $r=S,Jr=Vr>>>8,ra=0==(0|Jr);do if(ra)var aa=0;else{if(Vr>>>0>16777215){var aa=31;break}var ea=(Jr+1048320|0)>>>16&8,va=Jr<<ea,fa=(va+520192|0)>>>16&4,_a=va<<fa,sa=(_a+245760|0)>>>16&2,na=14-(fa|ea|sa)+(_a<<sa>>>15)|0,aa=Vr>>>((na+7|0)>>>0)&1|na<<1}while(0);var aa,oa=(aa<<2)+vi+304|0;Se[i+7]=aa,Se[i+5]=0,Se[i+4]=0;var la=Se[vi+4>>2],ba=1<<aa,ka=0==(la&ba|0);e:do if(ka){var ua=la|ba;Se[vi+4>>2]=ua,Se[oa>>2]=$r,Se[i+6]=oa,Se[i+3]=S,Se[i+2]=S}else{if(31==(0|aa))var ca=0;else var ca=25-(aa>>>1)|0;for(var ca,ha=Vr<<ca,da=Se[oa>>2];;){var da,ha;if((Se[da+4>>2]&-8|0)==(0|Vr)){var wa=da+8|0,pa=Me[wa>>2],Ea=Me[vi+16>>2],Aa=da>>>0<Ea>>>0;do if(!Aa){if(pa>>>0<Ea>>>0)break;Se[pa+12>>2]=$r,Se[wa>>2]=$r,Se[i+2]=pa,Se[i+3]=da,Se[i+6]=0;break e}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var ga=(ha>>>31<<2)+da+16|0,ya=Me[ga>>2];if(0==(0|ya)){if(ga>>>0>=Me[vi+16>>2]>>>0){Se[ga>>2]=$r,Se[i+6]=da,Se[i+3]=S,Se[i+2]=S;break e}throw Ka(),\\\"Reached an unreachable!\\\"}var ha=ha<<1,da=ya}}while(0);var ma=Se[vi+32>>2]-1|0;if(Se[vi+32>>2]=ma,0!=(0|ma))break r;ta();break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}while(0)}function ta(){var r=Se[vi+452>>2],a=0==(0|r);r:do if(!a)for(var e=r;;){var e,i=Se[e+8>>2];if(0==(0|i))break r;var e=i}while(0);Se[vi+32>>2]=-1}function fa(r,a){if(0==(0|r))var e=Jr(a),i=e;else var v=la(r,a),i=v;var i;return i}function _a(r,a){var e,i=r>>>0<9;do if(i)var v=Jr(a),t=v;else{var f=r>>>0<16?16:r,_=0==(f-1&f|0);r:do if(_)var s=f;else{if(f>>>0<=16){var s=16;break}for(var n=16;;){var n,o=n<<1;if(o>>>0>=f>>>0){var s=o;break r}var n=o}}while(0);var s;if((-64-s|0)>>>0>a>>>0){if(a>>>0<11)var l=16;else var l=a+11&-8;var l,b=Jr(l+(s+12)|0);if(0==(0|b)){var t=0;break}var k=b-8|0;if(0==((b>>>0)%(s>>>0)|0))var u=k,c=0;else{var h=b+(s-1)&-s,d=h-8|0,w=k;if((d-w|0)>>>0>15)var p=d;else var p=h+(s-8)|0;var p,E=p-w|0,e=(b-4|0)>>2,A=Se[e],g=(A&-8)-E|0;if(0==(3&A|0)){var y=Se[k>>2]+E|0;Se[p>>2]=y,Se[p+4>>2]=g;var u=p,c=0}else{var m=p+4|0,S=g|1&Se[m>>2]|2;Se[m>>2]=S;var M=g+(p+4)|0,C=1|Se[M>>2];Se[M>>2]=C;var R=E|1&Se[e]|2;Se[e]=R;var T=b+(E-4)|0,O=1|Se[T>>2];Se[T>>2]=O;var u=p,c=b}}var c,u,N=u+4|0,I=Me[N>>2],P=0==(3&I|0);do if(P)var D=0;else{var L=I&-8;if(L>>>0<=(l+16|0)>>>0){var D=0;break}var F=L-l|0;Se[N>>2]=l|1&I|2,Se[u+(4|l)>>2]=3|F;var X=u+(4|L)|0,j=1|Se[X>>2];Se[X>>2]=j;var D=l+(u+8)|0}while(0);var D;0!=(0|c)&&va(c),0!=(0|D)&&va(D);var t=u+8|0}else{var U=Je();Se[U>>2]=12;var t=0}}while(0);var t;return t}function sa(r,a,e,i){var v,t;0==(0|Se[ti>>2])&&ba();var f=0==(0|i),_=0==(0|r);do{if(f){if(_){var s=Jr(0),n=s;t=30;break}var o=r<<2;if(o>>>0<11){var l=0,b=16;t=9;break}var l=0,b=o+11&-8;t=9;break}if(_){var n=i;t=30;break}var l=i,b=0;t=9;break}while(0);do if(9==t){var b,l,k=0==(1&e|0);r:do if(k){if(_){var u=0,c=0;break}for(var h=0,d=0;;){var d,h,w=Me[a+(d<<2)>>2];if(w>>>0<11)var p=16;else var p=w+11&-8;var p,E=p+h|0,A=d+1|0;if((0|A)==(0|r)){var u=0,c=E;break r}var h=E,d=A}}else{var g=Me[a>>2];if(g>>>0<11)var y=16;else var y=g+11&-8;var y,u=y,c=y*r|0}while(0);var c,u,m=Jr(b-4+c|0);if(0==(0|m)){var n=0;break}var S=m-8|0,M=Se[m-4>>2]&-8;if(0!=(2&e|0)){var C=-4-b+M|0;Fa(m,0,C,1)}if(0==(0|l)){var R=m+c|0,T=M-c|3;Se[m+(c-4)>>2]=T;var O=R,v=O>>2,N=c}else var O=l,v=O>>2,N=M;var N,O;Se[v]=m;var I=r-1|0,P=0==(0|I);r:do if(P)var D=S,L=N;else if(0==(0|u))for(var F=S,X=N,j=0;;){var j,X,F,U=Me[a+(j<<2)>>2];if(U>>>0<11)var x=16;else var x=U+11&-8;var x,z=X-x|0;Se[F+4>>2]=3|x;var V=F+x|0,B=j+1|0;if(Se[(B<<2>>2)+v]=x+(F+8)|0,(0|B)==(0|I)){var D=V,L=z;break r}var F=V,X=z,j=B}else for(var H=3|u,K=u+8|0,Y=S,G=N,W=0;;){var W,G,Y,Z=G-u|0;Se[Y+4>>2]=H;var Q=Y+u|0,q=W+1|0;if(Se[(q<<2>>2)+v]=Y+K|0,(0|q)==(0|I)){var D=Q,L=Z;break r}var Y=Q,G=Z,W=q}while(0);var L,D;Se[D+4>>2]=3|L;var n=O}while(0);var n;return n}function na(r){var a=r>>2;0==(0|Se[ti>>2])&&ba();var e=Me[vi+24>>2];if(0==(0|e))var i=0,v=0,t=0,f=0,_=0,s=0,n=0;else{for(var o=Me[vi+12>>2],l=o+40|0,b=vi+444|0,k=l,u=l,c=1;;){var c,u,k,b,h=Me[b>>2],d=h+8|0;if(0==(7&d|0))var w=0;else var w=7&-d;for(var w,p=b+4|0,E=h+w|0,A=c,g=u,y=k;;){var y,g,A,E;if(E>>>0<h>>>0)break;if(E>>>0>=(h+Se[p>>2]|0)>>>0|(0|E)==(0|e))break;var m=Se[E+4>>2];if(7==(0|m))break;var S=m&-8,M=S+y|0;if(1==(3&m|0))var C=A+1|0,R=S+g|0;else var C=A,R=g;var R,C,E=E+S|0,A=C,g=R,y=M}var T=Me[b+8>>2];if(0==(0|T))break;var b=T,k=y,u=g,c=A}var O=Se[vi+432>>2],i=y,v=A,t=o,f=g,_=O-y|0,s=Se[vi+436>>2],n=O-g|0}var n,s,_,f,t,v,i;Se[a]=i,Se[a+1]=v,Se[a+2]=0,Se[a+3]=0,Se[a+4]=_,Se[a+5]=s,Se[a+6]=0,Se[a+7]=n,Se[a+8]=f,Se[a+9]=t}function oa(){0==(0|Se[ti>>2])&&ba();var r=Me[vi+24>>2],a=0==(0|r);r:do if(a)var e=0,i=0,v=0;else for(var t=Se[vi+436>>2],f=Me[vi+432>>2],_=vi+444|0,s=f-40-Se[vi+12>>2]|0;;){var s,_,n=Me[_>>2],o=n+8|0;if(0==(7&o|0))var l=0;else var l=7&-o;for(var l,b=_+4|0,k=n+l|0,u=s;;){var u,k;if(k>>>0<n>>>0)break;if(k>>>0>=(n+Se[b>>2]|0)>>>0|(0|k)==(0|r))break;var c=Se[k+4>>2];if(7==(0|c))break;var h=c&-8,d=1==(3&c|0)?h:0,w=u-d|0,k=k+h|0,u=w}var p=Me[_+8>>2];if(0==(0|p)){var e=t,i=f,v=u;break r}var _=p,s=u}while(0);var v,i,e,E=Se[Se[qe>>2]+12>>2],A=(Qa(E,0|He.__str339,(ne=Oe,Oe+=4,Se[ne>>2]=e,ne)),Se[Se[qe>>2]+12>>2]),g=(Qa(A,0|He.__str1340,(ne=Oe,Oe+=4,Se[ne>>2]=i,ne)),Se[Se[qe>>2]+12>>2]);Qa(g,0|He.__str2341,(ne=Oe,Oe+=4,Se[ne>>2]=v,ne))}function la(r,a){var e,i,v,t=a>>>0>4294967231;r:do{if(!t){var f=r-8|0,_=f,i=(r-4|0)>>2,s=Me[i],n=s&-8,o=n-8|0,l=r+o|0,b=f>>>0<Me[vi+16>>2]>>>0;do if(!b){var k=3&s;if(!(1!=(0|k)&(0|o)>-8))break;var e=(r+(n-4)|0)>>2;if(0==(1&Se[e]|0))break;if(a>>>0<11)var u=16;else var u=a+11&-8;var u,c=0==(0|k);do{if(c){var h=ka(_,u),d=0,w=h;v=17;break}if(n>>>0<u>>>0){if((0|l)!=(0|Se[vi+24>>2])){v=21;break}var p=Se[vi+12>>2]+n|0;if(p>>>0<=u>>>0){v=21;break}var E=p-u|0,A=r+(u-8)|0;Se[i]=u|1&s|2;var g=1|E;Se[r+(u-4)>>2]=g,Se[vi+24>>2]=A,Se[vi+12>>2]=E;var d=0,w=_;v=17;break}var y=n-u|0;if(y>>>0<=15){var d=0,w=_;v=17;break}Se[i]=u|1&s|2,Se[r+(u-4)>>2]=3|y;var m=1|Se[e];Se[e]=m;var d=r+u|0,w=_;v=17;break}while(0);do if(17==v){var w,d;if(0==(0|w))break;0!=(0|d)&&va(d);var S=w+8|0;break r}while(0);var M=Jr(a);if(0==(0|M)){var S=0;break r}var C=0==(3&Se[i]|0)?8:4,R=n-C|0,T=R>>>0<a>>>0?R:a;Pa(M,r,T,1),va(r);var S=M;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var O=Je();Se[O>>2]=12;var S=0}while(0);var S;return S}function ba(){if(0==(0|Se[ti>>2])){var r=qa(8);if(0!=(r-1&r|0))throw Ka(),\\\"Reached an unreachable!\\\";Se[ti+8>>2]=r,Se[ti+4>>2]=r,Se[ti+12>>2]=-1,Se[ti+16>>2]=2097152,Se[ti+20>>2]=0,Se[vi+440>>2]=0;var a=$a(0);Se[ti>>2]=a&-16^1431655768}}function ka(r,a){var e=Se[r+4>>2]&-8,i=a>>>0<256;do if(i)var v=0;else{if(e>>>0>=(a+4|0)>>>0&&(e-a|0)>>>0<=Se[ti+8>>2]<<1>>>0){var v=r;break}var v=0}while(0);var v;return v}function ua(r){for(var a,e=vi+444|0,a=e>>2;;){var e,i=Me[a];if(i>>>0<=r>>>0&&(i+Se[a+1]|0)>>>0>r>>>0){var v=e;break}var t=Me[a+2];if(0==(0|t)){var v=0;break}var e=t,a=e>>2}var v;return v}function ca(r,a){var e=r,i=r+8|0;if(0==(7&i|0))var v=0;else var v=7&-i;var v,t=a-v|0;Se[vi+24>>2]=e+v|0,Se[vi+12>>2]=t,Se[v+(e+4)>>2]=1|t,Se[a+(e+4)>>2]=40;var f=Se[ti+16>>2];Se[vi+28>>2]=f}function ha(){for(var r=0;;){var r,a=r<<1,e=(a<<2)+vi+40|0;Se[vi+(a+3<<2)+40>>2]=e,Se[vi+(a+2<<2)+40>>2]=e;var i=r+1|0;if(32==(0|i))break;var r=i}}function da(r,a,e){var i,v,t,f,_=a>>2,s=r>>2,n=r+8|0;if(0==(7&n|0))var o=0;else var o=7&-n;var o,l=a+8|0;if(0==(7&l|0))var b=0,t=b>>2;else var b=7&-l,t=b>>2;var b,k=a+b|0,u=k,c=o+e|0,v=c>>2,h=r+c|0,d=h,w=k-(r+o)-e|0;Se[(o+4>>2)+s]=3|e;var p=(0|u)==(0|Se[vi+24>>2]);r:do if(p){var E=Se[vi+12>>2]+w|0;Se[vi+12>>2]=E,Se[vi+24>>2]=d;var A=1|E;Se[v+(s+1)]=A}else if((0|u)==(0|Se[vi+20>>2])){var g=Se[vi+8>>2]+w|0;Se[vi+8>>2]=g,Se[vi+20>>2]=d;var y=1|g;Se[v+(s+1)]=y;var m=r+g+c|0;Se[m>>2]=g}else{var S=Me[t+(_+1)];if(1==(3&S|0)){var M=S&-8,C=S>>>3,R=S>>>0<256;a:do if(R){var T=Me[((8|b)>>2)+_],O=Me[t+(_+3)];if((0|T)!=(0|O)){var N=((S>>>2&1073741822)<<2)+vi+40|0,I=(0|T)==(0|N);do{if(!I){if(T>>>0<Me[vi+16>>2]>>>0){f=18;break}f=15;break}f=15}while(0);do if(15==f){if((0|O)!=(0|N)&&O>>>0<Me[vi+16>>2]>>>0)break;Se[T+12>>2]=O,Se[O+8>>2]=T;break a}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var P=Se[vi>>2]&(1<<C^-1);Se[vi>>2]=P}else{var D=k,L=Me[((24|b)>>2)+_],F=Me[t+(_+3)],X=(0|F)==(0|D);do if(X){var j=16|b,U=j+(a+4)|0,x=Se[U>>2];if(0==(0|x)){var z=a+j|0,V=Se[z>>2];if(0==(0|V)){var B=0,i=B>>2;break}var H=z,K=V}else{var H=U,K=x;f=25}for(;;){var K,H,Y=K+20|0,G=Se[Y>>2];if(0==(0|G)){var W=K+16|0,Z=Me[W>>2];if(0==(0|Z))break;var H=W,K=Z}else var H=Y,K=G}if(H>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[H>>2]=0;var B=K,i=B>>2}else{var Q=Me[((8|b)>>2)+_];if(Q>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[Q+12>>2]=F,Se[F+8>>2]=Q;var B=F,i=B>>2}while(0);var B;if(0==(0|L))break;var q=b+(a+28)|0,$=(Se[q>>2]<<2)+vi+304|0,J=(0|D)==(0|Se[$>>2]);do{if(J){if(Se[$>>2]=B,0!=(0|B))break;var rr=Se[vi+4>>2]&(1<<Se[q>>2]^-1);Se[vi+4>>2]=rr;break a}if(L>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";var ar=L+16|0;if((0|Se[ar>>2])==(0|D)?Se[ar>>2]=B:Se[L+20>>2]=B,0==(0|B))break a}while(0);if(B>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+6]=L;var er=16|b,ir=Me[(er>>2)+_];if(0!=(0|ir)){if(ir>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+4]=ir,Se[ir+24>>2]=B}var vr=Me[(er+4>>2)+_];if(0==(0|vr))break;if(vr>>>0<Me[vi+16>>2]>>>0)throw Ka(),\\\"Reached an unreachable!\\\";Se[i+5]=vr,Se[vr+24>>2]=B}while(0);var tr=a+(M|b)|0,fr=M+w|0}else var tr=u,fr=w;var fr,tr,_r=tr+4|0,sr=Se[_r>>2]&-2;if(Se[_r>>2]=sr,Se[v+(s+1)]=1|fr,Se[(fr>>2)+s+v]=fr,fr>>>0<256){var nr=fr>>>2&1073741822,or=(nr<<2)+vi+40|0,lr=Me[vi>>2],br=1<<(fr>>>3),kr=0==(lr&br|0);do{if(!kr){var ur=(nr+2<<2)+vi+40|0,cr=Me[ur>>2];if(cr>>>0>=Me[vi+16>>2]>>>0){var hr=cr,dr=ur;break}throw Ka(),\\\"Reached an unreachable!\\\"}Se[vi>>2]=lr|br;var hr=or,dr=(nr+2<<2)+vi+40|0}while(0);var dr,hr;Se[dr>>2]=d,Se[hr+12>>2]=d,Se[v+(s+2)]=hr,Se[v+(s+3)]=or}else{var wr=h,pr=fr>>>8,Er=0==(0|pr);do if(Er)var Ar=0;else{if(fr>>>0>16777215){var Ar=31;break}var gr=(pr+1048320|0)>>>16&8,yr=pr<<gr,mr=(yr+520192|0)>>>16&4,Sr=yr<<mr,Mr=(Sr+245760|0)>>>16&2,Cr=14-(mr|gr|Mr)+(Sr<<Mr>>>15)|0,Ar=fr>>>((Cr+7|0)>>>0)&1|Cr<<1}while(0);var Ar,Rr=(Ar<<2)+vi+304|0;Se[v+(s+7)]=Ar;var Tr=c+(r+16)|0;Se[v+(s+5)]=0,Se[Tr>>2]=0;var Or=Se[vi+4>>2],Nr=1<<Ar;if(0==(Or&Nr|0)){var Ir=Or|Nr;Se[vi+4>>2]=Ir,Se[Rr>>2]=wr,Se[v+(s+6)]=Rr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr}else{if(31==(0|Ar))var Pr=0;else var Pr=25-(Ar>>>1)|0;for(var Pr,Dr=fr<<Pr,Lr=Se[Rr>>2];;){var Lr,Dr;if((Se[Lr+4>>2]&-8|0)==(0|fr)){var Fr=Lr+8|0,Xr=Me[Fr>>2],jr=Me[vi+16>>2],Ur=Lr>>>0<jr>>>0;do if(!Ur){if(Xr>>>0<jr>>>0)break;Se[Xr+12>>2]=wr,Se[Fr>>2]=wr,Se[v+(s+2)]=Xr,Se[v+(s+3)]=Lr,Se[v+(s+6)]=0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var xr=(Dr>>>31<<2)+Lr+16|0,zr=Me[xr>>2];if(0==(0|zr)){if(xr>>>0>=Me[vi+16>>2]>>>0){Se[xr>>2]=wr,Se[v+(s+6)]=Lr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr;break r}throw Ka(),\\\"Reached an unreachable!\\\"}var Dr=Dr<<1,Lr=zr}}}}while(0);return r+(8|o)|0}function wa(r){return 0|He.__str3342}function pa(r){return 0|He.__str14343}function Ea(r){Se[r>>2]=si+8|0}function Aa(r){0!=(0|r)&&va(r)}function ga(r){ya(r);var a=r;Aa(a)}function ya(r){var a=0|r;Ye(a)}function ma(r){var a=0|r;Ea(a),Se[r>>2]=ni+8|0}function Sa(r){var a=0|r;ya(a);var e=r;Aa(e)}function Ma(r,a){var e,i,v=Me[vi+24>>2],i=v>>2,t=v,f=ua(t),_=Se[f>>2],s=Se[f+4>>2],n=_+s|0,o=_+(s-39)|0;if(0==(7&o|0))var l=0;else var l=7&-o;var l,b=_+(s-47)+l|0,k=b>>>0<(v+16|0)>>>0?t:b,u=k+8|0,e=u>>2,c=u,h=r,d=a-40|0;ca(h,d);var w=k+4|0;Se[w>>2]=27,Se[e]=Se[vi+444>>2],Se[e+1]=Se[vi+448>>2],Se[e+2]=Se[vi+452>>2],Se[e+3]=Se[vi+456>>2],Se[vi+444>>2]=r,Se[vi+448>>2]=a,Se[vi+456>>2]=0,Se[vi+452>>2]=c;var p=k+28|0;Se[p>>2]=7;var E=(k+32|0)>>>0<n>>>0;r:do if(E)for(var A=p;;){var A,g=A+4|0;if(Se[g>>2]=7,(A+8|0)>>>0>=n>>>0)break r;var A=g}while(0);var y=(0|k)==(0|t);r:do if(!y){var m=k-v|0,S=t+m|0,M=m+(t+4)|0,C=Se[M>>2]&-2;Se[M>>2]=C;var R=1|m;Se[i+1]=R;var T=S;if(Se[T>>2]=m,m>>>0<256){var O=m>>>2&1073741822,N=(O<<2)+vi+40|0,I=Me[vi>>2],P=1<<(m>>>3),D=0==(I&P|0);do{if(!D){var L=(O+2<<2)+vi+40|0,F=Me[L>>2];if(F>>>0>=Me[vi+16>>2]>>>0){var X=F,j=L;break}throw Ka(),\\\"Reached an unreachable!\\\"}var U=I|P;Se[vi>>2]=U;var X=N,j=(O+2<<2)+vi+40|0}while(0);var j,X;Se[j>>2]=v,Se[X+12>>2]=v,Se[i+2]=X,Se[i+3]=N}else{var x=v,z=m>>>8,V=0==(0|z);do if(V)var B=0;else{if(m>>>0>16777215){var B=31;break}var H=(z+1048320|0)>>>16&8,K=z<<H,Y=(K+520192|0)>>>16&4,G=K<<Y,W=(G+245760|0)>>>16&2,Z=14-(Y|H|W)+(G<<W>>>15)|0,B=m>>>((Z+7|0)>>>0)&1|Z<<1}while(0);var B,Q=(B<<2)+vi+304|0;Se[i+7]=B,Se[i+5]=0,Se[i+4]=0;var q=Se[vi+4>>2],$=1<<B;if(0==(q&$|0)){var J=q|$;Se[vi+4>>2]=J,Se[Q>>2]=x,Se[i+6]=Q,Se[i+3]=v,Se[i+2]=v}else{if(31==(0|B))var rr=0;else var rr=25-(B>>>1)|0;for(var rr,ar=m<<rr,er=Se[Q>>2];;){var er,ar;if((Se[er+4>>2]&-8|0)==(0|m)){var ir=er+8|0,vr=Me[ir>>2],tr=Me[vi+16>>2],fr=er>>>0<tr>>>0;do if(!fr){if(vr>>>0<tr>>>0)break;Se[vr+12>>2]=x,Se[ir>>2]=x,Se[i+2]=vr,Se[i+3]=er,Se[i+6]=0;break r}while(0);throw Ka(),\\\"Reached an unreachable!\\\"}var _r=(ar>>>31<<2)+er+16|0,sr=Me[_r>>2];if(0==(0|sr)){if(_r>>>0>=Me[vi+16>>2]>>>0){Se[_r>>2]=x,Se[i+6]=er,Se[i+3]=v,Se[i+2]=v;break r}throw Ka(),\\\"Reached an unreachable!\\\"}var ar=ar<<1,er=sr}}}}while(0)}function Ca(r){return d(r)}function Ra(r,a){var e=0;do Ae[r+e]=Ae[a+e],e++;while(0!=Ae[a+e-1]);return r}function Ta(){var r=Ta;return r.LLVM_SAVEDSTACKS||(r.LLVM_SAVEDSTACKS=[]),r.LLVM_SAVEDSTACKS.push(le.stackSave()),r.LLVM_SAVEDSTACKS.length-1}function Oa(r){var a=Ta,e=a.LLVM_SAVEDSTACKS[r];a.LLVM_SAVEDSTACKS.splice(r,1),le.stackRestore(e)}function Na(r,a,e){for(var i=0;i<e;){var v=Ae[r+i],t=Ae[a+i];if(v==t&&0==v)return 0;if(0==v)return-1;if(0==t)return 1;if(v!=t)return v>t?1:-1;i++}return 0}function Ia(r,a){var e=Ca(r),i=0;do Ae[r+e+i]=Ae[a+i],i++;while(0!=Ae[a+i-1]);return r}function Pa(r,a,e,i){if(e>=20&&a%2==r%2)if(a%4==r%4){for(var v=a+e;a%4;)Ae[r++]=Ae[a++];for(var t=a>>2,f=r>>2,_=v>>2;t<_;)Se[f++]=Se[t++];for(a=t<<2,r=f<<2;a<v;)Ae[r++]=Ae[a++]}else{var v=a+e;a%2&&(Ae[r++]=Ae[a++]);for(var s=a>>1,n=r>>1,o=v>>1;s<o;)ye[n++]=ye[s++];a=s<<1,r=n<<1,a<v&&(Ae[r++]=Ae[a++])}else for(;e--;)Ae[r++]=Ae[a++]}function Da(r,a){return Na(r,a,Le)}function La(r,a,e){for(var i=0;i<e;i++){var v=Ae[r+i],t=Ae[a+i];if(v!=t)return v>t?1:-1}return 0}function Fa(r,a,e,i){if(e>=20){for(var v=r+e;r%4;)Ae[r++]=a;a<0&&(a+=256);for(var t=r>>2,f=v>>2,_=a|a<<8|a<<16|a<<24;t<f;)Se[t++]=_;for(r=t<<2;r<v;)Ae[r++]=a}else for(;e--;)Ae[r++]=a}function Xa(r,a,e,i){throw\\\"Assertion failed: \\\"+s(i)+\\\", at: \\\"+[s(r),a,s(e)]}function ja(r){var a=d(r),e=Jr(a+1);return Pa(e,r,a,1),Ae[e+a]=0,e}function Ua(r,a){function e(r){var e;return\\\"double\\\"===r?(xe[0]=Se[a+_>>2],xe[1]=Se[a+_+4>>2],e=ze[0]):\\\"i64\\\"==r?e=[Se[a+_>>2],Se[a+_+4>>2]]:(r=\\\"i32\\\",e=Se[a+_>>2]),_+=le.getNativeFieldSize(r),e}for(var i,v,t,f=r,_=0,s=[];;){var n=f;if(i=Ae[f],0===i)break;if(v=Ae[f+1],i==\\\"%\\\".charCodeAt(0)){var o=!1,l=!1,b=!1,k=!1;r:for(;;){switch(v){case\\\"+\\\".charCodeAt(0):o=!0;break;case\\\"-\\\".charCodeAt(0):l=!0;break;case\\\"#\\\".charCodeAt(0):b=!0;break;case\\\"0\\\".charCodeAt(0):if(k)break r;k=!0;break;default:break r}f++,v=Ae[f+1]}var u=0;if(v==\\\"*\\\".charCodeAt(0))u=e(\\\"i32\\\"),f++,v=Ae[f+1];else for(;v>=\\\"0\\\".charCodeAt(0)&&v<=\\\"9\\\".charCodeAt(0);)u=10*u+(v-\\\"0\\\".charCodeAt(0)),f++,v=Ae[f+1];var c=!1;if(v==\\\".\\\".charCodeAt(0)){var h=0;if(c=!0,f++,v=Ae[f+1],v==\\\"*\\\".charCodeAt(0))h=e(\\\"i32\\\"),f++;else for(;;){var d=Ae[f+1];if(d<\\\"0\\\".charCodeAt(0)||d>\\\"9\\\".charCodeAt(0))break;h=10*h+(d-\\\"0\\\".charCodeAt(0)),f++}v=Ae[f+1]}else var h=6;var E;switch(String.fromCharCode(v)){case\\\"h\\\":var A=Ae[f+2];A==\\\"h\\\".charCodeAt(0)?(f++,E=1):E=2;break;case\\\"l\\\":var A=Ae[f+2];A==\\\"l\\\".charCodeAt(0)?(f++,E=8):E=4;break;case\\\"L\\\":case\\\"q\\\":case\\\"j\\\":E=8;break;case\\\"z\\\":case\\\"t\\\":case\\\"I\\\":E=4;break;default:E=null}if(E&&f++,v=Ae[f+1],[\\\"d\\\",\\\"i\\\",\\\"u\\\",\\\"o\\\",\\\"x\\\",\\\"X\\\",\\\"p\\\"].indexOf(String.fromCharCode(v))!=-1){var m=v==\\\"d\\\".charCodeAt(0)||v==\\\"i\\\".charCodeAt(0);E=E||4;var t=e(\\\"i\\\"+8*E);if(8==E&&(t=le.makeBigInt(t[0],t[1],v==\\\"u\\\".charCodeAt(0))),E<=4){var S=Math.pow(256,E)-1;t=(m?y:g)(t&S,8*E)}var M,C=Math.abs(t),R=\\\"\\\";if(v==\\\"d\\\".charCodeAt(0)||v==\\\"i\\\".charCodeAt(0))M=y(t,8*E,1).toString(10);else if(v==\\\"u\\\".charCodeAt(0))M=g(t,8*E,1).toString(10),t=Math.abs(t);else if(v==\\\"o\\\".charCodeAt(0))M=(b?\\\"0\\\":\\\"\\\")+C.toString(8);else if(v==\\\"x\\\".charCodeAt(0)||v==\\\"X\\\".charCodeAt(0)){if(R=b?\\\"0x\\\":\\\"\\\",t<0){t=-t,M=(C-1).toString(16);for(var T=[],O=0;O<M.length;O++)T.push((15-parseInt(M[O],16)).toString(16));for(M=T.join(\\\"\\\");M.length<2*E;)M=\\\"f\\\"+M}else M=C.toString(16);v==\\\"X\\\".charCodeAt(0)&&(R=R.toUpperCase(),M=M.toUpperCase())}else v==\\\"p\\\".charCodeAt(0)&&(0===C?M=\\\"(nil)\\\":(R=\\\"0x\\\",M=C.toString(16)));if(c)for(;M.length<h;)M=\\\"0\\\"+M;for(o&&(R=t<0?\\\"-\\\"+R:\\\"+\\\"+R);R.length+M.length<u;)l?M+=\\\" \\\":k?M=\\\"0\\\"+M:R=\\\" \\\"+R;M=R+M,M.split(\\\"\\\").forEach(function(r){s.push(r.charCodeAt(0))})}else if([\\\"f\\\",\\\"F\\\",\\\"e\\\",\\\"E\\\",\\\"g\\\",\\\"G\\\"].indexOf(String.fromCharCode(v))!=-1){var M,t=e(\\\"double\\\");if(isNaN(t))M=\\\"nan\\\",k=!1;else if(isFinite(t)){var N=!1,I=Math.min(h,20);if(v==\\\"g\\\".charCodeAt(0)||v==\\\"G\\\".charCodeAt(0)){N=!0,h=h||1;var P=parseInt(t.toExponential(I).split(\\\"e\\\")[1],10);h>P&&P>=-4?(v=(v==\\\"g\\\".charCodeAt(0)?\\\"f\\\":\\\"F\\\").charCodeAt(0),h-=P+1):(v=(v==\\\"g\\\".charCodeAt(0)?\\\"e\\\":\\\"E\\\").charCodeAt(0),h--),I=Math.min(h,20)}v==\\\"e\\\".charCodeAt(0)||v==\\\"E\\\".charCodeAt(0)?(M=t.toExponential(I),/[eE][-+]\\\\\\\\d$/.test(M)&&(M=M.slice(0,-1)+\\\"0\\\"+M.slice(-1))):v!=\\\"f\\\".charCodeAt(0)&&v!=\\\"F\\\".charCodeAt(0)||(M=t.toFixed(I));var D=M.split(\\\"e\\\");if(N&&!b)for(;D[0].length>1&&D[0].indexOf(\\\".\\\")!=-1&&(\\\"0\\\"==D[0].slice(-1)||\\\".\\\"==D[0].slice(-1));)D[0]=D[0].slice(0,-1);else for(b&&M.indexOf(\\\".\\\")==-1&&(D[0]+=\\\".\\\");h>I++;)D[0]+=\\\"0\\\";M=D[0]+(D.length>1?\\\"e\\\"+D[1]:\\\"\\\"),v==\\\"E\\\".charCodeAt(0)&&(M=M.toUpperCase()),o&&t>=0&&(M=\\\"+\\\"+M)}else M=(t<0?\\\"-\\\":\\\"\\\")+\\\"inf\\\",k=!1;for(;M.length<u;)l?M+=\\\" \\\":M=!k||\\\"-\\\"!=M[0]&&\\\"+\\\"!=M[0]?(k?\\\"0\\\":\\\" \\\")+M:M[0]+\\\"0\\\"+M.slice(1);v<\\\"a\\\".charCodeAt(0)&&(M=M.toUpperCase()),M.split(\\\"\\\").forEach(function(r){s.push(r.charCodeAt(0))})}else if(v==\\\"s\\\".charCodeAt(0)){var L,F=e(\\\"i8*\\\");if(F?(L=w(F),c&&L.length>h&&(L=L.slice(0,h))):L=p(\\\"(null)\\\",!0),!l)for(;L.length<u--;)s.push(\\\" \\\".charCodeAt(0));if(s=s.concat(L),l)for(;L.length<u--;)s.push(\\\" \\\".charCodeAt(0))}else if(v==\\\"c\\\".charCodeAt(0)){for(l&&s.push(e(\\\"i8\\\"));--u>0;)s.push(\\\" \\\".charCodeAt(0));l||s.push(e(\\\"i8\\\"))}else if(v==\\\"n\\\".charCodeAt(0)){var X=e(\\\"i32*\\\");Se[X>>2]=s.length}else if(v==\\\"%\\\".charCodeAt(0))s.push(i);else for(var O=n;O<f+2;O++)s.push(Ae[O]);f+=2}else s.push(i),f+=1}return s}function xa(r,a,e,i){for(var v=Ua(e,i),t=void 0===a?v.length:Math.min(v.length,a-1),f=0;f<t;f++)Ae[r+f]=v[f];return Ae[r+f]=0,v.length}function za(r,a,e){return xa(r,void 0,a,e)}function Va(r){return r in{32:0,9:0,10:0,11:0,12:0,13:0}}function Ba(r){return r>=\\\"0\\\".charCodeAt(0)&&r<=\\\"9\\\".charCodeAt(0)}function Ha(r){for(var a;(a=Ae[r])&&Va(a);)r++;if(!a||!Ba(a))return 0;for(var e=r;(a=Ae[e])&&Ba(a);)e++;return Math.floor(Number(s(r).substr(0,e-r)))}function Ka(r){throw ke=!0,\\\"ABORT: \\\"+r+\\\", at \\\"+(new Error).stack}function Ya(r){return Ya.ret||(Ya.ret=_([0],\\\"i32\\\",we)),Se[Ya.ret>>2]=r,r}function Ga(r,a,e,i){var v=$e.streams[r];if(!v||v.object.isDevice)return Ya(Ge.EBADF),-1;if(v.isWrite){if(v.object.isFolder)return Ya(Ge.EISDIR),-1;if(e<0||i<0)return Ya(Ge.EINVAL),-1;for(var t=v.object.contents;t.length<i;)t.push(0);for(var f=0;f<e;f++)t[i+f]=ge[a+f];return v.object.timestamp=Date.now(),f}return Ya(Ge.EACCES),-1}function Wa(r,a,e){var i=$e.streams[r];if(i){if(i.isWrite){if(e<0)return Ya(Ge.EINVAL),-1;if(i.object.isDevice){if(i.object.output){for(var v=0;v<e;v++)try{i.object.output(Ae[a+v])}catch(r){return Ya(Ge.EIO),-1}return i.object.timestamp=Date.now(),v}return Ya(Ge.ENXIO),-1}var t=Ga(r,a,e,i.position);return t!=-1&&(i.position+=t),t}return Ya(Ge.EACCES),-1}return Ya(Ge.EBADF),-1}function Za(r,a,e,i){var v=e*a;if(0==v)return 0;var t=Wa(i,r,v);return t==-1?($e.streams[i]&&($e.streams[i].error=!0),-1):Math.floor(t/a)}function Qa(r,a,e){var i=Ua(a,e),v=le.stackSave(),t=Za(_(i,\\\"i8\\\",de),1,i.length,r);return le.stackRestore(v),t}function qa(r){switch(r){case 8:return Pe;case 54:case 56:case 21:case 61:case 63:case 22:case 67:case 23:case 24:case 25:case 26:case 27:case 69:case 28:case 101:case 70:case 71:case 29:case 30:case 199:case 75:case 76:case 32:case 43:case 44:case 80:case 46:case 47:case 45:case 48:case 49:case 42:case 82:case 33:case 7:case 108:case 109:case 107:case 112:case 119:case 121:return 200809;case 13:case 104:case 94:case 95:case 34:case 35:case 77:case 81:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 94:case 95:case 110:case 111:case 113:case 114:case 115:case 116:case 117:case 118:case 120:case 40:case 16:case 79:case 19:return-1;case 92:case 93:case 5:case 72:case 6:case 74:case 92:case 93:case 96:case 97:case 98:case 99:case 102:case 103:case 105:return 1;case 38:case 66:case 50:case 51:case 4:return 1024;case 15:case 64:case 41:return 32;case 55:case 37:case 17:return 2147483647;case 18:case 1:return 47839;case 59:case 57:return 99;case 68:case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1e3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4}return Ya(Ge.EINVAL),-1}function $a(r){var a=Math.floor(Date.now()/1e3);return r&&(Se[r>>2]=a),a}function Ja(){return Ya.ret}function re(r){var a=re;a.called||(Ie=o(Ie),a.called=!0);var e=Ie;return 0!=r&&le.staticAlloc(r),e}function ae(){return Se[ae.buf>>2]}function ee(r){r=r||Module.arguments,k();var a=null;return Module._main&&(a=Module.callMain(r),Module.noExitRuntime||u()),a}var ie=[],ve=false,te=\\\"object\\\"==typeof window,fe=\\\"function\\\"==typeof importScripts,_e=!te&&!ve&&!fe;if(ve){print=function(r){process.stdout.write(r+\\\"\\\\\\\\n\\\")},printErr=function(r){process.stderr.write(r+\\\"\\\\\\\\n\\\")};var se=require(\\\"fs\\\");read=function(r){var a=se.readFileSync(r).toString();return a||\\\"/\\\"==r[0]||(r=__dirname.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\")+\\\"/src/\\\"+r,a=se.readFileSync(r).toString()),a},load=function(a){r(read(a))},ie=process.argv.slice(2)}else if(_e)this.read||(this.read=function(r){snarf(r)}),\\\"undefined\\\"!=typeof scriptArgs?ie=scriptArgs:\\\"undefined\\\"!=typeof arguments&&(ie=arguments);else if(te)this.print=printErr=function(r){console.log(r)},this.read=function(r){var a=new XMLHttpRequest;return a.open(\\\"GET\\\",r,!1),a.send(null),a.responseText},this.arguments&&(ie=arguments);else{if(!fe)throw\\\"Unknown runtime environment. Where are we?\\\";this.load=importScripts}\\\"undefined\\\"==typeof load&&\\\"undefined\\\"!=typeof read&&(this.load=function(a){r(read(a))}),\\\"undefined\\\"==typeof printErr&&(this.printErr=function(){}),\\\"undefined\\\"==typeof print&&(this.print=printErr);try{this.Module=Module}catch(r){this.Module=Module={}}Module.arguments||(Module.arguments=ie),Module.print&&(print=Module.print);var ne,oe,le={stackSave:function(){return Oe},stackRestore:function(r){Oe=r},forceAlign:function(r,a){if(a=a||4,1==a)return r;if(isNumber(r)&&isNumber(a))return Math.ceil(r/a)*a;if(isNumber(a)&&isPowerOfTwo(a)){var e=log2(a);return\\\"((((\\\"+r+\\\")+\\\"+(a-1)+\\\")>>\\\"+e+\\\")<<\\\"+e+\\\")\\\"}return\\\"Math.ceil((\\\"+r+\\\")/\\\"+a+\\\")*\\\"+a},isNumberType:function(r){return r in le.INT_TYPES||r in le.FLOAT_TYPES},isPointerType:function(r){return\\\"*\\\"==r[r.length-1]},isStructType:function(r){return!isPointerType(r)&&(!!/^\\\\\\\\[\\\\\\\\d+\\\\\\\\ x\\\\\\\\ (.*)\\\\\\\\]/.test(r)||(!!/<?{ [^}]* }>?/.test(r)||\\\"%\\\"==r[0]))},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{float:0,double:0},bitshift64:function(r,e,i,v){var t=Math.pow(2,v)-1;if(v<32)switch(i){case\\\"shl\\\":return[r<<v,e<<v|(r&t<<32-v)>>>32-v];case\\\"ashr\\\":return[(r>>>v|(e&t)<<32-v)>>0>>>0,e>>v>>>0];case\\\"lshr\\\":return[(r>>>v|(e&t)<<32-v)>>>0,e>>>v]}else if(32==v)switch(i){case\\\"shl\\\":return[0,r];case\\\"ashr\\\":return[e,(0|e)<0?t:0];case\\\"lshr\\\":return[e,0]}else switch(i){case\\\"shl\\\":return[0,r<<v-32];case\\\"ashr\\\":return[e>>v-32>>>0,(0|e)<0?t:0];case\\\"lshr\\\":return[e>>>v-32,0]}a(\\\"unknown bitshift64 op: \\\"+[value,i,v])},or64:function(r,a){var e=0|r|(0|a),i=4294967296*(Math.round(r/4294967296)|Math.round(a/4294967296));return e+i},and64:function(r,a){var e=(0|r)&(0|a),i=4294967296*(Math.round(r/4294967296)&Math.round(a/4294967296));return e+i},xor64:function(r,a){var e=(0|r)^(0|a),i=4294967296*(Math.round(r/4294967296)^Math.round(a/4294967296));return e+i},getNativeTypeSize:function(r,a){if(1==le.QUANTUM_SIZE)return 1;var i={\\\"%i1\\\":1,\\\"%i8\\\":1,\\\"%i16\\\":2,\\\"%i32\\\":4,\\\"%i64\\\":8,\\\"%float\\\":4,\\\"%double\\\":8}[\\\"%\\\"+r];if(!i)if(\\\"*\\\"==r[r.length-1])i=le.QUANTUM_SIZE;else if(\\\"i\\\"==r[0]){var v=parseInt(r.substr(1));e(v%8==0),i=v/8}return i},getNativeFieldSize:function(r){return Math.max(le.getNativeTypeSize(r),le.QUANTUM_SIZE)},dedup:function(r,a){var e={};return a?r.filter(function(r){return!e[r[a]]&&(e[r[a]]=!0,!0)}):r.filter(function(r){return!e[r]&&(e[r]=!0,!0)})},set:function(){for(var r=\\\"object\\\"==typeof arguments[0]?arguments[0]:arguments,a={},e=0;e<r.length;e++)a[r[e]]=0;return a},calculateStructAlignment:function(r){r.flatSize=0,r.alignSize=0;var a=[],e=-1;return r.flatIndexes=r.fields.map(function(i){var v,t;if(le.isNumberType(i)||le.isPointerType(i))v=le.getNativeTypeSize(i),t=v;else{if(!le.isStructType(i))throw\\\"Unclear type in struct: \\\"+i+\\\", in \\\"+r.name_+\\\" :: \\\"+dump(Types.types[r.name_]);v=Types.types[i].flatSize,t=Types.types[i].alignSize}t=r.packed?1:Math.min(t,le.QUANTUM_SIZE),r.alignSize=Math.max(r.alignSize,t);var f=le.alignMemory(r.flatSize,t);return r.flatSize=f+v,e>=0&&a.push(f-e),e=f,f}),r.flatSize=le.alignMemory(r.flatSize,r.alignSize),0==a.length?r.flatFactor=r.flatSize:1==le.dedup(a).length&&(r.flatFactor=a[0]),r.needsFlattening=1!=r.flatFactor,r.flatIndexes},generateStructInfo:function(r,a,i){var v,t;if(a){if(i=i||0,v=(\\\"undefined\\\"==typeof Types?le.typeInfo:Types.types)[a],!v)return null;e(v.fields.length===r.length,\\\"Number of named fields must match the type for \\\"+a),t=v.flatIndexes}else{var v={fields:r.map(function(r){return r[0]})};t=le.calculateStructAlignment(v)}var f={__size__:v.flatSize};return a?r.forEach(function(r,a){if(\\\"string\\\"==typeof r)f[r]=t[a]+i;else{var e;for(var _ in r)e=_;f[e]=le.generateStructInfo(r[e],v.fields[a],t[a])}}):r.forEach(function(r,a){f[r[1]]=t[a]}),f},stackAlloc:function(r){var a=Oe;return Oe+=r,Oe=Oe+3>>2<<2,a},staticAlloc:function(r){var a=Ie;return Ie+=r,Ie=Ie+3>>2<<2,Ie>=Le&&l(),a},alignMemory:function(r,a){var e=r=Math.ceil(r/(a?a:4))*(a?a:4);return e},makeBigInt:function(r,a,e){var i=e?(r>>>0)+4294967296*(a>>>0):(r>>>0)+4294967296*(0|a);return i},QUANTUM_SIZE:4,__dummy__:0},be={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(r,e,i){e||(this.corrections++,this.corrections>=this.MAX_ALLOWED&&a(\\\"\\\\\\\\n\\\\\\\\nToo many corrections!\\\"))},print:function(){}},ke=!1,ue=0,ce=this;Module.ccall=i,Module.setValue=t,Module.getValue=f;var he=0,de=1,we=2;Module.ALLOC_NORMAL=he,Module.ALLOC_STACK=de,Module.ALLOC_STATIC=we,Module.allocate=_,Module.Pointer_stringify=s,Module.Array_stringify=n;var pe,Ee,Ae,ge,ye,me,Se,Me,Ce,Re,Te,Oe,Ne,Ie,Pe=4096,De=Module.TOTAL_STACK||5242880,Le=Module.TOTAL_MEMORY||10485760;Module.FAST_MEMORY||2097152;e(!!(Int32Array&&Float64Array&&new Int32Array(1).subarray&&new Int32Array(1).set),\\\"Cannot fallback to non-typed array case: Code is too specialized\\\");var Fe=new ArrayBuffer(Le);Ae=new Int8Array(Fe),ye=new Int16Array(Fe),Se=new Int32Array(Fe),ge=new Uint8Array(Fe),me=new Uint16Array(Fe),Me=new Uint32Array(Fe),Ce=new Float32Array(Fe),Re=new Float64Array(Fe),Se[0]=255,e(255===ge[0]&&0===ge[3],\\\"Typed arrays 2 must be run on a little-endian system\\\");var Xe=p(\\\"(null)\\\");Ie=Xe.length;for(var je=0;je<Xe.length;je++)Ae[je]=Xe[je];Module.HEAP=Ee,Module.HEAP8=Ae,Module.HEAP16=ye,Module.HEAP32=Se,Module.HEAPU8=ge,Module.HEAPU16=me,Module.HEAPU32=Me,Module.HEAPF32=Ce,Module.HEAPF64=Re,Te=Oe=le.alignMemory(Ie),Ne=Te+De;var Ue=le.alignMemory(Ne,8),xe=(Ae.subarray(Ue),Se.subarray(Ue>>2)),ze=(Ce.subarray(Ue>>2),Re.subarray(Ue>>3));Ne=Ue+8,Ie=o(Ne);var Ve=[],Be=[];Module.Array_copy=c,Module.TypedArray_copy=h,Module.String_len=d,Module.String_copy=w,Module.intArrayFromString=p,Module.intArrayToString=E,Module.writeStringToMemory=A;var He=[],Ke=0;O.X=1,N.X=1,V.X=1,H.X=1,G.X=1,W.X=1,q.X=1,$.X=1,rr.X=1,ar.X=1,er.X=1,vr.X=1,nr.X=1,or.X=1,kr.X=1,hr.X=1,Ar.X=1,Sr.X=1,Tr.X=1,Ir.X=1,Pr.X=1,Dr.X=1,Lr.X=1,Fr.X=1,Xr.X=1,zr.X=1,Vr.X=1,Br.X=1,Gr.X=1,$r.X=1,Module._malloc=Jr,Jr.X=1,ra.X=1,aa.X=1,ea.X=1,ia.X=1,Module._free=va,va.X=1,_a.X=1,sa.X=1,na.X=1,oa.X=1,la.X=1,da.X=1,Ma.X=1;var Ye,Ge={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18},We=0,Ze=0,Qe=0,qe=0,$e={currentPath:\\\"/\\\",nextInode:2,streams:[null],ignorePermissions:!0,absolutePath:function(r,a){if(\\\"string\\\"!=typeof r)return null;void 0===a&&(a=$e.currentPath),r&&\\\"/\\\"==r[0]&&(a=\\\"\\\");for(var e=a+\\\"/\\\"+r,i=e.split(\\\"/\\\").reverse(),v=[\\\"\\\"];i.length;){var t=i.pop();\\\"\\\"==t||\\\".\\\"==t||(\\\"..\\\"==t?v.length>1&&v.pop():v.push(t))}return 1==v.length?\\\"/\\\":v.join(\\\"/\\\")},analyzePath:function(r,a,e){var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};if(r=$e.absolutePath(r),\\\"/\\\"==r)i.isRoot=!0,i.exists=i.parentExists=!0,i.name=\\\"/\\\",i.path=i.parentPath=\\\"/\\\",i.object=i.parentObject=$e.root;else if(null!==r){e=e||0,r=r.slice(1).split(\\\"/\\\");for(var v=$e.root,t=[\\\"\\\"];r.length;){1==r.length&&v.isFolder&&(i.parentExists=!0,i.parentPath=1==t.length?\\\"/\\\":t.join(\\\"/\\\"),i.parentObject=v,i.name=r[0]);var f=r.shift();if(!v.isFolder){i.error=Ge.ENOTDIR;break}if(!v.read){i.error=Ge.EACCES;break}if(!v.contents.hasOwnProperty(f)){i.error=Ge.ENOENT;break}if(v=v.contents[f],v.link&&(!a||0!=r.length)){if(e>40){i.error=Ge.ELOOP;break}var _=$e.absolutePath(v.link,t.join(\\\"/\\\"));return $e.analyzePath([_].concat(r).join(\\\"/\\\"),a,e+1)}t.push(f),0==r.length&&(i.exists=!0,i.path=t.join(\\\"/\\\"),i.object=v)}return i}return i},findObject:function(r,a){$e.ensureRoot();var e=$e.analyzePath(r,a);return e.exists?e.object:(Ya(e.error),null)},createObject:function(r,a,e,i,v){if(r||(r=\\\"/\\\"),\\\"string\\\"==typeof r&&(r=$e.findObject(r)),!r)throw Ya(Ge.EACCES),new Error(\\\"Parent path must exist.\\\");if(!r.isFolder)throw Ya(Ge.ENOTDIR),\\\\nnew Error(\\\"Parent must be a folder.\\\");if(!r.write&&!$e.ignorePermissions)throw Ya(Ge.EACCES),new Error(\\\"Parent folder must be writeable.\\\");if(!a||\\\".\\\"==a||\\\"..\\\"==a)throw Ya(Ge.ENOENT),new Error(\\\"Name must not be empty.\\\");if(r.contents.hasOwnProperty(a))throw Ya(Ge.EEXIST),new Error(\\\"Can\\\\'t overwrite object.\\\");r.contents[a]={read:void 0===i||i,write:void 0!==v&&v,timestamp:Date.now(),inodeNumber:$e.nextInode++};for(var t in e)e.hasOwnProperty(t)&&(r.contents[a][t]=e[t]);return r.contents[a]},createFolder:function(r,a,e,i){var v={isFolder:!0,isDevice:!1,contents:{}};return $e.createObject(r,a,v,e,i)},createPath:function(r,a,e,i){var v=$e.findObject(r);if(null===v)throw new Error(\\\"Invalid parent.\\\");for(a=a.split(\\\"/\\\").reverse();a.length;){var t=a.pop();t&&(v.contents.hasOwnProperty(t)||$e.createFolder(v,t,e,i),v=v.contents[t])}return v},createFile:function(r,a,e,i,v){return e.isFolder=!1,$e.createObject(r,a,e,i,v)},createDataFile:function(r,a,e,i,v){if(\\\"string\\\"==typeof e){for(var t=new Array(e.length),f=0,_=e.length;f<_;++f)t[f]=e.charCodeAt(f);e=t}var s={isDevice:!1,contents:e};return $e.createFile(r,a,s,i,v)},createLazyFile:function(r,a,e,i,v){var t={isDevice:!1,url:e};return $e.createFile(r,a,t,i,v)},createLink:function(r,a,e,i,v){var t={isDevice:!1,link:e};return $e.createFile(r,a,t,i,v)},createDevice:function(r,a,e,i){if(!e&&!i)throw new Error(\\\"A device must have at least one callback defined.\\\");var v={isDevice:!0,input:e,output:i};return $e.createFile(r,a,v,Boolean(e),Boolean(i))},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;var a=!0;if(\\\"undefined\\\"!=typeof XMLHttpRequest)e(\\\"Cannot do synchronous binary XHRs in modern browsers. Use --embed-file or --preload-file in emcc\\\");else{if(\\\"undefined\\\"==typeof read)throw new Error(\\\"Cannot load without read() or XMLHttpRequest.\\\");try{r.contents=p(read(r.url),!0)}catch(r){a=!1}}return a||Ya(Ge.EIO),a},ensureRoot:function(){$e.root||($e.root={read:!0,write:!0,isFolder:!0,isDevice:!1,timestamp:Date.now(),inodeNumber:1,contents:{}})},init:function(r,a,i){function v(r){null===r||r===\\\"\\\\\\\\n\\\".charCodeAt(0)?(a.printer(a.buffer.join(\\\"\\\")),a.buffer=[]):a.buffer.push(String.fromCharCode(r))}e(!$e.init.initialized,\\\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\\\"),$e.init.initialized=!0,$e.ensureRoot(),r=r||Module.stdin,a=a||Module.stdout,i=i||Module.stderr;var t=!0,f=!0,s=!0;r||(t=!1,r=function(){if(!r.cache||!r.cache.length){var a;\\\"undefined\\\"!=typeof window&&\\\"function\\\"==typeof window.prompt?a=window.prompt(\\\"Input: \\\"):\\\"function\\\"==typeof readline&&(a=readline()),a||(a=\\\"\\\"),r.cache=p(a+\\\"\\\\\\\\n\\\",!0)}return r.cache.shift()}),a||(f=!1,a=v),a.printer||(a.printer=print),a.buffer||(a.buffer=[]),i||(s=!1,i=v),i.printer||(i.printer=print),i.buffer||(i.buffer=[]),$e.createFolder(\\\"/\\\",\\\"tmp\\\",!0,!0);var n=$e.createFolder(\\\"/\\\",\\\"dev\\\",!0,!0),o=$e.createDevice(n,\\\"stdin\\\",r),l=$e.createDevice(n,\\\"stdout\\\",null,a),b=$e.createDevice(n,\\\"stderr\\\",null,i);$e.createDevice(n,\\\"tty\\\",r,a),$e.streams[1]={path:\\\"/dev/stdin\\\",object:o,position:0,isRead:!0,isWrite:!1,isAppend:!1,isTerminal:!t,error:!1,eof:!1,ungotten:[]},$e.streams[2]={path:\\\"/dev/stdout\\\",object:l,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!f,error:!1,eof:!1,ungotten:[]},$e.streams[3]={path:\\\"/dev/stderr\\\",object:b,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!s,error:!1,eof:!1,ungotten:[]},We=_([1],\\\"void*\\\",we),Ze=_([2],\\\"void*\\\",we),Qe=_([3],\\\"void*\\\",we),$e.createPath(\\\"/\\\",\\\"dev/shm/tmp\\\",!0,!0),$e.streams[We]=$e.streams[1],$e.streams[Ze]=$e.streams[2],$e.streams[Qe]=$e.streams[3],qe=_([_([0,0,0,0,We,0,0,0,Ze,0,0,0,Qe,0,0,0],\\\"void*\\\",we)],\\\"void*\\\",we)},quit:function(){$e.init.initialized&&($e.streams[2]&&$e.streams[2].object.output.buffer.length>0&&$e.streams[2].object.output(\\\"\\\\\\\\n\\\".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output(\\\"\\\\\\\\n\\\".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,\\\"void*\\\",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p(\\\"/bin/this.program\\\"),\\\"i8\\\",we)];a();for(var v=0;v<e-1;v+=1)i.push(_(p(r[v]),\\\"i8\\\",we)),a();return i.push(0),i=_(i,\\\"i32\\\",we),_main(e,i,0)};var ri,ai,ei,ii,vi,ti,qe,fi,_i,si,ni,oi,li,bi,ki,ui,ci,hi,di,wi;if(He.__str=_([97,78,0],\\\"i8\\\",we),He.__str1=_([38,61,0],\\\"i8\\\",we),He.__str2=_([97,83,0],\\\"i8\\\",we),He.__str3=_([61,0],\\\"i8\\\",we),He.__str4=_([97,97,0],\\\"i8\\\",we),He.__str5=_([38,38,0],\\\"i8\\\",we),He.__str6=_([97,100,0],\\\"i8\\\",we),He.__str7=_([38,0],\\\"i8\\\",we),He.__str8=_([97,110,0],\\\"i8\\\",we),He.__str9=_([99,108,0],\\\"i8\\\",we),He.__str10=_([40,41,0],\\\"i8\\\",we),He.__str11=_([99,109,0],\\\"i8\\\",we),He.__str12=_([44,0],\\\"i8\\\",we),He.__str13=_([99,111,0],\\\"i8\\\",we),He.__str14=_([126,0],\\\"i8\\\",we),He.__str15=_([100,86,0],\\\"i8\\\",we),He.__str16=_([47,61,0],\\\"i8\\\",we),He.__str17=_([100,97,0],\\\"i8\\\",we),He.__str18=_([100,101,108,101,116,101,91,93,0],\\\"i8\\\",we),He.__str19=_([100,101,0],\\\"i8\\\",we),He.__str20=_([42,0],\\\"i8\\\",we),He.__str21=_([100,108,0],\\\"i8\\\",we),He.__str22=_([100,101,108,101,116,101,0],\\\"i8\\\",we),He.__str23=_([100,118,0],\\\"i8\\\",we),He.__str24=_([47,0],\\\"i8\\\",we),He.__str25=_([101,79,0],\\\"i8\\\",we),He.__str26=_([94,61,0],\\\"i8\\\",we),He.__str27=_([101,111,0],\\\"i8\\\",we),He.__str28=_([94,0],\\\"i8\\\",we),He.__str29=_([101,113,0],\\\"i8\\\",we),He.__str30=_([61,61,0],\\\"i8\\\",we),He.__str31=_([103,101,0],\\\"i8\\\",we),He.__str32=_([62,61,0],\\\"i8\\\",we),He.__str33=_([103,116,0],\\\"i8\\\",we),He.__str34=_([62,0],\\\"i8\\\",we),He.__str35=_([105,120,0],\\\"i8\\\",we),He.__str36=_([91,93,0],\\\"i8\\\",we),He.__str37=_([108,83,0],\\\"i8\\\",we),He.__str38=_([60,60,61,0],\\\"i8\\\",we),He.__str39=_([108,101,0],\\\"i8\\\",we),He.__str40=_([60,61,0],\\\"i8\\\",we),He.__str41=_([108,115,0],\\\"i8\\\",we),He.__str42=_([60,60,0],\\\"i8\\\",we),He.__str43=_([108,116,0],\\\"i8\\\",we),He.__str44=_([60,0],\\\"i8\\\",we),He.__str45=_([109,73,0],\\\"i8\\\",we),He.__str46=_([45,61,0],\\\"i8\\\",we),He.__str47=_([109,76,0],\\\"i8\\\",we),He.__str48=_([42,61,0],\\\"i8\\\",we),He.__str49=_([109,105,0],\\\"i8\\\",we),He.__str51=_([109,108,0],\\\"i8\\\",we),He.__str52=_([109,109,0],\\\"i8\\\",we),He.__str53=_([45,45,0],\\\"i8\\\",we),He.__str54=_([110,97,0],\\\"i8\\\",we),He.__str55=_([110,101,119,91,93,0],\\\"i8\\\",we),He.__str56=_([110,101,0],\\\"i8\\\",we),He.__str57=_([33,61,0],\\\"i8\\\",we),He.__str58=_([110,103,0],\\\"i8\\\",we),He.__str59=_([110,116,0],\\\"i8\\\",we),He.__str60=_([33,0],\\\"i8\\\",we),He.__str61=_([110,119,0],\\\"i8\\\",we),He.__str62=_([110,101,119,0],\\\"i8\\\",we),He.__str63=_([111,82,0],\\\"i8\\\",we),He.__str64=_([124,61,0],\\\"i8\\\",we),He.__str65=_([111,111,0],\\\"i8\\\",we),He.__str66=_([124,124,0],\\\"i8\\\",we),He.__str67=_([111,114,0],\\\"i8\\\",we),He.__str68=_([124,0],\\\"i8\\\",we),He.__str69=_([112,76,0],\\\"i8\\\",we),He.__str70=_([43,61,0],\\\"i8\\\",we),He.__str71=_([112,108,0],\\\"i8\\\",we),He.__str72=_([43,0],\\\"i8\\\",we),He.__str73=_([112,109,0],\\\"i8\\\",we),He.__str74=_([45,62,42,0],\\\"i8\\\",we),He.__str75=_([112,112,0],\\\"i8\\\",we),He.__str76=_([43,43,0],\\\"i8\\\",we),He.__str77=_([112,115,0],\\\"i8\\\",we),He.__str78=_([112,116,0],\\\"i8\\\",we),He.__str79=_([45,62,0],\\\"i8\\\",we),He.__str80=_([113,117,0],\\\"i8\\\",we),He.__str81=_([63,0],\\\"i8\\\",we),He.__str82=_([114,77,0],\\\"i8\\\",we),He.__str83=_([37,61,0],\\\"i8\\\",we),He.__str84=_([114,83,0],\\\"i8\\\",we),He.__str85=_([62,62,61,0],\\\"i8\\\",we),He.__str86=_([114,109,0],\\\"i8\\\",we),He.__str87=_([37,0],\\\"i8\\\",we),He.__str88=_([114,115,0],\\\"i8\\\",we),He.__str89=_([62,62,0],\\\"i8\\\",we),He.__str90=_([115,116,0],\\\"i8\\\",we),He.__str91=_([115,105,122,101,111,102,32,0],\\\"i8\\\",we),He.__str92=_([115,122,0],\\\"i8\\\",we),ri=_([0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str95=_([98,111,111,108,101,97,110,0],\\\"i8\\\",we),He.__str97=_([98,121,116,101,0],\\\"i8\\\",we),He.__str101=_([95,95,102,108,111,97,116,49,50,56,0],\\\"i8\\\",we),He.__str105=_([117,110,115,105,103,110,101,100,0],\\\"i8\\\",we),He.__str114=_([108,111,110,103,32,108,111,110,103,0],\\\"i8\\\",we),He.__str115=_([117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0],\\\"i8\\\",we),ai=_([0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,11,0,0,0,8,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,8,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,0,0,8,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,13,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,9,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,0,0,0,6,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0],[\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str117=_([95,71,76,79,66,65,76,95,0],\\\"i8\\\",we),He.__str118=_([103,108,111,98,97,108,32,99,111,110,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\\\"i8\\\",we),He.__str119=_([103,108,111,98,97,108,32,100,101,115,116,114,117,99,116,111,114,115,32,107,101,121,101,100,32,116,111,32,0],\\\"i8\\\",we),He.__str120=_([58,58,0],\\\"i8\\\",we),He.__str121=_([118,116,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str122=_([86,84,84,32,102,111,114,32,0],\\\"i8\\\",we),He.__str123=_([99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str124=_([45,105,110,45,0],\\\"i8\\\",we),He.__str125=_([116,121,112,101,105,110,102,111,32,102,111,114,32,0],\\\"i8\\\",we),He.__str126=_([116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str127=_([116,121,112,101,105,110,102,111,32,102,110,32,102,111,114,32,0],\\\"i8\\\",we),He.__str128=_([110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str129=_([118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str130=_([99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0],\\\"i8\\\",we),He.__str131=_([106,97,118,97,32,67,108,97,115,115,32,102,111,114,32,0],\\\"i8\\\",we),He.__str132=_([103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0],\\\"i8\\\",we),He.__str133=_([114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0],\\\"i8\\\",we),He.__str134=_([104,105,100,100,101,110,32,97,108,105,97,115,32,102,111,114,32,0],\\\"i8\\\",we),He.__str135=_([58,58,42,0],\\\"i8\\\",we),He.__str136=_([44,32,0],\\\"i8\\\",we),He.__str137=_([111,112,101,114,97,116,111,114,0],\\\"i8\\\",we),He.__str139=_([41,32,0],\\\"i8\\\",we),He.__str140=_([32,40,0],\\\"i8\\\",we),He.__str141=_([41,32,58,32,40,0],\\\"i8\\\",we),He.__str142=_([117,108,0],\\\"i8\\\",we),He.__str143=_([108,108,0],\\\"i8\\\",we),He.__str144=_([117,108,108,0],\\\"i8\\\",we),He.__str145=_([102,97,108,115,101,0],\\\"i8\\\",we),He.__str146=_([116,114,117,101,0],\\\"i8\\\",we),He.__str147=_([32,114,101,115,116,114,105,99,116,0],\\\"i8\\\",we),He.__str148=_([32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str149=_([32,99,111,110,115,116,0],\\\"i8\\\",we),He.__str150=_([99,111,109,112,108,101,120,32,0],\\\"i8\\\",we),He.__str151=_([105,109,97,103,105,110,97,114,121,32,0],\\\"i8\\\",we),ei=_([116,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,9,0,0,0,98,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,12,0,0,0,115,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,12,0,0,0,105,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,111,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,13,0,0,0,100,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,14,0,0,0],[\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i8\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0],we),He.__str152=_([115,116,100,0],\\\"i8\\\",we),He.__str153=_([115,116,100,58,58,97,108,108,111,99,97,116,111,114,0],\\\"i8\\\",we),He.__str154=_([97,108,108,111,99,97,116,111,114,0],\\\"i8\\\",we),He.__str155=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str156=_([98,97,115,105,99,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str157=_([115,116,100,58,58,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str158=_([115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str159=_([115,116,100,58,58,105,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str160=_([115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str161=_([98,97,115,105,99,95,105,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str162=_([115,116,100,58,58,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str163=_([115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str164=_([98,97,115,105,99,95,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str165=_([115,116,100,58,58,105,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str166=_([115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0],\\\"i8\\\",we),He.__str167=_([98,97,115,105,99,95,105,111,115,116,114,101,97,109,0],\\\"i8\\\",we),He.__str168=_([115,116,114,105,110,103,32,108,105,116,101,114,97,108,0],\\\"i8\\\",we),He.__str169=_([40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0],\\\"i8\\\",we),He._symbol_demangle_dashed_null=_([45,45,110,117,108,108,45,45,0],\\\"i8\\\",we),He.__str170=_([37,115,37,115,0],\\\"i8\\\",we),He.__str1171=_([111,112,101,114,97,116,111,114,32,110,101,119,0],\\\"i8\\\",we),He.__str2172=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0],\\\"i8\\\",we),He.__str3173=_([111,112,101,114,97,116,111,114,61,0],\\\"i8\\\",we),He.__str4174=_([111,112,101,114,97,116,111,114,62,62,0],\\\"i8\\\",we),He.__str5175=_([111,112,101,114,97,116,111,114,60,60,0],\\\"i8\\\",we),He.__str6176=_([111,112,101,114,97,116,111,114,33,0],\\\"i8\\\",we),He.__str7177=_([111,112,101,114,97,116,111,114,61,61,0],\\\"i8\\\",we),He.__str8178=_([111,112,101,114,97,116,111,114,33,61,0],\\\"i8\\\",we),He.__str9179=_([111,112,101,114,97,116,111,114,91,93,0],\\\"i8\\\",we),He.__str10180=_([111,112,101,114,97,116,111,114,32,0],\\\"i8\\\",we),He.__str11181=_([111,112,101,114,97,116,111,114,45,62,0],\\\"i8\\\",we),He.__str12182=_([111,112,101,114,97,116,111,114,42,0],\\\"i8\\\",we),He.__str13183=_([111,112,101,114,97,116,111,114,43,43,0],\\\"i8\\\",we),He.__str14184=_([111,112,101,114,97,116,111,114,45,45,0],\\\"i8\\\",we),He.__str15185=_([111,112,101,114,97,116,111,114,45,0],\\\"i8\\\",we),He.__str16186=_([111,112,101,114,97,116,111,114,43,0],\\\"i8\\\",we),He.__str17187=_([111,112,101,114,97,116,111,114,38,0],\\\"i8\\\",we),He.__str18188=_([111,112,101,114,97,116,111,114,45,62,42,0],\\\"i8\\\",we),He.__str19189=_([111,112,101,114,97,116,111,114,47,0],\\\"i8\\\",we),He.__str20190=_([111,112,101,114,97,116,111,114,37,0],\\\"i8\\\",we),He.__str21191=_([111,112,101,114,97,116,111,114,60,0],\\\"i8\\\",we),He.__str22192=_([111,112,101,114,97,116,111,114,60,61,0],\\\"i8\\\",we),He.__str23193=_([111,112,101,114,97,116,111,114,62,0],\\\"i8\\\",we),He.__str24194=_([111,112,101,114,97,116,111,114,62,61,0],\\\"i8\\\",we),He.__str25195=_([111,112,101,114,97,116,111,114,44,0],\\\"i8\\\",we),He.__str26196=_([111,112,101,114,97,116,111,114,40,41,0],\\\"i8\\\",we),He.__str27197=_([111,112,101,114,97,116,111,114,126,0],\\\"i8\\\",we),He.__str28198=_([111,112,101,114,97,116,111,114,94,0],\\\"i8\\\",we),He.__str29199=_([111,112,101,114,97,116,111,114,124,0],\\\"i8\\\",we),He.__str30200=_([111,112,101,114,97,116,111,114,38,38,0],\\\"i8\\\",we),He.__str31201=_([111,112,101,114,97,116,111,114,124,124,0],\\\"i8\\\",we),He.__str32202=_([111,112,101,114,97,116,111,114,42,61,0],\\\"i8\\\",we),He.__str33203=_([111,112,101,114,97,116,111,114,43,61,0],\\\"i8\\\",we),He.__str34204=_([111,112,101,114,97,116,111,114,45,61,0],\\\"i8\\\",we),He.__str35205=_([111,112,101,114,97,116,111,114,47,61,0],\\\"i8\\\",we),He.__str36206=_([111,112,101,114,97,116,111,114,37,61,0],\\\"i8\\\",we),He.__str37207=_([111,112,101,114,97,116,111,114,62,62,61,0],\\\"i8\\\",we),He.__str38208=_([111,112,101,114,97,116,111,114,60,60,61,0],\\\"i8\\\",we),He.__str39209=_([111,112,101,114,97,116,111,114,38,61,0],\\\"i8\\\",we),He.__str40210=_([111,112,101,114,97,116,111,114,124,61,0],\\\"i8\\\",we),He.__str41211=_([111,112,101,114,97,116,111,114,94,61,0],\\\"i8\\\",we),He.__str42212=_([96,118,102,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str43213=_([96,118,98,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str44214=_([96,118,99,97,108,108,39,0],\\\"i8\\\",we),He.__str45215=_([96,116,121,112,101,111,102,39,0],\\\"i8\\\",we),He.__str46216=_([96,108,111,99,97,108,32,115,116,97,116,105,99,32,103,117,97,114,100,39,0],\\\"i8\\\",we),He.__str47217=_([96,115,116,114,105,110,103,39,0],\\\"i8\\\",we),He.__str48218=_([96,118,98,97,115,101,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str49219=_([96,118,101,99,116,111,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str50220=_([96,100,101,102,97,117,108,116,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str51221=_([96,115,99,97,108,97,114,32,100,101,108,101,116,105,110,103,32,100,101,115,116,114,117,99,116,111,114,39,0],\\\"i8\\\",we),He.__str52222=_([96,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str53223=_([96,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str54224=_([96,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str55225=_([96,118,105,114,116,117,97,108,32,100,105,115,112,108,97,99,101,109,101,110,116,32,109,97,112,39,0],\\\"i8\\\",we),He.__str56226=_([96,101,104,32,118,101,99,116,111,114,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str57227=_([96,101,104,32,118,101,99,116,111,114,32,100,101,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str58228=_([96,101,104,32,118,101,99,116,111,114,32,118,98,97,115,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105,116,101,114,97,116,111,114,39,0],\\\"i8\\\",we),He.__str59229=_([96,99,111,112,121,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str60230=_([37,115,37,115,32,96,82,84,84,73,32,84,121,112,101,32,68,101,115,99,114,105,112,116,111,114,39,0],\\\"i8\\\",we),He.__str61231=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,68,101,115,99,114,105,112,116,111,114,32,97,116,32,40,37,115,44,37,115,44,37,115,44,37,115,41,39,0],\\\"i8\\\",we),He.__str62232=_([96,82,84,84,73,32,66,97,115,101,32,67,108,97,115,115,32,65,114,114,97,121,39,0],\\\"i8\\\",we),He.__str63233=_([96,82,84,84,73,32,67,108,97,115,115,32,72,105,101,114,97,114,99,104,121,32,68,101,115,99,114,105,112,116,111,114,39,0],\\\"i8\\\",we),He.__str64234=_([96,82,84,84,73,32,67,111,109,112,108,101,116,101,32,79,98,106,101,99,116,32,76,111,99,97,116,111,114,39,0],\\\"i8\\\",we),He.__str65235=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,39,0],\\\"i8\\\",we),He.__str66236=_([96,108,111,99,97,108,32,118,102,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str67237=_([111,112,101,114,97,116,111,114,32,110,101,119,91,93,0],\\\"i8\\\",we),He.__str68238=_([111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0],\\\"i8\\\",we),He.__str69239=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str70240=_([96,112,108,97,99,101,109,101,110,116,32,100,101,108,101,116,101,91,93,32,99,108,111,115,117,114,101,39,0],\\\"i8\\\",we),He.__str71241=_([126,37,115,0],\\\"i8\\\",we),He.__str72242=_([117,110,100,110,97,109,101,46,99,0],\\\"i8\\\",we),He.___func___symbol_demangle=_([115,121,109,98,111,108,95,100,101,109,97,110,103,108,101,0],\\\"i8\\\",we),He.__str73243=_([115,121,109,45,62,114,101,115,117,108,116,0],\\\"i8\\\",we),He.___func___handle_template=_([104,97,110,100,108,101,95,116,101,109,112,108,97,116,101,0],\\\"i8\\\",we),He.__str74244=_([42,115,121,109,45,62,99,117,114,114,101,110,116,32,61,61,32,39,36,39,0],\\\"i8\\\",we),He.___func___str_array_get_ref=_([115,116,114,95,97,114,114,97,121,95,103,101,116,95,114,101,102,0],\\\"i8\\\",we),He.__str75245=_([99,114,101,102,0],\\\"i8\\\",we),He.__str76246=_([112,114,105,118,97,116,101,58,32,0],\\\"i8\\\",we),He.__str77247=_([112,114,111,116,101,99,116,101,100,58,32,0],\\\"i8\\\",we),He.__str78248=_([112,117,98,108,105,99,58,32,0],\\\"i8\\\",we),He.__str79249=_([115,116,97,116,105,99,32,0],\\\"i8\\\",we),He.__str80250=_([118,105,114,116,117,97,108,32,0],\\\"i8\\\",we),He.__str81251=_([91,116,104,117,110,107,93,58,37,115,0],\\\"i8\\\",we),He.__str82252=_([37,115,96,97,100,106,117,115,116,111,114,123,37,115,125,39,32,0],\\\"i8\\\",we),He.__str83253=_([37,115,32,37,115,0],\\\"i8\\\",we),He.__str84254=_([118,111,105,100,0],\\\"i8\\\",we),He.__str85255=_([37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str86256=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str87257=_([32,0],\\\"i8\\\",we),He.__str88258=_([100,108,108,95,101,120,112,111,114,116,32,0],\\\"i8\\\",we),He.__str89259=_([99,100,101,99,108,0],\\\"i8\\\",we),He.__str90260=_([112,97,115,99,97,108,0],\\\"i8\\\",we),He.__str91261=_([116,104,105,115,99,97,108,108,0],\\\"i8\\\",we),He.__str92262=_([115,116,100,99,97,108,108,0],\\\"i8\\\",we),He.__str93263=_([102,97,115,116,99,97,108,108,0],\\\"i8\\\",we),He.__str94264=_([99,108,114,99,97,108,108,0],\\\"i8\\\",we),He.__str95265=_([95,95,100,108,108,95,101,120,112,111,114,116,32,0],\\\"i8\\\",we),He.__str96266=_([95,95,99,100,101,99,108,0],\\\"i8\\\",we),He.__str97267=_([95,95,112,97,115,99,97,108,0],\\\"i8\\\",we),He.__str98268=_([95,95,116,104,105,115,99,97,108,108,0],\\\"i8\\\",we),He.__str99269=_([95,95,115,116,100,99,97,108,108,0],\\\"i8\\\",we),He.__str100270=_([95,95,102,97,115,116,99,97,108,108,0],\\\"i8\\\",we),He.__str101271=_([95,95,99,108,114,99,97,108,108,0],\\\"i8\\\",we),He.__str102272=_([95,95,112,116,114,54,52,0],\\\"i8\\\",we),He.__str103273=_([99,111,110,115,116,0],\\\"i8\\\",we),He.__str104274=_([118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str105275=_([99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.___func___get_class_string=_([103,101,116,95,99,108,97,115,115,95,115,116,114,105,110,103,0],\\\"i8\\\",we),He.__str106276=_([97,45,62,101,108,116,115,91,105,93,0],\\\"i8\\\",we),He.__str107277=_([123,102,111,114,32,96,37,115,39,125,0],\\\"i8\\\",we),He.__str108278=_([37,115,37,115,37,115,37,115,37,115,37,115,37,115,37,115,0],\\\"i8\\\",we),He.__str109279=_([96,37,115,39,0],\\\"i8\\\",we),He.__str110280=_([46,46,46,0],\\\"i8\\\",we),He.__str111281=_([37,99,118,111,105,100,37,99,0],\\\"i8\\\",we),He.__str112282=_([37,115,44,37,115,0],\\\"i8\\\",we),He.__str113283=_([37,99,37,115,37,115,32,37,99,0],\\\"i8\\\",we),He.__str114284=_([37,99,37,115,37,115,37,99,0],\\\"i8\\\",we),He.___func___str_array_push=_([115,116,114,95,97,114,114,97,121,95,112,117,115,104,0],\\\"i8\\\",we),He.__str115285=_([112,116,114,0],\\\"i8\\\",we),He.__str116286=_([97,0],\\\"i8\\\",we),He.__str117287=_([97,45,62,101,108,116,115,91,97,45,62,110,117,109,93,0],\\\"i8\\\",we),He.__str118288=_([37,115,37,100,0],\\\"i8\\\",we),He.__str119289=_([45,0],\\\"i8\\\",we),ii=_(1,\\\"i8\\\",we),He.___func___demangle_datatype=_([100,101,109,97,110,103,108,101,95,100,97,116,97,116,121,112,101,0],\\\"i8\\\",we),He.__str121291=_([99,116,0],\\\"i8\\\",we),He.__str122292=_([117,110,105,111,110,32,0],\\\"i8\\\",we),He.__str123293=_([115,116,114,117,99,116,32,0],\\\"i8\\\",we),He.__str124294=_([99,108,97,115,115,32,0],\\\"i8\\\",we),He.__str125295=_([99,111,105,110,116,101,114,102,97,99,101,32,0],\\\"i8\\\",we),He.__str126296=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,45,37,115,39,0],\\\"i8\\\",we),He.__str127297=_([37,115,37,115,32,40,37,115,42,0],\\\"i8\\\",we),He.__str128298=_([41,37,115,0],\\\"i8\\\",we),He.__str129299=_([101,110,117,109,32,37,115,0],\\\"i8\\\",we),He.__str130300=_([96,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\\\"i8\\\",we),He.__str131301=_([123,37,115,44,37,115,125,0],\\\"i8\\\",we),He.__str132302=_([123,37,115,44,37,115,44,37,115,125,0],\\\"i8\\\",we),He.__str133303=_([96,110,111,110,45,116,121,112,101,45,116,101,109,112,108,97,116,101,45,112,97,114,97,109,101,116,101,114,37,115,39,0],\\\"i8\\\",we),He.__str134304=_([32,95,95,112,116,114,54,52,0],\\\"i8\\\",we),He.__str135305=_([32,38,37,115,0],\\\"i8\\\",we),He.__str136306=_([32,38,37,115,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str137307=_([32,42,37,115,0],\\\"i8\\\",we),He.__str138308=_([32,42,37,115,32,99,111,110,115,116,0],\\\"i8\\\",we),He.__str139309=_([32,42,37,115,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str140310=_([32,42,37,115,32,99,111,110,115,116,32,118,111,108,97,116,105,108,101,0],\\\"i8\\\",we),He.__str141311=_([32,40,37,115,37,115,41,0],\\\"i8\\\",we),He.__str142312=_([32,40,37,115,41,0],\\\"i8\\\",we),He.__str143313=_([37,115,91,37,115,93,0],\\\"i8\\\",we),He.__str144314=_([37,115,32,37,115,37,115,0],\\\"i8\\\",we),He.__str145315=_([115,105,103,110,101,100,32,99,104,97,114,0],\\\"i8\\\",we),He.__str146316=_([99,104,97,114,0],\\\"i8\\\",we),He.__str147317=_([117,110,115,105,103,110,101,100,32,99,104,97,114,0],\\\"i8\\\",we),He.__str148318=_([115,104,111,114,116,0],\\\"i8\\\",we),He.__str149319=_([117,110,115,105,103,110,101,100,32,115,104,111,114,116,0],\\\"i8\\\",we),He.__str150320=_([105,110,116,0],\\\"i8\\\",we),He.__str151321=_([117,110,115,105,103,110,101,100,32,105,110,116,0],\\\"i8\\\",we),He.__str152322=_([108,111,110,103,0],\\\"i8\\\",we),He.__str153323=_([117,110,115,105,103,110,101,100,32,108,111,110,103,0],\\\"i8\\\",we),He.__str154324=_([102,108,111,97,116,0],\\\"i8\\\",we),He.__str155325=_([100,111,117,98,108,101,0],\\\"i8\\\",we),He.__str156326=_([108,111,110,103,32,100,111,117,98,108,101,0],\\\"i8\\\",we),He.__str157327=_([95,95,105,110,116,56,0],\\\"i8\\\",we),He.__str158328=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,56,0],\\\"i8\\\",we),He.__str159329=_([95,95,105,110,116,49,54,0],\\\"i8\\\",we),He.__str160330=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,54,0],\\\"i8\\\",we),He.__str161331=_([95,95,105,110,116,51,50,0],\\\"i8\\\",we),He.__str162332=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,51,50,0],\\\"i8\\\",we),He.__str163333=_([95,95,105,110,116,54,52,0],\\\"i8\\\",we),He.__str164334=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,54,52,0],\\\"i8\\\",we),\\\\nHe.__str165335=_([95,95,105,110,116,49,50,56,0],\\\"i8\\\",we),He.__str166336=_([117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0],\\\"i8\\\",we),He.__str167337=_([98,111,111,108,0],\\\"i8\\\",we),He.__str168338=_([119,99,104,97,114,95,116,0],\\\"i8\\\",we),vi=_(468,[\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0,\\\"*\\\",0,0,0,\\\"i32\\\",0,0,0],we),ti=_(24,\\\"i32\\\",we),He.__str339=_([109,97,120,32,115,121,115,116,101,109,32,98,121,116,101,115,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),He.__str1340=_([115,121,115,116,101,109,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),He.__str2341=_([105,110,32,117,115,101,32,98,121,116,101,115,32,32,32,32,32,61,32,37,49,48,108,117,10,0],\\\"i8\\\",we),fi=_([ue],\\\"i8\\\",we),_i=_(1,\\\"void ()*\\\",we),si=_([0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0],we),_(1,\\\"void*\\\",we),He.__str3342=_([115,116,100,58,58,98,97,100,95,97,108,108,111,99,0],\\\"i8\\\",we),ni=_([0,0,0,0,0,0,0,0,6,0,0,0,12,0,0,0,14,0,0,0],[\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0,\\\"*\\\",0,0,0],we),_(1,\\\"void*\\\",we),He.__str14343=_([98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\\\"i8\\\",we),He.__ZTSSt9bad_alloc=_([83,116,57,98,97,100,95,97,108,108,111,99,0],\\\"i8\\\",we),bi=_(12,\\\"*\\\",we),He.__ZTSSt20bad_array_new_length=_([83,116,50,48,98,97,100,95,97,114,114,97,121,95,110,101,119,95,108,101,110,103,116,104,0],\\\"i8\\\",we),ki=_(12,\\\"*\\\",we),Se[ri>>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],[\\\"i8*\\\",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v(\\\"__cxa_demangle\\\",\\\"string\\\",[\\\"string\\\",\\\"string\\\",\\\"number\\\",\\\"number\\\"]);return function(r){return pi(r,\\\"\\\",1,0)}}();\\\\n'},121:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.Flamechart=void 0;const t=a(844),i=a(293);r.Flamechart=class{constructor(e){this.source=e,this.layers=[],this.totalWeight=0,this.minFrameWidth=1;const r=[];this.minFrameWidth=1/0,this.totalWeight=e.getTotalWeight(),e.forEachCall(((e,a)=>{const i=t.lastOf(r),n={node:e,parent:i,children:[],start:a,end:a};i&&i.children.push(n),r.push(n)}),((e,a)=>{console.assert(r.length>0);const t=r.pop();if(t.end=a,t.end-t.start==0)return;const i=r.length;for(;this.layers.length<=i;)this.layers.push([]);this.layers[i].push(t),this.minFrameWidth=Math.min(this.minFrameWidth,t.end-t.start)})),isFinite(this.minFrameWidth)||(this.minFrameWidth=1)}getTotalWeight(){return this.totalWeight}getLayers(){return this.layers}getColorBucketForFrame(e){return this.source.getColorBucketForFrame(e)}getMinFrameWidth(){return this.minFrameWidth}formatValue(e){return this.source.formatValue(e)}getClampedViewportWidth(e){const r=this.getTotalWeight(),a=Math.pow(2,40),t=i.clamp(3*this.getMinFrameWidth(),r/a,r);return i.clamp(e,t,r)}getClampedConfigSpaceViewportRect({configSpaceViewportRect:e,renderInverted:r}){const a=new i.Vec2(this.getTotalWeight(),this.getLayers().length),t=this.getClampedViewportWidth(e.size.x),n=e.size.withX(t),s=i.Vec2.clamp(e.origin,new i.Vec2(0,r?0:-1),i.Vec2.max(i.Vec2.zero,a.minus(n).plus(new i.Vec2(0,1))));return new i.Rect(s,e.size.withX(t))}}},293:(e,r)=>{\\\"use strict\\\";function a(e,r,a){return e<r?r:e>a?a:e}Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.Rect=r.AffineTransform=r.Vec2=r.clamp=void 0,r.clamp=a;let t=(()=>{class e{constructor(e,r){this.x=e,this.y=r}withX(r){return new e(r,this.y)}withY(r){return new e(this.x,r)}plus(r){return new e(this.x+r.x,this.y+r.y)}minus(r){return new e(this.x-r.x,this.y-r.y)}times(r){return new e(this.x*r,this.y*r)}timesPointwise(r){return new e(this.x*r.x,this.y*r.y)}dividedByPointwise(r){return new e(this.x/r.x,this.y/r.y)}dot(e){return this.x*e.x+this.y*e.y}equals(e){return this.x===e.x&&this.y===e.y}approxEquals(e,r=1e-9){return Math.abs(this.x-e.x)<r&&Math.abs(this.y-e.y)<r}length2(){return this.dot(this)}length(){return Math.sqrt(this.length2())}abs(){return new e(Math.abs(this.x),Math.abs(this.y))}static min(r,a){return new e(Math.min(r.x,a.x),Math.min(r.y,a.y))}static max(r,a){return new e(Math.max(r.x,a.x),Math.max(r.y,a.y))}static clamp(r,t,i){return new e(a(r.x,t.x,i.x),a(r.y,t.y,i.y))}flatten(){return[this.x,this.y]}}return e.zero=new e(0,0),e.unit=new e(1,1),e})();r.Vec2=t;class i{constructor(e=1,r=0,a=0,t=0,i=1,n=0){this.m00=e,this.m01=r,this.m02=a,this.m10=t,this.m11=i,this.m12=n}withScale(e){let{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return r=e.x,s=e.y,new i(r,a,t,n,s,v)}static withScale(e){return(new i).withScale(e)}scaledBy(e){return i.withScale(e).times(this)}getScale(){return new t(this.m00,this.m11)}withTranslation(e){let{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return t=e.x,v=e.y,new i(r,a,t,n,s,v)}static withTranslation(e){return(new i).withTranslation(e)}getTranslation(){return new t(this.m02,this.m12)}translatedBy(e){return i.withTranslation(e).times(this)}static betweenRects(e,r){return i.withTranslation(e.origin.times(-1)).scaledBy(new t(r.size.x/e.size.x,r.size.y/e.size.y)).translatedBy(r.origin)}times(e){const r=this.m00*e.m00+this.m01*e.m10,a=this.m00*e.m01+this.m01*e.m11,t=this.m00*e.m02+this.m01*e.m12+this.m02,n=this.m10*e.m00+this.m11*e.m10,s=this.m10*e.m01+this.m11*e.m11,v=this.m10*e.m02+this.m11*e.m12+this.m12;return new i(r,a,t,n,s,v)}equals(e){return this.m00==e.m00&&this.m01==e.m01&&this.m02==e.m02&&this.m10==e.m10&&this.m11==e.m11&&this.m12==e.m12}approxEquals(e,r=1e-9){return Math.abs(this.m00-e.m00)<r&&Math.abs(this.m01-e.m01)<r&&Math.abs(this.m02-e.m02)<r&&Math.abs(this.m10-e.m10)<r&&Math.abs(this.m11-e.m11)<r&&Math.abs(this.m12-e.m12)<r}timesScalar(e){const{m00:r,m01:a,m02:t,m10:n,m11:s,m12:v}=this;return new i(e*r,e*a,e*t,e*n,e*s,e*v)}det(){const{m00:e,m01:r,m02:a,m10:t,m11:i,m12:n}=this;return e*(1*i-0*n)-r*(1*t-0*n)+a*(0*t-0*i)}adj(){const{m00:e,m01:r,m02:a,m10:t,m11:n,m12:s}=this;return new i(+(1*n-0*s),-(1*r-0*a),+(r*s-a*n),-(1*t-0*s),+(1*e-0*a),-(e*s-a*t))}inverted(){const e=this.det();return 0===e?null:this.adj().timesScalar(1/e)}transformVector(e){return new t(e.x*this.m00+e.y*this.m01,e.x*this.m10+e.y*this.m11)}inverseTransformVector(e){const r=this.inverted();return r?r.transformVector(e):null}transformPosition(e){return new t(e.x*this.m00+e.y*this.m01+this.m02,e.x*this.m10+e.y*this.m11+this.m12)}inverseTransformPosition(e){const r=this.inverted();return r?r.transformPosition(e):null}transformRect(e){const r=this.transformVector(e.size),a=this.transformPosition(e.origin);return r.x<0&&r.y<0?new n(a.plus(r),r.abs()):r.x<0?new n(a.withX(a.x+r.x),r.abs()):r.y<0?new n(a.withY(a.y+r.y),r.abs()):new n(a,r)}inverseTransformRect(e){const r=this.inverted();return r?r.transformRect(e):null}flatten(){return[this.m00,this.m10,0,this.m01,this.m11,0,this.m02,this.m12,1]}}r.AffineTransform=i;let n=(()=>{class e{constructor(e,r){this.origin=e,this.size=r}isEmpty(){return 0==this.width()||0==this.height()}width(){return this.size.x}height(){return this.size.y}left(){return this.origin.x}right(){return this.left()+this.width()}top(){return this.origin.y}bottom(){return this.top()+this.height()}topLeft(){return this.origin}topRight(){return this.origin.plus(new t(this.width(),0))}bottomRight(){return this.origin.plus(this.size)}bottomLeft(){return this.origin.plus(new t(0,this.height()))}withOrigin(r){return new e(r,this.size)}withSize(r){return new e(this.origin,r)}closestPointTo(e){return new t(a(e.x,this.left(),this.right()),a(e.y,this.top(),this.bottom()))}distanceFrom(e){return e.minus(this.closestPointTo(e)).length()}contains(e){return 0===this.distanceFrom(e)}hasIntersectionWith(e){const r=Math.max(this.top(),e.top());if(Math.max(r,Math.min(this.bottom(),e.bottom()))-r==0)return!1;const a=Math.max(this.left(),e.left());return Math.max(a,Math.min(this.right(),e.right()))-a!=0}intersectWith(r){const a=t.max(this.topLeft(),r.topLeft()),i=t.max(a,t.min(this.bottomRight(),r.bottomRight()));return new e(a,i.minus(a))}equals(e){return this.origin.equals(e.origin)&&this.size.equals(e.size)}approxEquals(e){return this.origin.approxEquals(e.origin)&&this.size.approxEquals(e.size)}area(){return this.size.x*this.size.y}}return e.empty=new e(t.zero,t.zero),e.unit=new e(t.zero,t.unit),e.NDC=new e(new t(-1,-1),new t(2,2)),e})();r.Rect=n},211:function(e,r,a){\\\"use strict\\\";var t=this&&this.__createBinding||(Object.create?function(e,r,a,t){void 0===t&&(t=a),Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[a]}})}:function(e,r,a,t){void 0===t&&(t=a),e[t]=r[a]}),i=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,\\\"default\\\",{enumerable:!0,value:r})}:function(e,r){e.default=r}),n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var a in e)Object.hasOwnProperty.call(e,a)&&t(r,e,a);return i(r,e),r},s=this&&this.__awaiter||function(e,r,a,t){return new(a||(a=Promise))((function(i,n){function s(e){try{o(t.next(e))}catch(e){n(e)}}function v(e){try{o(t.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?i(e.value):(r=e.value,r instanceof a?r:new a((function(e){e(r)}))).then(s,v)}o((t=t.apply(e,r||[])).next())}))};Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.CallTreeProfileBuilder=r.StackListProfileBuilder=r.Profile=r.CallTreeNode=r.Frame=r.HasWeights=void 0;const v=a(844),o=a(218),f=Promise.resolve().then((()=>n(a(765))));f.then((()=>{}));class l{constructor(){this.selfWeight=0,this.totalWeight=0}getSelfWeight(){return this.selfWeight}getTotalWeight(){return this.totalWeight}addToTotalWeight(e){this.totalWeight+=e}addToSelfWeight(e){this.selfWeight+=e}overwriteWeightWith(e){this.selfWeight=e.selfWeight,this.totalWeight=e.totalWeight}}r.HasWeights=l;let _=(()=>{class e extends l{constructor(e){super(),this.key=e.key,this.name=e.name,this.file=e.file,this.line=e.line,this.col=e.col}static getOrInsert(r,a){return r.getOrInsert(new e(a))}}return e.root=new e({key:\\\"(speedscope root)\\\",name:\\\"(speedscope root)\\\"}),e})();r.Frame=_;class S extends l{constructor(e,r){super(),this.frame=e,this.parent=r,this.children=[],this.frozen=!1}isRoot(){return this.frame===_.root}isFrozen(){return this.frozen}freeze(){this.frozen=!0}}r.CallTreeNode=S;class u{constructor(e=0){this.name=\\\"\\\",this.frames=new v.KeyedSet,this.appendOrderCalltreeRoot=new S(_.root,null),this.groupedCalltreeRoot=new S(_.root,null),this.samples=[],this.weights=[],this.valueFormatter=new o.RawValueFormatter,this.totalNonIdleWeight=null,this.totalWeight=e}getAppendOrderCalltreeRoot(){return this.appendOrderCalltreeRoot}getGroupedCalltreeRoot(){return this.groupedCalltreeRoot}formatValue(e){return this.valueFormatter.format(e)}setValueFormatter(e){this.valueFormatter=e}getWeightUnit(){return this.valueFormatter.unit}getName(){return this.name}setName(e){this.name=e}getTotalWeight(){return this.totalWeight}getTotalNonIdleWeight(){return null===this.totalNonIdleWeight&&(this.totalNonIdleWeight=this.groupedCalltreeRoot.children.reduce(((e,r)=>e+r.getTotalWeight()),0)),this.totalNonIdleWeight}sortGroupedCallTree(){!function e(r){r.children.sort(((e,r)=>-(e.getTotalWeight()-r.getTotalWeight()))),r.children.forEach(e)}(this.groupedCalltreeRoot)}forEachCallGrouped(e,r){!function a(t,i){t.frame!==_.root&&e(t,i);let n=0;t.children.forEach((function(e){a(e,i+n),n+=e.getTotalWeight()})),t.frame!==_.root&&r(t,i+t.getTotalWeight())}(this.groupedCalltreeRoot,0)}forEachCall(e,r){let a=[],t=0,i=0;for(let n of this.samples){let s=null;for(s=n;s&&s.frame!=_.root&&-1===a.indexOf(s);s=s.parent);for(;a.length>0&&v.lastOf(a)!=s;)r(a.pop(),t);const o=[];for(let e=n;e&&e.frame!=_.root&&e!=s;e=e.parent)o.push(e);o.reverse();for(let r of o)e(r,t);a=a.concat(o),t+=this.weights[i++]}for(let e=a.length-1;e>=0;e--)r(a[e],t)}forEachFrame(e){this.frames.forEach(e)}getProfileWithRecursionFlattened(){const e=new h,r=[],a=new Set;this.forEachCall((function(t,i){a.has(t.frame)?r.push(null):(a.add(t.frame),r.push(t),e.enterFrame(t.frame,i))}),(function(t,i){const n=r.pop();n&&(a.delete(n.frame),e.leaveFrame(n.frame,i))}));const t=e.build();return t.name=this.name,t.valueFormatter=this.valueFormatter,this.forEachFrame((e=>{t.frames.getOrInsert(e).overwriteWeightWith(e)})),t}getInvertedProfileForCallersOf(e){const r=_.getOrInsert(this.frames,e),a=new c,t=[];!function e(a){if(a.frame===r)t.push(a);else for(let r of a.children)e(r)}(this.appendOrderCalltreeRoot);for(let e of t){const r=[];for(let a=e;null!=a&&a.frame!==_.root;a=a.parent)r.push(a.frame);a.appendSampleWithWeight(r,e.getTotalWeight())}const i=a.build();return i.name=this.name,i.valueFormatter=this.valueFormatter,i}getProfileForCalleesOf(e){const r=_.getOrInsert(this.frames,e),a=new c;!function e(t){if(t.frame===r)!function(e){const r=[];!function e(t){r.push(t.frame),a.appendSampleWithWeight(r,t.getSelfWeight());for(let r of t.children)e(r);r.pop()}(e)}(t);else for(let r of t.children)e(r)}(this.appendOrderCalltreeRoot);const t=a.build();return t.name=this.name,t.valueFormatter=this.valueFormatter,t}demangle(){return s(this,void 0,void 0,(function*(){let e=null;for(let r of this.frames)r.name.startsWith(\\\"__Z\\\")&&(e||(e=(yield f).demangleCpp),r.name=e(r.name))}))}remapNames(e){for(let r of this.frames)r.name=e(r.name)}}r.Profile=u;class c extends u{constructor(){super(...arguments),this.pendingSample=null}_appendSample(e,r,a){if(isNaN(r))throw new Error(\\\"invalid weight\\\");let t=a?this.appendOrderCalltreeRoot:this.groupedCalltreeRoot,i=new Set;for(let n of e){const e=_.getOrInsert(this.frames,n),s=a?v.lastOf(t.children):t.children.find((r=>r.frame===e));if(s&&!s.isFrozen()&&s.frame==e)t=s;else{const r=t;t=new S(e,t),r.children.push(t)}t.addToTotalWeight(r),i.add(t.frame)}if(t.addToSelfWeight(r),a)for(let e of t.children)e.freeze();if(a){t.frame.addToSelfWeight(r);for(let e of i)e.addToTotalWeight(r);t===v.lastOf(this.samples)?this.weights[this.weights.length-1]+=r:(this.samples.push(t),this.weights.push(r))}}appendSampleWithWeight(e,r){if(0!==r){if(r<0)throw new Error(\\\"Samples must have positive weights\\\");this._appendSample(e,r,!0),this._appendSample(e,r,!1)}}appendSampleWithTimestamp(e,r){if(this.pendingSample){if(r<this.pendingSample.centralTimestamp)throw new Error(\\\"Timestamps received out of order\\\");const a=(r+this.pendingSample.centralTimestamp)/2;this.appendSampleWithWeight(this.pendingSample.stack,a-this.pendingSample.startTimestamp),this.pendingSample={stack:e,startTimestamp:a,centralTimestamp:r}}else this.pendingSample={stack:e,startTimestamp:r,centralTimestamp:r}}build(){return this.pendingSample&&(this.samples.length>0?this.appendSampleWithWeight(this.pendingSample.stack,this.pendingSample.centralTimestamp-this.pendingSample.startTimestamp):(this.appendSampleWithWeight(this.pendingSample.stack,1),this.setValueFormatter(new o.RawValueFormatter))),this.totalWeight=Math.max(this.totalWeight,this.weights.reduce(((e,r)=>e+r),0)),this.sortGroupedCallTree(),this}}r.StackListProfileBuilder=c;class h extends u{constructor(){super(...arguments),this.appendOrderStack=[this.appendOrderCalltreeRoot],this.groupedOrderStack=[this.groupedCalltreeRoot],this.framesInStack=new Map,this.stack=[],this.lastValue=0}addWeightsToFrames(e){const r=e-this.lastValue;for(let e of this.framesInStack.keys())e.addToTotalWeight(r);const a=v.lastOf(this.stack);a&&a.addToSelfWeight(r)}addWeightsToNodes(e,r){const a=e-this.lastValue;for(let e of r)e.addToTotalWeight(a);const t=v.lastOf(r);t&&t.addToSelfWeight(a)}_enterFrame(e,r,a){let t=a?this.appendOrderStack:this.groupedOrderStack;this.addWeightsToNodes(r,t);let i=v.lastOf(t);if(i){if(a){const e=r-this.lastValue;if(e>0)this.samples.push(i),this.weights.push(r-this.lastValue);else if(e<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}const n=a?v.lastOf(i.children):i.children.find((r=>r.frame===e));let s;n&&!n.isFrozen()&&n.frame==e?s=n:(s=new S(e,i),i.children.push(s)),t.push(s)}}enterFrame(e,r){const a=_.getOrInsert(this.frames,e);this.addWeightsToFrames(r),this._enterFrame(a,r,!0),this._enterFrame(a,r,!1),this.stack.push(a);const t=this.framesInStack.get(a)||0;this.framesInStack.set(a,t+1),this.lastValue=r}_leaveFrame(e,r,a){let t=a?this.appendOrderStack:this.groupedOrderStack;if(this.addWeightsToNodes(r,t),a){const a=this.appendOrderStack.pop();if(null==a)throw new Error(`Trying to leave ${e.key} when stack is empty`);if(null==this.lastValue)throw new Error(`Trying to leave a ${e.key} before any have been entered`);if(a.freeze(),a.frame.key!==e.key)throw new Error(`Tried to leave frame \\\"${e.name}\\\" while frame \\\"${a.frame.name}\\\" was at the top at ${r}`);const t=r-this.lastValue;if(t>0)this.samples.push(a),this.weights.push(r-this.lastValue);else if(t<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}else this.groupedOrderStack.pop()}leaveFrame(e,r){const a=_.getOrInsert(this.frames,e);this.addWeightsToFrames(r),this._leaveFrame(a,r,!0),this._leaveFrame(a,r,!1),this.stack.pop();const t=this.framesInStack.get(a);null!=t&&(1===t?this.framesInStack.delete(a):this.framesInStack.set(a,t-1),this.lastValue=r,this.totalWeight=Math.max(this.totalWeight,this.lastValue))}build(){if(this.appendOrderStack.length>1||this.groupedOrderStack.length>1)throw new Error(\\\"Tried to complete profile construction with a non-empty stack\\\");return this.sortGroupedCallTree(),this}}r.CallTreeProfileBuilder=h},844:(e,r)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.decodeBase64=r.lazyStatic=r.memoizeByReference=r.memoizeByShallowEquality=r.objectsHaveShallowEquality=r.noop=r.binarySearch=r.triangle=r.fract=r.formatPercent=r.zeroPad=r.itReduce=r.itForEach=r.itMap=r.KeyedSet=r.getOrThrow=r.getOrElse=r.getOrInsert=r.sortBy=r.lastOf=void 0,r.lastOf=function(e){return e[e.length-1]||null},r.sortBy=function(e,r){e.sort((function(e,a){const t=r(e),i=r(a);return t<i?-1:t>i?1:0}))},r.getOrInsert=function(e,r,a){return e.has(r)||e.set(r,a(r)),e.get(r)},r.getOrElse=function(e,r,a){return e.has(r)?e.get(r):a(r)},r.getOrThrow=function(e,r){if(!e.has(r))throw new Error(`Expected key ${r}`);return e.get(r)};class a{constructor(){this.map=new Map}getOrInsert(e){const r=e.key;return this.map.get(r)||(this.map.set(r,e),e)}forEach(e){this.map.forEach(e)}[Symbol.iterator](){return this.map.values()}}function t(e){return e-Math.floor(e)}function i(e,r){for(let a in e)if(e[a]!==r[a])return!1;for(let a in r)if(e[a]!==r[a])return!1;return!0}function n(e){let r=null;return()=>(null==r&&(r={result:e()}),r.result)}r.KeyedSet=a,r.itMap=function*(e,r){for(let a of e)yield r(a)},r.itForEach=function(e,r){for(let a of e)r(a)},r.itReduce=function(e,r,a){let t=a;for(let a of e)t=r(t,a);return t},r.zeroPad=function(e,r){return new Array(Math.max(r-e.length,0)+1).join(\\\"0\\\")+e},r.formatPercent=function(e){let r=`${e.toFixed(0)}%`;return 100===e?r=\\\"100%\\\":e>99?r=\\\">99%\\\":e<.01?r=\\\"<0.01%\\\":e<1?r=`${e.toFixed(2)}%`:e<10&&(r=`${e.toFixed(1)}%`),r},r.fract=t,r.triangle=function(e){return 2*Math.abs(t(e)-.5)-1},r.binarySearch=function(e,r,a,t,i=1){for(console.assert(!isNaN(i)&&!isNaN(t));;){if(r-e<=i)return[e,r];const n=(r+e)/2;a(n)<t?e=n:r=n}},r.noop=function(...e){},r.objectsHaveShallowEquality=i,r.memoizeByShallowEquality=function(e){let r=null;return a=>{let t;return null==r?(t=e(a),r={args:a,result:t},t):(i(r.args,a)||(r.args=a,r.result=e(a)),r.result)}},r.memoizeByReference=function(e){let r=null;return a=>{let t;return null==r?(t=e(a),r={args:a,result:t},t):(r.args===a||(r.args=a,r.result=e(a)),r.result)}},r.lazyStatic=n;const s=n((()=>{const e=new Map;for(let r=0;r<64;r++)e.set(\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\".charAt(r),r);return e.set(\\\"=\\\",-1),e}));r.decodeBase64=function(e){const r=s();if(e.length%4!=0)throw new Error(`Invalid length for base64 encoded string. Expected length % 4 = 0, got length = ${e.length}`);const a=e.length/4;let t;t=e.length>=4&&\\\"=\\\"===e.charAt(e.length-1)?\\\"=\\\"===e.charAt(e.length-2)?3*a-2:3*a-1:3*a;const i=new Uint8Array(t);let n=0;for(let t=0;t<a;t++){const a=e.charAt(4*t+0),s=e.charAt(4*t+1),v=e.charAt(4*t+2),o=e.charAt(4*t+3),f=r.get(a),l=r.get(s),_=r.get(v),S=r.get(o);if(null==f||null==l||null==_||null==S)throw new Error(`Invalid quartet at indices ${4*t} .. ${4*t+3}: ${e.substring(4*t,4*t+3)}`);i[n++]=f<<2|l>>4,\\\"=\\\"!==v&&(i[n++]=(15&l)<<4|_>>2),\\\"=\\\"!==o&&(i[n++]=(7&_)<<6|S)}if(n!==t)throw new Error(`Expected to decode ${t} bytes, but only decoded ${n})`);return i}},218:(e,r,a)=>{\\\"use strict\\\";Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),r.ByteFormatter=r.TimeFormatter=r.RawValueFormatter=void 0;const t=a(844);r.RawValueFormatter=class{constructor(){this.unit=\\\"none\\\"}format(e){return e.toLocaleString()}},r.TimeFormatter=class{constructor(e){this.unit=e,this.multiplier=\\\"nanoseconds\\\"===e?1e-9:\\\"microseconds\\\"===e?1e-6:\\\"milliseconds\\\"===e?.001:1}formatUnsigned(e){const r=e*this.multiplier;if(r/60>=1){const e=Math.floor(r/60),a=Math.floor(r-60*e).toString();return`${e}:${t.zeroPad(a,2)}`}return r/1>=1?`${r.toFixed(2)}s`:r/.001>=1?`${(r/.001).toFixed(2)}ms`:r/1e-6>=1?`${(r/1e-6).toFixed(2)}µs`:`${(r/1e-9).toFixed(2)}ns`}format(e){return`${e<0?\\\"-\\\":\\\"\\\"}${this.formatUnsigned(Math.abs(e))}`}},r.ByteFormatter=class{constructor(){this.unit=\\\"bytes\\\"}format(e){return e<1024?`${e.toFixed(0)} B`:(e/=1024)<1024?`${e.toFixed(2)} KB`:(e/=1024)<1024?`${e.toFixed(2)} MB`:`${(e/=1024).toFixed(2)} GB`}}},41:function(e,r,a){\\\"use strict\\\";var t=this&&this.__createBinding||(Object.create?function(e,r,a,t){void 0===t&&(t=a),Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[a]}})}:function(e,r,a,t){void 0===t&&(t=a),e[t]=r[a]}),i=this&&this.__exportStar||function(e,r){for(var a in e)\\\"default\\\"===a||r.hasOwnProperty(a)||t(r,e,a)};Object.defineProperty(r,\\\"__esModule\\\",{value:!0}),i(a(496),r),i(a(121),r)},715:function(e,r,a){var t,i,n;!function(s,v){\\\"use strict\\\";i=[a(356)],void 0===(n=\\\"function\\\"==typeof(t=function(e){var r=/(^|@)\\\\S+:\\\\d+/,a=/^\\\\s*at .*(\\\\S+:\\\\d+|\\\\(native\\\\))/m,t=/^(eval@)?(\\\\[native code])?$/;return{parse:function(e){if(void 0!==e.stacktrace||void 0!==e[\\\"opera#sourceloc\\\"])return this.parseOpera(e);if(e.stack&&e.stack.match(a))return this.parseV8OrIE(e);if(e.stack)return this.parseFFOrSafari(e);throw new Error(\\\"Cannot parse given Error object\\\")},extractLocation:function(e){if(-1===e.indexOf(\\\":\\\"))return[e];var r=/(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/.exec(e.replace(/[()]/g,\\\"\\\"));return[r[1],r[2]||void 0,r[3]||void 0]},parseV8OrIE:function(r){return r.stack.split(\\\"\\\\n\\\").filter((function(e){return!!e.match(a)}),this).map((function(r){r.indexOf(\\\"(eval \\\")>-1&&(r=r.replace(/eval code/g,\\\"eval\\\").replace(/(\\\\(eval at [^()]*)|(\\\\),.*$)/g,\\\"\\\"));var a=r.replace(/^\\\\s+/,\\\"\\\").replace(/\\\\(eval code/g,\\\"(\\\"),t=a.match(/ (\\\\((.+):(\\\\d+):(\\\\d+)\\\\)$)/),i=(a=t?a.replace(t[0],\\\"\\\"):a).split(/\\\\s+/).slice(1),n=this.extractLocation(t?t[1]:i.pop()),s=i.join(\\\" \\\")||void 0,v=[\\\"eval\\\",\\\"<anonymous>\\\"].indexOf(n[0])>-1?void 0:n[0];return new e({functionName:s,fileName:v,lineNumber:n[1],columnNumber:n[2],source:r})}),this)},parseFFOrSafari:function(r){return r.stack.split(\\\"\\\\n\\\").filter((function(e){return!e.match(t)}),this).map((function(r){if(r.indexOf(\\\" > eval\\\")>-1&&(r=r.replace(/ line (\\\\d+)(?: > eval line \\\\d+)* > eval:\\\\d+:\\\\d+/g,\\\":$1\\\")),-1===r.indexOf(\\\"@\\\")&&-1===r.indexOf(\\\":\\\"))return new e({functionName:r});var a=/((.*\\\".+\\\"[^@]*)?[^@]*)(?:@)/,t=r.match(a),i=t&&t[1]?t[1]:void 0,n=this.extractLocation(r.replace(a,\\\"\\\"));return new e({functionName:i,fileName:n[0],lineNumber:n[1],columnNumber:n[2],source:r})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf(\\\"\\\\n\\\")>-1&&e.message.split(\\\"\\\\n\\\").length>e.stacktrace.split(\\\"\\\\n\\\").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(r){for(var a=/Line (\\\\d+).*script (?:in )?(\\\\S+)/i,t=r.message.split(\\\"\\\\n\\\"),i=[],n=2,s=t.length;n<s;n+=2){var v=a.exec(t[n]);v&&i.push(new e({fileName:v[2],lineNumber:v[1],source:t[n]}))}return i},parseOpera10:function(r){for(var a=/Line (\\\\d+).*script (?:in )?(\\\\S+)(?:: In function (\\\\S+))?$/i,t=r.stacktrace.split(\\\"\\\\n\\\"),i=[],n=0,s=t.length;n<s;n+=2){var v=a.exec(t[n]);v&&i.push(new e({functionName:v[3]||void 0,fileName:v[2],lineNumber:v[1],source:t[n]}))}return i},parseOpera11:function(a){return a.stack.split(\\\"\\\\n\\\").filter((function(e){return!!e.match(r)&&!e.match(/^Error created at/)}),this).map((function(r){var a,t=r.split(\\\"@\\\"),i=this.extractLocation(t.pop()),n=t.shift()||\\\"\\\",s=n.replace(/<anonymous function(: (\\\\w+))?>/,\\\"$2\\\").replace(/\\\\([^)]*\\\\)/g,\\\"\\\")||void 0;n.match(/\\\\(([^)]*)\\\\)/)&&(a=n.replace(/^[^(]+\\\\(([^)]*)\\\\)$/,\\\"$1\\\"));var v=void 0===a||\\\"[arguments not available]\\\"===a?void 0:a.split(\\\",\\\");return new e({functionName:s,args:v,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:r})}),this)}}})?t.apply(r,i):t)||(e.exports=n)}()},69:e=>{\\\"use strict\\\";function r(e,r){if(null!=e)return e;var a=new Error(void 0!==r?r:\\\"Got unexpected \\\"+e);throw a.framesToPop=1,a}e.exports=r,e.exports.default=r,Object.defineProperty(e.exports,\\\"__esModule\\\",{value:!0})},356:function(e,r){var a,t,i;!function(n,s){\\\"use strict\\\";t=[],void 0===(i=\\\"function\\\"==typeof(a=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function r(e){return function(){return this[e]}}var a=[\\\"isConstructor\\\",\\\"isEval\\\",\\\"isNative\\\",\\\"isToplevel\\\"],t=[\\\"columnNumber\\\",\\\"lineNumber\\\"],i=[\\\"fileName\\\",\\\"functionName\\\",\\\"source\\\"],n=a.concat(t,i,[\\\"args\\\"]);function s(r){if(r)for(var a=0;a<n.length;a++)void 0!==r[n[a]]&&this[\\\"set\\\"+e(n[a])](r[n[a]])}s.prototype={getArgs:function(){return this.args},setArgs:function(e){if(\\\"[object Array]\\\"!==Object.prototype.toString.call(e))throw new TypeError(\\\"Args must be an Array\\\");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof s)this.evalOrigin=e;else{if(!(e instanceof Object))throw new TypeError(\\\"Eval Origin must be an Object or StackFrame\\\");this.evalOrigin=new s(e)}},toString:function(){var e=this.getFileName()||\\\"\\\",r=this.getLineNumber()||\\\"\\\",a=this.getColumnNumber()||\\\"\\\",t=this.getFunctionName()||\\\"\\\";return this.getIsEval()?e?\\\"[eval] (\\\"+e+\\\":\\\"+r+\\\":\\\"+a+\\\")\\\":\\\"[eval]:\\\"+r+\\\":\\\"+a:t?t+\\\" (\\\"+e+\\\":\\\"+r+\\\":\\\"+a+\\\")\\\":e+\\\":\\\"+r+\\\":\\\"+a}},s.fromString=function(e){var r=e.indexOf(\\\"(\\\"),a=e.lastIndexOf(\\\")\\\"),t=e.substring(0,r),i=e.substring(r+1,a).split(\\\",\\\"),n=e.substring(a+1);if(0===n.indexOf(\\\"@\\\"))var v=/@(.+?)(?::(\\\\d+))?(?::(\\\\d+))?$/.exec(n,\\\"\\\"),o=v[1],f=v[2],l=v[3];return new s({functionName:t,args:i||void 0,fileName:o,lineNumber:f||void 0,columnNumber:l||void 0})};for(var v=0;v<a.length;v++)s.prototype[\\\"get\\\"+e(a[v])]=r(a[v]),s.prototype[\\\"set\\\"+e(a[v])]=function(e){return function(r){this[e]=Boolean(r)}}(a[v]);for(var o=0;o<t.length;o++)s.prototype[\\\"get\\\"+e(t[o])]=r(t[o]),s.prototype[\\\"set\\\"+e(t[o])]=function(e){return function(r){if(a=r,isNaN(parseFloat(a))||!isFinite(a))throw new TypeError(e+\\\" must be a Number\\\");var a;this[e]=Number(r)}}(t[o]);for(var f=0;f<i.length;f++)s.prototype[\\\"get\\\"+e(i[f])]=r(i[f]),s.prototype[\\\"set\\\"+e(i[f])]=function(e){return function(r){this[e]=String(r)}}(i[f]);return s})?a.apply(r,t):a)||(e.exports=i)}()},853:e=>{var r=function(e){\\\"use strict\\\";var r,a=Object.prototype,t=a.hasOwnProperty,i=\\\"function\\\"==typeof Symbol?Symbol:{},n=i.iterator||\\\"@@iterator\\\",s=i.asyncIterator||\\\"@@asyncIterator\\\",v=i.toStringTag||\\\"@@toStringTag\\\";function o(e,r,a){return Object.defineProperty(e,r,{value:a,enumerable:!0,configurable:!0,writable:!0}),e[r]}try{o({},\\\"\\\")}catch(e){o=function(e,r,a){return e[r]=a}}function f(e,r,a,t){var i=r&&r.prototype instanceof d?r:d,n=Object.create(i.prototype),s=new O(t||[]);return n._invoke=function(e,r,a){var t=_;return function(i,n){if(t===u)throw new Error(\\\"Generator is already running\\\");if(t===c){if(\\\"throw\\\"===i)throw n;return T()}for(a.method=i,a.arg=n;;){var s=a.delegate;if(s){var v=A(s,a);if(v){if(v===h)continue;return v}}if(\\\"next\\\"===a.method)a.sent=a._sent=a.arg;else if(\\\"throw\\\"===a.method){if(t===_)throw t=c,a.arg;a.dispatchException(a.arg)}else\\\"return\\\"===a.method&&a.abrupt(\\\"return\\\",a.arg);t=u;var o=l(e,r,a);if(\\\"normal\\\"===o.type){if(t=a.done?c:S,o.arg===h)continue;return{value:o.arg,done:a.done}}\\\"throw\\\"===o.type&&(t=c,a.method=\\\"throw\\\",a.arg=o.arg)}}}(e,a,s),n}function l(e,r,a){try{return{type:\\\"normal\\\",arg:e.call(r,a)}}catch(e){return{type:\\\"throw\\\",arg:e}}}e.wrap=f;var _=\\\"suspendedStart\\\",S=\\\"suspendedYield\\\",u=\\\"executing\\\",c=\\\"completed\\\",h={};function d(){}function b(){}function p(){}var m={};m[n]=function(){return this};var k=Object.getPrototypeOf,w=k&&k(k(C([])));w&&w!==a&&t.call(w,n)&&(m=w);var g=p.prototype=d.prototype=Object.create(m);function H(e){[\\\"next\\\",\\\"throw\\\",\\\"return\\\"].forEach((function(r){o(e,r,(function(e){return this._invoke(r,e)}))}))}function M(e,r){function a(i,n,s,v){var o=l(e[i],e,n);if(\\\"throw\\\"!==o.type){var f=o.arg,_=f.value;return _&&\\\"object\\\"==typeof _&&t.call(_,\\\"__await\\\")?r.resolve(_.__await).then((function(e){a(\\\"next\\\",e,s,v)}),(function(e){a(\\\"throw\\\",e,s,v)})):r.resolve(_).then((function(e){f.value=e,s(f)}),(function(e){return a(\\\"throw\\\",e,s,v)}))}v(o.arg)}var i;this._invoke=function(e,t){function n(){return new r((function(r,i){a(e,t,r,i)}))}return i=i?i.then(n,n):n()}}function A(e,a){var t=e.iterator[a.method];if(t===r){if(a.delegate=null,\\\"throw\\\"===a.method){if(e.iterator.return&&(a.method=\\\"return\\\",a.arg=r,A(e,a),\\\"throw\\\"===a.method))return h;a.method=\\\"throw\\\",a.arg=new TypeError(\\\"The iterator does not provide a 'throw' method\\\")}return h}var i=l(t,e.iterator,a.arg);if(\\\"throw\\\"===i.type)return a.method=\\\"throw\\\",a.arg=i.arg,a.delegate=null,h;var n=i.arg;return n?n.done?(a[e.resultName]=n.value,a.next=e.nextLoc,\\\"return\\\"!==a.method&&(a.method=\\\"next\\\",a.arg=r),a.delegate=null,h):n:(a.method=\\\"throw\\\",a.arg=new TypeError(\\\"iterator result is not an object\\\"),a.delegate=null,h)}function y(e){var r={tryLoc:e[0]};1 in e&&(r.catchLoc=e[1]),2 in e&&(r.finallyLoc=e[2],r.afterLoc=e[3]),this.tryEntries.push(r)}function E(e){var r=e.completion||{};r.type=\\\"normal\\\",delete r.arg,e.completion=r}function O(e){this.tryEntries=[{tryLoc:\\\"root\\\"}],e.forEach(y,this),this.reset(!0)}function C(e){if(e){var a=e[n];if(a)return a.call(e);if(\\\"function\\\"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,s=function a(){for(;++i<e.length;)if(t.call(e,i))return a.value=e[i],a.done=!1,a;return a.value=r,a.done=!0,a};return s.next=s}}return{next:T}}function T(){return{value:r,done:!0}}return b.prototype=g.constructor=p,p.constructor=b,b.displayName=o(p,v,\\\"GeneratorFunction\\\"),e.isGeneratorFunction=function(e){var r=\\\"function\\\"==typeof e&&e.constructor;return!!r&&(r===b||\\\"GeneratorFunction\\\"===(r.displayName||r.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,o(e,v,\\\"GeneratorFunction\\\")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},H(M.prototype),M.prototype[s]=function(){return this},e.AsyncIterator=M,e.async=function(r,a,t,i,n){void 0===n&&(n=Promise);var s=new M(f(r,a,t,i),n);return e.isGeneratorFunction(a)?s:s.next().then((function(e){return e.done?e.value:s.next()}))},H(g),o(g,v,\\\"Generator\\\"),g[n]=function(){return this},g.toString=function(){return\\\"[object Generator]\\\"},e.keys=function(e){var r=[];for(var a in e)r.push(a);return r.reverse(),function a(){for(;r.length;){var t=r.pop();if(t in e)return a.value=t,a.done=!1,a}return a.done=!0,a}},e.values=C,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method=\\\"next\\\",this.arg=r,this.tryEntries.forEach(E),!e)for(var a in this)\\\"t\\\"===a.charAt(0)&&t.call(this,a)&&!isNaN(+a.slice(1))&&(this[a]=r)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\\\"throw\\\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var a=this;function i(t,i){return v.type=\\\"throw\\\",v.arg=e,a.next=t,i&&(a.method=\\\"next\\\",a.arg=r),!!i}for(var n=this.tryEntries.length-1;n>=0;--n){var s=this.tryEntries[n],v=s.completion;if(\\\"root\\\"===s.tryLoc)return i(\\\"end\\\");if(s.tryLoc<=this.prev){var o=t.call(s,\\\"catchLoc\\\"),f=t.call(s,\\\"finallyLoc\\\");if(o&&f){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(o){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!f)throw new Error(\\\"try statement without catch or finally\\\");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(e,r){for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&t.call(i,\\\"finallyLoc\\\")&&this.prev<i.finallyLoc){var n=i;break}}n&&(\\\"break\\\"===e||\\\"continue\\\"===e)&&n.tryLoc<=r&&r<=n.finallyLoc&&(n=null);var s=n?n.completion:{};return s.type=e,s.arg=r,n?(this.method=\\\"next\\\",this.next=n.finallyLoc,h):this.complete(s)},complete:function(e,r){if(\\\"throw\\\"===e.type)throw e.arg;return\\\"break\\\"===e.type||\\\"continue\\\"===e.type?this.next=e.arg:\\\"return\\\"===e.type?(this.rval=this.arg=e.arg,this.method=\\\"return\\\",this.next=\\\"end\\\"):\\\"normal\\\"===e.type&&r&&(this.next=r),h},finish:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.finallyLoc===e)return this.complete(a.completion,a.afterLoc),E(a),h}},catch:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc===e){var t=a.completion;if(\\\"throw\\\"===t.type){var i=t.arg;E(a)}return i}}throw new Error(\\\"illegal catch attempt\\\")},delegateYield:function(e,a,t){return this.delegate={iterator:C(e),resultName:a,nextLoc:t},\\\"next\\\"===this.method&&(this.arg=r),h}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function(\\\"r\\\",\\\"regeneratorRuntime = r\\\")(r)}}},r={};function a(t){var i=r[t];if(void 0!==i)return i.exports;var n=r[t]={exports:{}};return e[t].call(n.exports,n,n.exports,a),n.exports}a.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return a.d(r,{a:r}),r},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r);var t={};(()=>{\\\"use strict\\\";a.d(t,{importFile:()=>g}),a(853);var e=a(41);const r=(parseInt(\\\"22px\\\",10),parseInt(\\\"18px\\\",10),31),i=1;class n extends Error{}function s(e,r){if(e.length!==r.length)return!1;for(var a=0;a<e.length;a++)if(e[a]!==r[a])return!1;return!0}const v=function(e,r){var a;void 0===r&&(r=s);var t,i=[],n=!1;return function(){for(var s=[],v=0;v<arguments.length;v++)s[v]=arguments[v];return n&&a===this&&r(s,i)||(t=e.apply(this,s),n=!0,a=this,i=s),t}}((function(e,r,a=0){const t=r.batchUIDToMeasuresMap.get(e);if(null==t||0===t.length)throw Error(`Could not find measures with batch UID \\\"${e}\\\"`);const i=t[t.length-1],n=i.timestamp+i.duration;if(n<a)return[0,0];let s=a;for(let e=0;e<t.length;e++){const r=t[e];if(r.timestamp>=a){s=r.timestamp;break}}return[s,n]}));var o=a(715),f=a.n(o);const l=\\\"An event handler scheduled a big update with React. Consider using the Transition API to defer some of this work.\\\",_=\\\"A component suspended during an update which caused a fallback to be shown. Consider using the Transition API to avoid hiding components after they've been mounted.\\\";function S(e){const a=parseInt(e,10);if(a<0)return[];const t=[];let i=0;for(;i<=r;)1<<i&a&&t.push(i),i++;return t}let u=null;function c(e,r,a,t,i){const{batchUID:n,measureStack:s}=i,v=function(e){if(e.length>0){const{depth:r,type:a}=e[e.length-1];return\\\"render-idle\\\"===a?r:r+1}return 0}(s),o={type:e,batchUID:n,depth:v,lanes:a,timestamp:r,duration:0};i.measureStack.push({depth:v,measure:o,startTime:r,type:e});const f=t.batchUIDToMeasuresMap.get(n);null!=f?f.push(o):t.batchUIDToMeasuresMap.set(i.batchUID,[o]),a.forEach((e=>{t.laneToReactMeasureMap.get(e).push(o)}))}function h(e,r,a,t){if(0===t.length)return void console.error('Unexpected type \\\"%s\\\" completed at %sms while stack is empty.',e,r);const i=t[t.length-1];i.type!==e&&console.error('Unexpected type \\\"%s\\\" completed at %sms before \\\"%s\\\" completed.',e,r,i.type);const{measure:n,startTime:s}=t.pop();n||console.error('Could not find matching measure for type \\\"%s\\\".',e),n.duration=r-s}function d(e){null!==e.currentReactComponentMeasure&&console.error(\\\"Component measure started while another measure in progress:\\\",e.currentReactComponentMeasure)}function b(e,r){null===e.currentReactComponentMeasure?console.error(`Component measure type \\\"${r}\\\" stopped while no measure was in progress`):e.currentReactComponentMeasure.type!==r&&console.error(`Component measure type \\\"${r}\\\" stopped while type ${e.currentReactComponentMeasure.type} in progress`)}function p(e){const r=new Error;r.stack=e;const a=f().parse(r);return 1===a.length?a[0]:null}async function m(a){const t=function(r){let a;try{a=(0,e.importFromChromeTimeline)(r,\\\"react-devtools\\\")}catch(e){const r=new n(e.message);throw r.stack=e.stack,r}const t=a.profiles[0];return new e.Flamechart({getTotalWeight:t.getTotalWeight.bind(t),forEachCall:t.forEachCall.bind(t),formatValue:t.formatValue.bind(t),getColorBucketForFrame:()=>0}).getLayers().map((e=>e.map((({start:e,end:r,node:{frame:{name:a,file:t,line:i,col:n}}})=>({name:a,timestamp:e/1e3,duration:(r-e)/1e3,scriptUrl:t,locationLine:i,locationColumn:n})))))}(a),s=new Map;for(let e=0;e<r;e++)s.set(e,[]);const o={batchUIDToMeasuresMap:new Map,componentMeasures:[],duration:0,flamechart:t,internalModuleSourceToRanges:new Map,laneToLabelMap:new Map,laneToReactMeasureMap:s,nativeEvents:[],networkMeasures:[],otherUserTimingMarks:[],reactVersion:null,schedulingEvents:[],snapshots:[],snapshotHeight:0,startTime:0,suspenseEvents:[],thrownErrors:[]},f=(a=a.filter(Boolean).sort(((e,r)=>e.ts>r.ts?1:-1))).findIndex((e=>\\\"Profile\\\"===e.name));if(-1===f)return o;o.startTime=a[f].args.data.startTime,o.duration=(a[a.length-1].ts-o.startTime)/1e3;const m={asyncProcessingPromises:[],batchUID:0,currentReactComponentMeasure:null,internalModuleCurrentStackFrame:null,internalModuleStackStringSet:new Set,measureStack:[],nativeEventStack:[],nextRenderShouldGenerateNewBatchID:!0,potentialLongEvents:[],potentialLongNestedUpdate:null,potentialLongNestedUpdates:[],potentialSuspenseEventsOutsideOfTransition:[],requestIdToNetworkMeasureMap:new Map,uidCounter:0,unresolvedSuspenseEvents:new Map};if(a.forEach((e=>function(e,r,a){const{cat:t,name:s,ts:v,ph:o}=e,f=(v-r.startTime)/1e3;switch(t){case\\\"disabled-by-default-devtools.screenshot\\\":!function(e,r,a,t){const i={height:0,image:null,imageSource:`data:image/png;base64,${e.args.snapshot}`,timestamp:r,width:0};let n=null;t.asyncProcessingPromises.push(new Promise((e=>{n=e}))),fetch(i.imageSource).then((e=>e.blob())).then((e=>{createImageBitmap(e).then((e=>{i.height=e.height,i.width=e.width,n()}))})),a.snapshots.push(i)}(e,f,r,a);break;case\\\"devtools.timeline\\\":switch(s){case\\\"EventDispatch\\\":!function(e,r,a,t){const i=e.args.data,n=i.type;if(n.startsWith(\\\"react-\\\")){const e=i.stackTrace;if(e&&e[e.length-1].url.includes(\\\"/react-dom.\\\"))return}if(\\\"blur\\\"===n||\\\"click\\\"===n||\\\"input\\\"===n||n.startsWith(\\\"focus\\\")||n.startsWith(\\\"key\\\")||n.startsWith(\\\"mouse\\\")||n.startsWith(\\\"pointer\\\")){const i=e.dur/1e3;let s=0;for(;t.nativeEventStack.length>0;){const e=t.nativeEventStack[t.nativeEventStack.length-1];if(r<e.timestamp+e.duration){s=e.depth+1;break}t.nativeEventStack.pop()}const v={depth:s,duration:i,timestamp:r,type:n,warning:null};a.nativeEvents.push(v),t.nativeEventStack.push(v)}}(e,f,r,a);break;case\\\"ResourceFinish\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(n.finishTimestamp=r,0===n.firstReceivedDataTimestamp&&(n.firstReceivedDataTimestamp=r),0===n.lastReceivedDataTimestamp&&(n.lastReceivedDataTimestamp=r),t.requestIdToNetworkMeasureMap.delete(e.args.data.requestId))}(e,f,0,a);break;case\\\"ResourceReceivedData\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(0===n.firstReceivedDataTimestamp&&(n.firstReceivedDataTimestamp=r),n.lastReceivedDataTimestamp=r,n.finishTimestamp=r)}(e,f,0,a);break;case\\\"ResourceReceiveResponse\\\":!function(e,r,a,t){const i=e.args.data.requestId,n=t.requestIdToNetworkMeasureMap.get(i);null!=n&&(n.receiveResponseTimestamp=r)}(e,f,0,a);break;case\\\"ResourceSendRequest\\\":!function(e,r,a,t){const i=e.args.data,n=i.requestId,s=new Array(t.requestIdToNetworkMeasureMap.size+1).fill(!0);t.requestIdToNetworkMeasureMap.forEach((({depth:e})=>{s[e]=!1}));let v=0;for(let e=0;e<s.length;e++)if(s[e]){v=e;break}const o={depth:v,finishTimestamp:0,firstReceivedDataTimestamp:0,lastReceivedDataTimestamp:0,requestId:n,requestMethod:i.requestMethod,priority:i.priority,sendRequestTimestamp:r,receiveResponseTimestamp:0,url:i.url};t.requestIdToNetworkMeasureMap.set(n,o),a.networkMeasures.push(o),o.sendRequestTimestamp=r}(e,f,r,a)}break;case\\\"blink.user_timing\\\":if(s.startsWith(\\\"--react-version-\\\")){const[e]=s.slice(16).split(\\\"-\\\");r.reactVersion=e}else if(s.startsWith(\\\"--profiler-version-\\\")){const[e]=s.slice(19).split(\\\"-\\\");if(u=parseInt(e,10),u!==i)throw new n(`This version of profiling data (${e}) is not supported by the current profiler.`)}else if(s.startsWith(\\\"--react-lane-labels-\\\")){const[e]=s.slice(20).split(\\\"-\\\");!function(e,r){if(0===e.laneToLabelMap.size){const a=r.split(\\\",\\\");for(let r=0;r<a.length;r++)e.laneToLabelMap.set(r,a[r])}}(r,e)}else if(s.startsWith(\\\"--component-\\\"))!function(e,r,a,t){if(e.startsWith(\\\"--component-render-start-\\\")){const[a]=e.slice(25).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"render\\\",warning:null}}else if(\\\"--component-render-stop\\\"===e){if(b(t,\\\"render\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-layout-effect-mount-start-\\\")){const[a]=e.slice(38).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"layout-effect-mount\\\",warning:null}}else if(\\\"--component-layout-effect-mount-stop\\\"===e){if(b(t,\\\"layout-effect-mount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-layout-effect-unmount-start-\\\")){const[a]=e.slice(40).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"layout-effect-unmount\\\",warning:null}}else if(\\\"--component-layout-effect-unmount-stop\\\"===e){if(b(t,\\\"layout-effect-unmount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-passive-effect-mount-start-\\\")){const[a]=e.slice(39).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"passive-effect-mount\\\",warning:null}}else if(\\\"--component-passive-effect-mount-stop\\\"===e){if(b(t,\\\"passive-effect-mount\\\"),null!==t.currentReactComponentMeasure){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}else if(e.startsWith(\\\"--component-passive-effect-unmount-start-\\\")){const[a]=e.slice(41).split(\\\"-\\\");d(t),t.currentReactComponentMeasure={componentName:a,timestamp:r,duration:0,type:\\\"passive-effect-unmount\\\",warning:null}}else if(\\\"--component-passive-effect-unmount-stop\\\"===e&&(b(t,\\\"passive-effect-unmount\\\"),null!==t.currentReactComponentMeasure)){const e=t.currentReactComponentMeasure;e.duration=r-e.timestamp,t.currentReactComponentMeasure=null,a.componentMeasures.push(e)}}(s,f,r,a);else if(s.startsWith(\\\"--schedule-render-\\\")){const[e]=s.slice(18).split(\\\"-\\\");r.schedulingEvents.push({type:\\\"schedule-render\\\",lanes:S(e),timestamp:f,warning:null})}else if(s.startsWith(\\\"--schedule-forced-update-\\\")){const[e,t]=s.slice(25).split(\\\"-\\\"),i={type:\\\"schedule-force-update\\\",lanes:S(e),componentName:t,timestamp:f,warning:null};a.measureStack.find((({type:e})=>\\\"commit\\\"===e))&&(a.potentialLongNestedUpdate=i),r.schedulingEvents.push(i)}else if(s.startsWith(\\\"--schedule-state-update-\\\")){const[e,t]=s.slice(24).split(\\\"-\\\"),i={type:\\\"schedule-state-update\\\",lanes:S(e),componentName:t,timestamp:f,warning:null};a.measureStack.find((({type:e})=>\\\"commit\\\"===e))&&(a.potentialLongNestedUpdate=i),r.schedulingEvents.push(i)}else if(s.startsWith(\\\"--error-\\\")){const[e,a,t]=s.slice(8).split(\\\"-\\\");r.thrownErrors.push({componentName:e,message:t,phase:a,timestamp:f,type:\\\"thrown-error\\\"})}else if(s.startsWith(\\\"--suspense-suspend-\\\")){const[e,t,i,n,v]=s.slice(19).split(\\\"-\\\"),o=S(n),l=new Array(a.unresolvedSuspenseEvents.size+1).fill(!0);a.unresolvedSuspenseEvents.forEach((({depth:e})=>{l[e]=!1}));let _=0;for(let e=0;e<l.length;e++)if(l[e]){_=e;break}const u={componentName:t,depth:_,duration:null,id:e,phase:i,promiseName:v||null,resolution:\\\"unresolved\\\",timestamp:f,type:\\\"suspense\\\",warning:null};\\\"update\\\"===i&&a.potentialSuspenseEventsOutsideOfTransition.push([u,o]),r.suspenseEvents.push(u),a.unresolvedSuspenseEvents.set(e,u)}else if(s.startsWith(\\\"--suspense-resolved-\\\")){const[e]=s.slice(20).split(\\\"-\\\"),r=a.unresolvedSuspenseEvents.get(e);null!=r&&(a.unresolvedSuspenseEvents.delete(e),r.duration=f-r.timestamp,r.resolution=\\\"resolved\\\")}else if(s.startsWith(\\\"--suspense-rejected-\\\")){const[e]=s.slice(20).split(\\\"-\\\"),r=a.unresolvedSuspenseEvents.get(e);null!=r&&(a.unresolvedSuspenseEvents.delete(e),r.duration=f-r.timestamp,r.resolution=\\\"rejected\\\")}else if(s.startsWith(\\\"--render-start-\\\")){a.nextRenderShouldGenerateNewBatchID&&(a.nextRenderShouldGenerateNewBatchID=!1,a.batchUID=a.uidCounter++),null!==a.potentialLongNestedUpdate&&(a.potentialLongNestedUpdates.push([a.potentialLongNestedUpdate,a.batchUID]),a.potentialLongNestedUpdate=null);const[e]=s.slice(15).split(\\\"-\\\");!function(e,r){const a=r.length-1;if(a>=0){const t=r[a];if(void 0===t.stopTime&&t.type===e)throw new n(`Unexpected type \\\"${e}\\\" started before \\\"${t.type}\\\" completed.`)}}(\\\"render\\\",a.measureStack),\\\"render-idle\\\"!==function(e){if(e.length>0){const{type:r}=e[e.length-1];return r}return null}(a.measureStack)&&c(\\\"render-idle\\\",f,S(e),r,a),c(\\\"render\\\",f,S(e),r,a);for(let e=0;e<a.nativeEventStack.length;e++){const r=a.nativeEventStack[e];r.timestamp+r.duration>f&&a.potentialLongEvents.push([r,a.batchUID])}}else if(s.startsWith(\\\"--render-stop\\\")||s.startsWith(\\\"--render-yield\\\"))h(\\\"render\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--commit-start-\\\")){a.nextRenderShouldGenerateNewBatchID=!0;const[e]=s.slice(15).split(\\\"-\\\");c(\\\"commit\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--commit-stop\\\"))h(\\\"commit\\\",f,0,a.measureStack),h(\\\"render-idle\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--layout-effects-start-\\\")){const[e]=s.slice(23).split(\\\"-\\\");c(\\\"layout-effects\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--layout-effects-stop\\\"))h(\\\"layout-effects\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--passive-effects-start-\\\")){const[e]=s.slice(24).split(\\\"-\\\");c(\\\"passive-effects\\\",f,S(e),r,a)}else if(s.startsWith(\\\"--passive-effects-stop\\\"))h(\\\"passive-effects\\\",f,0,a.measureStack);else if(s.startsWith(\\\"--react-internal-module-start-\\\")){const e=s.slice(30);if(!a.internalModuleStackStringSet.has(e)){a.internalModuleStackStringSet.add(e);const r=p(e);a.internalModuleCurrentStackFrame=r}}else if(s.startsWith(\\\"--react-internal-module-stop-\\\")){const e=s.slice(29);if(!a.internalModuleStackStringSet.has(e)){a.internalModuleStackStringSet.add(e);const t=p(e);if(null!==t&&null!==a.internalModuleCurrentStackFrame){const e=a.internalModuleCurrentStackFrame;a.internalModuleCurrentStackFrame=null;const i=[e,t],n=r.internalModuleSourceToRanges.get(e.fileName);null==n?r.internalModuleSourceToRanges.set(e.fileName,[i]):n.push(i)}}}else if(\\\"R\\\"===o||\\\"n\\\"===o)r.otherUserTimingMarks.push({name:s,timestamp:f});else if(\\\"b\\\"===o);else if(\\\"e\\\"===o);else if(\\\"i\\\"!==o&&\\\"I\\\"!==o)throw new n(`Unrecognized event ${JSON.stringify(e)}! This is likely a bug in this profiler tool.`)}}(e,o,m))),null===u){if(0===o.schedulingEvents.length&&0===o.batchUIDToMeasuresMap.size)throw new n(\\\"No React marks were found in the provided profile. Please provide profiling data from an React application running in development or profiling mode.\\\");throw new n(\\\"This version of profiling data is not supported by the current profiler.\\\")}const{measureStack:k}=m;if(k.length>0&&console.error(\\\"Incomplete events or measures\\\",k),m.potentialLongEvents.forEach((([e,r])=>{const[a,t]=v(r,o,e.timestamp);t-a>20&&(e.warning=l)})),m.potentialLongNestedUpdates.forEach((([e,r])=>{const[a,t]=v(r,o);t-a>20&&e.lanes.some((e=>\\\"Transition\\\"===o.laneToLabelMap.get(e)))})),m.potentialSuspenseEventsOutsideOfTransition.forEach((([e,r])=>{r.some((e=>\\\"Transition\\\"===o.laneToLabelMap.get(e)))||(e.warning=_)})),await Promise.all(m.asyncProcessingPromises),o.snapshots.length>0){const e=o.snapshots[0];o.snapshotHeight=Math.min(e.height,60)}return o}var k=a(69),w=a.n(k);const g=async function(e){try{const r=await(e=>{if(!e.name.endsWith(\\\".json\\\"))throw new n(\\\"Invalid file type. Only JSON performance profiles are supported\\\");const r=new FileReader;return new Promise(((a,t)=>{r.onload=()=>{const e=w()(r.result);\\\"string\\\"==typeof e&&a(e),t(new n(\\\"Input file was not read as a string\\\"))},r.onerror=()=>t(r.error),r.readAsText(e)}))})(e),a=JSON.parse(r);if(0===a.length)throw new n(\\\"No profiling data found in file.\\\");return{status:\\\"SUCCESS\\\",processedData:await m(a)}}catch(e){return e instanceof n?{status:\\\"INVALID_PROFILE_ERROR\\\",error:e}:{status:\\\"UNEXPECTED_ERROR\\\",error:e}}};addEventListener(\\\"message\\\",(function(e){var r,a=e.data,i=a.type,n=a.method,s=a.id,v=a.params;\\\"RPC\\\"===i&&n&&((r=t[n])?Promise.resolve().then((function(){return r.apply(t,v)})):Promise.reject(\\\"No such method\\\")).then((function(e){postMessage({type:\\\"RPC\\\",id:s,result:e})})).catch((function(e){var r={message:e};e.stack&&(r.message=e.message,r.stack=e.stack,r.name=e.name),postMessage({type:\\\"RPC\\\",id:s,error:r})}))})),postMessage({type:\\\"RPC\\\",method:\\\"ready\\\"})})()})();\\n//# sourceMappingURL=importFile.worker.worker.js.map\"])));\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","module.exports = require(\"bufferutil\");","module.exports = require(\"utf-8-validate\");","module.exports = require(\"crypto\");","module.exports = require(\"events\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"stream\");","module.exports = require(\"tls\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");","// 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\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// 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 \"\" + \"parseHookNames\" + \".chunk.js\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/**\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 * @flow\n */\n\nexport default class EventEmitter<Events: Object> {\n listenersMap: Map<string, Array<Function>> = new Map();\n\n addListener<Event: $Keys<Events>>(\n event: Event,\n listener: (...$ElementType<Events, Event>) => any,\n ): void {\n const listeners = this.listenersMap.get(event);\n if (listeners === undefined) {\n this.listenersMap.set(event, [listener]);\n } else {\n const index = listeners.indexOf(listener);\n if (index < 0) {\n listeners.push(listener);\n }\n }\n }\n\n emit<Event: $Keys<Events>>(\n event: Event,\n ...args: $ElementType<Events, Event>\n ): void {\n const listeners = this.listenersMap.get(event);\n if (listeners !== undefined) {\n if (listeners.length === 1) {\n // No need to clone or try/catch\n const listener = listeners[0];\n listener.apply(null, args);\n } else {\n let didThrow = false;\n let caughtError = null;\n\n const clonedListeners = Array.from(listeners);\n for (let i = 0; i < clonedListeners.length; i++) {\n const listener = clonedListeners[i];\n try {\n listener.apply(null, args);\n } catch (error) {\n if (caughtError === null) {\n didThrow = true;\n caughtError = error;\n }\n }\n }\n\n if (didThrow) {\n throw caughtError;\n }\n }\n }\n }\n\n removeAllListeners(): void {\n this.listenersMap.clear();\n }\n\n removeListener(event: $Keys<Events>, listener: Function): void {\n const listeners = this.listenersMap.get(event);\n if (listeners !== undefined) {\n const index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n }\n}\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 * @flow\n */\n\nimport EventEmitter from './events';\n\nimport type {ComponentFilter, Wall} from './frontend/types';\nimport type {\n InspectedElementPayload,\n OwnersList,\n ProfilingDataBackend,\n RendererID,\n DevToolsHookSettings,\n ProfilingSettings,\n} from 'react-devtools-shared/src/backend/types';\nimport type {StyleAndLayout as StyleAndLayoutPayload} from 'react-devtools-shared/src/backend/NativeStyleEditor/types';\n\n// This message specifies the version of the DevTools protocol currently supported by the backend,\n// as well as the earliest NPM version (e.g. \"4.13.0\") that protocol is supported by on the frontend.\n// This enables an older frontend to display an upgrade message to users for a newer, unsupported backend.\nexport type BridgeProtocol = {\n // Version supported by the current frontend/backend.\n version: number,\n\n // NPM version range that also supports this version.\n // Note that 'maxNpmVersion' is only set when the version is bumped.\n minNpmVersion: string,\n maxNpmVersion: string | null,\n};\n\n// Bump protocol version whenever a backwards breaking change is made\n// in the messages sent between BackendBridge and FrontendBridge.\n// This mapping is embedded in both frontend and backend builds.\n//\n// The backend protocol will always be the latest entry in the BRIDGE_PROTOCOL array.\n//\n// When an older frontend connects to a newer backend,\n// the backend can send the minNpmVersion and the frontend can display an NPM upgrade prompt.\n//\n// When a newer frontend connects with an older protocol version,\n// the frontend can use the embedded minNpmVersion/maxNpmVersion values to display a downgrade prompt.\nexport const BRIDGE_PROTOCOL: Array<BridgeProtocol> = [\n // This version technically never existed,\n // but a backwards breaking change was added in 4.11,\n // so the safest guess to downgrade the frontend would be to version 4.10.\n {\n version: 0,\n minNpmVersion: '\"<4.11.0\"',\n maxNpmVersion: '\"<4.11.0\"',\n },\n // Versions 4.11.x 4.12.x contained the backwards breaking change,\n // but we didn't add the \"fix\" of checking the protocol version until 4.13,\n // so we don't recommend downgrading to 4.11 or 4.12.\n {\n version: 1,\n minNpmVersion: '4.13.0',\n maxNpmVersion: '4.21.0',\n },\n // Version 2 adds a StrictMode-enabled and supports-StrictMode bits to add-root operation.\n {\n version: 2,\n minNpmVersion: '4.22.0',\n maxNpmVersion: null,\n },\n];\n\nexport const currentBridgeProtocol: BridgeProtocol =\n BRIDGE_PROTOCOL[BRIDGE_PROTOCOL.length - 1];\n\ntype ElementAndRendererID = {id: number, rendererID: RendererID};\n\ntype Message = {\n event: string,\n payload: any,\n};\n\ntype HighlightHostInstance = {\n ...ElementAndRendererID,\n displayName: string | null,\n hideAfterTimeout: boolean,\n openBuiltinElementsPanel: boolean,\n scrollIntoView: boolean,\n};\n\ntype OverrideValue = {\n ...ElementAndRendererID,\n path: Array<string | number>,\n wasForwarded?: boolean,\n value: any,\n};\n\ntype OverrideHookState = {\n ...OverrideValue,\n hookID: number,\n};\n\ntype PathType = 'props' | 'hooks' | 'state' | 'context';\n\ntype DeletePath = {\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n path: Array<string | number>,\n};\n\ntype RenamePath = {\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n};\n\ntype OverrideValueAtPath = {\n ...ElementAndRendererID,\n type: PathType,\n hookID?: ?number,\n path: Array<string | number>,\n value: any,\n};\n\ntype OverrideError = {\n ...ElementAndRendererID,\n forceError: boolean,\n};\n\ntype OverrideSuspense = {\n ...ElementAndRendererID,\n forceFallback: boolean,\n};\n\ntype CopyElementPathParams = {\n ...ElementAndRendererID,\n path: Array<string | number>,\n};\n\ntype ViewAttributeSourceParams = {\n ...ElementAndRendererID,\n path: Array<string | number>,\n};\n\ntype InspectElementParams = {\n ...ElementAndRendererID,\n forceFullData: boolean,\n path: Array<number | string> | null,\n requestID: number,\n};\n\ntype StoreAsGlobalParams = {\n ...ElementAndRendererID,\n count: number,\n path: Array<string | number>,\n};\n\ntype NativeStyleEditor_RenameAttributeParams = {\n ...ElementAndRendererID,\n oldName: string,\n newName: string,\n value: string,\n};\n\ntype NativeStyleEditor_SetValueParams = {\n ...ElementAndRendererID,\n name: string,\n value: string,\n};\n\ntype SavedPreferencesParams = {\n componentFilters: Array<ComponentFilter>,\n};\n\nexport type BackendEvents = {\n backendInitialized: [],\n backendVersion: [string],\n bridgeProtocol: [BridgeProtocol],\n extensionBackendInitialized: [],\n fastRefreshScheduled: [],\n getSavedPreferences: [],\n inspectedElement: [InspectedElementPayload],\n isReloadAndProfileSupportedByBackend: [boolean],\n operations: [Array<number>],\n ownersList: [OwnersList],\n overrideComponentFilters: [Array<ComponentFilter>],\n environmentNames: [Array<string>],\n profilingData: [ProfilingDataBackend],\n profilingStatus: [boolean],\n reloadAppForProfiling: [],\n saveToClipboard: [string],\n selectElement: [number],\n shutdown: [],\n stopInspectingHost: [boolean],\n syncSelectionFromBuiltinElementsPanel: [],\n syncSelectionToBuiltinElementsPanel: [],\n unsupportedRendererVersion: [],\n\n // React Native style editor plug-in.\n isNativeStyleEditorSupported: [\n {isSupported: boolean, validAttributes: ?$ReadOnlyArray<string>},\n ],\n NativeStyleEditor_styleAndLayout: [StyleAndLayoutPayload],\n\n hookSettings: [$ReadOnly<DevToolsHookSettings>],\n};\n\ntype StartProfilingParams = ProfilingSettings;\ntype ReloadAndProfilingParams = ProfilingSettings;\n\ntype FrontendEvents = {\n clearErrorsAndWarnings: [{rendererID: RendererID}],\n clearErrorsForElementID: [ElementAndRendererID],\n clearHostInstanceHighlight: [],\n clearWarningsForElementID: [ElementAndRendererID],\n copyElementPath: [CopyElementPathParams],\n deletePath: [DeletePath],\n extensionComponentsPanelShown: [],\n extensionComponentsPanelHidden: [],\n getBackendVersion: [],\n getBridgeProtocol: [],\n getIfHasUnsupportedRendererVersion: [],\n getOwnersList: [ElementAndRendererID],\n getProfilingData: [{rendererID: RendererID}],\n getProfilingStatus: [],\n highlightHostInstance: [HighlightHostInstance],\n inspectElement: [InspectElementParams],\n logElementToConsole: [ElementAndRendererID],\n overrideError: [OverrideError],\n overrideSuspense: [OverrideSuspense],\n overrideValueAtPath: [OverrideValueAtPath],\n profilingData: [ProfilingDataBackend],\n reloadAndProfile: [ReloadAndProfilingParams],\n renamePath: [RenamePath],\n savedPreferences: [SavedPreferencesParams],\n setTraceUpdatesEnabled: [boolean],\n shutdown: [],\n startInspectingHost: [],\n startProfiling: [StartProfilingParams],\n stopInspectingHost: [boolean],\n stopProfiling: [],\n storeAsGlobal: [StoreAsGlobalParams],\n updateComponentFilters: [Array<ComponentFilter>],\n getEnvironmentNames: [],\n updateHookSettings: [$ReadOnly<DevToolsHookSettings>],\n viewAttributeSource: [ViewAttributeSourceParams],\n viewElementSource: [ElementAndRendererID],\n\n // React Native style editor plug-in.\n NativeStyleEditor_measure: [ElementAndRendererID],\n NativeStyleEditor_renameAttribute: [NativeStyleEditor_RenameAttributeParams],\n NativeStyleEditor_setValue: [NativeStyleEditor_SetValueParams],\n\n // Temporarily support newer standalone front-ends sending commands to older embedded backends.\n // We do this because React Native embeds the React DevTools backend,\n // but cannot control which version of the frontend users use.\n //\n // Note that nothing in the newer backend actually listens to these events,\n // but the new frontend still dispatches them (in case older backends are listening to them instead).\n //\n // Note that this approach does no support the combination of a newer backend with an older frontend.\n // It would be more work to support both approaches (and not run handlers twice)\n // so I chose to support the more likely/common scenario (and the one more difficult for an end user to \"fix\").\n overrideContext: [OverrideValue],\n overrideHookState: [OverrideHookState],\n overrideProps: [OverrideValue],\n overrideState: [OverrideValue],\n\n resumeElementPolling: [],\n pauseElementPolling: [],\n\n getHookSettings: [],\n};\n\nclass Bridge<\n OutgoingEvents: Object,\n IncomingEvents: Object,\n> extends EventEmitter<{\n ...IncomingEvents,\n ...OutgoingEvents,\n}> {\n _isShutdown: boolean = false;\n _messageQueue: Array<any> = [];\n _scheduledFlush: boolean = false;\n _wall: Wall;\n _wallUnlisten: Function | null = null;\n\n constructor(wall: Wall) {\n super();\n\n this._wall = wall;\n\n this._wallUnlisten =\n wall.listen((message: Message) => {\n if (message && message.event) {\n (this: any).emit(message.event, message.payload);\n }\n }) || null;\n\n // Temporarily support older standalone front-ends sending commands to newer embedded backends.\n // We do this because React Native embeds the React DevTools backend,\n // but cannot control which version of the frontend users use.\n this.addListener('overrideValueAtPath', this.overrideValueAtPath);\n }\n\n // Listening directly to the wall isn't advised.\n // It can be used to listen for legacy (v3) messages (since they use a different format).\n get wall(): Wall {\n return this._wall;\n }\n\n send<EventName: $Keys<OutgoingEvents>>(\n event: EventName,\n ...payload: $ElementType<OutgoingEvents, EventName>\n ) {\n if (this._isShutdown) {\n console.warn(\n `Cannot send message \"${event}\" through a Bridge that has been shutdown.`,\n );\n return;\n }\n\n // When we receive a message:\n // - we add it to our queue of messages to be sent\n // - if there hasn't been a message recently, we set a timer for 0 ms in\n // the future, allowing all messages created in the same tick to be sent\n // together\n // - if there *has* been a message flushed in the last BATCH_DURATION ms\n // (or we're waiting for our setTimeout-0 to fire), then _timeoutID will\n // be set, and we'll simply add to the queue and wait for that\n this._messageQueue.push(event, payload);\n if (!this._scheduledFlush) {\n this._scheduledFlush = true;\n // $FlowFixMe\n if (typeof devtoolsJestTestScheduler === 'function') {\n // This exists just for our own jest tests.\n // They're written in such a way that we can neither mock queueMicrotask\n // because then we break React DOM and we can't not mock it because then\n // we can't synchronously flush it. So they need to be rewritten.\n // $FlowFixMe\n devtoolsJestTestScheduler(this._flush); // eslint-disable-line no-undef\n } else {\n queueMicrotask(this._flush);\n }\n }\n }\n\n shutdown() {\n if (this._isShutdown) {\n console.warn('Bridge was already shutdown.');\n return;\n }\n\n // Queue the shutdown outgoing message for subscribers.\n this.emit('shutdown');\n this.send('shutdown');\n\n // Mark this bridge as destroyed, i.e. disable its public API.\n this._isShutdown = true;\n\n // Disable the API inherited from EventEmitter that can add more listeners and send more messages.\n // $FlowFixMe[cannot-write] This property is not writable.\n this.addListener = function () {};\n // $FlowFixMe[cannot-write] This property is not writable.\n this.emit = function () {};\n // NOTE: There's also EventEmitter API like `on` and `prependListener` that we didn't add to our Flow type of EventEmitter.\n\n // Unsubscribe this bridge incoming message listeners to be sure, and so they don't have to do that.\n this.removeAllListeners();\n\n // Stop accepting and emitting incoming messages from the wall.\n const wallUnlisten = this._wallUnlisten;\n if (wallUnlisten) {\n wallUnlisten();\n }\n\n // Synchronously flush all queued outgoing messages.\n // At this step the subscribers' code may run in this call stack.\n do {\n this._flush();\n } while (this._messageQueue.length);\n }\n\n _flush: () => void = () => {\n // This method is used after the bridge is marked as destroyed in shutdown sequence,\n // so we do not bail out if the bridge marked as destroyed.\n // It is a private method that the bridge ensures is only called at the right times.\n try {\n if (this._messageQueue.length) {\n for (let i = 0; i < this._messageQueue.length; i += 2) {\n this._wall.send(this._messageQueue[i], ...this._messageQueue[i + 1]);\n }\n this._messageQueue.length = 0;\n }\n } finally {\n // We set this at the end in case new messages are added synchronously above.\n // They're already handled so they shouldn't queue more flushes.\n this._scheduledFlush = false;\n }\n };\n\n // Temporarily support older standalone backends by forwarding \"overrideValueAtPath\" commands\n // to the older message types they may be listening to.\n overrideValueAtPath: OverrideValueAtPath => void = ({\n id,\n path,\n rendererID,\n type,\n value,\n }: OverrideValueAtPath) => {\n switch (type) {\n case 'context':\n this.send('overrideContext', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'hooks':\n this.send('overrideHookState', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'props':\n this.send('overrideProps', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n case 'state':\n this.send('overrideState', {\n id,\n path,\n rendererID,\n wasForwarded: true,\n value,\n });\n break;\n }\n };\n}\n\nexport type BackendBridge = Bridge<BackendEvents, FrontendEvents>;\nexport type FrontendBridge = Bridge<FrontendEvents, BackendEvents>;\n\nexport default Bridge;\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 * @flow\n */\n\n/**\n * WARNING:\n * This file contains types that are designed for React DevTools UI and how it interacts with the backend.\n * They might be used in different versions of DevTools backends.\n * Be mindful of backwards compatibility when making changes.\n */\n\nimport type {\n Dehydrated,\n Unserializable,\n} from 'react-devtools-shared/src/hydration';\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\nexport type BrowserTheme = 'dark' | 'light';\n\nexport type Wall = {\n // `listen` returns the \"unlisten\" function.\n listen: (fn: Function) => Function,\n send: (event: string, payload: any, transferable?: Array<any>) => void,\n};\n\n// WARNING\n// The values below are referenced by ComponentFilters (which are saved via localStorage).\n// Do not change them or it will break previously saved user customizations.\n// If new element types are added, use new numbers rather than re-ordering existing ones.\n//\n// Changing these types is also a backwards breaking change for the standalone shell,\n// since the frontend and backend must share the same values-\n// and the backend is embedded in certain environments (like React Native).\nexport const ElementTypeClass = 1;\nexport const ElementTypeContext = 2;\nexport const ElementTypeFunction = 5;\nexport const ElementTypeForwardRef = 6;\nexport const ElementTypeHostComponent = 7;\nexport const ElementTypeMemo = 8;\nexport const ElementTypeOtherOrUnknown = 9;\nexport const ElementTypeProfiler = 10;\nexport const ElementTypeRoot = 11;\nexport const ElementTypeSuspense = 12;\nexport const ElementTypeSuspenseList = 13;\nexport const ElementTypeTracingMarker = 14;\nexport const ElementTypeVirtual = 15;\nexport const ElementTypeViewTransition = 16;\n\n// Different types of elements displayed in the Elements tree.\n// These types may be used to visually distinguish types,\n// or to enable/disable certain functionality.\nexport type ElementType =\n | 1\n | 2\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | 16;\n\n// WARNING\n// The values below are referenced by ComponentFilters (which are saved via localStorage).\n// Do not change them or it will break previously saved user customizations.\n// If new filter types are added, use new numbers rather than re-ordering existing ones.\nexport const ComponentFilterElementType = 1;\nexport const ComponentFilterDisplayName = 2;\nexport const ComponentFilterLocation = 3;\nexport const ComponentFilterHOC = 4;\nexport const ComponentFilterEnvironmentName = 5;\n\nexport type ComponentFilterType = 1 | 2 | 3 | 4 | 5;\n\n// Hide all elements of types in this Set.\n// We hide host components only by default.\nexport type ElementTypeComponentFilter = {\n isEnabled: boolean,\n type: 1,\n value: ElementType,\n};\n\n// Hide all elements with displayNames or paths matching one or more of the RegExps in this Set.\n// Path filters are only used when elements include debug source location.\nexport type RegExpComponentFilter = {\n isEnabled: boolean,\n isValid: boolean,\n type: 2 | 3,\n value: string,\n};\n\nexport type BooleanComponentFilter = {\n isEnabled: boolean,\n isValid: boolean,\n type: 4,\n};\n\nexport type EnvironmentNameComponentFilter = {\n isEnabled: boolean,\n isValid: boolean,\n type: 5,\n value: string,\n};\n\nexport type ComponentFilter =\n | BooleanComponentFilter\n | ElementTypeComponentFilter\n | RegExpComponentFilter\n | EnvironmentNameComponentFilter;\n\nexport type HookName = string | null;\n// Map of hook source (\"<filename>:<line-number>:<column-number>\") to name.\n// Hook source is used instead of the hook itself because the latter is not stable between element inspections.\n// We use a Map rather than an Array because of nested hooks and traversal ordering.\nexport type HookSourceLocationKey = string;\nexport type HookNames = Map<HookSourceLocationKey, HookName>;\n\nexport type LRUCache<K, V> = {\n del: (key: K) => void,\n get: (key: K) => V,\n has: (key: K) => boolean,\n reset: () => void,\n set: (key: K, value: V) => void,\n};\n\nexport type StyleXPlugin = {\n sources: Array<string>,\n resolvedStyles: Object,\n};\n\nexport type Plugins = {\n stylex: StyleXPlugin | null,\n};\n\nexport const StrictMode = 1;\n\n// Each element on the frontend corresponds to an ElementID (e.g. a Fiber) on the backend.\n// Some of its information (e.g. id, type, displayName) come from the backend.\n// Other bits (e.g. weight and depth) are computed on the frontend for windowing and display purposes.\n// Elements are updated on a push basis meaning the backend pushes updates to the frontend when needed.\nexport type Element = {\n id: number,\n parentID: number,\n children: Array<number>,\n type: ElementType,\n displayName: string | null,\n key: number | string | null,\n\n hocDisplayNames: null | Array<string>,\n\n // Should the elements children be visible in the tree?\n isCollapsed: boolean,\n\n // Owner (if available)\n ownerID: number,\n\n // How many levels deep within the tree is this element?\n // This determines how much indentation (left padding) should be used in the Elements tree.\n depth: number,\n\n // How many nodes (including itself) are below this Element within the tree.\n // This property is used to quickly determine the total number of Elements,\n // and the Element at any given index (for windowing purposes).\n weight: number,\n\n // This element is not in a StrictMode compliant subtree.\n // Only true for React versions supporting StrictMode.\n isStrictModeNonCompliant: boolean,\n\n // If component is compiled with Forget, the backend will send its name as Forget(...)\n // Later, on the frontend side, we will strip HOC names and Forget prefix.\n compiledWithForget: boolean,\n};\n\nexport type SerializedElement = {\n displayName: string | null,\n id: number,\n key: number | string | null,\n hocDisplayNames: Array<string> | null,\n compiledWithForget: boolean,\n type: ElementType,\n};\n\nexport type OwnersList = {\n id: number,\n owners: Array<SerializedElement> | null,\n};\n\nexport type InspectedElementResponseType =\n | 'error'\n | 'full-data'\n | 'hydrated-path'\n | 'no-change'\n | 'not-found';\n\nexport type InspectedElementPath = Array<string | number>;\n\nexport type InspectedElement = {\n id: number,\n\n // Does the current renderer support editable hooks and function props?\n canEditHooks: boolean,\n canEditFunctionProps: boolean,\n\n // Does the current renderer support advanced editing interface?\n canEditHooksAndDeletePaths: boolean,\n canEditHooksAndRenamePaths: boolean,\n canEditFunctionPropsDeletePaths: boolean,\n canEditFunctionPropsRenamePaths: boolean,\n\n // Is this Error, and can its value be overridden now?\n isErrored: boolean,\n canToggleError: boolean,\n\n // Is this Suspense, and can its value be overridden now?\n canToggleSuspense: boolean,\n\n // Can view component source location.\n canViewSource: boolean,\n\n // Does the component have legacy context attached to it.\n hasLegacyContext: boolean,\n\n // Inspectable properties.\n context: Object | null,\n hooks: Object | null,\n props: Object | null,\n state: Object | null,\n key: number | string | null,\n errors: Array<[string, number]>,\n warnings: Array<[string, number]>,\n\n // List of owners\n owners: Array<SerializedElement> | null,\n\n // Location of component in source code.\n source: Source | null,\n\n type: ElementType,\n\n // Meta information about the root this element belongs to.\n rootType: string | null,\n\n // Meta information about the renderer that created this element.\n rendererPackageName: string | null,\n rendererVersion: string | null,\n\n // UI plugins/visualizations for the inspected element.\n plugins: Plugins,\n};\n\n// TODO: Add profiling type\n\ntype Data =\n | string\n | Dehydrated\n | Unserializable\n | Array<Dehydrated>\n | Array<Unserializable>\n | {[string]: Data};\n\nexport type DehydratedData = {\n cleaned: Array<Array<string | number>>,\n data: Data,\n unserializable: Array<Array<string | number>>,\n};\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 * @flow strict\n */\n\n// -----------------------------------------------------------------------------\n// Land or remove (zero effort)\n//\n// Flags that can likely be deleted or landed without consequences\n// -----------------------------------------------------------------------------\n\n// None\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\nexport const enableHydrationLaneScheduling = true;\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\n// TODO: Finish rolling out in www\nexport const favorSafetyOverHydrationPerf = true;\n\n// Need to remove didTimeout argument from Scheduler before landing\nexport const disableSchedulerTimeoutInWorkLoop = false;\n\n// TODO: Land at Meta before removing.\nexport const disableDefaultPropsExceptForClasses = true;\n\n// -----------------------------------------------------------------------------\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\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.\nexport const enableSuspenseCallback = false;\n\n// Experimental Scope support.\nexport const enableScopeAPI = false;\n\n// Experimental Create Event Handle API.\nexport const enableCreateEventHandleAPI = false;\n\n// Support legacy Primer support on internal FB www\nexport const enableLegacyFBSupport = false;\n\n// -----------------------------------------------------------------------------\n// Ongoing experiments\n//\n// These are features that we're either actively exploring or are reasonably\n// likely to include in an upcoming release.\n// -----------------------------------------------------------------------------\n\n// Yield to the browser event loop and not just the scheduler event loop before passive effects.\n// Fix gated tests that fail with this flag enabled before turning it back on.\nexport const enableYieldingBeforePassive = false;\n\n// Experiment to intentionally yield less to block high framerate animations.\nexport const enableThrottledScheduling = false;\n\nexport const enableLegacyCache = __EXPERIMENTAL__;\n\nexport const enableAsyncIterableChildren = __EXPERIMENTAL__;\n\nexport const enableTaint = __EXPERIMENTAL__;\n\nexport const enablePostpone = __EXPERIMENTAL__;\n\nexport const enableHalt = __EXPERIMENTAL__;\n\nexport const enableViewTransition = __EXPERIMENTAL__;\n\n/**\n * Switches the Fabric API from doing layout in commit work instead of complete work.\n */\nexport const enableFabricCompleteRootInCommitPhase = false;\n\n/**\n * Switches Fiber creation to a simple object instead of a constructor.\n */\nexport const enableObjectFiber = false;\n\nexport const enableTransitionTracing = false;\n\n// FB-only usage. The new API has different semantics.\nexport const enableLegacyHidden = false;\n\n// Enables unstable_avoidThisFallback feature in Fiber\nexport const enableSuspenseAvoidThisFallback = false;\n\nexport const enableCPUSuspense = __EXPERIMENTAL__;\n\n// Test this at Meta before enabling.\nexport const enableNoCloningMemoCache = false;\n\nexport const enableUseEffectEventHook = __EXPERIMENTAL__;\n\n// Test in www before enabling in open source.\n// Enables DOM-server to stream its instruction set as data-attributes\n// (handled with an MutationObserver) instead of inline-scripts\nexport const enableFizzExternalRuntime = __EXPERIMENTAL__;\n\nexport const alwaysThrottleRetries = true;\n\nexport const passChildrenWhenCloningPersistedNodes = false;\n\n/**\n * Enables a new Fiber flag used in persisted mode to reduce the number\n * of cloned host components.\n */\nexport const enablePersistedModeClonedFlag = false;\n\nexport const enableOwnerStacks = __EXPERIMENTAL__;\n\nexport const enableShallowPropDiffing = false;\n\nexport const enableSiblingPrerendering = true;\n\n/**\n * Enables an expiration time for retry lanes to avoid starvation.\n */\nexport const enableRetryLaneExpiration = false;\nexport const retryLaneExpirationMs = 5000;\nexport const syncLaneExpirationMs = 250;\nexport const transitionLaneExpirationMs = 5000;\n\n/**\n * Enables a new error detection for infinite render loops from updates caused\n * by setState or similar outside of the component owning the state.\n */\nexport const enableInfiniteRenderLoopDetection = false;\n\n/**\n * Experimental new hook for better managing resources in effects.\n */\nexport const enableUseResourceEffectHook = false;\n\n// -----------------------------------------------------------------------------\n// Ready for next major.\n//\n// Alias __NEXT_MAJOR__ to __EXPERIMENTAL__ for easier skimming.\n// -----------------------------------------------------------------------------\n\n// TODO: Anything that's set to `true` in this section should either be cleaned\n// up (if it's on everywhere, including Meta and RN builds) or moved to a\n// different section of this file.\n\n// const __NEXT_MAJOR__ = __EXPERIMENTAL__;\n\n// Renames the internal symbol for elements since they have changed signature/constructor\nexport const renameElementSymbol = true;\n\n/**\n * Enables a fix to run insertion effect cleanup on hidden subtrees.\n */\nexport const enableHiddenSubtreeInsertionEffectCleanup = false;\n\n/**\n * Removes legacy style context defined using static `contextTypes` and consumed with static `childContextTypes`.\n */\nexport const disableLegacyContext = true;\n/**\n * Removes legacy style context just from function components.\n */\nexport const disableLegacyContextForFunctionComponents = true;\n\n// Enable the moveBefore() alternative to insertBefore(). This preserves states of moves.\nexport const enableMoveBefore = false;\n\n// Disabled caching behavior of `react/cache` in client runtimes.\nexport const disableClientCache = true;\n\n// Warn on any usage of ReactTestRenderer\nexport const enableReactTestRendererWarning = true;\n\n// Disables legacy mode\n// This allows us to land breaking changes to remove legacy mode APIs in experimental builds\n// before removing them in stable in the next Major\nexport const disableLegacyMode = true;\n\n// Make <Context> equivalent to <Context.Provider> instead of <Context.Consumer>\nexport const enableRenderableContext = true;\n\n// -----------------------------------------------------------------------------\n// Chopping Block\n//\n// Planned feature deprecations and breaking changes. Sorted roughly in order of\n// when we plan to enable them.\n// -----------------------------------------------------------------------------\n\n// -----------------------------------------------------------------------------\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\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.\nexport const disableCommentsAsDOMContainers = true;\n\nexport const enableTrustedTypesIntegration = false;\n\n// Prevent the value and checked attributes from syncing with their related\n// DOM properties\nexport const disableInputAttributeSyncing = false;\n\n// Disables children for <textarea> elements\nexport const disableTextareaChildren = false;\n\n// -----------------------------------------------------------------------------\n// Debugging and DevTools\n// -----------------------------------------------------------------------------\n\n// Gather advanced timing metrics for Profiler subtrees.\nexport const enableProfilerTimer = __PROFILE__;\n\n// Adds performance.measure() marks using Chrome extensions to allow formatted\n// Component rendering tracks to show up in the Performance tab.\n// This flag will be used for both Server Component and Client Component tracks.\n// All calls should also be gated on enableProfilerTimer.\nexport const enableComponentPerformanceTrack = __EXPERIMENTAL__;\n\n// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,\n// for an experimental timeline tool.\nexport const enableSchedulingProfiler: boolean =\n !enableComponentPerformanceTrack && __PROFILE__;\n\n// Record durations for commit and passive effects phases.\nexport const enableProfilerCommitHooks = __PROFILE__;\n\n// Phase param passed to onRender callback differentiates between an \"update\" and a \"cascading-update\".\nexport const enableProfilerNestedUpdatePhase = __PROFILE__;\n\nexport const enableAsyncDebugInfo = __EXPERIMENTAL__;\n\n// Track which Fiber(s) schedule render work.\nexport const enableUpdaterTracking = __PROFILE__;\n\n// Internal only.\nexport const enableDO_NOT_USE_disableStrictPassiveEffect = false;\n\nexport const enableRemoveConsolePatches = true;\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 * @flow\n */\n\nimport {renameElementSymbol} from 'shared/ReactFeatureFlags';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n\n// The Symbol used to tag the ReactElement-like types.\nexport const REACT_LEGACY_ELEMENT_TYPE: symbol = Symbol.for('react.element');\nexport const REACT_ELEMENT_TYPE: symbol = renameElementSymbol\n ? Symbol.for('react.transitional.element')\n : REACT_LEGACY_ELEMENT_TYPE;\nexport const REACT_PORTAL_TYPE: symbol = Symbol.for('react.portal');\nexport const REACT_FRAGMENT_TYPE: symbol = Symbol.for('react.fragment');\nexport const REACT_STRICT_MODE_TYPE: symbol = Symbol.for('react.strict_mode');\nexport const REACT_PROFILER_TYPE: symbol = Symbol.for('react.profiler');\nexport const REACT_PROVIDER_TYPE: symbol = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext\nexport const REACT_CONSUMER_TYPE: symbol = Symbol.for('react.consumer');\nexport const REACT_CONTEXT_TYPE: symbol = Symbol.for('react.context');\nexport const REACT_FORWARD_REF_TYPE: symbol = Symbol.for('react.forward_ref');\nexport const REACT_SUSPENSE_TYPE: symbol = Symbol.for('react.suspense');\nexport const REACT_SUSPENSE_LIST_TYPE: symbol = Symbol.for(\n 'react.suspense_list',\n);\nexport const REACT_MEMO_TYPE: symbol = Symbol.for('react.memo');\nexport const REACT_LAZY_TYPE: symbol = Symbol.for('react.lazy');\nexport const REACT_SCOPE_TYPE: symbol = Symbol.for('react.scope');\nexport const REACT_OFFSCREEN_TYPE: symbol = Symbol.for('react.offscreen');\nexport const REACT_LEGACY_HIDDEN_TYPE: symbol = Symbol.for(\n 'react.legacy_hidden',\n);\nexport const REACT_TRACING_MARKER_TYPE: symbol = Symbol.for(\n 'react.tracing_marker',\n);\n\nexport const REACT_MEMO_CACHE_SENTINEL: symbol = Symbol.for(\n 'react.memo_cache_sentinel',\n);\n\nexport const REACT_POSTPONE_TYPE: symbol = Symbol.for('react.postpone');\n\nexport const REACT_VIEW_TRANSITION_TYPE: symbol = Symbol.for(\n 'react.view_transition',\n);\n\nconst MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nconst FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nexport function getIteratorFn(maybeIterable: ?any): ?() => ?Iterator<any> {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n const maybeIterator =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n return null;\n}\n\nexport const ASYNC_ITERATOR = Symbol.asyncIterator;\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 * @flow\n */\n\nexport function localStorageGetItem(key: string): any {\n try {\n return localStorage.getItem(key);\n } catch (error) {\n return null;\n }\n}\n\nexport function localStorageRemoveItem(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch (error) {}\n}\n\nexport function localStorageSetItem(key: string, value: any): void {\n try {\n return localStorage.setItem(key, value);\n } catch (error) {}\n}\n\nexport function sessionStorageGetItem(key: string): any {\n try {\n return sessionStorage.getItem(key);\n } catch (error) {\n return null;\n }\n}\n\nexport function sessionStorageRemoveItem(key: string): void {\n try {\n sessionStorage.removeItem(key);\n } catch (error) {}\n}\n\nexport function sessionStorageSetItem(key: string, value: any): void {\n try {\n return sessionStorage.setItem(key, value);\n } catch (error) {}\n}\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 * @flow\n */\n\nimport {\n getDataType,\n getDisplayNameForReactElement,\n getAllEnumerableKeys,\n getInObject,\n formatDataForPreview,\n setInObject,\n} from 'react-devtools-shared/src/utils';\n\nimport type {\n DehydratedData,\n InspectedElementPath,\n} from 'react-devtools-shared/src/frontend/types';\n\nexport const meta = {\n inspectable: (Symbol('inspectable'): symbol),\n inspected: (Symbol('inspected'): symbol),\n name: (Symbol('name'): symbol),\n preview_long: (Symbol('preview_long'): symbol),\n preview_short: (Symbol('preview_short'): symbol),\n readonly: (Symbol('readonly'): symbol),\n size: (Symbol('size'): symbol),\n type: (Symbol('type'): symbol),\n unserializable: (Symbol('unserializable'): symbol),\n};\n\nexport type Dehydrated = {\n inspectable: boolean,\n name: string | null,\n preview_long: string | null,\n preview_short: string | null,\n readonly?: boolean,\n size?: number,\n type: string,\n};\n\n// Typed arrays and other complex iteratable objects (e.g. Map, Set, ImmutableJS) need special handling.\n// These objects can't be serialized without losing type information,\n// so a \"Unserializable\" type wrapper is used (with meta-data keys) to send nested values-\n// while preserving the original type and name.\nexport type Unserializable = {\n name: string | null,\n preview_long: string | null,\n preview_short: string | null,\n readonly?: boolean,\n size?: number,\n type: string,\n unserializable: boolean,\n [string | number]: any,\n};\n\n// This threshold determines the depth at which the bridge \"dehydrates\" nested data.\n// Dehydration means that we don't serialize the data for e.g. postMessage or stringify,\n// unless the frontend explicitly requests it (e.g. a user clicks to expand a props object).\n//\n// Reducing this threshold will improve the speed of initial component inspection,\n// but may decrease the responsiveness of expanding objects/arrays to inspect further.\nconst LEVEL_THRESHOLD = 2;\n\n/**\n * Generate the dehydrated metadata for complex object instances\n */\nfunction createDehydrated(\n type: string,\n inspectable: boolean,\n data: Object,\n cleaned: Array<Array<string | number>>,\n path: Array<string | number>,\n): Dehydrated {\n cleaned.push(path);\n\n const dehydrated: Dehydrated = {\n inspectable,\n type,\n preview_long: formatDataForPreview(data, true),\n preview_short: formatDataForPreview(data, false),\n name:\n typeof data.constructor !== 'function' ||\n typeof data.constructor.name !== 'string' ||\n data.constructor.name === 'Object'\n ? ''\n : data.constructor.name,\n };\n\n if (type === 'array' || type === 'typed_array') {\n dehydrated.size = data.length;\n } else if (type === 'object') {\n dehydrated.size = Object.keys(data).length;\n }\n\n if (type === 'iterator' || type === 'typed_array') {\n dehydrated.readonly = true;\n }\n\n return dehydrated;\n}\n\n/**\n * Strip out complex data (instances, functions, and data nested > LEVEL_THRESHOLD levels deep).\n * The paths of the stripped out objects are appended to the `cleaned` list.\n * On the other side of the barrier, the cleaned list is used to \"re-hydrate\" the cleaned representation into\n * an object with symbols as attributes, so that a sanitized object can be distinguished from a normal object.\n *\n * Input: {\"some\": {\"attr\": fn()}, \"other\": AnInstance}\n * Output: {\n * \"some\": {\n * \"attr\": {\"name\": the fn.name, type: \"function\"}\n * },\n * \"other\": {\n * \"name\": \"AnInstance\",\n * \"type\": \"object\",\n * },\n * }\n * and cleaned = [[\"some\", \"attr\"], [\"other\"]]\n */\nexport function dehydrate(\n data: Object,\n cleaned: Array<Array<string | number>>,\n unserializable: Array<Array<string | number>>,\n path: Array<string | number>,\n isPathAllowed: (path: Array<string | number>) => boolean,\n level: number = 0,\n): $PropertyType<DehydratedData, 'data'> {\n const type = getDataType(data);\n\n let isPathAllowedCheck;\n\n switch (type) {\n case 'html_element':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.tagName,\n type,\n };\n\n case 'function':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name:\n typeof data.name === 'function' || !data.name\n ? 'function'\n : data.name,\n type,\n };\n\n case 'string':\n isPathAllowedCheck = isPathAllowed(path);\n if (isPathAllowedCheck) {\n return data;\n } else {\n return data.length <= 500 ? data : data.slice(0, 500) + '...';\n }\n\n case 'bigint':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'symbol':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n // React Elements aren't very inspector-friendly,\n // and often contain private fields or circular references.\n case 'react_element':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: getDisplayNameForReactElement(data) || 'Unknown',\n type,\n };\n\n // ArrayBuffers error if you try to inspect them.\n case 'array_buffer':\n case 'data_view':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: type === 'data_view' ? 'DataView' : 'ArrayBuffer',\n size: data.byteLength,\n type,\n };\n\n case 'array':\n isPathAllowedCheck = isPathAllowed(path);\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n }\n const arr: Array<Object> = [];\n for (let i = 0; i < data.length; i++) {\n arr[i] = dehydrateKey(\n data,\n i,\n cleaned,\n unserializable,\n path.concat([i]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n );\n }\n return arr;\n\n case 'html_all_collection':\n case 'typed_array':\n case 'iterator':\n isPathAllowedCheck = isPathAllowed(path);\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n } else {\n const unserializableValue: Unserializable = {\n unserializable: true,\n type: type,\n readonly: true,\n size: type === 'typed_array' ? data.length : undefined,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name:\n typeof data.constructor !== 'function' ||\n typeof data.constructor.name !== 'string' ||\n data.constructor.name === 'Object'\n ? ''\n : data.constructor.name,\n };\n\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n Array.from(data).forEach(\n (item, i) =>\n (unserializableValue[i] = dehydrate(\n item,\n cleaned,\n unserializable,\n path.concat([i]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n )),\n );\n\n unserializable.push(path);\n\n return unserializableValue;\n }\n\n case 'opaque_iterator':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data[Symbol.toStringTag],\n type,\n };\n\n case 'date':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'regexp':\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name: data.toString(),\n type,\n };\n\n case 'object':\n isPathAllowedCheck = isPathAllowed(path);\n\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n } else {\n const object: {\n [string]: $PropertyType<DehydratedData, 'data'>,\n } = {};\n getAllEnumerableKeys(data).forEach(key => {\n const name = key.toString();\n object[name] = dehydrateKey(\n data,\n key,\n cleaned,\n unserializable,\n path.concat([name]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n );\n });\n return object;\n }\n\n case 'class_instance':\n isPathAllowedCheck = isPathAllowed(path);\n\n if (level >= LEVEL_THRESHOLD && !isPathAllowedCheck) {\n return createDehydrated(type, true, data, cleaned, path);\n }\n\n const value: Unserializable = {\n unserializable: true,\n type,\n readonly: true,\n preview_short: formatDataForPreview(data, false),\n preview_long: formatDataForPreview(data, true),\n name:\n typeof data.constructor !== 'function' ||\n typeof data.constructor.name !== 'string'\n ? ''\n : data.constructor.name,\n };\n\n getAllEnumerableKeys(data).forEach(key => {\n const keyAsString = key.toString();\n\n value[keyAsString] = dehydrate(\n data[key],\n cleaned,\n unserializable,\n path.concat([keyAsString]),\n isPathAllowed,\n isPathAllowedCheck ? 1 : level + 1,\n );\n });\n\n unserializable.push(path);\n\n return value;\n\n case 'infinity':\n case 'nan':\n case 'undefined':\n // Some values are lossy when sent through a WebSocket.\n // We dehydrate+rehydrate them to preserve their type.\n cleaned.push(path);\n return {type};\n\n default:\n return data;\n }\n}\n\nfunction dehydrateKey(\n parent: Object,\n key: number | string | symbol,\n cleaned: Array<Array<string | number>>,\n unserializable: Array<Array<string | number>>,\n path: Array<string | number>,\n isPathAllowed: (path: Array<string | number>) => boolean,\n level: number = 0,\n): $PropertyType<DehydratedData, 'data'> {\n try {\n return dehydrate(\n parent[key],\n cleaned,\n unserializable,\n path,\n isPathAllowed,\n level,\n );\n } catch (error) {\n let preview = '';\n if (\n typeof error === 'object' &&\n error !== null &&\n typeof error.stack === 'string'\n ) {\n preview = error.stack;\n } else if (typeof error === 'string') {\n preview = error;\n }\n cleaned.push(path);\n return {\n inspectable: false,\n preview_short: '[Exception]',\n preview_long: preview ? '[Exception: ' + preview + ']' : '[Exception]',\n name: preview,\n type: 'unknown',\n };\n }\n}\n\nexport function fillInPath(\n object: Object,\n data: DehydratedData,\n path: InspectedElementPath,\n value: any,\n) {\n const target = getInObject(object, path);\n if (target != null) {\n if (!target[meta.unserializable]) {\n delete target[meta.inspectable];\n delete target[meta.inspected];\n delete target[meta.name];\n delete target[meta.preview_long];\n delete target[meta.preview_short];\n delete target[meta.readonly];\n delete target[meta.size];\n delete target[meta.type];\n }\n }\n\n if (value !== null && data.unserializable.length > 0) {\n const unserializablePath = data.unserializable[0];\n let isMatch = unserializablePath.length === path.length;\n for (let i = 0; i < path.length; i++) {\n if (path[i] !== unserializablePath[i]) {\n isMatch = false;\n break;\n }\n }\n if (isMatch) {\n upgradeUnserializable(value, value);\n }\n }\n\n setInObject(object, path, value);\n}\n\nexport function hydrate(\n object: any,\n cleaned: Array<Array<string | number>>,\n unserializable: Array<Array<string | number>>,\n): Object {\n cleaned.forEach((path: Array<string | number>) => {\n const length = path.length;\n const last = path[length - 1];\n const parent = getInObject(object, path.slice(0, length - 1));\n if (!parent || !parent.hasOwnProperty(last)) {\n return;\n }\n\n const value = parent[last];\n\n if (!value) {\n return;\n } else if (value.type === 'infinity') {\n parent[last] = Infinity;\n } else if (value.type === 'nan') {\n parent[last] = NaN;\n } else if (value.type === 'undefined') {\n parent[last] = undefined;\n } else {\n // Replace the string keys with Symbols so they're non-enumerable.\n const replaced: {[key: symbol]: boolean | string} = {};\n replaced[meta.inspectable] = !!value.inspectable;\n replaced[meta.inspected] = false;\n replaced[meta.name] = value.name;\n replaced[meta.preview_long] = value.preview_long;\n replaced[meta.preview_short] = value.preview_short;\n replaced[meta.size] = value.size;\n replaced[meta.readonly] = !!value.readonly;\n replaced[meta.type] = value.type;\n\n parent[last] = replaced;\n }\n });\n unserializable.forEach((path: Array<string | number>) => {\n const length = path.length;\n const last = path[length - 1];\n const parent = getInObject(object, path.slice(0, length - 1));\n if (!parent || !parent.hasOwnProperty(last)) {\n return;\n }\n\n const node = parent[last];\n\n const replacement = {\n ...node,\n };\n\n upgradeUnserializable(replacement, node);\n\n parent[last] = replacement;\n });\n return object;\n}\n\nfunction upgradeUnserializable(destination: Object, source: Object) {\n Object.defineProperties(destination, {\n // $FlowFixMe[invalid-computed-prop]\n [meta.inspected]: {\n configurable: true,\n enumerable: false,\n value: !!source.inspected,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.name]: {\n configurable: true,\n enumerable: false,\n value: source.name,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.preview_long]: {\n configurable: true,\n enumerable: false,\n value: source.preview_long,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.preview_short]: {\n configurable: true,\n enumerable: false,\n value: source.preview_short,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.size]: {\n configurable: true,\n enumerable: false,\n value: source.size,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.readonly]: {\n configurable: true,\n enumerable: false,\n value: !!source.readonly,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.type]: {\n configurable: true,\n enumerable: false,\n value: source.type,\n },\n // $FlowFixMe[invalid-computed-prop]\n [meta.unserializable]: {\n configurable: true,\n enumerable: false,\n value: !!source.unserializable,\n },\n });\n\n delete destination.inspected;\n delete destination.name;\n delete destination.preview_long;\n delete destination.preview_short;\n delete destination.size;\n delete destination.readonly;\n delete destination.type;\n delete destination.unserializable;\n}\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 * @flow\n */\n\nconst isArray = Array.isArray;\n\nexport default isArray;\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 * @flow\n */\n\ndeclare function isArray(a: mixed): boolean %checks(Array.isArray(a));\n\nconst isArrayImpl = Array.isArray;\n\nfunction isArray(a: mixed): boolean {\n return isArrayImpl(a);\n}\n\nexport default isArray;\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 * @flow\n */\n\nimport LRU from 'lru-cache';\nimport {\n REACT_CONSUMER_TYPE,\n REACT_CONTEXT_TYPE,\n REACT_FORWARD_REF_TYPE,\n REACT_FRAGMENT_TYPE,\n REACT_LAZY_TYPE,\n REACT_ELEMENT_TYPE,\n REACT_LEGACY_ELEMENT_TYPE,\n REACT_MEMO_TYPE,\n REACT_PORTAL_TYPE,\n REACT_PROFILER_TYPE,\n REACT_PROVIDER_TYPE,\n REACT_STRICT_MODE_TYPE,\n REACT_SUSPENSE_LIST_TYPE,\n REACT_SUSPENSE_TYPE,\n REACT_TRACING_MARKER_TYPE,\n REACT_VIEW_TRANSITION_TYPE,\n} from 'shared/ReactSymbols';\nimport {enableRenderableContext} from 'shared/ReactFeatureFlags';\nimport {\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REMOVE_ROOT,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_SET_SUBTREE_MODE,\n TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n LOCAL_STORAGE_COMPONENT_FILTER_PREFERENCES_KEY,\n LOCAL_STORAGE_OPEN_IN_EDITOR_URL,\n SESSION_STORAGE_RELOAD_AND_PROFILE_KEY,\n SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY,\n SESSION_STORAGE_RECORD_TIMELINE_KEY,\n} from './constants';\nimport {\n ComponentFilterElementType,\n ComponentFilterLocation,\n ElementTypeHostComponent,\n} from './frontend/types';\nimport {\n ElementTypeRoot,\n ElementTypeClass,\n ElementTypeForwardRef,\n ElementTypeFunction,\n ElementTypeMemo,\n ElementTypeVirtual,\n} from 'react-devtools-shared/src/frontend/types';\nimport {\n localStorageGetItem,\n localStorageSetItem,\n sessionStorageGetItem,\n sessionStorageRemoveItem,\n sessionStorageSetItem,\n} from 'react-devtools-shared/src/storage';\nimport {meta} from './hydration';\nimport isArray from './isArray';\n\nimport type {\n ComponentFilter,\n ElementType,\n SerializedElement as SerializedElementFrontend,\n LRUCache,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {\n ProfilingSettings,\n SerializedElement as SerializedElementBackend,\n} from 'react-devtools-shared/src/backend/types';\nimport {isSynchronousXHRSupported} from './backend/utils';\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nconst cachedDisplayNames: WeakMap<Function, string> = new WeakMap();\n\n// On large trees, encoding takes significant time.\n// Try to reuse the already encoded strings.\nconst encodedStringCache: LRUCache<string, Array<number>> = new LRU({\n max: 1000,\n});\n\nexport function alphaSortKeys(\n a: string | number | symbol,\n b: string | number | symbol,\n): number {\n if (a.toString() > b.toString()) {\n return 1;\n } else if (b.toString() > a.toString()) {\n return -1;\n } else {\n return 0;\n }\n}\n\nexport function getAllEnumerableKeys(\n obj: Object,\n): Set<string | number | symbol> {\n const keys = new Set<string | number | symbol>();\n let current = obj;\n while (current != null) {\n const currentKeys = [\n ...Object.keys(current),\n ...Object.getOwnPropertySymbols(current),\n ];\n const descriptors = Object.getOwnPropertyDescriptors(current);\n currentKeys.forEach(key => {\n // $FlowFixMe[incompatible-type]: key can be a Symbol https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor\n if (descriptors[key].enumerable) {\n keys.add(key);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return keys;\n}\n\n// Mirror https://github.com/facebook/react/blob/7c21bf72ace77094fd1910cc350a548287ef8350/packages/shared/getComponentName.js#L27-L37\nexport function getWrappedDisplayName(\n outerType: mixed,\n innerType: any,\n wrapperName: string,\n fallbackName?: string,\n): string {\n const displayName = (outerType: any)?.displayName;\n return (\n displayName || `${wrapperName}(${getDisplayName(innerType, fallbackName)})`\n );\n}\n\nexport function getDisplayName(\n type: Function,\n fallbackName: string = 'Anonymous',\n): string {\n const nameFromCache = cachedDisplayNames.get(type);\n if (nameFromCache != null) {\n return nameFromCache;\n }\n\n let displayName = fallbackName;\n\n // The displayName property is not guaranteed to be a string.\n // It's only safe to use for our purposes if it's a string.\n // github.com/facebook/react-devtools/issues/803\n if (typeof type.displayName === 'string') {\n displayName = type.displayName;\n } else if (typeof type.name === 'string' && type.name !== '') {\n displayName = type.name;\n }\n\n cachedDisplayNames.set(type, displayName);\n return displayName;\n}\n\nlet uidCounter: number = 0;\n\nexport function getUID(): number {\n return ++uidCounter;\n}\n\nexport function utfDecodeStringWithRanges(\n array: Array<number>,\n left: number,\n right: number,\n): string {\n let string = '';\n for (let i = left; i <= right; i++) {\n string += String.fromCodePoint(array[i]);\n }\n return string;\n}\n\nfunction surrogatePairToCodePoint(\n charCode1: number,\n charCode2: number,\n): number {\n return ((charCode1 & 0x3ff) << 10) + (charCode2 & 0x3ff) + 0x10000;\n}\n\n// Credit for this encoding approach goes to Tim Down:\n// https://stackoverflow.com/questions/4877326/how-can-i-tell-if-a-string-contains-multibyte-characters-in-javascript\nexport function utfEncodeString(string: string): Array<number> {\n const cached = encodedStringCache.get(string);\n if (cached !== undefined) {\n return cached;\n }\n\n const encoded = [];\n let i = 0;\n let charCode;\n while (i < string.length) {\n charCode = string.charCodeAt(i);\n // Handle multibyte unicode characters (like emoji).\n if ((charCode & 0xf800) === 0xd800) {\n encoded.push(surrogatePairToCodePoint(charCode, string.charCodeAt(++i)));\n } else {\n encoded.push(charCode);\n }\n ++i;\n }\n\n encodedStringCache.set(string, encoded);\n\n return encoded;\n}\n\nexport function printOperationsArray(operations: Array<number>) {\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n const rootID = operations[1];\n\n const logs = [`operations for renderer:${rendererID} and root:${rootID}`];\n\n let i = 2;\n\n // Reassemble the string table.\n const stringTable: Array<null | string> = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i++];\n const stringTableEnd = i + stringTableSize;\n while (i < stringTableEnd) {\n const nextLength = operations[i++];\n const nextString = utfDecodeStringWithRanges(\n operations,\n i,\n i + nextLength - 1,\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n\n switch (operation) {\n case TREE_OPERATION_ADD: {\n const id = ((operations[i + 1]: any): number);\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (type === ElementTypeRoot) {\n logs.push(`Add new root node ${id}`);\n\n i++; // isStrictModeCompliant\n i++; // supportsProfiling\n i++; // supportsStrictMode\n i++; // hasOwnerMetadata\n } else {\n const parentID = ((operations[i]: any): number);\n i++;\n\n i++; // ownerID\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n i++; // key\n\n logs.push(\n `Add node ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n break;\n }\n case TREE_OPERATION_REMOVE: {\n const removeLength = ((operations[i + 1]: any): number);\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n const id = ((operations[i]: any): number);\n i += 1;\n\n logs.push(`Remove node ${id}`);\n }\n break;\n }\n case TREE_OPERATION_REMOVE_ROOT: {\n i += 1;\n\n logs.push(`Remove root ${rootID}`);\n break;\n }\n case TREE_OPERATION_SET_SUBTREE_MODE: {\n const id = operations[i + 1];\n const mode = operations[i + 1];\n\n i += 3;\n\n logs.push(`Mode ${mode} set for subtree with root ${id}`);\n break;\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n const id = ((operations[i + 1]: any): number);\n const numChildren = ((operations[i + 2]: any): number);\n i += 3;\n const children = operations.slice(i, i + numChildren);\n i += numChildren;\n\n logs.push(`Re-order node ${id} children ${children.join(',')}`);\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION:\n // Base duration updates are only sent while profiling is in progress.\n // We can ignore them at this point.\n // The profiler UI uses them lazily in order to generate the tree.\n i += 3;\n break;\n case TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS:\n const id = operations[i + 1];\n const numErrors = operations[i + 2];\n const numWarnings = operations[i + 3];\n\n i += 4;\n\n logs.push(\n `Node ${id} has ${numErrors} errors and ${numWarnings} warnings`,\n );\n break;\n default:\n throw Error(`Unsupported Bridge operation \"${operation}\"`);\n }\n }\n\n console.log(logs.join('\\n '));\n}\n\nexport function getDefaultComponentFilters(): Array<ComponentFilter> {\n return [\n {\n type: ComponentFilterElementType,\n value: ElementTypeHostComponent,\n isEnabled: true,\n },\n ];\n}\n\nexport function getSavedComponentFilters(): Array<ComponentFilter> {\n try {\n const raw = localStorageGetItem(\n LOCAL_STORAGE_COMPONENT_FILTER_PREFERENCES_KEY,\n );\n if (raw != null) {\n const parsedFilters: Array<ComponentFilter> = JSON.parse(raw);\n return filterOutLocationComponentFilters(parsedFilters);\n }\n } catch (error) {}\n return getDefaultComponentFilters();\n}\n\nexport function setSavedComponentFilters(\n componentFilters: Array<ComponentFilter>,\n): void {\n localStorageSetItem(\n LOCAL_STORAGE_COMPONENT_FILTER_PREFERENCES_KEY,\n JSON.stringify(filterOutLocationComponentFilters(componentFilters)),\n );\n}\n\n// Following __debugSource removal from Fiber, the new approach for finding the source location\n// of a component, represented by the Fiber, is based on lazily generating and parsing component stack frames\n// To find the original location, React DevTools will perform symbolication, source maps are required for that.\n// In order to start filtering Fibers, we need to find location for all of them, which can't be done lazily.\n// Eager symbolication can become quite expensive for large applications.\nexport function filterOutLocationComponentFilters(\n componentFilters: Array<ComponentFilter>,\n): Array<ComponentFilter> {\n // This is just an additional check to preserve the previous state\n // Filters can be stored on the backend side or in user land (in a window object)\n if (!Array.isArray(componentFilters)) {\n return componentFilters;\n }\n\n return componentFilters.filter(f => f.type !== ComponentFilterLocation);\n}\n\nexport function getDefaultOpenInEditorURL(): string {\n return typeof process.env.EDITOR_URL === 'string'\n ? process.env.EDITOR_URL\n : '';\n}\n\nexport function getOpenInEditorURL(): string {\n try {\n const raw = localStorageGetItem(LOCAL_STORAGE_OPEN_IN_EDITOR_URL);\n if (raw != null) {\n return JSON.parse(raw);\n }\n } catch (error) {}\n return getDefaultOpenInEditorURL();\n}\n\ntype ParseElementDisplayNameFromBackendReturn = {\n formattedDisplayName: string | null,\n hocDisplayNames: Array<string> | null,\n compiledWithForget: boolean,\n};\nexport function parseElementDisplayNameFromBackend(\n displayName: string | null,\n type: ElementType,\n): ParseElementDisplayNameFromBackendReturn {\n if (displayName === null) {\n return {\n formattedDisplayName: null,\n hocDisplayNames: null,\n compiledWithForget: false,\n };\n }\n\n if (displayName.startsWith('Forget(')) {\n const displayNameWithoutForgetWrapper = displayName.slice(\n 7,\n displayName.length - 1,\n );\n\n const {formattedDisplayName, hocDisplayNames} =\n parseElementDisplayNameFromBackend(displayNameWithoutForgetWrapper, type);\n return {formattedDisplayName, hocDisplayNames, compiledWithForget: true};\n }\n\n let hocDisplayNames = null;\n switch (type) {\n case ElementTypeClass:\n case ElementTypeForwardRef:\n case ElementTypeFunction:\n case ElementTypeMemo:\n case ElementTypeVirtual:\n if (displayName.indexOf('(') >= 0) {\n const matches = displayName.match(/[^()]+/g);\n if (matches != null) {\n // $FlowFixMe[incompatible-type]\n displayName = matches.pop();\n hocDisplayNames = matches;\n }\n }\n break;\n default:\n break;\n }\n\n return {\n // $FlowFixMe[incompatible-return]\n formattedDisplayName: displayName,\n hocDisplayNames,\n compiledWithForget: false,\n };\n}\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nexport function shallowDiffers(prev: Object, next: Object): boolean {\n for (const attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n for (const attribute in next) {\n if (prev[attribute] !== next[attribute]) {\n return true;\n }\n }\n return false;\n}\n\nexport function getInObject(object: Object, path: Array<string | number>): any {\n return path.reduce((reduced: Object, attr: any): any => {\n if (reduced) {\n if (hasOwnProperty.call(reduced, attr)) {\n return reduced[attr];\n }\n if (typeof reduced[Symbol.iterator] === 'function') {\n // Convert iterable to array and return array[index]\n //\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n return Array.from(reduced)[attr];\n }\n }\n\n return null;\n }, object);\n}\n\nexport function deletePathInObject(\n object: Object,\n path: Array<string | number>,\n) {\n const length = path.length;\n const last = path[length - 1];\n if (object != null) {\n const parent = getInObject(object, path.slice(0, length - 1));\n if (parent) {\n if (isArray(parent)) {\n parent.splice(((last: any): number), 1);\n } else {\n delete parent[last];\n }\n }\n }\n}\n\nexport function renamePathInObject(\n object: Object,\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n) {\n const length = oldPath.length;\n if (object != null) {\n const parent = getInObject(object, oldPath.slice(0, length - 1));\n if (parent) {\n const lastOld = oldPath[length - 1];\n const lastNew = newPath[length - 1];\n parent[lastNew] = parent[lastOld];\n if (isArray(parent)) {\n parent.splice(((lastOld: any): number), 1);\n } else {\n delete parent[lastOld];\n }\n }\n }\n}\n\nexport function setInObject(\n object: Object,\n path: Array<string | number>,\n value: any,\n) {\n const length = path.length;\n const last = path[length - 1];\n if (object != null) {\n const parent = getInObject(object, path.slice(0, length - 1));\n if (parent) {\n parent[last] = value;\n }\n }\n}\n\nexport type DataType =\n | 'array'\n | 'array_buffer'\n | 'bigint'\n | 'boolean'\n | 'class_instance'\n | 'data_view'\n | 'date'\n | 'function'\n | 'html_all_collection'\n | 'html_element'\n | 'infinity'\n | 'iterator'\n | 'opaque_iterator'\n | 'nan'\n | 'null'\n | 'number'\n | 'object'\n | 'react_element'\n | 'regexp'\n | 'string'\n | 'symbol'\n | 'typed_array'\n | 'undefined'\n | 'unknown';\n\n/**\n * Get a enhanced/artificial type string based on the object instance\n */\nexport function getDataType(data: Object): DataType {\n if (data === null) {\n return 'null';\n } else if (data === undefined) {\n return 'undefined';\n }\n\n if (typeof HTMLElement !== 'undefined' && data instanceof HTMLElement) {\n return 'html_element';\n }\n\n const type = typeof data;\n switch (type) {\n case 'bigint':\n return 'bigint';\n case 'boolean':\n return 'boolean';\n case 'function':\n return 'function';\n case 'number':\n if (Number.isNaN(data)) {\n return 'nan';\n } else if (!Number.isFinite(data)) {\n return 'infinity';\n } else {\n return 'number';\n }\n case 'object':\n if (\n data.$$typeof === REACT_ELEMENT_TYPE ||\n data.$$typeof === REACT_LEGACY_ELEMENT_TYPE\n ) {\n return 'react_element';\n }\n if (isArray(data)) {\n return 'array';\n } else if (ArrayBuffer.isView(data)) {\n return hasOwnProperty.call(data.constructor, 'BYTES_PER_ELEMENT')\n ? 'typed_array'\n : 'data_view';\n } else if (data.constructor && data.constructor.name === 'ArrayBuffer') {\n // HACK This ArrayBuffer check is gross; is there a better way?\n // We could try to create a new DataView with the value.\n // If it doesn't error, we know it's an ArrayBuffer,\n // but this seems kind of awkward and expensive.\n return 'array_buffer';\n } else if (typeof data[Symbol.iterator] === 'function') {\n const iterator = data[Symbol.iterator]();\n if (!iterator) {\n // Proxies might break assumptoins about iterators.\n // See github.com/facebook/react/issues/21654\n } else {\n return iterator === data ? 'opaque_iterator' : 'iterator';\n }\n } else if (data.constructor && data.constructor.name === 'RegExp') {\n return 'regexp';\n } else {\n // $FlowFixMe[method-unbinding]\n const toStringValue = Object.prototype.toString.call(data);\n if (toStringValue === '[object Date]') {\n return 'date';\n } else if (toStringValue === '[object HTMLAllCollection]') {\n return 'html_all_collection';\n }\n }\n\n if (!isPlainObject(data)) {\n return 'class_instance';\n }\n\n return 'object';\n case 'string':\n return 'string';\n case 'symbol':\n return 'symbol';\n case 'undefined':\n if (\n // $FlowFixMe[method-unbinding]\n Object.prototype.toString.call(data) === '[object HTMLAllCollection]'\n ) {\n return 'html_all_collection';\n }\n return 'undefined';\n default:\n return 'unknown';\n }\n}\n\n// Fork of packages/react-is/src/ReactIs.js:30, but with legacy element type\n// Which has been changed in https://github.com/facebook/react/pull/28813\nfunction typeOfWithLegacyElementSymbol(object: any): mixed {\n if (typeof object === 'object' && object !== null) {\n const $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_LEGACY_ELEMENT_TYPE:\n const type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return type;\n default:\n const $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return $$typeofType;\n case REACT_CONSUMER_TYPE:\n if (enableRenderableContext) {\n return $$typeofType;\n }\n // Fall through\n case REACT_PROVIDER_TYPE:\n if (!enableRenderableContext) {\n return $$typeofType;\n }\n // Fall through\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\nexport function getDisplayNameForReactElement(\n element: React$Element<any>,\n): string | null {\n const elementType = typeOfWithLegacyElementSymbol(element);\n switch (elementType) {\n case REACT_CONSUMER_TYPE:\n return 'ContextConsumer';\n case REACT_PROVIDER_TYPE:\n return 'ContextProvider';\n case REACT_CONTEXT_TYPE:\n return 'Context';\n case REACT_FORWARD_REF_TYPE:\n return 'ForwardRef';\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n case REACT_LAZY_TYPE:\n return 'Lazy';\n case REACT_MEMO_TYPE:\n return 'Memo';\n case REACT_PORTAL_TYPE:\n return 'Portal';\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n case REACT_VIEW_TRANSITION_TYPE:\n return 'ViewTransition';\n case REACT_TRACING_MARKER_TYPE:\n return 'TracingMarker';\n default:\n const {type} = element;\n if (typeof type === 'string') {\n return type;\n } else if (typeof type === 'function') {\n return getDisplayName(type, 'Anonymous');\n } else if (type != null) {\n return 'NotImplementedInDevtools';\n } else {\n return 'Element';\n }\n }\n}\n\nconst MAX_PREVIEW_STRING_LENGTH = 50;\n\nfunction truncateForDisplay(\n string: string,\n length: number = MAX_PREVIEW_STRING_LENGTH,\n) {\n if (string.length > length) {\n return string.slice(0, length) + '…';\n } else {\n return string;\n }\n}\n\n// Attempts to mimic Chrome's inline preview for values.\n// For example, the following value...\n// {\n// foo: 123,\n// bar: \"abc\",\n// baz: [true, false],\n// qux: { ab: 1, cd: 2 }\n// };\n//\n// Would show a preview of...\n// {foo: 123, bar: \"abc\", baz: Array(2), qux: {…}}\n//\n// And the following value...\n// [\n// 123,\n// \"abc\",\n// [true, false],\n// { foo: 123, bar: \"abc\" }\n// ];\n//\n// Would show a preview of...\n// [123, \"abc\", Array(2), {…}]\nexport function formatDataForPreview(\n data: any,\n showFormattedValue: boolean,\n): string {\n if (data != null && hasOwnProperty.call(data, meta.type)) {\n return showFormattedValue\n ? data[meta.preview_long]\n : data[meta.preview_short];\n }\n\n const type = getDataType(data);\n\n switch (type) {\n case 'html_element':\n return `<${truncateForDisplay(data.tagName.toLowerCase())} />`;\n case 'function':\n if (typeof data.name === 'function' || data.name === '') {\n return '() => {}';\n }\n return `${truncateForDisplay(data.name)}() {}`;\n case 'string':\n return `\"${data}\"`;\n case 'bigint':\n return truncateForDisplay(data.toString() + 'n');\n case 'regexp':\n return truncateForDisplay(data.toString());\n case 'symbol':\n return truncateForDisplay(data.toString());\n case 'react_element':\n return `<${truncateForDisplay(\n getDisplayNameForReactElement(data) || 'Unknown',\n )} />`;\n case 'array_buffer':\n return `ArrayBuffer(${data.byteLength})`;\n case 'data_view':\n return `DataView(${data.buffer.byteLength})`;\n case 'array':\n if (showFormattedValue) {\n let formatted = '';\n for (let i = 0; i < data.length; i++) {\n if (i > 0) {\n formatted += ', ';\n }\n formatted += formatDataForPreview(data[i], false);\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `[${truncateForDisplay(formatted)}]`;\n } else {\n const length = hasOwnProperty.call(data, meta.size)\n ? data[meta.size]\n : data.length;\n return `Array(${length})`;\n }\n case 'typed_array':\n const shortName = `${data.constructor.name}(${data.length})`;\n if (showFormattedValue) {\n let formatted = '';\n for (let i = 0; i < data.length; i++) {\n if (i > 0) {\n formatted += ', ';\n }\n formatted += data[i];\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `${shortName} [${truncateForDisplay(formatted)}]`;\n } else {\n return shortName;\n }\n case 'iterator':\n const name = data.constructor.name;\n\n if (showFormattedValue) {\n // TRICKY\n // Don't use [...spread] syntax for this purpose.\n // This project uses @babel/plugin-transform-spread in \"loose\" mode which only works with Array values.\n // Other types (e.g. typed arrays, Sets) will not spread correctly.\n const array = Array.from(data);\n\n let formatted = '';\n for (let i = 0; i < array.length; i++) {\n const entryOrEntries = array[i];\n\n if (i > 0) {\n formatted += ', ';\n }\n\n // TRICKY\n // Browsers display Maps and Sets differently.\n // To mimic their behavior, detect if we've been given an entries tuple.\n // Map(2) {\"abc\" => 123, \"def\" => 123}\n // Set(2) {\"abc\", 123}\n if (isArray(entryOrEntries)) {\n const key = formatDataForPreview(entryOrEntries[0], true);\n const value = formatDataForPreview(entryOrEntries[1], false);\n formatted += `${key} => ${value}`;\n } else {\n formatted += formatDataForPreview(entryOrEntries, false);\n }\n\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n\n return `${name}(${data.size}) {${truncateForDisplay(formatted)}}`;\n } else {\n return `${name}(${data.size})`;\n }\n case 'opaque_iterator': {\n return data[Symbol.toStringTag];\n }\n case 'date':\n return data.toString();\n case 'class_instance':\n return data.constructor.name;\n case 'object':\n if (showFormattedValue) {\n const keys = Array.from(getAllEnumerableKeys(data)).sort(alphaSortKeys);\n\n let formatted = '';\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (i > 0) {\n formatted += ', ';\n }\n formatted += `${key.toString()}: ${formatDataForPreview(\n data[key],\n false,\n )}`;\n if (formatted.length > MAX_PREVIEW_STRING_LENGTH) {\n // Prevent doing a lot of unnecessary iteration...\n break;\n }\n }\n return `{${truncateForDisplay(formatted)}}`;\n } else {\n return '{…}';\n }\n case 'boolean':\n case 'number':\n case 'infinity':\n case 'nan':\n case 'null':\n case 'undefined':\n return data;\n default:\n try {\n return truncateForDisplay(String(data));\n } catch (error) {\n return 'unserializable';\n }\n }\n}\n\n// Basically checking that the object only has Object in its prototype chain\nexport const isPlainObject = (object: Object): boolean => {\n const objectPrototype = Object.getPrototypeOf(object);\n if (!objectPrototype) return true;\n\n const objectParentPrototype = Object.getPrototypeOf(objectPrototype);\n return !objectParentPrototype;\n};\n\nexport function backendToFrontendSerializedElementMapper(\n element: SerializedElementBackend,\n): SerializedElementFrontend {\n const {formattedDisplayName, hocDisplayNames, compiledWithForget} =\n parseElementDisplayNameFromBackend(element.displayName, element.type);\n\n return {\n ...element,\n displayName: formattedDisplayName,\n hocDisplayNames,\n compiledWithForget,\n };\n}\n\n// Chrome normalizes urls like webpack-internals:// but new URL don't, so cannot use new URL here.\nexport function normalizeUrl(url: string): string {\n return url.replace('/./', '/');\n}\n\nexport function getIsReloadAndProfileSupported(): boolean {\n // Notify the frontend if the backend supports the Storage API (e.g. localStorage).\n // If not, features like reload-and-profile will not work correctly and must be disabled.\n let isBackendStorageAPISupported = false;\n try {\n localStorage.getItem('test');\n isBackendStorageAPISupported = true;\n } catch (error) {}\n\n return isBackendStorageAPISupported && isSynchronousXHRSupported();\n}\n\n// Expected to be used only by browser extension and react-devtools-inline\nexport function getIfReloadedAndProfiling(): boolean {\n return (\n sessionStorageGetItem(SESSION_STORAGE_RELOAD_AND_PROFILE_KEY) === 'true'\n );\n}\n\nexport function getProfilingSettings(): ProfilingSettings {\n return {\n recordChangeDescriptions:\n sessionStorageGetItem(SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY) ===\n 'true',\n recordTimeline:\n sessionStorageGetItem(SESSION_STORAGE_RECORD_TIMELINE_KEY) === 'true',\n };\n}\n\nexport function onReloadAndProfile(\n recordChangeDescriptions: boolean,\n recordTimeline: boolean,\n): void {\n sessionStorageSetItem(SESSION_STORAGE_RELOAD_AND_PROFILE_KEY, 'true');\n sessionStorageSetItem(\n SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY,\n recordChangeDescriptions ? 'true' : 'false',\n );\n sessionStorageSetItem(\n SESSION_STORAGE_RECORD_TIMELINE_KEY,\n recordTimeline ? 'true' : 'false',\n );\n}\n\nexport function onReloadAndProfileFlagsReset(): void {\n sessionStorageRemoveItem(SESSION_STORAGE_RELOAD_AND_PROFILE_KEY);\n sessionStorageRemoveItem(SESSION_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY);\n sessionStorageRemoveItem(SESSION_STORAGE_RECORD_TIMELINE_KEY);\n}\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n value[key] = replacement;\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n parent[key] = value;\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\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 * @flow\n */\n\nimport JSON5 from 'json5';\n\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\nimport type {StateContext} from './views/Components/TreeContext';\nimport type Store from './store';\n\nexport function printElement(\n element: Element,\n includeWeight: boolean = false,\n): string {\n let prefix = ' ';\n if (element.children.length > 0) {\n prefix = element.isCollapsed ? '▸' : '▾';\n }\n\n let key = '';\n if (element.key !== null) {\n key = ` key=\"${element.key}\"`;\n }\n\n let hocDisplayNames = null;\n if (element.hocDisplayNames !== null) {\n hocDisplayNames = [...element.hocDisplayNames];\n }\n\n const hocs =\n hocDisplayNames === null ? '' : ` [${hocDisplayNames.join('][')}]`;\n\n let suffix = '';\n if (includeWeight) {\n suffix = ` (${element.isCollapsed ? 1 : element.weight})`;\n }\n\n return `${' '.repeat(element.depth + 1)}${prefix} <${\n element.displayName || 'null'\n }${key}>${hocs}${suffix}`;\n}\n\nexport function printOwnersList(\n elements: Array<Element>,\n includeWeight: boolean = false,\n): string {\n return elements\n .map(element => printElement(element, includeWeight))\n .join('\\n');\n}\n\nexport function printStore(\n store: Store,\n includeWeight: boolean = false,\n state: StateContext | null = null,\n): string {\n const snapshotLines = [];\n\n let rootWeight = 0;\n\n function printSelectedMarker(index: number): string {\n if (state === null) {\n return '';\n }\n return state.inspectedElementIndex === index ? `→` : ' ';\n }\n\n function printErrorsAndWarnings(element: Element): string {\n const {errorCount, warningCount} =\n store.getErrorAndWarningCountForElementID(element.id);\n if (errorCount === 0 && warningCount === 0) {\n return '';\n }\n return ` ${errorCount > 0 ? '✕' : ''}${warningCount > 0 ? '⚠' : ''}`;\n }\n\n const ownerFlatTree = state !== null ? state.ownerFlatTree : null;\n if (ownerFlatTree !== null) {\n snapshotLines.push(\n '[owners]' + (includeWeight ? ` (${ownerFlatTree.length})` : ''),\n );\n ownerFlatTree.forEach((element, index) => {\n const printedSelectedMarker = printSelectedMarker(index);\n const printedElement = printElement(element, false);\n const printedErrorsAndWarnings = printErrorsAndWarnings(element);\n snapshotLines.push(\n `${printedSelectedMarker}${printedElement}${printedErrorsAndWarnings}`,\n );\n });\n } else {\n const errorsAndWarnings = store._errorsAndWarnings;\n if (errorsAndWarnings.size > 0) {\n let errorCount = 0;\n let warningCount = 0;\n errorsAndWarnings.forEach(entry => {\n errorCount += entry.errorCount;\n warningCount += entry.warningCount;\n });\n\n snapshotLines.push(`✕ ${errorCount}, ⚠ ${warningCount}`);\n }\n\n store.roots.forEach(rootID => {\n const {weight} = ((store.getElementByID(rootID): any): Element);\n const maybeWeightLabel = includeWeight ? ` (${weight})` : '';\n\n // Store does not (yet) expose a way to get errors/warnings per root.\n snapshotLines.push(`[root]${maybeWeightLabel}`);\n\n for (let i = rootWeight; i < rootWeight + weight; i++) {\n const element = store.getElementAtIndex(i);\n\n if (element == null) {\n throw Error(`Could not find element at index \"${i}\"`);\n }\n\n const printedSelectedMarker = printSelectedMarker(i);\n const printedElement = printElement(element, includeWeight);\n const printedErrorsAndWarnings = printErrorsAndWarnings(element);\n snapshotLines.push(\n `${printedSelectedMarker}${printedElement}${printedErrorsAndWarnings}`,\n );\n }\n\n rootWeight += weight;\n });\n\n // Make sure the pretty-printed test align with the Store's reported number of total rows.\n if (rootWeight !== store.numElements) {\n throw Error(\n `Inconsistent Store state. Individual root weights (\"${rootWeight}\") do not match total weight (\"${store.numElements}\")`,\n );\n }\n\n // If roots have been unmounted, verify that they've been removed from maps.\n // This helps ensure the Store doesn't leak memory.\n store.assertExpectedRootMapSizes();\n }\n\n return snapshotLines.join('\\n');\n}\n\n// We use JSON.parse to parse string values\n// e.g. 'foo' is not valid JSON but it is a valid string\n// so this method replaces e.g. 'foo' with \"foo\"\nexport function sanitizeForParse(value: any): any | string {\n if (typeof value === 'string') {\n if (\n value.length >= 2 &&\n value.charAt(0) === \"'\" &&\n value.charAt(value.length - 1) === \"'\"\n ) {\n return '\"' + value.slice(1, value.length - 1) + '\"';\n }\n }\n return value;\n}\n\nexport function smartParse(value: any): any | void | number {\n switch (value) {\n case 'Infinity':\n return Infinity;\n case 'NaN':\n return NaN;\n case 'undefined':\n return undefined;\n default:\n return JSON5.parse(sanitizeForParse(value));\n }\n}\n\nexport function smartStringify(value: any): string {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n return 'NaN';\n } else if (!Number.isFinite(value)) {\n return 'Infinity';\n }\n } else if (value === undefined) {\n return 'undefined';\n }\n\n return JSON.stringify(value);\n}\n\n// [url, row, column]\nexport type Stack = [string, number, number];\n\nconst STACK_DELIMETER = /\\n\\s+at /;\nconst STACK_SOURCE_LOCATION = /([^\\s]+) \\((.+):(.+):(.+)\\)/;\n\nexport function stackToComponentSources(\n stack: string,\n): Array<[string, ?Stack]> {\n const out: Array<[string, ?Stack]> = [];\n stack\n .split(STACK_DELIMETER)\n .slice(1)\n .forEach(entry => {\n const match = STACK_SOURCE_LOCATION.exec(entry);\n if (match) {\n const [, component, url, row, column] = match;\n out.push([component, [url, parseInt(row, 10), parseInt(column, 10)]]);\n } else {\n out.push([entry, null]);\n }\n });\n return out;\n}\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 * @flow\n */\n\nimport {PROFILER_EXPORT_VERSION} from 'react-devtools-shared/src/constants';\nimport {backendToFrontendSerializedElementMapper} from 'react-devtools-shared/src/utils';\n\nimport type {ProfilingDataBackend} from 'react-devtools-shared/src/backend/types';\nimport type {\n ProfilingDataExport,\n ProfilingDataForRootExport,\n ProfilingDataForRootFrontend,\n ProfilingDataFrontend,\n SnapshotNode,\n} from './types';\nimport type {\n TimelineData,\n TimelineDataExport,\n} from 'react-devtools-timeline/src/types';\n\nconst commitGradient = [\n 'var(--color-commit-gradient-0)',\n 'var(--color-commit-gradient-1)',\n 'var(--color-commit-gradient-2)',\n 'var(--color-commit-gradient-3)',\n 'var(--color-commit-gradient-4)',\n 'var(--color-commit-gradient-5)',\n 'var(--color-commit-gradient-6)',\n 'var(--color-commit-gradient-7)',\n 'var(--color-commit-gradient-8)',\n 'var(--color-commit-gradient-9)',\n];\n\n// Combines info from the Store (frontend) and renderer interfaces (backend) into the format required by the Profiler UI.\n// This format can then be quickly exported (and re-imported).\nexport function prepareProfilingDataFrontendFromBackendAndStore(\n dataBackends: Array<ProfilingDataBackend>,\n operationsByRootID: Map<number, Array<Array<number>>>,\n snapshotsByRootID: Map<number, Map<number, SnapshotNode>>,\n): ProfilingDataFrontend {\n const dataForRoots: Map<number, ProfilingDataForRootFrontend> = new Map();\n\n const timelineDataArray = [];\n\n dataBackends.forEach(dataBackend => {\n const {timelineData} = dataBackend;\n if (timelineData != null) {\n const {\n batchUIDToMeasuresKeyValueArray,\n internalModuleSourceToRanges,\n laneToLabelKeyValueArray,\n laneToReactMeasureKeyValueArray,\n ...rest\n } = timelineData;\n\n timelineDataArray.push({\n ...rest,\n\n // Most of the data is safe to parse as-is,\n // but we need to convert the nested Arrays back to Maps.\n batchUIDToMeasuresMap: new Map(batchUIDToMeasuresKeyValueArray),\n internalModuleSourceToRanges: new Map(internalModuleSourceToRanges),\n laneToLabelMap: new Map(laneToLabelKeyValueArray),\n laneToReactMeasureMap: new Map(laneToReactMeasureKeyValueArray),\n });\n }\n\n dataBackend.dataForRoots.forEach(\n ({commitData, displayName, initialTreeBaseDurations, rootID}) => {\n const operations = operationsByRootID.get(rootID);\n if (operations == null) {\n throw Error(\n `Could not find profiling operations for root \"${rootID}\"`,\n );\n }\n\n const snapshots = snapshotsByRootID.get(rootID);\n if (snapshots == null) {\n throw Error(\n `Could not find profiling snapshots for root \"${rootID}\"`,\n );\n }\n\n // Do not filter empty commits from the profiler data!\n // Hiding \"empty\" commits might cause confusion too.\n // A commit *did happen* even if none of the components the Profiler is showing were involved.\n const convertedCommitData = commitData.map(\n (commitDataBackend, commitIndex) => ({\n changeDescriptions:\n commitDataBackend.changeDescriptions != null\n ? new Map(commitDataBackend.changeDescriptions)\n : null,\n duration: commitDataBackend.duration,\n effectDuration: commitDataBackend.effectDuration,\n fiberActualDurations: new Map(\n commitDataBackend.fiberActualDurations,\n ),\n fiberSelfDurations: new Map(commitDataBackend.fiberSelfDurations),\n passiveEffectDuration: commitDataBackend.passiveEffectDuration,\n priorityLevel: commitDataBackend.priorityLevel,\n timestamp: commitDataBackend.timestamp,\n updaters:\n commitDataBackend.updaters !== null\n ? commitDataBackend.updaters.map(\n backendToFrontendSerializedElementMapper,\n )\n : null,\n }),\n );\n\n dataForRoots.set(rootID, {\n commitData: convertedCommitData,\n displayName,\n initialTreeBaseDurations: new Map(initialTreeBaseDurations),\n operations,\n rootID,\n snapshots,\n });\n },\n );\n });\n\n return {dataForRoots, imported: false, timelineData: timelineDataArray};\n}\n\n// Converts a Profiling data export into the format required by the Store.\nexport function prepareProfilingDataFrontendFromExport(\n profilingDataExport: ProfilingDataExport,\n): ProfilingDataFrontend {\n const {version} = profilingDataExport;\n\n if (version !== PROFILER_EXPORT_VERSION) {\n throw Error(\n `Unsupported profile export version \"${version}\". Supported version is \"${PROFILER_EXPORT_VERSION}\".`,\n );\n }\n\n const timelineData: Array<TimelineData> = profilingDataExport.timelineData\n ? profilingDataExport.timelineData.map(\n ({\n batchUIDToMeasuresKeyValueArray,\n componentMeasures,\n duration,\n flamechart,\n internalModuleSourceToRanges,\n laneToLabelKeyValueArray,\n laneToReactMeasureKeyValueArray,\n nativeEvents,\n networkMeasures,\n otherUserTimingMarks,\n reactVersion,\n schedulingEvents,\n snapshots,\n snapshotHeight,\n startTime,\n suspenseEvents,\n thrownErrors,\n }) => ({\n // Most of the data is safe to parse as-is,\n // but we need to convert the nested Arrays back to Maps.\n batchUIDToMeasuresMap: new Map(batchUIDToMeasuresKeyValueArray),\n componentMeasures,\n duration,\n flamechart,\n internalModuleSourceToRanges: new Map(internalModuleSourceToRanges),\n laneToLabelMap: new Map(laneToLabelKeyValueArray),\n laneToReactMeasureMap: new Map(laneToReactMeasureKeyValueArray),\n nativeEvents,\n networkMeasures,\n otherUserTimingMarks,\n reactVersion,\n schedulingEvents,\n snapshots,\n snapshotHeight,\n startTime,\n suspenseEvents,\n thrownErrors,\n }),\n )\n : [];\n\n const dataForRoots: Map<number, ProfilingDataForRootFrontend> = new Map();\n profilingDataExport.dataForRoots.forEach(\n ({\n commitData,\n displayName,\n initialTreeBaseDurations,\n operations,\n rootID,\n snapshots,\n }) => {\n dataForRoots.set(rootID, {\n commitData: commitData.map(\n ({\n changeDescriptions,\n duration,\n effectDuration,\n fiberActualDurations,\n fiberSelfDurations,\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n updaters,\n }) => ({\n changeDescriptions:\n changeDescriptions != null ? new Map(changeDescriptions) : null,\n duration,\n effectDuration,\n fiberActualDurations: new Map(fiberActualDurations),\n fiberSelfDurations: new Map(fiberSelfDurations),\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n updaters,\n }),\n ),\n displayName,\n initialTreeBaseDurations: new Map(initialTreeBaseDurations),\n operations,\n rootID,\n snapshots: new Map(snapshots),\n });\n },\n );\n\n return {\n dataForRoots,\n imported: true,\n timelineData,\n };\n}\n\n// Converts a Store Profiling data into a format that can be safely (JSON) serialized for export.\nexport function prepareProfilingDataExport(\n profilingDataFrontend: ProfilingDataFrontend,\n): ProfilingDataExport {\n const timelineData: Array<TimelineDataExport> =\n profilingDataFrontend.timelineData.map(\n ({\n batchUIDToMeasuresMap,\n componentMeasures,\n duration,\n flamechart,\n internalModuleSourceToRanges,\n laneToLabelMap,\n laneToReactMeasureMap,\n nativeEvents,\n networkMeasures,\n otherUserTimingMarks,\n reactVersion,\n schedulingEvents,\n snapshots,\n snapshotHeight,\n startTime,\n suspenseEvents,\n thrownErrors,\n }) => ({\n // Most of the data is safe to serialize as-is,\n // but we need to convert the Maps to nested Arrays.\n batchUIDToMeasuresKeyValueArray: Array.from(\n batchUIDToMeasuresMap.entries(),\n ),\n componentMeasures: componentMeasures,\n duration,\n flamechart,\n internalModuleSourceToRanges: Array.from(\n internalModuleSourceToRanges.entries(),\n ),\n laneToLabelKeyValueArray: Array.from(laneToLabelMap.entries()),\n laneToReactMeasureKeyValueArray: Array.from(\n laneToReactMeasureMap.entries(),\n ),\n nativeEvents,\n networkMeasures,\n otherUserTimingMarks,\n reactVersion,\n schedulingEvents,\n snapshots,\n snapshotHeight,\n startTime,\n suspenseEvents,\n thrownErrors,\n }),\n );\n\n const dataForRoots: Array<ProfilingDataForRootExport> = [];\n profilingDataFrontend.dataForRoots.forEach(\n ({\n commitData,\n displayName,\n initialTreeBaseDurations,\n operations,\n rootID,\n snapshots,\n }) => {\n dataForRoots.push({\n commitData: commitData.map(\n ({\n changeDescriptions,\n duration,\n effectDuration,\n fiberActualDurations,\n fiberSelfDurations,\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n updaters,\n }) => ({\n changeDescriptions:\n changeDescriptions != null\n ? Array.from(changeDescriptions.entries())\n : null,\n duration,\n effectDuration,\n fiberActualDurations: Array.from(fiberActualDurations.entries()),\n fiberSelfDurations: Array.from(fiberSelfDurations.entries()),\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n updaters,\n }),\n ),\n displayName,\n initialTreeBaseDurations: Array.from(\n initialTreeBaseDurations.entries(),\n ),\n operations,\n rootID,\n snapshots: Array.from(snapshots.entries()),\n });\n },\n );\n\n return {\n version: PROFILER_EXPORT_VERSION,\n dataForRoots,\n timelineData,\n };\n}\n\nexport const getGradientColor = (value: number): string => {\n const maxIndex = commitGradient.length - 1;\n let index;\n if (Number.isNaN(value)) {\n index = 0;\n } else if (!Number.isFinite(value)) {\n index = maxIndex;\n } else {\n index = Math.max(0, Math.min(maxIndex, value)) * maxIndex;\n }\n return commitGradient[Math.round(index)];\n};\n\nexport const formatDuration = (duration: number): number | string =>\n Math.round(duration * 10) / 10 || '<0.1';\nexport const formatPercentage = (percentage: number): number =>\n Math.round(percentage * 100);\nexport const formatTime = (timestamp: number): number =>\n Math.round(Math.round(timestamp) / 100) / 10;\n\nexport const scale =\n (\n minValue: number,\n maxValue: number,\n minRange: number,\n maxRange: number,\n ): ((value: number, fallbackValue: number) => number) =>\n (value: number, fallbackValue: number) =>\n maxValue - minValue === 0\n ? fallbackValue\n : ((value - minValue) / (maxValue - minValue)) * (maxRange - minRange);\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 * @flow\n */\n\nimport {\n __DEBUG__,\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REMOVE_ROOT,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_SET_SUBTREE_MODE,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS,\n} from 'react-devtools-shared/src/constants';\nimport {\n parseElementDisplayNameFromBackend,\n utfDecodeStringWithRanges,\n} from 'react-devtools-shared/src/utils';\nimport {ElementTypeRoot} from 'react-devtools-shared/src/frontend/types';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {ElementType} from 'react-devtools-shared/src/frontend/types';\nimport type {\n CommitTree,\n CommitTreeNode,\n ProfilingDataForRootFrontend,\n} from 'react-devtools-shared/src/devtools/views/Profiler/types';\n\nconst debug = (methodName: string, ...args: Array<string>) => {\n if (__DEBUG__) {\n console.log(\n `%cCommitTreeBuilder %c${methodName}`,\n 'color: pink; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n};\n\nconst rootToCommitTreeMap: Map<number, Array<CommitTree>> = new Map();\n\nexport function getCommitTree({\n commitIndex,\n profilerStore,\n rootID,\n}: {\n commitIndex: number,\n profilerStore: ProfilerStore,\n rootID: number,\n}): CommitTree {\n if (!rootToCommitTreeMap.has(rootID)) {\n rootToCommitTreeMap.set(rootID, []);\n }\n\n const commitTrees = ((rootToCommitTreeMap.get(\n rootID,\n ): any): Array<CommitTree>);\n if (commitIndex < commitTrees.length) {\n return commitTrees[commitIndex];\n }\n\n const {profilingData} = profilerStore;\n if (profilingData === null) {\n throw Error(`No profiling data available`);\n }\n\n const dataForRoot = profilingData.dataForRoots.get(rootID);\n if (dataForRoot == null) {\n throw Error(`Could not find profiling data for root \"${rootID}\"`);\n }\n\n const {operations} = dataForRoot;\n if (operations.length <= commitIndex) {\n throw Error(\n `getCommitTree(): Invalid commit \"${commitIndex}\" for root \"${rootID}\". There are only \"${operations.length}\" commits.`,\n );\n }\n\n let commitTree: CommitTree = ((null: any): CommitTree);\n for (let index = commitTrees.length; index <= commitIndex; index++) {\n // Commits are generated sequentially and cached.\n // If this is the very first commit, start with the cached snapshot and apply the first mutation.\n // Otherwise load (or generate) the previous commit and append a mutation to it.\n if (index === 0) {\n const nodes = new Map<number, CommitTreeNode>();\n\n // Construct the initial tree.\n recursivelyInitializeTree(rootID, 0, nodes, dataForRoot);\n\n // Mutate the tree\n if (operations != null && index < operations.length) {\n commitTree = updateTree({nodes, rootID}, operations[index]);\n\n if (__DEBUG__) {\n __printTree(commitTree);\n }\n\n commitTrees.push(commitTree);\n }\n } else {\n const previousCommitTree = commitTrees[index - 1];\n commitTree = updateTree(previousCommitTree, operations[index]);\n\n if (__DEBUG__) {\n __printTree(commitTree);\n }\n\n commitTrees.push(commitTree);\n }\n }\n\n return commitTree;\n}\n\nfunction recursivelyInitializeTree(\n id: number,\n parentID: number,\n nodes: Map<number, CommitTreeNode>,\n dataForRoot: ProfilingDataForRootFrontend,\n): void {\n const node = dataForRoot.snapshots.get(id);\n if (node != null) {\n nodes.set(id, {\n id,\n children: node.children,\n displayName: node.displayName,\n hocDisplayNames: node.hocDisplayNames,\n key: node.key,\n parentID,\n treeBaseDuration: ((dataForRoot.initialTreeBaseDurations.get(\n id,\n ): any): number),\n type: node.type,\n compiledWithForget: node.compiledWithForget,\n });\n\n node.children.forEach(childID =>\n recursivelyInitializeTree(childID, id, nodes, dataForRoot),\n );\n }\n}\n\nfunction updateTree(\n commitTree: CommitTree,\n operations: Array<number>,\n): CommitTree {\n // Clone the original tree so edits don't affect it.\n const nodes = new Map(commitTree.nodes);\n\n // Clone nodes before mutating them so edits don't affect them.\n const getClonedNode = (id: number): CommitTreeNode => {\n // $FlowFixMe[prop-missing] - recommended fix is to use object spread operator\n const clonedNode = ((Object.assign(\n {},\n nodes.get(id),\n ): any): CommitTreeNode);\n nodes.set(id, clonedNode);\n return clonedNode;\n };\n\n let i = 2;\n let id: number = ((null: any): number);\n\n // Reassemble the string table.\n const stringTable: Array<null | string> = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i++];\n const stringTableEnd = i + stringTableSize;\n while (i < stringTableEnd) {\n const nextLength = operations[i++];\n const nextString = utfDecodeStringWithRanges(\n operations,\n i,\n i + nextLength - 1,\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n\n switch (operation) {\n case TREE_OPERATION_ADD: {\n id = ((operations[i + 1]: any): number);\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (nodes.has(id)) {\n throw new Error(\n `Commit tree already contains fiber \"${id}\". This is a bug in React DevTools.`,\n );\n }\n\n if (type === ElementTypeRoot) {\n i++; // isStrictModeCompliant\n i++; // Profiling flag\n i++; // supportsStrictMode flag\n i++; // hasOwnerMetadata flag\n\n if (__DEBUG__) {\n debug('Add', `new root fiber ${id}`);\n }\n\n const node: CommitTreeNode = {\n children: [],\n displayName: null,\n hocDisplayNames: null,\n id,\n key: null,\n parentID: 0,\n treeBaseDuration: 0, // This will be updated by a subsequent operation\n type,\n compiledWithForget: false,\n };\n\n nodes.set(id, node);\n } else {\n const parentID = ((operations[i]: any): number);\n i++;\n\n i++; // ownerID\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n const keyStringID = operations[i];\n const key = stringTable[keyStringID];\n i++;\n\n if (__DEBUG__) {\n debug(\n 'Add',\n `fiber ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n\n const parentNode = getClonedNode(parentID);\n parentNode.children = parentNode.children.concat(id);\n\n const {formattedDisplayName, hocDisplayNames, compiledWithForget} =\n parseElementDisplayNameFromBackend(displayName, type);\n\n const node: CommitTreeNode = {\n children: [],\n displayName: formattedDisplayName,\n hocDisplayNames: hocDisplayNames,\n id,\n key,\n parentID,\n treeBaseDuration: 0, // This will be updated by a subsequent operation\n type,\n compiledWithForget,\n };\n\n nodes.set(id, node);\n }\n\n break;\n }\n case TREE_OPERATION_REMOVE: {\n const removeLength = ((operations[i + 1]: any): number);\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n id = ((operations[i]: any): number);\n i++;\n\n if (!nodes.has(id)) {\n throw new Error(\n `Commit tree does not contain fiber \"${id}\". This is a bug in React DevTools.`,\n );\n }\n\n const node = getClonedNode(id);\n const parentID = node.parentID;\n\n nodes.delete(id);\n\n if (!nodes.has(parentID)) {\n // No-op\n } else {\n const parentNode = getClonedNode(parentID);\n\n if (__DEBUG__) {\n debug('Remove', `fiber ${id} from parent ${parentID}`);\n }\n\n parentNode.children = parentNode.children.filter(\n childID => childID !== id,\n );\n }\n }\n break;\n }\n case TREE_OPERATION_REMOVE_ROOT: {\n throw Error('Operation REMOVE_ROOT is not supported while profiling.');\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n id = ((operations[i + 1]: any): number);\n const numChildren = ((operations[i + 2]: any): number);\n const children = ((operations.slice(\n i + 3,\n i + 3 + numChildren,\n ): any): Array<number>);\n\n i = i + 3 + numChildren;\n\n if (__DEBUG__) {\n debug('Re-order', `fiber ${id} children ${children.join(',')}`);\n }\n\n const node = getClonedNode(id);\n node.children = Array.from(children);\n\n break;\n }\n case TREE_OPERATION_SET_SUBTREE_MODE: {\n id = operations[i + 1];\n const mode = operations[i + 1];\n\n i += 3;\n\n if (__DEBUG__) {\n debug('Subtree mode', `Subtree with root ${id} set to mode ${mode}`);\n }\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION: {\n id = operations[i + 1];\n\n const node = getClonedNode(id);\n node.treeBaseDuration = operations[i + 2] / 1000; // Convert microseconds back to milliseconds;\n\n if (__DEBUG__) {\n debug(\n 'Update',\n `fiber ${id} treeBaseDuration to ${node.treeBaseDuration}`,\n );\n }\n\n i += 3;\n break;\n }\n case TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS: {\n id = operations[i + 1];\n const numErrors = operations[i + 2];\n const numWarnings = operations[i + 3];\n\n i += 4;\n\n if (__DEBUG__) {\n debug(\n 'Warnings and Errors update',\n `fiber ${id} has ${numErrors} errors and ${numWarnings} warnings`,\n );\n }\n break;\n }\n\n default:\n throw Error(`Unsupported Bridge operation \"${operation}\"`);\n }\n }\n\n return {\n nodes,\n rootID: commitTree.rootID,\n };\n}\n\nexport function invalidateCommitTrees(): void {\n rootToCommitTreeMap.clear();\n}\n\n// DEBUG\nconst __printTree = (commitTree: CommitTree) => {\n if (__DEBUG__) {\n const {nodes, rootID} = commitTree;\n console.group('__printTree()');\n const queue = [rootID, 0];\n while (queue.length > 0) {\n const id = queue.shift();\n const depth = queue.shift();\n\n // $FlowFixMe[incompatible-call]\n const node = nodes.get(id);\n if (node == null) {\n // $FlowFixMe[incompatible-type]\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n console.log(\n // $FlowFixMe[incompatible-call]\n `${'•'.repeat(depth)}${node.id}:${node.displayName || ''} ${\n node.key ? `key:\"${node.key}\"` : ''\n } (${node.treeBaseDuration})`,\n );\n\n node.children.forEach(childID => {\n // $FlowFixMe[unsafe-addition]\n queue.push(childID, depth + 1);\n });\n }\n console.groupEnd();\n }\n};\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 * @flow\n */\n\nimport {formatDuration} from './utils';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {CommitTree} from './types';\n\nexport type ChartNode = {\n actualDuration: number,\n didRender: boolean,\n id: number,\n label: string,\n name: string,\n offset: number,\n selfDuration: number,\n treeBaseDuration: number,\n};\n\nexport type ChartData = {\n baseDuration: number,\n depth: number,\n idToDepthMap: Map<number, number>,\n maxSelfDuration: number,\n renderPathNodes: Set<number>,\n rows: Array<Array<ChartNode>>,\n};\n\nconst cachedChartData: Map<string, ChartData> = new Map();\n\nexport function getChartData({\n commitIndex,\n commitTree,\n profilerStore,\n rootID,\n}: {\n commitIndex: number,\n commitTree: CommitTree,\n profilerStore: ProfilerStore,\n rootID: number,\n}): ChartData {\n const commitDatum = profilerStore.getCommitData(rootID, commitIndex);\n\n const {fiberActualDurations, fiberSelfDurations} = commitDatum;\n const {nodes} = commitTree;\n\n const chartDataKey = `${rootID}-${commitIndex}`;\n if (cachedChartData.has(chartDataKey)) {\n return ((cachedChartData.get(chartDataKey): any): ChartData);\n }\n\n const idToDepthMap: Map<number, number> = new Map();\n const renderPathNodes: Set<number> = new Set();\n const rows: Array<Array<ChartNode>> = [];\n\n let maxDepth = 0;\n let maxSelfDuration = 0;\n\n // Generate flame graph structure using tree base durations.\n const walkTree = (\n id: number,\n rightOffset: number,\n currentDepth: number,\n ): ChartNode => {\n idToDepthMap.set(id, currentDepth);\n\n const node = nodes.get(id);\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n const {\n children,\n displayName,\n hocDisplayNames,\n key,\n treeBaseDuration,\n compiledWithForget,\n } = node;\n\n const actualDuration = fiberActualDurations.get(id) || 0;\n const selfDuration = fiberSelfDurations.get(id) || 0;\n const didRender = fiberActualDurations.has(id);\n\n const name = displayName || 'Anonymous';\n const maybeKey = key !== null ? ` key=\"${key}\"` : '';\n\n let maybeBadge = '';\n const maybeForgetBadge = compiledWithForget ? '✨ ' : '';\n\n if (hocDisplayNames !== null && hocDisplayNames.length > 0) {\n maybeBadge = ` (${hocDisplayNames[0]})`;\n }\n\n let label = `${maybeForgetBadge}${name}${maybeBadge}${maybeKey}`;\n if (didRender) {\n label += ` (${formatDuration(selfDuration)}ms of ${formatDuration(\n actualDuration,\n )}ms)`;\n }\n\n maxDepth = Math.max(maxDepth, currentDepth);\n maxSelfDuration = Math.max(maxSelfDuration, selfDuration);\n\n const chartNode: ChartNode = {\n actualDuration,\n didRender,\n id,\n label,\n name,\n offset: rightOffset - treeBaseDuration,\n selfDuration,\n treeBaseDuration,\n };\n\n if (currentDepth > rows.length) {\n rows.push([chartNode]);\n } else {\n rows[currentDepth - 1].push(chartNode);\n }\n\n for (let i = children.length - 1; i >= 0; i--) {\n const childID = children[i];\n const childChartNode: $FlowFixMe = walkTree(\n childID,\n rightOffset,\n currentDepth + 1,\n );\n rightOffset -= childChartNode.treeBaseDuration;\n }\n\n return chartNode;\n };\n\n let baseDuration = 0;\n\n // Special case to handle unmounted roots.\n if (nodes.size > 0) {\n // Skip over the root; we don't want to show it in the flamegraph.\n const root = nodes.get(rootID);\n if (root == null) {\n throw Error(\n `Could not find root node with id \"${rootID}\" in commit tree`,\n );\n }\n\n // Don't assume a single root.\n // Component filters or Fragments might lead to multiple \"roots\" in a flame graph.\n for (let i = root.children.length - 1; i >= 0; i--) {\n const id = root.children[i];\n const node = nodes.get(id);\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n baseDuration += node.treeBaseDuration;\n walkTree(id, baseDuration, 1);\n }\n\n fiberActualDurations.forEach((duration, id) => {\n let node = nodes.get(id);\n if (node != null) {\n let currentID = node.parentID;\n while (currentID !== 0) {\n if (renderPathNodes.has(currentID)) {\n // We've already walked this path; we can skip it.\n break;\n } else {\n renderPathNodes.add(currentID);\n }\n\n node = nodes.get(currentID);\n currentID = node != null ? node.parentID : 0;\n }\n }\n });\n }\n\n const chartData = {\n baseDuration,\n depth: maxDepth,\n idToDepthMap,\n maxSelfDuration,\n renderPathNodes,\n rows,\n };\n\n cachedChartData.set(chartDataKey, chartData);\n\n return chartData;\n}\n\nexport function invalidateChartData(): void {\n cachedChartData.clear();\n}\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 * @flow\n */\n\nimport {\n ElementTypeForwardRef,\n ElementTypeMemo,\n} from 'react-devtools-shared/src/frontend/types';\nimport {formatDuration} from './utils';\nimport ProfilerStore from 'react-devtools-shared/src/devtools/ProfilerStore';\n\nimport type {CommitTree} from './types';\n\nexport type ChartNode = {\n id: number,\n label: string,\n name: string,\n value: number,\n};\n\nexport type ChartData = {\n maxValue: number,\n nodes: Array<ChartNode>,\n};\n\nconst cachedChartData: Map<string, ChartData> = new Map();\n\nexport function getChartData({\n commitIndex,\n commitTree,\n profilerStore,\n rootID,\n}: {\n commitIndex: number,\n commitTree: CommitTree,\n profilerStore: ProfilerStore,\n rootID: number,\n}): ChartData {\n const commitDatum = profilerStore.getCommitData(rootID, commitIndex);\n\n const {fiberActualDurations, fiberSelfDurations} = commitDatum;\n const {nodes} = commitTree;\n\n const chartDataKey = `${rootID}-${commitIndex}`;\n if (cachedChartData.has(chartDataKey)) {\n return ((cachedChartData.get(chartDataKey): any): ChartData);\n }\n\n let maxSelfDuration = 0;\n\n const chartNodes: Array<ChartNode> = [];\n fiberActualDurations.forEach((actualDuration, id) => {\n const node = nodes.get(id);\n\n if (node == null) {\n throw Error(`Could not find node with id \"${id}\" in commit tree`);\n }\n\n const {displayName, key, parentID, type, compiledWithForget} = node;\n\n // Don't show the root node in this chart.\n if (parentID === 0) {\n return;\n }\n const selfDuration = fiberSelfDurations.get(id) || 0;\n maxSelfDuration = Math.max(maxSelfDuration, selfDuration);\n\n const name = displayName || 'Anonymous';\n const maybeKey = key !== null ? ` key=\"${key}\"` : '';\n const maybeForgetBadge = compiledWithForget ? '✨ ' : '';\n\n let maybeBadge = '';\n if (type === ElementTypeForwardRef) {\n maybeBadge = ' (ForwardRef)';\n } else if (type === ElementTypeMemo) {\n maybeBadge = ' (Memo)';\n }\n\n const label = `${maybeForgetBadge}${name}${maybeBadge}${maybeKey} (${formatDuration(\n selfDuration,\n )}ms)`;\n chartNodes.push({\n id,\n label,\n name,\n value: selfDuration,\n });\n });\n\n const chartData = {\n maxValue: maxSelfDuration,\n nodes: chartNodes.sort((a, b) => b.value - a.value),\n };\n\n cachedChartData.set(chartDataKey, chartData);\n\n return chartData;\n}\n\nexport function invalidateChartData(): void {\n cachedChartData.clear();\n}\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 * @flow\n */\n\nimport ProfilerStore from './ProfilerStore';\nimport {\n getCommitTree,\n invalidateCommitTrees,\n} from 'react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder';\nimport {\n getChartData as getFlamegraphChartData,\n invalidateChartData as invalidateFlamegraphChartData,\n} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';\nimport {\n getChartData as getRankedChartData,\n invalidateChartData as invalidateRankedChartData,\n} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';\n\nimport type {CommitTree} from 'react-devtools-shared/src/devtools/views/Profiler/types';\nimport type {ChartData as FlamegraphChartData} from 'react-devtools-shared/src/devtools/views/Profiler/FlamegraphChartBuilder';\nimport type {ChartData as RankedChartData} from 'react-devtools-shared/src/devtools/views/Profiler/RankedChartBuilder';\n\nexport default class ProfilingCache {\n _fiberCommits: Map<number, Array<number>> = new Map();\n _profilerStore: ProfilerStore;\n\n constructor(profilerStore: ProfilerStore) {\n this._profilerStore = profilerStore;\n }\n\n getCommitTree: ({commitIndex: number, rootID: number}) => CommitTree = ({\n commitIndex,\n rootID,\n }) =>\n getCommitTree({\n commitIndex,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n getFiberCommits: ({fiberID: number, rootID: number}) => Array<number> = ({\n fiberID,\n rootID,\n }) => {\n const cachedFiberCommits = this._fiberCommits.get(fiberID);\n if (cachedFiberCommits != null) {\n return cachedFiberCommits;\n }\n\n const fiberCommits = [];\n const dataForRoot = this._profilerStore.getDataForRoot(rootID);\n dataForRoot.commitData.forEach((commitDatum, commitIndex) => {\n if (commitDatum.fiberActualDurations.has(fiberID)) {\n fiberCommits.push(commitIndex);\n }\n });\n\n this._fiberCommits.set(fiberID, fiberCommits);\n\n return fiberCommits;\n };\n\n getFlamegraphChartData: ({\n commitIndex: number,\n commitTree: CommitTree,\n rootID: number,\n }) => FlamegraphChartData = ({commitIndex, commitTree, rootID}) =>\n getFlamegraphChartData({\n commitIndex,\n commitTree,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n getRankedChartData: ({\n commitIndex: number,\n commitTree: CommitTree,\n rootID: number,\n }) => RankedChartData = ({commitIndex, commitTree, rootID}) =>\n getRankedChartData({\n commitIndex,\n commitTree,\n profilerStore: this._profilerStore,\n rootID,\n });\n\n invalidate() {\n this._fiberCommits.clear();\n\n invalidateCommitTrees();\n invalidateFlamegraphChartData();\n invalidateRankedChartData();\n }\n}\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 * @flow\n */\n\nimport EventEmitter from '../events';\nimport {prepareProfilingDataFrontendFromBackendAndStore} from './views/Profiler/utils';\nimport ProfilingCache from './ProfilingCache';\nimport Store from './store';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\n\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {ProfilingDataBackend} from 'react-devtools-shared/src/backend/types';\nimport type {\n CommitDataFrontend,\n ProfilingDataForRootFrontend,\n ProfilingDataFrontend,\n SnapshotNode,\n} from './views/Profiler/types';\n\nexport default class ProfilerStore extends EventEmitter<{\n isProcessingData: [],\n isProfiling: [],\n profilingData: [],\n}> {\n _bridge: FrontendBridge;\n\n // Suspense cache for lazily calculating derived profiling data.\n _cache: ProfilingCache;\n\n // Temporary store of profiling data from the backend renderer(s).\n // This data will be converted to the ProfilingDataFrontend format after being collected from all renderers.\n _dataBackends: Array<ProfilingDataBackend> = [];\n\n // Data from the most recently completed profiling session,\n // or data that has been imported from a previously exported session.\n // This object contains all necessary data to drive the Profiler UI interface,\n // even though some of it is lazily parsed/derived via the ProfilingCache.\n _dataFrontend: ProfilingDataFrontend | null = null;\n\n // Snapshot of all attached renderer IDs.\n // Once profiling is finished, this snapshot will be used to query renderers for profiling data.\n //\n // This map is initialized when profiling starts and updated when a new root is added while profiling;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _initialRendererIDs: Set<number> = new Set();\n\n // Snapshot of the state of the main Store (including all roots) when profiling started.\n // Once profiling is finished, this snapshot can be used along with \"operations\" messages emitted during profiling,\n // to reconstruct the state of each root for each commit.\n // It's okay to use a single root to store this information because node IDs are unique across all roots.\n //\n // This map is initialized when profiling starts and updated when a new root is added while profiling;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _initialSnapshotsByRootID: Map<number, Map<number, SnapshotNode>> = new Map();\n\n // Map of root (id) to a list of tree mutation that occur during profiling.\n // Once profiling is finished, these mutations can be used, along with the initial tree snapshots,\n // to reconstruct the state of each root for each commit.\n //\n // This map is only updated while profiling is in progress;\n // Upon completion, it is converted into the exportable ProfilingDataFrontend format.\n _inProgressOperationsByRootID: Map<number, Array<Array<number>>> = new Map();\n\n // The backend is currently profiling.\n // When profiling is in progress, operations are stored so that we can later reconstruct past commit trees.\n _isBackendProfiling: boolean = false;\n\n // Mainly used for optimistic UI.\n // This could be false, but at the same time _isBackendProfiling could be true\n // for cases when Backend is busy serializing a chunky payload.\n _isProfilingBasedOnUserInput: boolean = false;\n\n // Tracks whether a specific renderer logged any profiling data during the most recent session.\n _rendererIDsThatReportedProfilingData: Set<number> = new Set();\n\n // After profiling, data is requested from each attached renderer using this queue.\n // So long as this queue is not empty, the store is retrieving and processing profiling data from the backend.\n _rendererQueue: Set<number> = new Set();\n\n _store: Store;\n\n constructor(\n bridge: FrontendBridge,\n store: Store,\n defaultIsProfiling: boolean,\n ) {\n super();\n\n this._bridge = bridge;\n this._isBackendProfiling = defaultIsProfiling;\n this._isProfilingBasedOnUserInput = defaultIsProfiling;\n this._store = store;\n\n bridge.addListener('operations', this.onBridgeOperations);\n bridge.addListener('profilingData', this.onBridgeProfilingData);\n bridge.addListener('profilingStatus', this.onProfilingStatus);\n bridge.addListener('shutdown', this.onBridgeShutdown);\n\n // It's possible that profiling has already started (e.g. \"reload and start profiling\")\n // so the frontend needs to ask the backend for its status after mounting.\n bridge.send('getProfilingStatus');\n\n this._cache = new ProfilingCache(this);\n }\n\n getCommitData(rootID: number, commitIndex: number): CommitDataFrontend {\n if (this._dataFrontend !== null) {\n const dataForRoot = this._dataFrontend.dataForRoots.get(rootID);\n if (dataForRoot != null) {\n const commitDatum = dataForRoot.commitData[commitIndex];\n if (commitDatum != null) {\n return commitDatum;\n }\n }\n }\n\n throw Error(\n `Could not find commit data for root \"${rootID}\" and commit \"${commitIndex}\"`,\n );\n }\n\n getDataForRoot(rootID: number): ProfilingDataForRootFrontend {\n if (this._dataFrontend !== null) {\n const dataForRoot = this._dataFrontend.dataForRoots.get(rootID);\n if (dataForRoot != null) {\n return dataForRoot;\n }\n }\n\n throw Error(`Could not find commit data for root \"${rootID}\"`);\n }\n\n // Profiling data has been recorded for at least one root.\n get didRecordCommits(): boolean {\n return (\n this._dataFrontend !== null && this._dataFrontend.dataForRoots.size > 0\n );\n }\n\n get isProcessingData(): boolean {\n return this._rendererQueue.size > 0 || this._dataBackends.length > 0;\n }\n\n get isProfilingBasedOnUserInput(): boolean {\n return this._isProfilingBasedOnUserInput;\n }\n\n get profilingCache(): ProfilingCache {\n return this._cache;\n }\n\n get profilingData(): ProfilingDataFrontend | null {\n return this._dataFrontend;\n }\n set profilingData(value: ProfilingDataFrontend | null): void {\n if (this._isBackendProfiling) {\n console.warn(\n 'Profiling data cannot be updated while profiling is in progress.',\n );\n return;\n }\n\n this._dataBackends.splice(0);\n this._dataFrontend = value;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._cache.invalidate();\n\n this.emit('profilingData');\n }\n\n clear(): void {\n this._dataBackends.splice(0);\n this._dataFrontend = null;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._rendererQueue.clear();\n\n // Invalidate suspense cache if profiling data is being (re-)recorded.\n // Note that we clear now because any existing data is \"stale\".\n this._cache.invalidate();\n\n this.emit('profilingData');\n }\n\n startProfiling(): void {\n this.clear();\n\n this._bridge.send('startProfiling', {\n recordChangeDescriptions: this._store.recordChangeDescriptions,\n recordTimeline: this._store.supportsTimeline,\n });\n\n this._isProfilingBasedOnUserInput = true;\n this.emit('isProfiling');\n\n // Don't actually update the local profiling boolean yet!\n // Wait for onProfilingStatus() to confirm the status has changed.\n // This ensures the frontend and backend are in sync wrt which commits were profiled.\n // We do this to avoid mismatches on e.g. CommitTreeBuilder that would cause errors.\n }\n\n stopProfiling(): void {\n this._bridge.send('stopProfiling');\n\n // Backend might be busy serializing the payload, so we are going to display\n // optimistic UI to the user that profiling is stopping.\n this._isProfilingBasedOnUserInput = false;\n this.emit('isProfiling');\n\n // Wait for onProfilingStatus() to confirm the status has changed, this will update _isBackendProfiling.\n // This ensures the frontend and backend are in sync wrt which commits were profiled.\n // We do this to avoid mismatches on e.g. CommitTreeBuilder that would cause errors.\n }\n\n _takeProfilingSnapshotRecursive: (\n elementID: number,\n profilingSnapshots: Map<number, SnapshotNode>,\n ) => void = (elementID, profilingSnapshots) => {\n const element = this._store.getElementByID(elementID);\n if (element !== null) {\n const snapshotNode: SnapshotNode = {\n id: elementID,\n children: element.children.slice(0),\n displayName: element.displayName,\n hocDisplayNames: element.hocDisplayNames,\n key: element.key,\n type: element.type,\n compiledWithForget: element.compiledWithForget,\n };\n profilingSnapshots.set(elementID, snapshotNode);\n\n element.children.forEach(childID =>\n this._takeProfilingSnapshotRecursive(childID, profilingSnapshots),\n );\n }\n };\n\n onBridgeOperations: (operations: Array<number>) => void = operations => {\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n const rootID = operations[1];\n\n if (this._isBackendProfiling) {\n let profilingOperations = this._inProgressOperationsByRootID.get(rootID);\n if (profilingOperations == null) {\n profilingOperations = [operations];\n this._inProgressOperationsByRootID.set(rootID, profilingOperations);\n } else {\n profilingOperations.push(operations);\n }\n\n if (!this._initialRendererIDs.has(rendererID)) {\n this._initialRendererIDs.add(rendererID);\n }\n\n if (!this._initialSnapshotsByRootID.has(rootID)) {\n this._initialSnapshotsByRootID.set(rootID, new Map());\n }\n\n this._rendererIDsThatReportedProfilingData.add(rendererID);\n }\n };\n\n onBridgeProfilingData: (dataBackend: ProfilingDataBackend) => void =\n dataBackend => {\n if (this._isBackendProfiling) {\n // This should never happen, but if it does, then ignore previous profiling data.\n return;\n }\n\n const {rendererID} = dataBackend;\n\n if (!this._rendererQueue.has(rendererID)) {\n throw Error(\n `Unexpected profiling data update from renderer \"${rendererID}\"`,\n );\n }\n\n this._dataBackends.push(dataBackend);\n this._rendererQueue.delete(rendererID);\n\n if (this._rendererQueue.size === 0) {\n this._dataFrontend = prepareProfilingDataFrontendFromBackendAndStore(\n this._dataBackends,\n this._inProgressOperationsByRootID,\n this._initialSnapshotsByRootID,\n );\n\n this._dataBackends.splice(0);\n\n this.emit('isProcessingData');\n }\n };\n\n onBridgeShutdown: () => void = () => {\n this._bridge.removeListener('operations', this.onBridgeOperations);\n this._bridge.removeListener('profilingData', this.onBridgeProfilingData);\n this._bridge.removeListener('profilingStatus', this.onProfilingStatus);\n this._bridge.removeListener('shutdown', this.onBridgeShutdown);\n };\n\n onProfilingStatus: (isProfiling: boolean) => void = isProfiling => {\n if (this._isBackendProfiling === isProfiling) {\n return;\n }\n\n if (isProfiling) {\n this._dataBackends.splice(0);\n this._dataFrontend = null;\n this._initialRendererIDs.clear();\n this._initialSnapshotsByRootID.clear();\n this._inProgressOperationsByRootID.clear();\n this._rendererIDsThatReportedProfilingData.clear();\n this._rendererQueue.clear();\n\n // Record all renderer IDs initially too (in case of unmount)\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const rendererID of this._store.rootIDToRendererID.values()) {\n if (!this._initialRendererIDs.has(rendererID)) {\n this._initialRendererIDs.add(rendererID);\n }\n }\n\n // Record snapshot of tree at the time profiling is started.\n // This info is required to handle cases of e.g. nodes being removed during profiling.\n this._store.roots.forEach(rootID => {\n const profilingSnapshots = new Map<number, SnapshotNode>();\n this._initialSnapshotsByRootID.set(rootID, profilingSnapshots);\n this._takeProfilingSnapshotRecursive(rootID, profilingSnapshots);\n });\n }\n\n this._isBackendProfiling = isProfiling;\n // _isProfilingBasedOnUserInput should already be updated from startProfiling, stopProfiling, or constructor.\n if (this._isProfilingBasedOnUserInput !== isProfiling) {\n logEvent({\n event_name: 'error',\n error_message: `Unexpected profiling status. Expected ${this._isProfilingBasedOnUserInput.toString()}, but received ${isProfiling.toString()}.`,\n error_stack: new Error().stack,\n error_component_stack: null,\n });\n\n // If happened, fallback to displaying the value from Backend\n this._isProfilingBasedOnUserInput = isProfiling;\n }\n\n // Invalidate suspense cache if profiling data is being (re-)recorded.\n // Note that we clear again, in case any views read from the cache while profiling.\n // (That would have resolved a now-stale value without any profiling data.)\n this._cache.invalidate();\n\n // If we've just finished a profiling session, we need to fetch data stored in each renderer interface\n // and re-assemble it on the front-end into a format (ProfilingDataFrontend) that can power the Profiler UI.\n // During this time, DevTools UI should probably not be interactive.\n if (!isProfiling) {\n this._dataBackends.splice(0);\n this._rendererQueue.clear();\n\n // Only request data from renderers that actually logged it.\n // This avoids unnecessary bridge requests and also avoids edge case mixed renderer bugs.\n // (e.g. when v15 and v16 are both present)\n this._rendererIDsThatReportedProfilingData.forEach(rendererID => {\n if (!this._rendererQueue.has(rendererID)) {\n this._rendererQueue.add(rendererID);\n\n this._bridge.send('getProfilingData', {rendererID});\n }\n });\n\n this.emit('isProcessingData');\n }\n };\n}\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 * @flow\n */\n\nexport default class UnsupportedBridgeOperationError extends Error {\n constructor(message: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedBridgeOperationError);\n }\n\n this.name = 'UnsupportedBridgeOperationError';\n }\n}\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport EventEmitter from '../events';\nimport {inspect} from 'util';\nimport {\n PROFILING_FLAG_BASIC_SUPPORT,\n PROFILING_FLAG_TIMELINE_SUPPORT,\n TREE_OPERATION_ADD,\n TREE_OPERATION_REMOVE,\n TREE_OPERATION_REMOVE_ROOT,\n TREE_OPERATION_REORDER_CHILDREN,\n TREE_OPERATION_SET_SUBTREE_MODE,\n TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS,\n TREE_OPERATION_UPDATE_TREE_BASE_DURATION,\n} from '../constants';\nimport {ElementTypeRoot} from '../frontend/types';\nimport {\n getSavedComponentFilters,\n setSavedComponentFilters,\n shallowDiffers,\n utfDecodeStringWithRanges,\n parseElementDisplayNameFromBackend,\n} from '../utils';\nimport {localStorageGetItem, localStorageSetItem} from '../storage';\nimport {__DEBUG__} from '../constants';\nimport {printStore} from './utils';\nimport ProfilerStore from './ProfilerStore';\nimport {\n BRIDGE_PROTOCOL,\n currentBridgeProtocol,\n} from 'react-devtools-shared/src/bridge';\nimport {StrictMode} from 'react-devtools-shared/src/frontend/types';\n\nimport type {\n Element,\n ComponentFilter,\n ElementType,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {\n FrontendBridge,\n BridgeProtocol,\n} from 'react-devtools-shared/src/bridge';\nimport UnsupportedBridgeOperationError from 'react-devtools-shared/src/UnsupportedBridgeOperationError';\nimport type {DevToolsHookSettings} from '../backend/types';\n\nconst debug = (methodName: string, ...args: Array<string>) => {\n if (__DEBUG__) {\n console.log(\n `%cStore %c${methodName}`,\n 'color: green; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n};\n\nconst LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY =\n 'React::DevTools::collapseNodesByDefault';\nconst LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY =\n 'React::DevTools::recordChangeDescriptions';\n\ntype ErrorAndWarningTuples = Array<{id: number, index: number}>;\n\nexport type Config = {\n checkBridgeProtocolCompatibility?: boolean,\n isProfiling?: boolean,\n supportsInspectMatchingDOMElement?: boolean,\n supportsClickToInspect?: boolean,\n supportsReloadAndProfile?: boolean,\n supportsTimeline?: boolean,\n supportsTraceUpdates?: boolean,\n};\n\nexport type Capabilities = {\n supportsBasicProfiling: boolean,\n hasOwnerMetadata: boolean,\n supportsStrictMode: boolean,\n supportsTimeline: boolean,\n};\n\n/**\n * The store is the single source of truth for updates from the backend.\n * ContextProviders can subscribe to the Store for specific things they want to provide.\n */\nexport default class Store extends EventEmitter<{\n backendVersion: [],\n collapseNodesByDefault: [],\n componentFilters: [],\n error: [Error],\n hookSettings: [$ReadOnly<DevToolsHookSettings>],\n hostInstanceSelected: [Element['id']],\n settingsUpdated: [$ReadOnly<DevToolsHookSettings>],\n mutated: [[Array<number>, Map<number, number>]],\n recordChangeDescriptions: [],\n roots: [],\n rootSupportsBasicProfiling: [],\n rootSupportsTimelineProfiling: [],\n supportsNativeStyleEditor: [],\n supportsReloadAndProfile: [],\n unsupportedBridgeProtocolDetected: [],\n unsupportedRendererVersionDetected: [],\n}> {\n // If the backend version is new enough to report its (NPM) version, this is it.\n // This version may be displayed by the frontend for debugging purposes.\n _backendVersion: string | null = null;\n\n _bridge: FrontendBridge;\n\n // Computed whenever _errorsAndWarnings Map changes.\n _cachedComponentWithErrorCount: number = 0;\n _cachedComponentWithWarningCount: number = 0;\n _cachedErrorAndWarningTuples: ErrorAndWarningTuples | null = null;\n\n // Should new nodes be collapsed by default when added to the tree?\n _collapseNodesByDefault: boolean = true;\n\n _componentFilters: Array<ComponentFilter>;\n\n // Map of ID to number of recorded error and warning message IDs.\n _errorsAndWarnings: Map<number, {errorCount: number, warningCount: number}> =\n new Map();\n\n // At least one of the injected renderers contains (DEV only) owner metadata.\n _hasOwnerMetadata: boolean = false;\n\n // Map of ID to (mutable) Element.\n // Elements are mutated to avoid excessive cloning during tree updates.\n // The InspectedElement Suspense cache also relies on this mutability for its WeakMap usage.\n _idToElement: Map<number, Element> = new Map();\n\n // Should the React Native style editor panel be shown?\n _isNativeStyleEditorSupported: boolean = false;\n\n _nativeStyleEditorValidAttributes: $ReadOnlyArray<string> | null = null;\n\n // Older backends don't support an explicit bridge protocol,\n // so we should timeout eventually and show a downgrade message.\n _onBridgeProtocolTimeoutID: TimeoutID | null = null;\n\n // Map of element (id) to the set of elements (ids) it owns.\n // This map enables getOwnersListForElement() to avoid traversing the entire tree.\n _ownersMap: Map<number, Set<number>> = new Map();\n\n _profilerStore: ProfilerStore;\n\n _recordChangeDescriptions: boolean = false;\n\n // Incremented each time the store is mutated.\n // This enables a passive effect to detect a mutation between render and commit phase.\n _revision: number = 0;\n\n // This Array must be treated as immutable!\n // Passive effects will check it for changes between render and mount.\n _roots: $ReadOnlyArray<number> = [];\n\n _rootIDToCapabilities: Map<number, Capabilities> = new Map();\n\n // Renderer ID is needed to support inspection fiber props, state, and hooks.\n _rootIDToRendererID: Map<number, number> = new Map();\n\n // These options may be initially set by a configuration option when constructing the Store.\n _supportsInspectMatchingDOMElement: boolean = false;\n _supportsClickToInspect: boolean = false;\n _supportsTimeline: boolean = false;\n _supportsTraceUpdates: boolean = false;\n\n _isReloadAndProfileFrontendSupported: boolean = false;\n _isReloadAndProfileBackendSupported: boolean = false;\n\n // These options default to false but may be updated as roots are added and removed.\n _rootSupportsBasicProfiling: boolean = false;\n _rootSupportsTimelineProfiling: boolean = false;\n\n _bridgeProtocol: BridgeProtocol | null = null;\n _unsupportedBridgeProtocolDetected: boolean = false;\n _unsupportedRendererVersionDetected: boolean = false;\n\n // Total number of visible elements (within all roots).\n // Used for windowing purposes.\n _weightAcrossRoots: number = 0;\n\n _shouldCheckBridgeProtocolCompatibility: boolean = false;\n _hookSettings: $ReadOnly<DevToolsHookSettings> | null = null;\n _shouldShowWarningsAndErrors: boolean = false;\n\n // Only used in browser extension for synchronization with built-in Elements panel.\n _lastSelectedHostInstanceElementId: Element['id'] | null = null;\n\n constructor(bridge: FrontendBridge, config?: Config) {\n super();\n\n if (__DEBUG__) {\n debug('constructor', 'subscribing to Bridge');\n }\n\n this._collapseNodesByDefault =\n localStorageGetItem(LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY) ===\n 'true';\n\n this._recordChangeDescriptions =\n localStorageGetItem(LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY) ===\n 'true';\n\n this._componentFilters = getSavedComponentFilters();\n\n let isProfiling = false;\n if (config != null) {\n isProfiling = config.isProfiling === true;\n\n const {\n supportsInspectMatchingDOMElement,\n supportsClickToInspect,\n supportsReloadAndProfile,\n supportsTimeline,\n supportsTraceUpdates,\n checkBridgeProtocolCompatibility,\n } = config;\n if (supportsInspectMatchingDOMElement) {\n this._supportsInspectMatchingDOMElement = true;\n }\n if (supportsClickToInspect) {\n this._supportsClickToInspect = true;\n }\n if (supportsReloadAndProfile) {\n this._isReloadAndProfileFrontendSupported = true;\n }\n if (supportsTimeline) {\n this._supportsTimeline = true;\n }\n if (supportsTraceUpdates) {\n this._supportsTraceUpdates = true;\n }\n if (checkBridgeProtocolCompatibility) {\n this._shouldCheckBridgeProtocolCompatibility = true;\n }\n }\n\n this._bridge = bridge;\n bridge.addListener('operations', this.onBridgeOperations);\n bridge.addListener(\n 'overrideComponentFilters',\n this.onBridgeOverrideComponentFilters,\n );\n bridge.addListener('shutdown', this.onBridgeShutdown);\n bridge.addListener(\n 'isReloadAndProfileSupportedByBackend',\n this.onBackendReloadAndProfileSupported,\n );\n bridge.addListener(\n 'isNativeStyleEditorSupported',\n this.onBridgeNativeStyleEditorSupported,\n );\n bridge.addListener(\n 'unsupportedRendererVersion',\n this.onBridgeUnsupportedRendererVersion,\n );\n\n this._profilerStore = new ProfilerStore(bridge, this, isProfiling);\n\n bridge.addListener('backendVersion', this.onBridgeBackendVersion);\n bridge.addListener('saveToClipboard', this.onSaveToClipboard);\n bridge.addListener('hookSettings', this.onHookSettings);\n bridge.addListener('backendInitialized', this.onBackendInitialized);\n bridge.addListener('selectElement', this.onHostInstanceSelected);\n }\n\n // This is only used in tests to avoid memory leaks.\n assertExpectedRootMapSizes() {\n if (this.roots.length === 0) {\n // The only safe time to assert these maps are empty is when the store is empty.\n this.assertMapSizeMatchesRootCount(this._idToElement, '_idToElement');\n this.assertMapSizeMatchesRootCount(this._ownersMap, '_ownersMap');\n }\n\n // These maps should always be the same size as the number of roots\n this.assertMapSizeMatchesRootCount(\n this._rootIDToCapabilities,\n '_rootIDToCapabilities',\n );\n this.assertMapSizeMatchesRootCount(\n this._rootIDToRendererID,\n '_rootIDToRendererID',\n );\n }\n\n // This is only used in tests to avoid memory leaks.\n assertMapSizeMatchesRootCount(map: Map<any, any>, mapName: string) {\n const expectedSize = this.roots.length;\n if (map.size !== expectedSize) {\n this._throwAndEmitError(\n Error(\n `Expected ${mapName} to contain ${expectedSize} items, but it contains ${\n map.size\n } items\\n\\n${inspect(map, {\n depth: 20,\n })}`,\n ),\n );\n }\n }\n\n get backendVersion(): string | null {\n return this._backendVersion;\n }\n\n get collapseNodesByDefault(): boolean {\n return this._collapseNodesByDefault;\n }\n set collapseNodesByDefault(value: boolean): void {\n this._collapseNodesByDefault = value;\n\n localStorageSetItem(\n LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY,\n value ? 'true' : 'false',\n );\n\n this.emit('collapseNodesByDefault');\n }\n\n get componentFilters(): Array<ComponentFilter> {\n return this._componentFilters;\n }\n set componentFilters(value: Array<ComponentFilter>): void {\n if (this._profilerStore.isProfilingBasedOnUserInput) {\n // Re-mounting a tree while profiling is in progress might break a lot of assumptions.\n // If necessary, we could support this- but it doesn't seem like a necessary use case.\n this._throwAndEmitError(\n Error('Cannot modify filter preferences while profiling'),\n );\n }\n\n // Filter updates are expensive to apply (since they impact the entire tree).\n // Let's determine if they've changed and avoid doing this work if they haven't.\n const prevEnabledComponentFilters = this._componentFilters.filter(\n filter => filter.isEnabled,\n );\n const nextEnabledComponentFilters = value.filter(\n filter => filter.isEnabled,\n );\n let haveEnabledFiltersChanged =\n prevEnabledComponentFilters.length !== nextEnabledComponentFilters.length;\n if (!haveEnabledFiltersChanged) {\n for (let i = 0; i < nextEnabledComponentFilters.length; i++) {\n const prevFilter = prevEnabledComponentFilters[i];\n const nextFilter = nextEnabledComponentFilters[i];\n if (shallowDiffers(prevFilter, nextFilter)) {\n haveEnabledFiltersChanged = true;\n break;\n }\n }\n }\n\n this._componentFilters = value;\n\n // Update persisted filter preferences stored in localStorage.\n setSavedComponentFilters(value);\n\n // Notify the renderer that filter preferences have changed.\n // This is an expensive operation; it unmounts and remounts the entire tree,\n // so only do it if the set of enabled component filters has changed.\n if (haveEnabledFiltersChanged) {\n this._bridge.send('updateComponentFilters', value);\n }\n\n this.emit('componentFilters');\n }\n\n get bridgeProtocol(): BridgeProtocol | null {\n return this._bridgeProtocol;\n }\n\n get componentWithErrorCount(): number {\n if (!this._shouldShowWarningsAndErrors) {\n return 0;\n }\n\n return this._cachedComponentWithErrorCount;\n }\n\n get componentWithWarningCount(): number {\n if (!this._shouldShowWarningsAndErrors) {\n return 0;\n }\n\n return this._cachedComponentWithWarningCount;\n }\n\n get displayingErrorsAndWarningsEnabled(): boolean {\n return this._shouldShowWarningsAndErrors;\n }\n\n get hasOwnerMetadata(): boolean {\n return this._hasOwnerMetadata;\n }\n\n get nativeStyleEditorValidAttributes(): $ReadOnlyArray<string> | null {\n return this._nativeStyleEditorValidAttributes;\n }\n\n get numElements(): number {\n return this._weightAcrossRoots;\n }\n\n get profilerStore(): ProfilerStore {\n return this._profilerStore;\n }\n\n get recordChangeDescriptions(): boolean {\n return this._recordChangeDescriptions;\n }\n set recordChangeDescriptions(value: boolean): void {\n this._recordChangeDescriptions = value;\n\n localStorageSetItem(\n LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY,\n value ? 'true' : 'false',\n );\n\n this.emit('recordChangeDescriptions');\n }\n\n get revision(): number {\n return this._revision;\n }\n\n get rootIDToRendererID(): Map<number, number> {\n return this._rootIDToRendererID;\n }\n\n get roots(): $ReadOnlyArray<number> {\n return this._roots;\n }\n\n // At least one of the currently mounted roots support the Legacy profiler.\n get rootSupportsBasicProfiling(): boolean {\n return this._rootSupportsBasicProfiling;\n }\n\n // At least one of the currently mounted roots support the Timeline profiler.\n get rootSupportsTimelineProfiling(): boolean {\n return this._rootSupportsTimelineProfiling;\n }\n\n get supportsInspectMatchingDOMElement(): boolean {\n return this._supportsInspectMatchingDOMElement;\n }\n\n get supportsClickToInspect(): boolean {\n return this._supportsClickToInspect;\n }\n\n get supportsNativeStyleEditor(): boolean {\n return this._isNativeStyleEditorSupported;\n }\n\n get supportsReloadAndProfile(): boolean {\n return (\n this._isReloadAndProfileFrontendSupported &&\n this._isReloadAndProfileBackendSupported\n );\n }\n\n // This build of DevTools supports the Timeline profiler.\n // This is a static flag, controlled by the Store config.\n get supportsTimeline(): boolean {\n return this._supportsTimeline;\n }\n\n get supportsTraceUpdates(): boolean {\n return this._supportsTraceUpdates;\n }\n\n get unsupportedBridgeProtocolDetected(): boolean {\n return this._unsupportedBridgeProtocolDetected;\n }\n\n get unsupportedRendererVersionDetected(): boolean {\n return this._unsupportedRendererVersionDetected;\n }\n\n get lastSelectedHostInstanceElementId(): Element['id'] | null {\n return this._lastSelectedHostInstanceElementId;\n }\n\n containsElement(id: number): boolean {\n return this._idToElement.has(id);\n }\n\n getElementAtIndex(index: number): Element | null {\n if (index < 0 || index >= this.numElements) {\n console.warn(\n `Invalid index ${index} specified; store contains ${this.numElements} items.`,\n );\n\n return null;\n }\n\n // Find which root this element is in...\n let root;\n let rootWeight = 0;\n for (let i = 0; i < this._roots.length; i++) {\n const rootID = this._roots[i];\n root = this._idToElement.get(rootID);\n\n if (root === undefined) {\n this._throwAndEmitError(\n Error(\n `Couldn't find root with id \"${rootID}\": no matching node was found in the Store.`,\n ),\n );\n\n return null;\n }\n\n if (root.children.length === 0) {\n continue;\n }\n\n if (rootWeight + root.weight > index) {\n break;\n } else {\n rootWeight += root.weight;\n }\n }\n\n if (root === undefined) {\n return null;\n }\n\n // Find the element in the tree using the weight of each node...\n // Skip over the root itself, because roots aren't visible in the Elements tree.\n let currentElement: Element = root;\n let currentWeight = rootWeight - 1;\n\n while (index !== currentWeight) {\n const numChildren = currentElement.children.length;\n for (let i = 0; i < numChildren; i++) {\n const childID = currentElement.children[i];\n const child = this._idToElement.get(childID);\n\n if (child === undefined) {\n this._throwAndEmitError(\n Error(\n `Couldn't child element with id \"${childID}\": no matching node was found in the Store.`,\n ),\n );\n\n return null;\n }\n\n const childWeight = child.isCollapsed ? 1 : child.weight;\n\n if (index <= currentWeight + childWeight) {\n currentWeight++;\n currentElement = child;\n break;\n } else {\n currentWeight += childWeight;\n }\n }\n }\n\n return currentElement || null;\n }\n\n getElementIDAtIndex(index: number): number | null {\n const element = this.getElementAtIndex(index);\n return element === null ? null : element.id;\n }\n\n getElementByID(id: number): Element | null {\n const element = this._idToElement.get(id);\n if (element === undefined) {\n console.warn(`No element found with id \"${id}\"`);\n return null;\n }\n\n return element;\n }\n\n // Returns a tuple of [id, index]\n getElementsWithErrorsAndWarnings(): ErrorAndWarningTuples {\n if (!this._shouldShowWarningsAndErrors) {\n return [];\n }\n\n if (this._cachedErrorAndWarningTuples !== null) {\n return this._cachedErrorAndWarningTuples;\n }\n\n const errorAndWarningTuples: ErrorAndWarningTuples = [];\n\n this._errorsAndWarnings.forEach((_, id) => {\n const index = this.getIndexOfElementID(id);\n if (index !== null) {\n let low = 0;\n let high = errorAndWarningTuples.length;\n while (low < high) {\n const mid = (low + high) >> 1;\n if (errorAndWarningTuples[mid].index > index) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n errorAndWarningTuples.splice(low, 0, {id, index});\n }\n });\n\n // Cache for later (at least until the tree changes again).\n this._cachedErrorAndWarningTuples = errorAndWarningTuples;\n return errorAndWarningTuples;\n }\n\n getErrorAndWarningCountForElementID(id: number): {\n errorCount: number,\n warningCount: number,\n } {\n if (!this._shouldShowWarningsAndErrors) {\n return {errorCount: 0, warningCount: 0};\n }\n\n return this._errorsAndWarnings.get(id) || {errorCount: 0, warningCount: 0};\n }\n\n getIndexOfElementID(id: number): number | null {\n const element = this.getElementByID(id);\n\n if (element === null || element.parentID === 0) {\n return null;\n }\n\n // Walk up the tree to the root.\n // Increment the index by one for each node we encounter,\n // and by the weight of all nodes to the left of the current one.\n // This should be a relatively fast way of determining the index of a node within the tree.\n let previousID = id;\n let currentID = element.parentID;\n let index = 0;\n while (true) {\n const current = this._idToElement.get(currentID);\n if (current === undefined) {\n return null;\n }\n\n const {children} = current;\n for (let i = 0; i < children.length; i++) {\n const childID = children[i];\n if (childID === previousID) {\n break;\n }\n\n const child = this._idToElement.get(childID);\n if (child === undefined) {\n return null;\n }\n\n index += child.isCollapsed ? 1 : child.weight;\n }\n\n if (current.parentID === 0) {\n // We found the root; stop crawling.\n break;\n }\n\n index++;\n\n previousID = current.id;\n currentID = current.parentID;\n }\n\n // At this point, the current ID is a root (from the previous loop).\n // We also need to offset the index by previous root weights.\n for (let i = 0; i < this._roots.length; i++) {\n const rootID = this._roots[i];\n if (rootID === currentID) {\n break;\n }\n\n const root = this._idToElement.get(rootID);\n if (root === undefined) {\n return null;\n }\n\n index += root.weight;\n }\n\n return index;\n }\n\n getOwnersListForElement(ownerID: number): Array<Element> {\n const list: Array<Element> = [];\n const element = this._idToElement.get(ownerID);\n if (element !== undefined) {\n list.push({\n ...element,\n depth: 0,\n });\n\n const unsortedIDs = this._ownersMap.get(ownerID);\n if (unsortedIDs !== undefined) {\n const depthMap: Map<number, number> = new Map([[ownerID, 0]]);\n\n // Items in a set are ordered based on insertion.\n // This does not correlate with their order in the tree.\n // So first we need to order them.\n // I wish we could avoid this sorting operation; we could sort at insertion time,\n // but then we'd have to pay sorting costs even if the owners list was never used.\n // Seems better to defer the cost, since the set of ids is probably pretty small.\n const sortedIDs = Array.from(unsortedIDs).sort(\n (idA, idB) =>\n (this.getIndexOfElementID(idA) || 0) -\n (this.getIndexOfElementID(idB) || 0),\n );\n\n // Next we need to determine the appropriate depth for each element in the list.\n // The depth in the list may not correspond to the depth in the tree,\n // because the list has been filtered to remove intermediate components.\n // Perhaps the easiest way to do this is to walk up the tree until we reach either:\n // (1) another node that's already in the tree, or (2) the root (owner)\n // at which point, our depth is just the depth of that node plus one.\n sortedIDs.forEach(id => {\n const innerElement = this._idToElement.get(id);\n if (innerElement !== undefined) {\n let parentID = innerElement.parentID;\n\n let depth = 0;\n while (parentID > 0) {\n if (parentID === ownerID || unsortedIDs.has(parentID)) {\n // $FlowFixMe[unsafe-addition] addition with possible null/undefined value\n depth = depthMap.get(parentID) + 1;\n depthMap.set(id, depth);\n break;\n }\n const parent = this._idToElement.get(parentID);\n if (parent === undefined) {\n break;\n }\n parentID = parent.parentID;\n }\n\n if (depth === 0) {\n this._throwAndEmitError(Error('Invalid owners list'));\n }\n\n list.push({...innerElement, depth});\n }\n });\n }\n }\n\n return list;\n }\n\n getRendererIDForElement(id: number): number | null {\n let current = this._idToElement.get(id);\n while (current !== undefined) {\n if (current.parentID === 0) {\n const rendererID = this._rootIDToRendererID.get(current.id);\n return rendererID == null ? null : rendererID;\n } else {\n current = this._idToElement.get(current.parentID);\n }\n }\n return null;\n }\n\n getRootIDForElement(id: number): number | null {\n let current = this._idToElement.get(id);\n while (current !== undefined) {\n if (current.parentID === 0) {\n return current.id;\n } else {\n current = this._idToElement.get(current.parentID);\n }\n }\n return null;\n }\n\n isInsideCollapsedSubTree(id: number): boolean {\n let current = this._idToElement.get(id);\n while (current != null) {\n if (current.parentID === 0) {\n return false;\n } else {\n current = this._idToElement.get(current.parentID);\n if (current != null && current.isCollapsed) {\n return true;\n }\n }\n }\n return false;\n }\n\n // TODO Maybe split this into two methods: expand() and collapse()\n toggleIsCollapsed(id: number, isCollapsed: boolean): void {\n let didMutate = false;\n\n const element = this.getElementByID(id);\n if (element !== null) {\n if (isCollapsed) {\n if (element.type === ElementTypeRoot) {\n this._throwAndEmitError(Error('Root nodes cannot be collapsed'));\n }\n\n if (!element.isCollapsed) {\n didMutate = true;\n element.isCollapsed = true;\n\n const weightDelta = 1 - element.weight;\n\n let parentElement = this._idToElement.get(element.parentID);\n while (parentElement !== undefined) {\n // We don't need to break on a collapsed parent in the same way as the expand case below.\n // That's because collapsing a node doesn't \"bubble\" and affect its parents.\n parentElement.weight += weightDelta;\n parentElement = this._idToElement.get(parentElement.parentID);\n }\n }\n } else {\n let currentElement: ?Element = element;\n while (currentElement != null) {\n const oldWeight = currentElement.isCollapsed\n ? 1\n : currentElement.weight;\n\n if (currentElement.isCollapsed) {\n didMutate = true;\n currentElement.isCollapsed = false;\n\n const newWeight = currentElement.isCollapsed\n ? 1\n : currentElement.weight;\n const weightDelta = newWeight - oldWeight;\n\n let parentElement = this._idToElement.get(currentElement.parentID);\n while (parentElement !== undefined) {\n parentElement.weight += weightDelta;\n if (parentElement.isCollapsed) {\n // It's important to break on a collapsed parent when expanding nodes.\n // That's because expanding a node \"bubbles\" up and expands all parents as well.\n // Breaking in this case prevents us from over-incrementing the expanded weights.\n break;\n }\n parentElement = this._idToElement.get(parentElement.parentID);\n }\n }\n\n currentElement =\n currentElement.parentID !== 0\n ? this.getElementByID(currentElement.parentID)\n : null;\n }\n }\n\n // Only re-calculate weights and emit an \"update\" event if the store was mutated.\n if (didMutate) {\n let weightAcrossRoots = 0;\n this._roots.forEach(rootID => {\n const {weight} = ((this.getElementByID(rootID): any): Element);\n weightAcrossRoots += weight;\n });\n this._weightAcrossRoots = weightAcrossRoots;\n\n // The Tree context's search reducer expects an explicit list of ids for nodes that were added or removed.\n // In this case, we can pass it empty arrays since nodes in a collapsed tree are still there (just hidden).\n // Updating the selected search index later may require auto-expanding a collapsed subtree though.\n this.emit('mutated', [[], new Map()]);\n }\n }\n }\n\n _adjustParentTreeWeight: (\n parentElement: ?Element,\n weightDelta: number,\n ) => void = (parentElement, weightDelta) => {\n let isInsideCollapsedSubTree = false;\n\n while (parentElement != null) {\n parentElement.weight += weightDelta;\n\n // Additions and deletions within a collapsed subtree should not bubble beyond the collapsed parent.\n // Their weight will bubble up when the parent is expanded.\n if (parentElement.isCollapsed) {\n isInsideCollapsedSubTree = true;\n break;\n }\n\n parentElement = this._idToElement.get(parentElement.parentID);\n }\n\n // Additions and deletions within a collapsed subtree should not affect the overall number of elements.\n if (!isInsideCollapsedSubTree) {\n this._weightAcrossRoots += weightDelta;\n }\n };\n\n _recursivelyUpdateSubtree(\n id: number,\n callback: (element: Element) => void,\n ): void {\n const element = this._idToElement.get(id);\n if (element) {\n callback(element);\n\n element.children.forEach(child =>\n this._recursivelyUpdateSubtree(child, callback),\n );\n }\n }\n\n onBridgeNativeStyleEditorSupported: ({\n isSupported: boolean,\n validAttributes: ?$ReadOnlyArray<string>,\n }) => void = ({isSupported, validAttributes}) => {\n this._isNativeStyleEditorSupported = isSupported;\n this._nativeStyleEditorValidAttributes = validAttributes || null;\n\n this.emit('supportsNativeStyleEditor');\n };\n\n onBridgeOperations: (operations: Array<number>) => void = operations => {\n if (__DEBUG__) {\n console.groupCollapsed('onBridgeOperations');\n debug('onBridgeOperations', operations.join(','));\n }\n\n let haveRootsChanged = false;\n let haveErrorsOrWarningsChanged = false;\n\n // The first two values are always rendererID and rootID\n const rendererID = operations[0];\n\n const addedElementIDs: Array<number> = [];\n // This is a mapping of removed ID -> parent ID:\n const removedElementIDs: Map<number, number> = new Map();\n // We'll use the parent ID to adjust selection if it gets deleted.\n\n let i = 2;\n\n // Reassemble the string table.\n const stringTable: Array<string | null> = [\n null, // ID = 0 corresponds to the null string.\n ];\n const stringTableSize = operations[i];\n i++;\n\n const stringTableEnd = i + stringTableSize;\n\n while (i < stringTableEnd) {\n const nextLength = operations[i];\n i++;\n\n const nextString = utfDecodeStringWithRanges(\n operations,\n i,\n i + nextLength - 1,\n );\n stringTable.push(nextString);\n i += nextLength;\n }\n\n while (i < operations.length) {\n const operation = operations[i];\n switch (operation) {\n case TREE_OPERATION_ADD: {\n const id = operations[i + 1];\n const type = ((operations[i + 2]: any): ElementType);\n\n i += 3;\n\n if (this._idToElement.has(id)) {\n this._throwAndEmitError(\n Error(\n `Cannot add node \"${id}\" because a node with that id is already in the Store.`,\n ),\n );\n }\n\n if (type === ElementTypeRoot) {\n if (__DEBUG__) {\n debug('Add', `new root node ${id}`);\n }\n\n const isStrictModeCompliant = operations[i] > 0;\n i++;\n\n const supportsBasicProfiling =\n (operations[i] & PROFILING_FLAG_BASIC_SUPPORT) !== 0;\n const supportsTimeline =\n (operations[i] & PROFILING_FLAG_TIMELINE_SUPPORT) !== 0;\n i++;\n\n let supportsStrictMode = false;\n let hasOwnerMetadata = false;\n\n // If we don't know the bridge protocol, guess that we're dealing with the latest.\n // If we do know it, we can take it into consideration when parsing operations.\n if (\n this._bridgeProtocol === null ||\n this._bridgeProtocol.version >= 2\n ) {\n supportsStrictMode = operations[i] > 0;\n i++;\n\n hasOwnerMetadata = operations[i] > 0;\n i++;\n }\n\n this._roots = this._roots.concat(id);\n this._rootIDToRendererID.set(id, rendererID);\n this._rootIDToCapabilities.set(id, {\n supportsBasicProfiling,\n hasOwnerMetadata,\n supportsStrictMode,\n supportsTimeline,\n });\n\n // Not all roots support StrictMode;\n // don't flag a root as non-compliant unless it also supports StrictMode.\n const isStrictModeNonCompliant =\n !isStrictModeCompliant && supportsStrictMode;\n\n this._idToElement.set(id, {\n children: [],\n depth: -1,\n displayName: null,\n hocDisplayNames: null,\n id,\n isCollapsed: false, // Never collapse roots; it would hide the entire tree.\n isStrictModeNonCompliant,\n key: null,\n ownerID: 0,\n parentID: 0,\n type,\n weight: 0,\n compiledWithForget: false,\n });\n\n haveRootsChanged = true;\n } else {\n const parentID = operations[i];\n i++;\n\n const ownerID = operations[i];\n i++;\n\n const displayNameStringID = operations[i];\n const displayName = stringTable[displayNameStringID];\n i++;\n\n const keyStringID = operations[i];\n const key = stringTable[keyStringID];\n i++;\n\n if (__DEBUG__) {\n debug(\n 'Add',\n `node ${id} (${displayName || 'null'}) as child of ${parentID}`,\n );\n }\n\n const parentElement = this._idToElement.get(parentID);\n if (parentElement === undefined) {\n this._throwAndEmitError(\n Error(\n `Cannot add child \"${id}\" to parent \"${parentID}\" because parent node was not found in the Store.`,\n ),\n );\n\n break;\n }\n\n parentElement.children.push(id);\n\n const {\n formattedDisplayName: displayNameWithoutHOCs,\n hocDisplayNames,\n compiledWithForget,\n } = parseElementDisplayNameFromBackend(displayName, type);\n\n const element: Element = {\n children: [],\n depth: parentElement.depth + 1,\n displayName: displayNameWithoutHOCs,\n hocDisplayNames,\n id,\n isCollapsed: this._collapseNodesByDefault,\n isStrictModeNonCompliant: parentElement.isStrictModeNonCompliant,\n key,\n ownerID,\n parentID,\n type,\n weight: 1,\n compiledWithForget,\n };\n\n this._idToElement.set(id, element);\n addedElementIDs.push(id);\n this._adjustParentTreeWeight(parentElement, 1);\n\n if (ownerID > 0) {\n let set = this._ownersMap.get(ownerID);\n if (set === undefined) {\n set = new Set();\n this._ownersMap.set(ownerID, set);\n }\n set.add(id);\n }\n }\n break;\n }\n case TREE_OPERATION_REMOVE: {\n const removeLength = operations[i + 1];\n i += 2;\n\n for (let removeIndex = 0; removeIndex < removeLength; removeIndex++) {\n const id = operations[i];\n const element = this._idToElement.get(id);\n\n if (element === undefined) {\n this._throwAndEmitError(\n Error(\n `Cannot remove node \"${id}\" because no matching node was found in the Store.`,\n ),\n );\n\n break;\n }\n\n i += 1;\n\n const {children, ownerID, parentID, weight} = element;\n if (children.length > 0) {\n this._throwAndEmitError(\n Error(`Node \"${id}\" was removed before its children.`),\n );\n }\n\n this._idToElement.delete(id);\n\n let parentElement: ?Element = null;\n if (parentID === 0) {\n if (__DEBUG__) {\n debug('Remove', `node ${id} root`);\n }\n\n this._roots = this._roots.filter(rootID => rootID !== id);\n this._rootIDToRendererID.delete(id);\n this._rootIDToCapabilities.delete(id);\n\n haveRootsChanged = true;\n } else {\n if (__DEBUG__) {\n debug('Remove', `node ${id} from parent ${parentID}`);\n }\n\n parentElement = this._idToElement.get(parentID);\n if (parentElement === undefined) {\n this._throwAndEmitError(\n Error(\n `Cannot remove node \"${id}\" from parent \"${parentID}\" because no matching node was found in the Store.`,\n ),\n );\n\n break;\n }\n\n const index = parentElement.children.indexOf(id);\n parentElement.children.splice(index, 1);\n }\n\n this._adjustParentTreeWeight(parentElement, -weight);\n removedElementIDs.set(id, parentID);\n\n this._ownersMap.delete(id);\n if (ownerID > 0) {\n const set = this._ownersMap.get(ownerID);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n\n if (this._errorsAndWarnings.has(id)) {\n this._errorsAndWarnings.delete(id);\n haveErrorsOrWarningsChanged = true;\n }\n }\n\n break;\n }\n case TREE_OPERATION_REMOVE_ROOT: {\n i += 1;\n\n const id = operations[1];\n\n if (__DEBUG__) {\n debug(`Remove root ${id}`);\n }\n\n const recursivelyDeleteElements = (elementID: number) => {\n const element = this._idToElement.get(elementID);\n this._idToElement.delete(elementID);\n if (element) {\n // Mostly for Flow's sake\n for (let index = 0; index < element.children.length; index++) {\n recursivelyDeleteElements(element.children[index]);\n }\n }\n };\n\n const root = this._idToElement.get(id);\n if (root === undefined) {\n this._throwAndEmitError(\n Error(\n `Cannot remove root \"${id}\": no matching node was found in the Store.`,\n ),\n );\n\n break;\n }\n\n recursivelyDeleteElements(id);\n\n this._rootIDToCapabilities.delete(id);\n this._rootIDToRendererID.delete(id);\n this._roots = this._roots.filter(rootID => rootID !== id);\n this._weightAcrossRoots -= root.weight;\n break;\n }\n case TREE_OPERATION_REORDER_CHILDREN: {\n const id = operations[i + 1];\n const numChildren = operations[i + 2];\n i += 3;\n\n const element = this._idToElement.get(id);\n if (element === undefined) {\n this._throwAndEmitError(\n Error(\n `Cannot reorder children for node \"${id}\" because no matching node was found in the Store.`,\n ),\n );\n\n break;\n }\n\n const children = element.children;\n if (children.length !== numChildren) {\n this._throwAndEmitError(\n Error(\n `Children cannot be added or removed during a reorder operation.`,\n ),\n );\n }\n\n for (let j = 0; j < numChildren; j++) {\n const childID = operations[i + j];\n children[j] = childID;\n if (__DEV__) {\n // This check is more expensive so it's gated by __DEV__.\n const childElement = this._idToElement.get(childID);\n if (childElement == null || childElement.parentID !== id) {\n console.error(\n `Children cannot be added or removed during a reorder operation.`,\n );\n }\n }\n }\n i += numChildren;\n\n if (__DEBUG__) {\n debug('Re-order', `Node ${id} children ${children.join(',')}`);\n }\n break;\n }\n case TREE_OPERATION_SET_SUBTREE_MODE: {\n const id = operations[i + 1];\n const mode = operations[i + 2];\n\n i += 3;\n\n // If elements have already been mounted in this subtree, update them.\n // (In practice, this likely only applies to the root element.)\n if (mode === StrictMode) {\n this._recursivelyUpdateSubtree(id, element => {\n element.isStrictModeNonCompliant = false;\n });\n }\n\n if (__DEBUG__) {\n debug(\n 'Subtree mode',\n `Subtree with root ${id} set to mode ${mode}`,\n );\n }\n break;\n }\n case TREE_OPERATION_UPDATE_TREE_BASE_DURATION:\n // Base duration updates are only sent while profiling is in progress.\n // We can ignore them at this point.\n // The profiler UI uses them lazily in order to generate the tree.\n i += 3;\n break;\n case TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS:\n const id = operations[i + 1];\n const errorCount = operations[i + 2];\n const warningCount = operations[i + 3];\n\n i += 4;\n\n if (errorCount > 0 || warningCount > 0) {\n this._errorsAndWarnings.set(id, {errorCount, warningCount});\n } else if (this._errorsAndWarnings.has(id)) {\n this._errorsAndWarnings.delete(id);\n }\n haveErrorsOrWarningsChanged = true;\n break;\n default:\n this._throwAndEmitError(\n new UnsupportedBridgeOperationError(\n `Unsupported Bridge operation \"${operation}\"`,\n ),\n );\n }\n }\n\n this._revision++;\n\n // Any time the tree changes (e.g. elements added, removed, or reordered) cached indices may be invalid.\n this._cachedErrorAndWarningTuples = null;\n\n if (haveErrorsOrWarningsChanged) {\n let componentWithErrorCount = 0;\n let componentWithWarningCount = 0;\n\n this._errorsAndWarnings.forEach(entry => {\n if (entry.errorCount > 0) {\n componentWithErrorCount++;\n }\n\n if (entry.warningCount > 0) {\n componentWithWarningCount++;\n }\n });\n\n this._cachedComponentWithErrorCount = componentWithErrorCount;\n this._cachedComponentWithWarningCount = componentWithWarningCount;\n }\n\n if (haveRootsChanged) {\n const prevRootSupportsProfiling = this._rootSupportsBasicProfiling;\n const prevRootSupportsTimelineProfiling =\n this._rootSupportsTimelineProfiling;\n\n this._hasOwnerMetadata = false;\n this._rootSupportsBasicProfiling = false;\n this._rootSupportsTimelineProfiling = false;\n this._rootIDToCapabilities.forEach(\n ({supportsBasicProfiling, hasOwnerMetadata, supportsTimeline}) => {\n if (supportsBasicProfiling) {\n this._rootSupportsBasicProfiling = true;\n }\n if (hasOwnerMetadata) {\n this._hasOwnerMetadata = true;\n }\n if (supportsTimeline) {\n this._rootSupportsTimelineProfiling = true;\n }\n },\n );\n\n this.emit('roots');\n\n if (this._rootSupportsBasicProfiling !== prevRootSupportsProfiling) {\n this.emit('rootSupportsBasicProfiling');\n }\n\n if (\n this._rootSupportsTimelineProfiling !==\n prevRootSupportsTimelineProfiling\n ) {\n this.emit('rootSupportsTimelineProfiling');\n }\n }\n\n if (__DEBUG__) {\n console.log(printStore(this, true));\n console.groupEnd();\n }\n\n this.emit('mutated', [addedElementIDs, removedElementIDs]);\n };\n\n // Certain backends save filters on a per-domain basis.\n // In order to prevent filter preferences and applied filters from being out of sync,\n // this message enables the backend to override the frontend's current (\"saved\") filters.\n // This action should also override the saved filters too,\n // else reloading the frontend without reloading the backend would leave things out of sync.\n onBridgeOverrideComponentFilters: (\n componentFilters: Array<ComponentFilter>,\n ) => void = componentFilters => {\n this._componentFilters = componentFilters;\n\n setSavedComponentFilters(componentFilters);\n };\n\n onBridgeShutdown: () => void = () => {\n if (__DEBUG__) {\n debug('onBridgeShutdown', 'unsubscribing from Bridge');\n }\n\n const bridge = this._bridge;\n bridge.removeListener('operations', this.onBridgeOperations);\n bridge.removeListener(\n 'overrideComponentFilters',\n this.onBridgeOverrideComponentFilters,\n );\n bridge.removeListener('shutdown', this.onBridgeShutdown);\n bridge.removeListener(\n 'isReloadAndProfileSupportedByBackend',\n this.onBackendReloadAndProfileSupported,\n );\n bridge.removeListener(\n 'isNativeStyleEditorSupported',\n this.onBridgeNativeStyleEditorSupported,\n );\n bridge.removeListener(\n 'unsupportedRendererVersion',\n this.onBridgeUnsupportedRendererVersion,\n );\n bridge.removeListener('backendVersion', this.onBridgeBackendVersion);\n bridge.removeListener('bridgeProtocol', this.onBridgeProtocol);\n bridge.removeListener('saveToClipboard', this.onSaveToClipboard);\n bridge.removeListener('selectElement', this.onHostInstanceSelected);\n\n if (this._onBridgeProtocolTimeoutID !== null) {\n clearTimeout(this._onBridgeProtocolTimeoutID);\n this._onBridgeProtocolTimeoutID = null;\n }\n };\n\n onBackendReloadAndProfileSupported: (\n isReloadAndProfileSupported: boolean,\n ) => void = isReloadAndProfileSupported => {\n this._isReloadAndProfileBackendSupported = isReloadAndProfileSupported;\n\n this.emit('supportsReloadAndProfile');\n };\n\n onBridgeUnsupportedRendererVersion: () => void = () => {\n this._unsupportedRendererVersionDetected = true;\n\n this.emit('unsupportedRendererVersionDetected');\n };\n\n onBridgeBackendVersion: (backendVersion: string) => void = backendVersion => {\n this._backendVersion = backendVersion;\n this.emit('backendVersion');\n };\n\n onBridgeProtocol: (bridgeProtocol: BridgeProtocol) => void =\n bridgeProtocol => {\n if (this._onBridgeProtocolTimeoutID !== null) {\n clearTimeout(this._onBridgeProtocolTimeoutID);\n this._onBridgeProtocolTimeoutID = null;\n }\n\n this._bridgeProtocol = bridgeProtocol;\n\n if (bridgeProtocol.version !== currentBridgeProtocol.version) {\n // Technically newer versions of the frontend can, at least for now,\n // gracefully handle older versions of the backend protocol.\n // So for now we don't need to display the unsupported dialog.\n }\n };\n\n onBridgeProtocolTimeout: () => void = () => {\n this._onBridgeProtocolTimeoutID = null;\n\n // If we timed out, that indicates the backend predates the bridge protocol,\n // so we can set a fake version (0) to trigger the downgrade message.\n this._bridgeProtocol = BRIDGE_PROTOCOL[0];\n\n this.emit('unsupportedBridgeProtocolDetected');\n };\n\n onSaveToClipboard: (text: string) => void = text => {\n copy(text);\n };\n\n onBackendInitialized: () => void = () => {\n // Verify that the frontend version is compatible with the connected backend.\n // See github.com/facebook/react/issues/21326\n if (this._shouldCheckBridgeProtocolCompatibility) {\n // Older backends don't support an explicit bridge protocol,\n // so we should timeout eventually and show a downgrade message.\n this._onBridgeProtocolTimeoutID = setTimeout(\n this.onBridgeProtocolTimeout,\n 10000,\n );\n\n this._bridge.addListener('bridgeProtocol', this.onBridgeProtocol);\n this._bridge.send('getBridgeProtocol');\n }\n\n this._bridge.send('getBackendVersion');\n this._bridge.send('getIfHasUnsupportedRendererVersion');\n this._bridge.send('getHookSettings'); // Warm up cached hook settings\n };\n\n onHostInstanceSelected: (elementId: number) => void = elementId => {\n if (this._lastSelectedHostInstanceElementId === elementId) {\n return;\n }\n\n this._lastSelectedHostInstanceElementId = elementId;\n // By the time we emit this, there is no guarantee that TreeContext is rendered.\n this.emit('hostInstanceSelected', elementId);\n };\n\n getHookSettings: () => void = () => {\n if (this._hookSettings != null) {\n this.emit('hookSettings', this._hookSettings);\n } else {\n this._bridge.send('getHookSettings');\n }\n };\n\n updateHookSettings: (settings: $ReadOnly<DevToolsHookSettings>) => void =\n settings => {\n this._hookSettings = settings;\n\n this._bridge.send('updateHookSettings', settings);\n this.emit('settingsUpdated', settings);\n };\n\n onHookSettings: (settings: $ReadOnly<DevToolsHookSettings>) => void =\n settings => {\n this._hookSettings = settings;\n\n this.setShouldShowWarningsAndErrors(settings.showInlineWarningsAndErrors);\n this.emit('hookSettings', settings);\n };\n\n setShouldShowWarningsAndErrors(status: boolean): void {\n const previousStatus = this._shouldShowWarningsAndErrors;\n this._shouldShowWarningsAndErrors = status;\n\n if (previousStatus !== status) {\n // Propagate to subscribers, although tree state has not changed\n this.emit('mutated', [[], new Map()]);\n }\n }\n\n // The Store should never throw an Error without also emitting an event.\n // Otherwise Store errors will be invisible to users,\n // but the downstream errors they cause will be reported as bugs.\n // For example, https://github.com/facebook/react/issues/21402\n // Emitting an error event allows the ErrorBoundary to show the original error.\n _throwAndEmitError(error: Error): empty {\n this.emit('error', error);\n\n // Throwing is still valuable for local development\n // and for unit testing the Store itself.\n throw error;\n }\n}\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 * @flow strict-local\n */\n\nimport type {LoggerEvent} from 'react-devtools-shared/src/Logger';\n\nimport {registerEventLogger} from 'react-devtools-shared/src/Logger';\nimport {enableLogger} from 'react-devtools-feature-flags';\n\nlet currentLoggingIFrame = null;\nlet currentSessionId = null;\nlet missedEvents: Array<LoggerEvent> = [];\n\ntype LoggerContext = {\n page_url: ?string,\n};\n\nexport function registerDevToolsEventLogger(\n surface: string,\n fetchAdditionalContext?:\n | (() => LoggerContext)\n | (() => Promise<LoggerContext>),\n): void {\n async function logEvent(event: LoggerEvent) {\n if (enableLogger) {\n if (currentLoggingIFrame != null && currentSessionId != null) {\n const {metadata, ...eventWithoutMetadata} = event;\n const additionalContext: LoggerContext | {} =\n fetchAdditionalContext != null ? await fetchAdditionalContext() : {};\n\n currentLoggingIFrame?.contentWindow?.postMessage(\n {\n source: 'react-devtools-logging',\n event: eventWithoutMetadata,\n context: {\n ...additionalContext,\n metadata: metadata != null ? JSON.stringify(metadata) : '',\n session_id: currentSessionId,\n surface,\n version: process.env.DEVTOOLS_VERSION,\n },\n },\n '*',\n );\n } else {\n missedEvents.push(event);\n }\n }\n }\n\n function handleLoggingIFrameLoaded(iframe: HTMLIFrameElement) {\n currentLoggingIFrame = iframe;\n\n if (missedEvents.length > 0) {\n missedEvents.forEach(event => logEvent(event));\n missedEvents = [];\n }\n }\n\n // If logger is enabled, register a logger that captures logged events\n // and render iframe where the logged events will be reported to\n if (enableLogger) {\n const loggingUrl = process.env.LOGGING_URL;\n const body = document.body;\n\n if (\n typeof loggingUrl === 'string' &&\n loggingUrl.length > 0 &&\n body != null &&\n currentLoggingIFrame == null\n ) {\n registerEventLogger(logEvent);\n currentSessionId = window.crypto.randomUUID();\n\n const iframe = document.createElement('iframe');\n\n iframe.onload = () => handleLoggingIFrameLoaded(iframe);\n iframe.src = loggingUrl;\n\n body.appendChild(iframe);\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");","/**\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\nimport {createContext} from 'react';\nimport Store from '../store';\n\nimport type {ViewAttributeSource} from 'react-devtools-shared/src/devtools/views/DevTools';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\nexport const BridgeContext: ReactContext<FrontendBridge> =\n createContext<FrontendBridge>(((null: any): FrontendBridge));\nBridgeContext.displayName = 'BridgeContext';\n\nexport const StoreContext: ReactContext<Store> = createContext<Store>(\n ((null: any): Store),\n);\nStoreContext.displayName = 'StoreContext';\n\nexport type ContextMenuContextType = {\n isEnabledForInspectedElement: boolean,\n viewAttributeSourceFunction: ViewAttributeSource | null,\n};\n\nexport const ContextMenuContext: ReactContext<ContextMenuContextType> =\n createContext<ContextMenuContextType>({\n isEnabledForInspectedElement: false,\n viewAttributeSourceFunction: null,\n });\nContextMenuContext.displayName = 'ContextMenuContext';\n\nexport type OptionsContextType = {\n readOnly: boolean,\n hideSettings: boolean,\n hideToggleErrorAction: boolean,\n hideToggleSuspenseAction: boolean,\n hideLogAction: boolean,\n hideViewSourceAction: boolean,\n};\n\nexport const OptionsContext: ReactContext<OptionsContextType> =\n createContext<OptionsContextType>({\n readOnly: false,\n hideSettings: false,\n hideToggleErrorAction: false,\n hideToggleSuspenseAction: false,\n hideLogAction: false,\n hideViewSourceAction: false,\n });\n","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame([animationFrameID, timeoutID]) {\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n const timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n return [animationFrameID, timeoutID];\n };\n}\nfunction createDetectElementResize(nonce) {\n let animationKeyframes;\n let animationName;\n let animationStartEvent;\n let animationStyle;\n let checkTriggers;\n let resetTriggers;\n let scrollListener;\n const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function (element) {\n const triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n checkTriggers = function (element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n scrollListener = function (e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n return;\n }\n const element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n let animation = false;\n let keyframeprefix = \"\";\n animationStartEvent = \"animationstart\";\n const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n let pfx = \"\";\n {\n const elm = document.createElement(\"fakeelement\");\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n if (animation === false) {\n for (let i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n animationName = \"resizeanim\";\n animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n }\n const createStyles = function (doc) {\n if (!doc.getElementById(\"detectElementResize\")) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName(\"head\")[0],\n style = doc.createElement(\"style\");\n style.id = \"detectElementResize\";\n style.type = \"text/css\";\n if (nonce != null) {\n style.setAttribute(\"nonce\", nonce);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n head.appendChild(style);\n }\n };\n const addResizeListener = function (element, fn) {\n if (attachEvent) {\n element.attachEvent(\"onresize\", fn);\n } else {\n if (!element.__resizeTriggers__) {\n const doc = element.ownerDocument;\n const elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === \"static\") {\n element.style.position = \"relative\";\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n const expandTrigger = doc.createElement(\"div\");\n expandTrigger.className = \"expand-trigger\";\n expandTrigger.appendChild(doc.createElement(\"div\"));\n const contractTrigger = doc.createElement(\"div\");\n contractTrigger.className = \"contract-trigger\";\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener(\"scroll\", scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n const removeResizeListener = function (element, fn) {\n if (attachEvent) {\n element.detachEvent(\"onresize\", fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener(\"scroll\", scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n return {\n addResizeListener,\n removeResizeListener\n };\n}\n\nclass AutoSizer extends Component {\n constructor(...args) {\n super(...args);\n this.state = {\n height: this.props.defaultHeight || 0,\n scaledHeight: this.props.defaultHeight || 0,\n scaledWidth: this.props.defaultWidth || 0,\n width: this.props.defaultWidth || 0\n };\n this._autoSizer = null;\n this._detectElementResize = null;\n this._parentNode = null;\n this._resizeObserver = null;\n this._timeoutId = null;\n this._onResize = () => {\n this._timeoutId = null;\n const {\n disableHeight,\n disableWidth,\n onResize\n } = this.props;\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const style = window.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n const paddingRight = parseFloat(style.paddingRight || \"0\");\n const paddingTop = parseFloat(style.paddingTop || \"0\");\n const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n const rect = this._parentNode.getBoundingClientRect();\n const scaledHeight = rect.height - paddingTop - paddingBottom;\n const scaledWidth = rect.width - paddingLeft - paddingRight;\n const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n this.setState({\n height,\n width,\n scaledHeight,\n scaledWidth\n });\n if (typeof onResize === \"function\") {\n onResize({\n height,\n scaledHeight,\n scaledWidth,\n width\n });\n }\n }\n }\n };\n this._setRef = autoSizer => {\n this._autoSizer = autoSizer;\n };\n }\n componentDidMount() {\n const {\n nonce\n } = this.props;\n const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = parentNode;\n\n // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n // Using just global can result into onResize events not being emitted in cases with multiple realms\n const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n if (ResizeObserverInstance != null) {\n this._resizeObserver = new ResizeObserverInstance(() => {\n // Guard against \"ResizeObserver loop limit exceeded\" error;\n // could be triggered if the state update causes the ResizeObserver handler to run long.\n // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n this._timeoutId = setTimeout(this._onResize, 0);\n });\n this._resizeObserver.observe(parentNode);\n } else {\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(parentNode, this._onResize);\n }\n this._onResize();\n }\n }\n componentWillUnmount() {\n if (this._parentNode) {\n if (this._detectElementResize) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n if (this._timeoutId !== null) {\n clearTimeout(this._timeoutId);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n }\n }\n render() {\n const {\n children,\n defaultHeight,\n defaultWidth,\n disableHeight = false,\n disableWidth = false,\n nonce,\n onResize,\n style = {},\n tagName = \"div\",\n ...rest\n } = this.props;\n const {\n height,\n scaledHeight,\n scaledWidth,\n width\n } = this.state;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n const outerStyle = {\n overflow: \"visible\"\n };\n const childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n let bailoutOnChildren = false;\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n childParams.scaledHeight = scaledHeight;\n }\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n childParams.scaledWidth = scaledWidth;\n }\n return createElement(tagName, {\n ref: this._setRef,\n style: {\n ...outerStyle,\n ...style\n },\n ...rest\n }, !bailoutOnChildren && children(childParams));\n }\n}\n\nfunction isHeightAndWidthProps(props) {\n return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n return props && props.disableHeight === true && props.disableWidth !== true;\n}\n\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };\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 _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}","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}","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\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}","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n ? () => performance.now()\n : () => Date.now();\n\nexport type TimeoutID = {|\n id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n const start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n const timeoutID: TimeoutID = {\n id: requestAnimationFrame(tick),\n };\n\n return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n if (size === -1 || recalculate) {\n const div = document.createElement('div');\n const style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n\n ((document.body: any): HTMLBodyElement).appendChild(div);\n\n size = div.offsetWidth - div.clientWidth;\n\n ((document.body: any): HTMLBodyElement).removeChild(div);\n }\n\n return size;\n}\n\nexport type RTLOffsetType =\n | 'negative'\n | 'positive-descending'\n | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div');\n const outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n\n const innerDiv = document.createElement('div');\n const innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n\n outerDiv.appendChild(innerDiv);\n\n ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps<T> = {|\n columnIndex: number,\n data: T,\n isScrolling?: boolean,\n rowIndex: number,\n style: Object,\n|};\nexport type RenderComponent<T> = React$ComponentType<\n $Shape<RenderComponentProps<T>>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props<T> = {|\n children: RenderComponent<T>,\n className?: string,\n columnCount: number,\n columnWidth: itemSize,\n direction: Direction,\n height: number,\n initialScrollLeft?: number,\n initialScrollTop?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n innerTagName?: string, // deprecated\n itemData: T,\n itemKey?: (params: {|\n columnIndex: number,\n data: T,\n rowIndex: number,\n |}) => any,\n onItemsRendered?: OnItemsRenderedCallback,\n onScroll?: OnScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n outerTagName?: string, // deprecated\n overscanColumnCount?: number,\n overscanColumnsCount?: number, // deprecated\n overscanCount?: number, // deprecated\n overscanRowCount?: number,\n overscanRowsCount?: number, // deprecated\n rowCount: number,\n rowHeight: itemSize,\n style?: Object,\n useIsScrolling: boolean,\n width: number,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype getItemSize = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n props: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any,\n scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n props: Props<any>,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props<any>,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = new WeakSet();\n devWarningsOverscanRowsColumnsCount = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createGridComponent({\n getColumnOffset,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getColumnWidth,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment,\n getRowHeight,\n getRowOffset,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getColumnOffset: getItemOffset,\n getColumnStartIndexForOffset: GetStartIndexForOffset,\n getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n getColumnWidth: getItemSize,\n getEstimatedTotalHeight: getEstimatedTotalSize,\n getEstimatedTotalWidth: getEstimatedTotalSize,\n getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n getRowOffset: getItemOffset,\n getRowHeight: getItemSize,\n getRowStartIndexForOffset: GetStartIndexForOffset,\n getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class Grid<T> extends PureComponent<Props<T>, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n _outerRef: ?HTMLDivElement;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft:\n typeof this.props.initialScrollLeft === 'number'\n ? this.props.initialScrollLeft\n : 0,\n scrollTop:\n typeof this.props.initialScrollTop === 'number'\n ? this.props.initialScrollTop\n : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward',\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props<T>) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props<T>,\n prevState: State\n ): $Shape<State> | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo({\n scrollLeft,\n scrollTop,\n }: {\n scrollLeft: number,\n scrollTop: number,\n }): void {\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(prevState => {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n return null;\n }\n\n return {\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem({\n align = 'auto',\n columnIndex,\n rowIndex,\n }: {\n align: ScrollToAlign,\n columnIndex?: number,\n rowIndex?: number,\n }): void {\n const { columnCount, height, rowCount, width } = this.props;\n const { scrollLeft, scrollTop } = this.state;\n const scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n const horizontalScrollbarSize =\n estimatedTotalWidth > width ? scrollbarSize : 0;\n const verticalScrollbarSize =\n estimatedTotalHeight > height ? scrollbarSize : 0;\n\n this.scrollTo({\n scrollLeft:\n columnIndex !== undefined\n ? getOffsetForColumnAndAlignment(\n this.props,\n columnIndex,\n align,\n scrollLeft,\n this._instanceProps,\n verticalScrollbarSize\n )\n : scrollLeft,\n scrollTop:\n rowIndex !== undefined\n ? getOffsetForRowAndAlignment(\n this.props,\n rowIndex,\n align,\n scrollTop,\n this._instanceProps,\n horizontalScrollbarSize\n )\n : scrollTop,\n });\n }\n\n componentDidMount() {\n const { initialScrollLeft, initialScrollTop } = this.props;\n\n if (this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction } = this.props;\n const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n columnCount,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemData,\n itemKey = defaultItemKey,\n outerElementType,\n outerTagName,\n rowCount,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n const [\n columnStartIndex,\n columnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n const items = [];\n if (columnCount > 0 && rowCount) {\n for (\n let rowIndex = rowStartIndex;\n rowIndex <= rowStopIndex;\n rowIndex++\n ) {\n for (\n let columnIndex = columnStartIndex;\n columnIndex <= columnStopIndex;\n columnIndex++\n ) {\n items.push(\n createElement(children, {\n columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({ columnIndex, data: itemData, rowIndex }),\n rowIndex,\n style: this._getItemStyle(rowIndex, columnIndex),\n })\n );\n }\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth,\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): OnScrollCallback)({\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n const [\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n ] = this._getVerticalRangeToRender();\n this._callOnItemsRendered(\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex\n );\n }\n }\n\n if (typeof onScroll === 'function') {\n const {\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n scrollUpdateWasRequested,\n verticalScrollDirection,\n } = this.state;\n this._callOnScroll(\n scrollLeft,\n scrollTop,\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n const { columnWidth, direction, rowHeight } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && columnWidth,\n shouldResetStyleCacheOnItemSizeChange && direction,\n shouldResetStyleCacheOnItemSizeChange && rowHeight\n );\n\n const key = `${rowIndex}:${columnIndex}`;\n\n let style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n const offset = getColumnOffset(\n this.props,\n columnIndex,\n this._instanceProps\n );\n const isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offset,\n right: isRtl ? offset : undefined,\n top: getRowOffset(this.props, rowIndex, this._instanceProps),\n height: getRowHeight(this.props, rowIndex, this._instanceProps),\n width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getHorizontalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanColumnCount,\n overscanColumnsCount,\n overscanCount,\n rowCount,\n } = this.props;\n const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n const overscanCountResolved: number =\n overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getColumnStartIndexForOffset(\n this.props,\n scrollLeft,\n this._instanceProps\n );\n const stopIndex = getColumnStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollLeft,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || horizontalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || horizontalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _getVerticalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanCount,\n overscanRowCount,\n overscanRowsCount,\n rowCount,\n } = this.props;\n const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n const overscanCountResolved: number =\n overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getRowStartIndexForOffset(\n this.props,\n scrollTop,\n this._instanceProps\n );\n const stopIndex = getRowStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollTop,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || verticalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || verticalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScroll = (event: ScrollEvent): void => {\n const {\n clientHeight,\n clientWidth,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth,\n } = event.currentTarget;\n this.setState(prevState => {\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n let calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n calculatedScrollLeft = Math.max(\n 0,\n Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n );\n const calculatedScrollTop = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1);\n });\n };\n };\n}\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n innerTagName,\n outerTagName,\n overscanColumnsCount,\n overscanCount,\n overscanRowsCount,\n width,\n }: Props<any>,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn(\n 'The overscanCount prop has been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (\n typeof overscanColumnsCount === 'number' ||\n typeof overscanRowsCount === 'number'\n ) {\n if (\n devWarningsOverscanRowsColumnsCount &&\n !devWarningsOverscanRowsColumnsCount.has(instance)\n ) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn(\n 'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n if (typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Grids must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n }\n\n if (typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Grids must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps<T> = {|\n data: T,\n index: number,\n isScrolling?: boolean,\n style: Object,\n|};\ntype RenderComponent<T> = React$ComponentType<$Shape<RenderComponentProps<T>>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props<T> = {|\n children: RenderComponent<T>,\n className?: string,\n direction: Direction,\n height: number | string,\n initialScrollOffset?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n innerTagName?: string, // deprecated\n itemCount: number,\n itemData: T,\n itemKey?: (index: number, data: T) => any,\n itemSize: itemSize,\n layout: Layout,\n onItemsRendered?: onItemsRenderedCallback,\n onScroll?: onScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n outerTagName?: string, // deprecated\n overscanCount: number,\n style?: Object,\n useIsScrolling: boolean,\n width: number | string,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype GetItemSize = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n props: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n props: Props<any>,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props<any>,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createListComponent({\n getItemOffset,\n getEstimatedTotalSize,\n getItemSize,\n getOffsetForIndexAndAlignment,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getItemOffset: GetItemOffset,\n getEstimatedTotalSize: GetEstimatedTotalSize,\n getItemSize: GetItemSize,\n getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n getStartIndexForOffset: GetStartIndexForOffset,\n getStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class List<T> extends PureComponent<Props<T>, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _outerRef: ?HTMLDivElement;\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props<T>) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props<T>,\n prevState: State\n ): $Shape<State> | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo(scrollOffset: number): void {\n scrollOffset = Math.max(0, scrollOffset);\n\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n const { itemCount, layout } = this.props;\n const { scrollOffset } = this.state;\n\n index = Math.max(0, Math.min(index, itemCount - 1));\n\n // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n let scrollbarSize = 0;\n if (this._outerRef) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (layout === 'vertical') {\n scrollbarSize =\n outerRef.scrollWidth > outerRef.clientWidth\n ? getScrollbarSize()\n : 0;\n } else {\n scrollbarSize =\n outerRef.scrollHeight > outerRef.clientHeight\n ? getScrollbarSize()\n : 0;\n }\n }\n\n this.scrollTo(\n getOffsetForIndexAndAlignment(\n this.props,\n index,\n align,\n scrollOffset,\n this._instanceProps,\n scrollbarSize\n )\n );\n }\n\n componentDidMount() {\n const { direction, initialScrollOffset, layout } = this.props;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction, layout } = this.props;\n const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n outerElementType,\n outerTagName,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical;\n\n const [startIndex, stopIndex] = this._getRangeToRender();\n\n const items = [];\n if (itemCount > 0) {\n for (let index = startIndex; index <= stopIndex; index++) {\n items.push(\n createElement(children, {\n data: itemData,\n key: itemKey(index, itemData),\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(index),\n })\n );\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = getEstimatedTotalSize(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%',\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): onScrollCallback)({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n const { itemCount } = this.props;\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n ] = this._getRangeToRender();\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n );\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n const {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n } = this.state;\n this._callOnScroll(\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (index: number) => Object;\n _getItemStyle = (index: number): Object => {\n const { direction, itemSize, layout } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && itemSize,\n shouldResetStyleCacheOnItemSizeChange && layout,\n shouldResetStyleCacheOnItemSizeChange && direction\n );\n\n let style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n const offset = getItemOffset(this.props, index, this._instanceProps);\n const size = getItemSize(this.props, index, this._instanceProps);\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const isRtl = direction === 'rtl';\n const offsetHorizontal = isHorizontal ? offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%',\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getRangeToRender(): [number, number, number, number] {\n const { itemCount, overscanCount } = this.props;\n const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getStartIndexForOffset(\n this.props,\n scrollOffset,\n this._instanceProps\n );\n const stopIndex = getStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollOffset,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || scrollDirection === 'backward'\n ? Math.max(1, overscanCount)\n : 1;\n const overscanForward =\n !isScrolling || scrollDirection === 'forward'\n ? Math.max(1, overscanCount)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScrollHorizontal = (event: ScrollEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n let scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _onScrollVertical = (event: ScrollEvent): void => {\n const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1, null);\n });\n };\n };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n layout,\n innerTagName,\n outerTagName,\n width,\n }: Props<any>,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn(\n 'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n );\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"layout\" prop has been specified. ' +\n 'Value should be either \"horizontal\" or \"vertical\". ' +\n `\"${layout}\" was specified.`\n );\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Horizontal lists must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Vertical lists must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\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}","// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\ntype InstanceProps = any;\n\nconst FixedSizeList = createListComponent({\n getItemOffset: ({ itemSize }: Props<any>, index: number): number =>\n index * ((itemSize: any): number),\n\n getItemSize: ({ itemSize }: Props<any>, index: number): number =>\n ((itemSize: any): number),\n\n getEstimatedTotalSize: ({ itemCount, itemSize }: Props<any>) =>\n ((itemSize: any): number) * itemCount,\n\n getOffsetForIndexAndAlignment: (\n { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const size = (((isHorizontal ? width : height): any): number);\n const lastItemOffset = Math.max(\n 0,\n itemCount * ((itemSize: any): number) - size\n );\n const maxOffset = Math.min(\n lastItemOffset,\n index * ((itemSize: any): number)\n );\n const minOffset = Math.max(\n 0,\n index * ((itemSize: any): number) -\n size +\n ((itemSize: any): number) +\n scrollbarSize\n );\n\n if (align === 'smart') {\n if (\n scrollOffset >= minOffset - size &&\n scrollOffset <= maxOffset + size\n ) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center': {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getStartIndexForOffset: (\n { itemCount, itemSize }: Props<any>,\n offset: number\n ): number =>\n Math.max(\n 0,\n Math.min(itemCount - 1, Math.floor(offset / ((itemSize: any): number)))\n ),\n\n getStopIndexForStartIndex: (\n { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n startIndex: number,\n scrollOffset: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const offset = startIndex * ((itemSize: any): number);\n const size = (((isHorizontal ? width : height): any): number);\n const numVisibleItems = Math.ceil(\n (size + scrollOffset - offset) / ((itemSize: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n itemCount - 1,\n startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n initInstanceProps(props: Props<any>): any {\n // Noop\n },\n\n shouldResetStyleCacheOnItemSizeChange: true,\n\n validateProps: ({ itemSize }: Props<any>): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error(\n 'An invalid \"itemSize\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default FixedSizeList;\n","// @flow\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nexport default function shallowDiffers(prev: Object, next: Object): boolean {\n for (let attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n for (let attribute in next) {\n if (prev[attribute] !== next[attribute]) {\n return true;\n }\n }\n return false;\n}\n","// @flow\n\nimport shallowDiffers from './shallowDiffers';\n\n// Custom comparison function for React.memo().\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\nexport default function areEqual(\n prevProps: Object,\n nextProps: Object\n): boolean {\n const { style: prevStyle, ...prevRest } = prevProps;\n const { style: nextStyle, ...nextRest } = nextProps;\n\n return (\n !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest)\n );\n}\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 * @flow\n */\n\nimport escapeStringRegExp from 'escape-string-regexp';\nimport {meta} from '../../hydration';\nimport {formatDataForPreview} from '../../utils';\nimport isArray from 'react-devtools-shared/src/isArray';\n\nimport type {HooksTree} from 'react-debug-tools/src/ReactDebugHooks';\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport function alphaSortEntries(\n entryA: [string, mixed],\n entryB: [string, mixed],\n): number {\n const a = entryA[0];\n const b = entryB[0];\n if (String(+a) === a) {\n if (String(+b) !== b) {\n return -1;\n }\n return +a < +b ? -1 : 1;\n }\n return a < b ? -1 : 1;\n}\n\nexport function createRegExp(string: string): RegExp {\n // Allow /regex/ syntax with optional last /\n if (string[0] === '/') {\n // Cut off first slash\n string = string.slice(1);\n // Cut off last slash, but only if it's there\n if (string[string.length - 1] === '/') {\n string = string.slice(0, string.length - 1);\n }\n try {\n return new RegExp(string, 'i');\n } catch (err) {\n // Bad regex. Make it not match anything.\n // TODO: maybe warn in console?\n return new RegExp('.^');\n }\n }\n\n function isLetter(char: string) {\n return char.toLowerCase() !== char.toUpperCase();\n }\n\n function matchAnyCase(char: string) {\n if (!isLetter(char)) {\n // Don't mess with special characters like [.\n return char;\n }\n return '[' + char.toLowerCase() + char.toUpperCase() + ']';\n }\n\n // 'item' should match 'Item' and 'ListItem', but not 'InviteMom'.\n // To do this, we'll slice off 'tem' and check first letter separately.\n const escaped = escapeStringRegExp(string);\n const firstChar = escaped[0];\n let restRegex = '';\n // For 'item' input, restRegex becomes '[tT][eE][mM]'\n // We can't simply make it case-insensitive because first letter case matters.\n for (let i = 1; i < escaped.length; i++) {\n restRegex += matchAnyCase(escaped[i]);\n }\n\n if (!isLetter(firstChar)) {\n // We can't put a non-character like [ in a group\n // so we fall back to the simple case.\n return new RegExp(firstChar + restRegex);\n }\n\n // Construct a smarter regex.\n return new RegExp(\n // For example:\n // (^[iI]|I)[tT][eE][mM]\n // Matches:\n // 'Item'\n // 'ListItem'\n // but not 'InviteMom'\n '(^' +\n matchAnyCase(firstChar) +\n '|' +\n firstChar.toUpperCase() +\n ')' +\n restRegex,\n );\n}\n\nexport function getMetaValueLabel(data: Object): string | null {\n if (hasOwnProperty.call(data, meta.preview_long)) {\n return data[meta.preview_long];\n } else {\n return formatDataForPreview(data, true);\n }\n}\n\nfunction sanitize(data: Object): void {\n for (const key in data) {\n const value = data[key];\n\n if (value && value[meta.type]) {\n data[key] = getMetaValueLabel(value);\n } else if (value != null) {\n if (isArray(value)) {\n sanitize(value);\n } else if (typeof value === 'object') {\n sanitize(value);\n }\n }\n }\n}\n\nexport function serializeDataForCopy(props: Object): string {\n const cloned = Object.assign({}, props);\n\n sanitize(cloned);\n\n try {\n return JSON.stringify(cloned, null, 2);\n } catch (error) {\n return '';\n }\n}\n\nexport function serializeHooksForCopy(hooks: HooksTree | null): string {\n // $FlowFixMe[not-an-object] \"HooksTree is not an object\"\n const cloned = Object.assign(([]: Array<any>), hooks);\n\n const queue = [...cloned];\n\n while (queue.length > 0) {\n const current = queue.pop();\n\n // These aren't meaningful\n // $FlowFixMe[incompatible-use]\n delete current.id;\n // $FlowFixMe[incompatible-use]\n delete current.isStateEditable;\n\n // $FlowFixMe[incompatible-use]\n if (current.subHooks.length > 0) {\n // $FlowFixMe[incompatible-use]\n queue.push(...current.subHooks);\n }\n }\n\n sanitize(cloned);\n\n try {\n return JSON.stringify(cloned, null, 2);\n } catch (error) {\n return '';\n }\n}\n\n// Keeping this in memory seems to be enough to enable the browser to download larger profiles.\n// Without this, we would see a \"Download failed: network error\" failure.\nlet downloadUrl = null;\n\nexport function downloadFile(\n element: HTMLAnchorElement,\n filename: string,\n text: string,\n): void {\n const blob = new Blob([text], {type: 'text/plain;charset=utf-8'});\n\n if (downloadUrl !== null) {\n URL.revokeObjectURL(downloadUrl);\n }\n\n downloadUrl = URL.createObjectURL(blob);\n\n element.setAttribute('href', downloadUrl);\n element.setAttribute('download', filename);\n\n element.click();\n}\n\nexport function truncateText(text: string, maxLength: number): string {\n const {length} = text;\n if (length > maxLength) {\n return (\n text.slice(0, Math.floor(maxLength / 2)) +\n '…' +\n text.slice(length - Math.ceil(maxLength / 2) - 1)\n );\n } else {\n return text;\n }\n}\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 * @flow\n */\n\n// This context combines tree/selection state, search, and the owners stack.\n// These values are managed together because changes in one often impact the others.\n// Combining them enables us to avoid cascading renders.\n//\n// Changes to search state may impact tree state.\n// For example, updating the selected search result also updates the tree's selected value.\n// Search does not fundamentally change the tree though.\n// It is also possible to update the selected tree value independently.\n//\n// Changes to owners state mask search and tree values.\n// When owners stack is not empty, search is temporarily disabled,\n// and tree values (e.g. num elements, selected element) are masked.\n// Both tree and search values are restored when the owners stack is cleared.\n//\n// For this reason, changes to the tree context are processed in sequence: tree -> search -> owners\n// This enables each section to potentially override (or mask) previous values.\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport {createRegExp} from '../utils';\nimport {StoreContext} from '../context';\nimport Store from '../../store';\n\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\nexport type StateContext = {\n // Tree\n numElements: number,\n ownerSubtreeLeafElementID: number | null,\n\n // Search\n searchIndex: number | null,\n searchResults: Array<number>,\n searchText: string,\n\n // Owners\n ownerID: number | null,\n ownerFlatTree: Array<Element> | null,\n\n // Inspection element panel\n inspectedElementID: number | null,\n inspectedElementIndex: number | null,\n};\n\ntype ACTION_GO_TO_NEXT_SEARCH_RESULT = {\n type: 'GO_TO_NEXT_SEARCH_RESULT',\n};\ntype ACTION_GO_TO_PREVIOUS_SEARCH_RESULT = {\n type: 'GO_TO_PREVIOUS_SEARCH_RESULT',\n};\ntype ACTION_HANDLE_STORE_MUTATION = {\n type: 'HANDLE_STORE_MUTATION',\n payload: [Array<number>, Map<number, number>],\n};\ntype ACTION_RESET_OWNER_STACK = {\n type: 'RESET_OWNER_STACK',\n};\ntype ACTION_SELECT_CHILD_ELEMENT_IN_TREE = {\n type: 'SELECT_CHILD_ELEMENT_IN_TREE',\n};\ntype ACTION_SELECT_ELEMENT_AT_INDEX = {\n type: 'SELECT_ELEMENT_AT_INDEX',\n payload: number | null,\n};\ntype ACTION_SELECT_ELEMENT_BY_ID = {\n type: 'SELECT_ELEMENT_BY_ID',\n payload: number | null,\n};\ntype ACTION_SELECT_NEXT_ELEMENT_IN_TREE = {\n type: 'SELECT_NEXT_ELEMENT_IN_TREE',\n};\ntype ACTION_SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE = {\n type: 'SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE',\n};\ntype ACTION_SELECT_NEXT_SIBLING_IN_TREE = {\n type: 'SELECT_NEXT_SIBLING_IN_TREE',\n};\ntype ACTION_SELECT_OWNER = {\n type: 'SELECT_OWNER',\n payload: number,\n};\ntype ACTION_SELECT_PARENT_ELEMENT_IN_TREE = {\n type: 'SELECT_PARENT_ELEMENT_IN_TREE',\n};\ntype ACTION_SELECT_PREVIOUS_ELEMENT_IN_TREE = {\n type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE',\n};\ntype ACTION_SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE = {\n type: 'SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE',\n};\ntype ACTION_SELECT_PREVIOUS_SIBLING_IN_TREE = {\n type: 'SELECT_PREVIOUS_SIBLING_IN_TREE',\n};\ntype ACTION_SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE = {\n type: 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE',\n};\ntype ACTION_SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE = {\n type: 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE',\n};\ntype ACTION_SET_SEARCH_TEXT = {\n type: 'SET_SEARCH_TEXT',\n payload: string,\n};\n\ntype Action =\n | ACTION_GO_TO_NEXT_SEARCH_RESULT\n | ACTION_GO_TO_PREVIOUS_SEARCH_RESULT\n | ACTION_HANDLE_STORE_MUTATION\n | ACTION_RESET_OWNER_STACK\n | ACTION_SELECT_CHILD_ELEMENT_IN_TREE\n | ACTION_SELECT_ELEMENT_AT_INDEX\n | ACTION_SELECT_ELEMENT_BY_ID\n | ACTION_SELECT_NEXT_ELEMENT_IN_TREE\n | ACTION_SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE\n | ACTION_SELECT_NEXT_SIBLING_IN_TREE\n | ACTION_SELECT_OWNER\n | ACTION_SELECT_PARENT_ELEMENT_IN_TREE\n | ACTION_SELECT_PREVIOUS_ELEMENT_IN_TREE\n | ACTION_SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE\n | ACTION_SELECT_PREVIOUS_SIBLING_IN_TREE\n | ACTION_SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE\n | ACTION_SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE\n | ACTION_SET_SEARCH_TEXT;\n\nexport type DispatcherContext = (action: Action) => void;\n\nconst TreeStateContext: ReactContext<StateContext> =\n createContext<StateContext>(((null: any): StateContext));\nTreeStateContext.displayName = 'TreeStateContext';\n\nconst TreeDispatcherContext: ReactContext<DispatcherContext> =\n createContext<DispatcherContext>(((null: any): DispatcherContext));\nTreeDispatcherContext.displayName = 'TreeDispatcherContext';\n\ntype State = {\n // Tree\n numElements: number,\n ownerSubtreeLeafElementID: number | null,\n\n // Search\n searchIndex: number | null,\n searchResults: Array<number>,\n searchText: string,\n\n // Owners\n ownerID: number | null,\n ownerFlatTree: Array<Element> | null,\n\n // Inspection element panel\n inspectedElementID: number | null,\n inspectedElementIndex: number | null,\n};\n\nfunction reduceTreeState(store: Store, state: State, action: Action): State {\n let {\n numElements,\n ownerSubtreeLeafElementID,\n inspectedElementID,\n inspectedElementIndex,\n } = state;\n const ownerID = state.ownerID;\n\n let lookupIDForIndex = true;\n\n // Base tree should ignore selected element changes when the owner's tree is active.\n if (ownerID === null) {\n switch (action.type) {\n case 'HANDLE_STORE_MUTATION':\n numElements = store.numElements;\n\n // If the currently-selected Element has been removed from the tree, update selection state.\n const removedIDs = action.payload[1];\n // Find the closest parent that wasn't removed during this batch.\n // We deduce the parent-child mapping from removedIDs (id -> parentID)\n // because by now it's too late to read them from the store.\n while (\n inspectedElementID !== null &&\n removedIDs.has(inspectedElementID)\n ) {\n // $FlowExpectedError[incompatible-type]\n inspectedElementID = removedIDs.get(inspectedElementID);\n }\n if (inspectedElementID === 0) {\n // The whole root was removed.\n inspectedElementIndex = null;\n }\n break;\n case 'SELECT_CHILD_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (inspectedElementIndex !== null) {\n const inspectedElement = store.getElementAtIndex(\n inspectedElementIndex,\n );\n if (\n inspectedElement !== null &&\n inspectedElement.children.length > 0 &&\n !inspectedElement.isCollapsed\n ) {\n const firstChildID = inspectedElement.children[0];\n const firstChildIndex = store.getIndexOfElementID(firstChildID);\n if (firstChildIndex !== null) {\n inspectedElementIndex = firstChildIndex;\n }\n }\n }\n break;\n case 'SELECT_ELEMENT_AT_INDEX':\n ownerSubtreeLeafElementID = null;\n\n inspectedElementIndex = (action: ACTION_SELECT_ELEMENT_AT_INDEX)\n .payload;\n break;\n case 'SELECT_ELEMENT_BY_ID':\n ownerSubtreeLeafElementID = null;\n\n // Skip lookup in this case; it would be redundant.\n // It might also cause problems if the specified element was inside of a (not yet expanded) subtree.\n lookupIDForIndex = false;\n\n inspectedElementID = (action: ACTION_SELECT_ELEMENT_BY_ID).payload;\n inspectedElementIndex =\n inspectedElementID === null\n ? null\n : store.getIndexOfElementID(inspectedElementID);\n break;\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (\n inspectedElementIndex === null ||\n inspectedElementIndex + 1 >= numElements\n ) {\n inspectedElementIndex = 0;\n } else {\n inspectedElementIndex++;\n }\n break;\n case 'SELECT_NEXT_SIBLING_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (inspectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((inspectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parent = store.getElementByID(selectedElement.parentID);\n if (parent !== null) {\n const {children} = parent;\n const selectedChildIndex = children.indexOf(selectedElement.id);\n const nextChildID =\n selectedChildIndex < children.length - 1\n ? children[selectedChildIndex + 1]\n : children[0];\n inspectedElementIndex = store.getIndexOfElementID(nextChildID);\n }\n }\n }\n break;\n case 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE':\n if (inspectedElementIndex !== null) {\n if (\n ownerSubtreeLeafElementID !== null &&\n ownerSubtreeLeafElementID !== inspectedElementID\n ) {\n const leafElement = store.getElementByID(ownerSubtreeLeafElementID);\n if (leafElement !== null) {\n let currentElement: null | Element = leafElement;\n while (currentElement !== null) {\n if (currentElement.ownerID === inspectedElementID) {\n inspectedElementIndex = store.getIndexOfElementID(\n currentElement.id,\n );\n break;\n } else if (currentElement.ownerID !== 0) {\n currentElement = store.getElementByID(currentElement.ownerID);\n }\n }\n }\n }\n }\n break;\n case 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE':\n if (inspectedElementIndex !== null) {\n if (ownerSubtreeLeafElementID === null) {\n // If this is the first time we're stepping through the owners tree,\n // pin the current component as the owners list leaf.\n // This will enable us to step back down to this component.\n ownerSubtreeLeafElementID = inspectedElementID;\n }\n\n const selectedElement = store.getElementAtIndex(\n ((inspectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.ownerID !== 0) {\n const ownerIndex = store.getIndexOfElementID(\n selectedElement.ownerID,\n );\n if (ownerIndex !== null) {\n inspectedElementIndex = ownerIndex;\n }\n }\n }\n break;\n case 'SELECT_PARENT_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (inspectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((inspectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parentIndex = store.getIndexOfElementID(\n selectedElement.parentID,\n );\n if (parentIndex !== null) {\n inspectedElementIndex = parentIndex;\n }\n }\n }\n break;\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (inspectedElementIndex === null || inspectedElementIndex === 0) {\n inspectedElementIndex = numElements - 1;\n } else {\n inspectedElementIndex--;\n }\n break;\n case 'SELECT_PREVIOUS_SIBLING_IN_TREE':\n ownerSubtreeLeafElementID = null;\n\n if (inspectedElementIndex !== null) {\n const selectedElement = store.getElementAtIndex(\n ((inspectedElementIndex: any): number),\n );\n if (selectedElement !== null && selectedElement.parentID !== 0) {\n const parent = store.getElementByID(selectedElement.parentID);\n if (parent !== null) {\n const {children} = parent;\n const selectedChildIndex = children.indexOf(selectedElement.id);\n const nextChildID =\n selectedChildIndex > 0\n ? children[selectedChildIndex - 1]\n : children[children.length - 1];\n inspectedElementIndex = store.getIndexOfElementID(nextChildID);\n }\n }\n }\n break;\n case 'SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE': {\n const elementIndicesWithErrorsOrWarnings =\n store.getElementsWithErrorsAndWarnings();\n if (elementIndicesWithErrorsOrWarnings.length === 0) {\n return state;\n }\n\n let flatIndex = 0;\n if (inspectedElementIndex !== null) {\n // Resume from the current position in the list.\n // Otherwise step to the previous item, relative to the current selection.\n for (\n let i = elementIndicesWithErrorsOrWarnings.length - 1;\n i >= 0;\n i--\n ) {\n const {index} = elementIndicesWithErrorsOrWarnings[i];\n if (index >= inspectedElementIndex) {\n flatIndex = i;\n } else {\n break;\n }\n }\n }\n\n let prevEntry;\n if (flatIndex === 0) {\n prevEntry =\n elementIndicesWithErrorsOrWarnings[\n elementIndicesWithErrorsOrWarnings.length - 1\n ];\n inspectedElementID = prevEntry.id;\n inspectedElementIndex = prevEntry.index;\n } else {\n prevEntry = elementIndicesWithErrorsOrWarnings[flatIndex - 1];\n inspectedElementID = prevEntry.id;\n inspectedElementIndex = prevEntry.index;\n }\n\n lookupIDForIndex = false;\n break;\n }\n case 'SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE': {\n const elementIndicesWithErrorsOrWarnings =\n store.getElementsWithErrorsAndWarnings();\n if (elementIndicesWithErrorsOrWarnings.length === 0) {\n return state;\n }\n\n let flatIndex = -1;\n if (inspectedElementIndex !== null) {\n // Resume from the current position in the list.\n // Otherwise step to the next item, relative to the current selection.\n for (let i = 0; i < elementIndicesWithErrorsOrWarnings.length; i++) {\n const {index} = elementIndicesWithErrorsOrWarnings[i];\n if (index <= inspectedElementIndex) {\n flatIndex = i;\n } else {\n break;\n }\n }\n }\n\n let nextEntry;\n if (flatIndex >= elementIndicesWithErrorsOrWarnings.length - 1) {\n nextEntry = elementIndicesWithErrorsOrWarnings[0];\n inspectedElementID = nextEntry.id;\n inspectedElementIndex = nextEntry.index;\n } else {\n nextEntry = elementIndicesWithErrorsOrWarnings[flatIndex + 1];\n inspectedElementID = nextEntry.id;\n inspectedElementIndex = nextEntry.index;\n }\n\n lookupIDForIndex = false;\n break;\n }\n default:\n // React can bailout of no-op updates.\n return state;\n }\n }\n\n // Keep selected item ID and index in sync.\n if (\n lookupIDForIndex &&\n inspectedElementIndex !== state.inspectedElementIndex\n ) {\n if (inspectedElementIndex === null) {\n inspectedElementID = null;\n } else {\n inspectedElementID = store.getElementIDAtIndex(\n ((inspectedElementIndex: any): number),\n );\n }\n }\n\n return {\n ...state,\n\n numElements,\n ownerSubtreeLeafElementID,\n inspectedElementIndex,\n inspectedElementID,\n };\n}\n\nfunction reduceSearchState(store: Store, state: State, action: Action): State {\n let {\n searchIndex,\n searchResults,\n searchText,\n inspectedElementID,\n inspectedElementIndex,\n } = state;\n const ownerID = state.ownerID;\n\n const prevSearchIndex = searchIndex;\n const prevSearchText = searchText;\n const numPrevSearchResults = searchResults.length;\n\n // We track explicitly whether search was requested because\n // we might want to search even if search index didn't change.\n // For example, if you press \"next result\" on a search with a single\n // result but a different current selection, we'll set this to true.\n let didRequestSearch = false;\n\n // Search isn't supported when the owner's tree is active.\n if (ownerID === null) {\n switch (action.type) {\n case 'GO_TO_NEXT_SEARCH_RESULT':\n if (numPrevSearchResults > 0) {\n didRequestSearch = true;\n searchIndex =\n // $FlowFixMe[unsafe-addition] addition with possible null/undefined value\n searchIndex + 1 < numPrevSearchResults ? searchIndex + 1 : 0;\n }\n break;\n case 'GO_TO_PREVIOUS_SEARCH_RESULT':\n if (numPrevSearchResults > 0) {\n didRequestSearch = true;\n searchIndex =\n ((searchIndex: any): number) > 0\n ? ((searchIndex: any): number) - 1\n : numPrevSearchResults - 1;\n }\n break;\n case 'HANDLE_STORE_MUTATION':\n if (searchText !== '') {\n const [addedElementIDs, removedElementIDs] =\n (action: ACTION_HANDLE_STORE_MUTATION).payload;\n\n removedElementIDs.forEach((parentID, id) => {\n // Prune this item from the search results.\n const index = searchResults.indexOf(id);\n if (index >= 0) {\n searchResults = searchResults\n .slice(0, index)\n .concat(searchResults.slice(index + 1));\n\n // If the results are now empty, also deselect things.\n if (searchResults.length === 0) {\n searchIndex = null;\n } else if (((searchIndex: any): number) >= searchResults.length) {\n searchIndex = searchResults.length - 1;\n }\n }\n });\n\n addedElementIDs.forEach(id => {\n const element = ((store.getElementByID(id): any): Element);\n\n // It's possible that multiple tree operations will fire before this action has run.\n // So it's important to check for elements that may have been added and then removed.\n if (element !== null) {\n const {displayName} = element;\n\n // Add this item to the search results if it matches.\n const regExp = createRegExp(searchText);\n if (displayName !== null && regExp.test(displayName)) {\n const newElementIndex = ((store.getIndexOfElementID(\n id,\n ): any): number);\n\n let foundMatch = false;\n for (let index = 0; index < searchResults.length; index++) {\n const resultID = searchResults[index];\n if (\n newElementIndex <\n ((store.getIndexOfElementID(resultID): any): number)\n ) {\n foundMatch = true;\n searchResults = searchResults\n .slice(0, index)\n .concat(resultID)\n .concat(searchResults.slice(index));\n break;\n }\n }\n if (!foundMatch) {\n searchResults = searchResults.concat(id);\n }\n\n searchIndex = searchIndex === null ? 0 : searchIndex;\n }\n }\n });\n }\n break;\n case 'SET_SEARCH_TEXT':\n searchIndex = null;\n searchResults = [];\n searchText = (action: ACTION_SET_SEARCH_TEXT).payload;\n\n if (searchText !== '') {\n const regExp = createRegExp(searchText);\n store.roots.forEach(rootID => {\n recursivelySearchTree(store, rootID, regExp, searchResults);\n });\n if (searchResults.length > 0) {\n if (prevSearchIndex === null) {\n if (inspectedElementIndex !== null) {\n searchIndex = getNearestResultIndex(\n store,\n searchResults,\n inspectedElementIndex,\n );\n } else {\n searchIndex = 0;\n }\n } else {\n searchIndex = Math.min(\n ((prevSearchIndex: any): number),\n searchResults.length - 1,\n );\n }\n }\n }\n break;\n default:\n // React can bailout of no-op updates.\n return state;\n }\n }\n\n if (searchText !== prevSearchText) {\n const newSearchIndex = searchResults.indexOf(inspectedElementID);\n if (newSearchIndex === -1) {\n // Only move the selection if the new query\n // doesn't match the current selection anymore.\n didRequestSearch = true;\n } else {\n // Selected item still matches the new search query.\n // Adjust the index to reflect its position in new results.\n searchIndex = newSearchIndex;\n }\n }\n if (didRequestSearch && searchIndex !== null) {\n inspectedElementID = ((searchResults[searchIndex]: any): number);\n inspectedElementIndex = store.getIndexOfElementID(\n ((inspectedElementID: any): number),\n );\n }\n\n return {\n ...state,\n\n inspectedElementID,\n inspectedElementIndex,\n\n searchIndex,\n searchResults,\n searchText,\n };\n}\n\nfunction reduceOwnersState(store: Store, state: State, action: Action): State {\n let {\n numElements,\n ownerID,\n ownerFlatTree,\n inspectedElementID,\n inspectedElementIndex,\n } = state;\n const {searchIndex, searchResults, searchText} = state;\n\n let prevInspectedElementIndex = inspectedElementIndex;\n\n switch (action.type) {\n case 'HANDLE_STORE_MUTATION':\n if (ownerID !== null) {\n if (!store.containsElement(ownerID)) {\n ownerID = null;\n ownerFlatTree = null;\n prevInspectedElementIndex = null;\n } else {\n ownerFlatTree = store.getOwnersListForElement(ownerID);\n if (inspectedElementID !== null) {\n // Mutation might have caused the index of this ID to shift.\n prevInspectedElementIndex = ownerFlatTree.findIndex(\n element => element.id === inspectedElementID,\n );\n }\n }\n } else {\n if (inspectedElementID !== null) {\n // Mutation might have caused the index of this ID to shift.\n inspectedElementIndex = store.getIndexOfElementID(inspectedElementID);\n }\n }\n if (inspectedElementIndex === -1) {\n // If we couldn't find this ID after mutation, unselect it.\n inspectedElementIndex = null;\n inspectedElementID = null;\n }\n break;\n case 'RESET_OWNER_STACK':\n ownerID = null;\n ownerFlatTree = null;\n inspectedElementIndex =\n inspectedElementID !== null\n ? store.getIndexOfElementID(inspectedElementID)\n : null;\n break;\n case 'SELECT_ELEMENT_AT_INDEX':\n if (ownerFlatTree !== null) {\n inspectedElementIndex = (action: ACTION_SELECT_ELEMENT_AT_INDEX)\n .payload;\n }\n break;\n case 'SELECT_ELEMENT_BY_ID':\n if (ownerFlatTree !== null) {\n const payload = (action: ACTION_SELECT_ELEMENT_BY_ID).payload;\n if (payload === null) {\n inspectedElementIndex = null;\n } else {\n inspectedElementIndex = ownerFlatTree.findIndex(\n element => element.id === payload,\n );\n\n // If the selected element is outside of the current owners list,\n // exit the list and select the element in the main tree.\n // This supports features like toggling Suspense.\n if (inspectedElementIndex !== null && inspectedElementIndex < 0) {\n ownerID = null;\n ownerFlatTree = null;\n inspectedElementIndex = store.getIndexOfElementID(payload);\n }\n }\n }\n break;\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n if (ownerFlatTree !== null && ownerFlatTree.length > 0) {\n if (inspectedElementIndex === null) {\n inspectedElementIndex = 0;\n } else if (inspectedElementIndex + 1 < ownerFlatTree.length) {\n inspectedElementIndex++;\n }\n }\n break;\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n if (ownerFlatTree !== null && ownerFlatTree.length > 0) {\n if (inspectedElementIndex !== null && inspectedElementIndex > 0) {\n inspectedElementIndex--;\n }\n }\n break;\n case 'SELECT_OWNER':\n // If the Store doesn't have any owners metadata, don't drill into an empty stack.\n // This is a confusing user experience.\n if (store.hasOwnerMetadata) {\n ownerID = (action: ACTION_SELECT_OWNER).payload;\n ownerFlatTree = store.getOwnersListForElement(ownerID);\n\n // Always force reset selection to be the top of the new owner tree.\n inspectedElementIndex = 0;\n prevInspectedElementIndex = null;\n }\n break;\n default:\n // React can bailout of no-op updates.\n return state;\n }\n\n // Changes in the selected owner require re-calculating the owners tree.\n if (\n ownerFlatTree !== state.ownerFlatTree ||\n action.type === 'HANDLE_STORE_MUTATION'\n ) {\n if (ownerFlatTree === null) {\n numElements = store.numElements;\n } else {\n numElements = ownerFlatTree.length;\n }\n }\n\n // Keep selected item ID and index in sync.\n if (inspectedElementIndex !== prevInspectedElementIndex) {\n if (inspectedElementIndex === null) {\n inspectedElementID = null;\n } else {\n if (ownerFlatTree !== null) {\n inspectedElementID = ownerFlatTree[inspectedElementIndex].id;\n }\n }\n }\n\n return {\n ...state,\n\n numElements,\n\n searchIndex,\n searchResults,\n searchText,\n\n ownerID,\n ownerFlatTree,\n\n inspectedElementID,\n inspectedElementIndex,\n };\n}\n\ntype Props = {\n children: React$Node,\n\n // Used for automated testing\n defaultOwnerID?: ?number,\n defaultInspectedElementID?: ?number,\n defaultInspectedElementIndex?: ?number,\n};\n\n// TODO Remove TreeContextController wrapper element once global Context.write API exists.\nfunction TreeContextController({\n children,\n defaultOwnerID,\n defaultInspectedElementID,\n defaultInspectedElementIndex,\n}: Props): React.Node {\n const store = useContext(StoreContext);\n\n const initialRevision = useMemo(() => store.revision, [store]);\n\n // This reducer is created inline because it needs access to the Store.\n // The store is mutable, but the Store itself is global and lives for the lifetime of the DevTools,\n // so it's okay for the reducer to have an empty dependencies array.\n const reducer = useMemo(\n () =>\n (state: State, action: Action): State => {\n const {type} = action;\n switch (type) {\n case 'GO_TO_NEXT_SEARCH_RESULT':\n case 'GO_TO_PREVIOUS_SEARCH_RESULT':\n case 'HANDLE_STORE_MUTATION':\n case 'RESET_OWNER_STACK':\n case 'SELECT_ELEMENT_AT_INDEX':\n case 'SELECT_ELEMENT_BY_ID':\n case 'SELECT_CHILD_ELEMENT_IN_TREE':\n case 'SELECT_NEXT_ELEMENT_IN_TREE':\n case 'SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE':\n case 'SELECT_NEXT_SIBLING_IN_TREE':\n case 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE':\n case 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE':\n case 'SELECT_PARENT_ELEMENT_IN_TREE':\n case 'SELECT_PREVIOUS_ELEMENT_IN_TREE':\n case 'SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE':\n case 'SELECT_PREVIOUS_SIBLING_IN_TREE':\n case 'SELECT_OWNER':\n case 'SET_SEARCH_TEXT':\n state = reduceTreeState(store, state, action);\n state = reduceSearchState(store, state, action);\n state = reduceOwnersState(store, state, action);\n\n // TODO(hoxyq): review\n // If the selected ID is in a collapsed subtree, reset the selected index to null.\n // We'll know the correct index after the layout effect will toggle the tree,\n // and the store tree is mutated to account for that.\n if (\n state.inspectedElementID !== null &&\n store.isInsideCollapsedSubTree(state.inspectedElementID)\n ) {\n return {\n ...state,\n inspectedElementIndex: null,\n };\n }\n\n return state;\n default:\n throw new Error(`Unrecognized action \"${type}\"`);\n }\n },\n [store],\n );\n\n const [state, dispatch] = useReducer(reducer, {\n // Tree\n numElements: store.numElements,\n ownerSubtreeLeafElementID: null,\n\n // Search\n searchIndex: null,\n searchResults: [],\n searchText: '',\n\n // Owners\n ownerID: defaultOwnerID == null ? null : defaultOwnerID,\n ownerFlatTree: null,\n\n // Inspection element panel\n inspectedElementID:\n defaultInspectedElementID != null\n ? defaultInspectedElementID\n : store.lastSelectedHostInstanceElementId,\n inspectedElementIndex:\n defaultInspectedElementIndex != null\n ? defaultInspectedElementIndex\n : store.lastSelectedHostInstanceElementId\n ? store.getIndexOfElementID(store.lastSelectedHostInstanceElementId)\n : null,\n });\n\n // Listen for host element selections.\n useEffect(() => {\n const handler = (id: Element['id']) =>\n dispatch({type: 'SELECT_ELEMENT_BY_ID', payload: id});\n\n store.addListener('hostInstanceSelected', handler);\n return () => store.removeListener('hostInstanceSelected', handler);\n }, [store, dispatch]);\n\n // If a newly-selected search result or inspection selection is inside of a collapsed subtree, auto expand it.\n // This needs to be a layout effect to avoid temporarily flashing an incorrect selection.\n const prevInspectedElementID = useRef<number | null>(null);\n useLayoutEffect(() => {\n if (state.inspectedElementID !== prevInspectedElementID.current) {\n prevInspectedElementID.current = state.inspectedElementID;\n\n if (state.inspectedElementID !== null) {\n const element = store.getElementByID(state.inspectedElementID);\n if (element !== null && element.parentID > 0) {\n store.toggleIsCollapsed(element.parentID, false);\n }\n }\n }\n }, [state.inspectedElementID, store]);\n\n // Mutations to the underlying tree may impact this context (e.g. search results, selection state).\n useEffect(() => {\n const handleStoreMutated = ([addedElementIDs, removedElementIDs]: [\n Array<number>,\n Map<number, number>,\n ]) => {\n dispatch({\n type: 'HANDLE_STORE_MUTATION',\n payload: [addedElementIDs, removedElementIDs],\n });\n };\n\n // Since this is a passive effect, the tree may have been mutated before our initial subscription.\n if (store.revision !== initialRevision) {\n // At the moment, we can treat this as a mutation.\n // We don't know which Elements were newly added/removed, but that should be okay in this case.\n // It would only impact the search state, which is unlikely to exist yet at this point.\n dispatch({\n type: 'HANDLE_STORE_MUTATION',\n payload: [[], new Map()],\n });\n }\n\n store.addListener('mutated', handleStoreMutated);\n return () => store.removeListener('mutated', handleStoreMutated);\n }, [dispatch, initialRevision, store]);\n\n return (\n <TreeStateContext.Provider value={state}>\n <TreeDispatcherContext.Provider value={dispatch}>\n {children}\n </TreeDispatcherContext.Provider>\n </TreeStateContext.Provider>\n );\n}\nfunction recursivelySearchTree(\n store: Store,\n elementID: number,\n regExp: RegExp,\n searchResults: Array<number>,\n): void {\n const element = store.getElementByID(elementID);\n\n if (element == null) {\n return;\n }\n\n const {children, displayName, hocDisplayNames, compiledWithForget} = element;\n if (displayName != null && regExp.test(displayName) === true) {\n searchResults.push(elementID);\n } else if (\n hocDisplayNames != null &&\n hocDisplayNames.length > 0 &&\n hocDisplayNames.some(name => regExp.test(name)) === true\n ) {\n searchResults.push(elementID);\n } else if (compiledWithForget && regExp.test('Forget')) {\n searchResults.push(elementID);\n }\n\n children.forEach(childID =>\n recursivelySearchTree(store, childID, regExp, searchResults),\n );\n}\n\nfunction getNearestResultIndex(\n store: Store,\n searchResults: Array<number>,\n inspectedElementIndex: number,\n): number {\n const index = searchResults.findIndex(id => {\n const innerIndex = store.getIndexOfElementID(id);\n return innerIndex !== null && innerIndex >= inspectedElementIndex;\n });\n\n return index === -1 ? 0 : index;\n}\n\nexport {TreeDispatcherContext, TreeStateContext, TreeContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './Icon.css';\n\nexport type IconType =\n | 'arrow'\n | 'bug'\n | 'code'\n | 'components'\n | 'copy'\n | 'error'\n | 'facebook'\n | 'flame-chart'\n | 'profiler'\n | 'ranked-chart'\n | 'timeline'\n | 'search'\n | 'settings'\n | 'store-as-global-variable'\n | 'strict-mode-non-compliant'\n | 'warning';\n\ntype Props = {\n className?: string,\n title?: string,\n type: IconType,\n};\n\nexport default function Icon({\n className = '',\n title = '',\n type,\n}: Props): React.Node {\n let pathData = null;\n switch (type) {\n case 'arrow':\n pathData = PATH_ARROW;\n break;\n case 'bug':\n pathData = PATH_BUG;\n break;\n case 'code':\n pathData = PATH_CODE;\n break;\n case 'components':\n pathData = PATH_COMPONENTS;\n break;\n case 'copy':\n pathData = PATH_COPY;\n break;\n case 'error':\n pathData = PATH_ERROR;\n break;\n case 'facebook':\n pathData = PATH_FACEBOOK;\n break;\n case 'flame-chart':\n pathData = PATH_FLAME_CHART;\n break;\n case 'profiler':\n pathData = PATH_PROFILER;\n break;\n case 'ranked-chart':\n pathData = PATH_RANKED_CHART;\n break;\n case 'timeline':\n pathData = PATH_SCHEDULING_PROFILER;\n break;\n case 'search':\n pathData = PATH_SEARCH;\n break;\n case 'settings':\n pathData = PATH_SETTINGS;\n break;\n case 'store-as-global-variable':\n pathData = PATH_STORE_AS_GLOBAL_VARIABLE;\n break;\n case 'strict-mode-non-compliant':\n pathData = PATH_STRICT_MODE_NON_COMPLIANT;\n break;\n case 'warning':\n pathData = PATH_WARNING;\n break;\n default:\n console.warn(`Unsupported type \"${type}\" specified for Icon`);\n break;\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.Icon} ${className}`}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n {title && <title>{title}</title>}\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path fill=\"currentColor\" d={pathData} />\n </svg>\n );\n}\n\nconst PATH_ARROW = 'M8 5v14l11-7z';\n\nconst PATH_BUG = `\n 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\n 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\n 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21\n 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\n`;\n\nconst PATH_CODE = `\n 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\n `;\n\nconst PATH_COMPONENTS =\n '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';\n\nconst PATH_COPY = `\n M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3a2 2 0 0 0 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9a2 2 0 0 0-2\n 2v10a2 2 0 0 0 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z\n`;\n\nconst PATH_ERROR = `M16.971 0h-9.942l-7.029 7.029v9.941l7.029 7.03h9.941l7.03-7.029v-9.942l-7.029-7.029zm-1.402 16.945l-3.554-3.521-3.518 3.568-1.418-1.418 3.507-3.566-3.586-3.472 1.418-1.417 3.581 3.458 3.539-3.583 1.431 1.431-3.535 3.568 3.566 3.522-1.431 1.43z`;\n\nconst PATH_FACEBOOK = `\n M22,12c0-5.52-4.48-10-10-10S2,6.48,2,12c0,4.84,3.44,8.87,8,9.8V15H8v-3h2V9.5C10,7.57,11.57,6,13.5,6H16v3h-2 c-0.55,0-1,0.45-1,1v2h3v3h-3v6.95C18.05,21.45,22,17.19,22,12z\n`;\n\nconst PATH_FLAME_CHART = `\n M10.0650893,21.5040462 C7.14020814,20.6850349 5,18.0558698 5,14.9390244 C5,14.017627\n 5,9.81707317 7.83333333,7.37804878 C7.83333333,7.37804878 7.58333333,11.199187 10,\n 10.6300813 C11.125,10.326087 13.0062497,7.63043487 8.91666667,2.5 C14.1666667,3.06910569\n 19,9.32926829 19,14.9390244 C19,18.0558698 16.8597919,20.6850349 13.9349107,21.5040462\n C14.454014,21.0118505 14.7765152,20.3233394 14.7765152,19.5613412 C14.7765152,17.2826087\n 12,15.0875871 12,15.0875871 C12,15.0875871 9.22348485,17.2826087 9.22348485,19.5613412\n C9.22348485,20.3233394 9.54598603,21.0118505 10.0650893,21.5040462 Z M12.0833333,20.6514763\n C11.3814715,20.6514763 10.8125,20.1226027 10.8125,19.4702042 C10.8125,18.6069669\n 12.0833333,16.9347829 12.0833333,16.9347829 C12.0833333,16.9347829 13.3541667,18.6069669\n 13.3541667,19.4702042 C13.3541667,20.1226027 12.7851952,20.6514763 12.0833333,20.6514763 Z\n`;\n\nconst PATH_PROFILER = 'M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z';\n\nconst PATH_SCHEDULING_PROFILER = `\n 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-2zm0\n 16H5V9h14v10zm0-12H5V5h14v2zM7 11h5v5H7z\n`;\n\nconst PATH_SEARCH = `\n 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\n 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\n 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\n`;\n\nconst PATH_RANKED_CHART = 'M3 5h18v3H3zM3 10.5h13v3H3zM3 16h8v3H3z';\n\nconst PATH_SETTINGS = `\n 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\n 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\n 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\n 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\n 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\n 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\n 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\n`;\n\nconst PATH_STORE_AS_GLOBAL_VARIABLE = `\n 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\n 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\n 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\n 8h-4v-2h4v2zm0-4h-4v-2h4v2z\n`;\n\nconst PATH_STRICT_MODE_NON_COMPLIANT = `\n M4.47 21h15.06c1.54 0 2.5-1.67 1.73-3L13.73 4.99c-.77-1.33-2.69-1.33-3.46 0L2.74 18c-.77 1.33.19 3 1.73 3zM12\n 14c-.55 0-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1zm1 4h-2v-2h2v2z\n`;\n\nconst PATH_WARNING = `M12 1l-12 22h24l-12-22zm-1 8h2v7h-2v-7zm1 11.25c-.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.25z`;\n","export const CHANGE_LOG_URL =\n 'https://github.com/facebook/react/blob/main/packages/react-devtools/CHANGELOG.md';\n\nexport const UNSUPPORTED_VERSION_URL =\n 'https://reactjs.org/blog/2019/08/15/new-react-devtools.html#how-do-i-get-the-old-version-back';\n\nexport const REACT_DEVTOOLS_WORKPLACE_URL =\n 'https://fburl.com/react-devtools-workplace-group';\n\nimport type {\n Theme,\n DisplayDensity,\n} from './devtools/views/Settings/SettingsContext';\n\nexport const THEME_STYLES: {[style: Theme | DisplayDensity]: any, ...} = {\n light: {\n '--color-attribute-name': '#ef6632',\n '--color-attribute-name-not-editable': '#23272f',\n '--color-attribute-name-inverted': 'rgba(255, 255, 255, 0.7)',\n '--color-attribute-value': '#1a1aa6',\n '--color-attribute-value-inverted': '#ffffff',\n '--color-attribute-editable-value': '#1a1aa6',\n '--color-background': '#ffffff',\n '--color-background-hover': 'rgba(0, 136, 250, 0.1)',\n '--color-background-inactive': '#e5e5e5',\n '--color-background-invalid': '#fff0f0',\n '--color-background-selected': '#0088fa',\n '--color-button-background': '#ffffff',\n '--color-button-background-focus': '#ededed',\n '--color-button': '#5f6673',\n '--color-button-disabled': '#cfd1d5',\n '--color-button-active': '#0088fa',\n '--color-button-focus': '#23272f',\n '--color-button-hover': '#23272f',\n '--color-border': '#eeeeee',\n '--color-commit-did-not-render-fill': '#cfd1d5',\n '--color-commit-did-not-render-fill-text': '#000000',\n '--color-commit-did-not-render-pattern': '#cfd1d5',\n '--color-commit-did-not-render-pattern-text': '#333333',\n '--color-commit-gradient-0': '#37afa9',\n '--color-commit-gradient-1': '#63b19e',\n '--color-commit-gradient-2': '#80b393',\n '--color-commit-gradient-3': '#97b488',\n '--color-commit-gradient-4': '#abb67d',\n '--color-commit-gradient-5': '#beb771',\n '--color-commit-gradient-6': '#cfb965',\n '--color-commit-gradient-7': '#dfba57',\n '--color-commit-gradient-8': '#efbb49',\n '--color-commit-gradient-9': '#febc38',\n '--color-commit-gradient-text': '#000000',\n '--color-component-name': '#6a51b2',\n '--color-component-name-inverted': '#ffffff',\n '--color-component-badge-background': '#e6e6e6',\n '--color-component-badge-background-inverted': 'rgba(255, 255, 255, 0.25)',\n '--color-component-badge-count': '#777d88',\n '--color-component-badge-count-inverted': 'rgba(255, 255, 255, 0.7)',\n '--color-console-error-badge-text': '#ffffff',\n '--color-console-error-background': '#fff0f0',\n '--color-console-error-border': '#ffd6d6',\n '--color-console-error-icon': '#eb3941',\n '--color-console-error-text': '#fe2e31',\n '--color-console-warning-badge-text': '#000000',\n '--color-console-warning-background': '#fffbe5',\n '--color-console-warning-border': '#fff5c1',\n '--color-console-warning-icon': '#f4bd00',\n '--color-console-warning-text': '#64460c',\n '--color-context-background': 'rgba(0,0,0,.9)',\n '--color-context-background-hover': 'rgba(255, 255, 255, 0.1)',\n '--color-context-background-selected': '#178fb9',\n '--color-context-border': '#3d424a',\n '--color-context-text': '#ffffff',\n '--color-context-text-selected': '#ffffff',\n '--color-dim': '#777d88',\n '--color-dimmer': '#cfd1d5',\n '--color-dimmest': '#eff0f1',\n '--color-error-background': 'hsl(0, 100%, 97%)',\n '--color-error-border': 'hsl(0, 100%, 92%)',\n '--color-error-text': '#ff0000',\n '--color-expand-collapse-toggle': '#777d88',\n '--color-forget-badge-background': '#2683e2',\n '--color-forget-badge-background-inverted': '#1a6bbc',\n '--color-forget-text': '#fff',\n '--color-link': '#0000ff',\n '--color-modal-background': 'rgba(255, 255, 255, 0.75)',\n '--color-bridge-version-npm-background': '#eff0f1',\n '--color-bridge-version-npm-text': '#000000',\n '--color-bridge-version-number': '#0088fa',\n '--color-primitive-hook-badge-background': '#e5e5e5',\n '--color-primitive-hook-badge-text': '#5f6673',\n '--color-record-active': '#fc3a4b',\n '--color-record-hover': '#3578e5',\n '--color-record-inactive': '#0088fa',\n '--color-resize-bar': '#eeeeee',\n '--color-resize-bar-active': '#dcdcdc',\n '--color-resize-bar-border': '#d1d1d1',\n '--color-resize-bar-dot': '#333333',\n '--color-timeline-internal-module': '#d1d1d1',\n '--color-timeline-internal-module-hover': '#c9c9c9',\n '--color-timeline-internal-module-text': '#444',\n '--color-timeline-native-event': '#ccc',\n '--color-timeline-native-event-hover': '#aaa',\n '--color-timeline-network-primary': '#fcf3dc',\n '--color-timeline-network-primary-hover': '#f0e7d1',\n '--color-timeline-network-secondary': '#efc457',\n '--color-timeline-network-secondary-hover': '#e3ba52',\n '--color-timeline-priority-background': '#f6f6f6',\n '--color-timeline-priority-border': '#eeeeee',\n '--color-timeline-user-timing': '#c9cacd',\n '--color-timeline-user-timing-hover': '#93959a',\n '--color-timeline-react-idle': '#d3e5f6',\n '--color-timeline-react-idle-hover': '#c3d9ef',\n '--color-timeline-react-render': '#9fc3f3',\n '--color-timeline-react-render-hover': '#83afe9',\n '--color-timeline-react-render-text': '#11365e',\n '--color-timeline-react-commit': '#c88ff0',\n '--color-timeline-react-commit-hover': '#b281d6',\n '--color-timeline-react-commit-text': '#3e2c4a',\n '--color-timeline-react-layout-effects': '#b281d6',\n '--color-timeline-react-layout-effects-hover': '#9d71bd',\n '--color-timeline-react-layout-effects-text': '#3e2c4a',\n '--color-timeline-react-passive-effects': '#b281d6',\n '--color-timeline-react-passive-effects-hover': '#9d71bd',\n '--color-timeline-react-passive-effects-text': '#3e2c4a',\n '--color-timeline-react-schedule': '#9fc3f3',\n '--color-timeline-react-schedule-hover': '#2683E2',\n '--color-timeline-react-suspense-rejected': '#f1cc14',\n '--color-timeline-react-suspense-rejected-hover': '#ffdf37',\n '--color-timeline-react-suspense-resolved': '#a6e59f',\n '--color-timeline-react-suspense-resolved-hover': '#89d281',\n '--color-timeline-react-suspense-unresolved': '#c9cacd',\n '--color-timeline-react-suspense-unresolved-hover': '#93959a',\n '--color-timeline-thrown-error': '#ee1638',\n '--color-timeline-thrown-error-hover': '#da1030',\n '--color-timeline-text-color': '#000000',\n '--color-timeline-text-dim-color': '#ccc',\n '--color-timeline-react-work-border': '#eeeeee',\n '--color-search-match': 'yellow',\n '--color-search-match-current': '#f7923b',\n '--color-selected-tree-highlight-active': 'rgba(0, 136, 250, 0.1)',\n '--color-selected-tree-highlight-inactive': 'rgba(0, 0, 0, 0.05)',\n '--color-scroll-caret': 'rgba(150, 150, 150, 0.5)',\n '--color-tab-selected-border': '#0088fa',\n '--color-text': '#000000',\n '--color-text-invalid': '#ff0000',\n '--color-text-selected': '#ffffff',\n '--color-toggle-background-invalid': '#fc3a4b',\n '--color-toggle-background-on': '#0088fa',\n '--color-toggle-background-off': '#cfd1d5',\n '--color-toggle-text': '#ffffff',\n '--color-warning-background': '#fb3655',\n '--color-warning-background-hover': '#f82042',\n '--color-warning-text-color': '#ffffff',\n '--color-warning-text-color-inverted': '#fd4d69',\n\n // The styles below should be kept in sync with 'root.css'\n // They are repeated there because they're used by e.g. tooltips or context menus\n // which get rendered outside of the DOM subtree (where normal theme/styles are written).\n '--color-scroll-thumb': '#c2c2c2',\n '--color-scroll-track': '#fafafa',\n '--color-tooltip-background': 'rgba(0, 0, 0, 0.9)',\n '--color-tooltip-text': '#ffffff',\n },\n dark: {\n '--color-attribute-name': '#9d87d2',\n '--color-attribute-name-not-editable': '#ededed',\n '--color-attribute-name-inverted': '#282828',\n '--color-attribute-value': '#cedae0',\n '--color-attribute-value-inverted': '#ffffff',\n '--color-attribute-editable-value': 'yellow',\n '--color-background': '#282c34',\n '--color-background-hover': 'rgba(255, 255, 255, 0.1)',\n '--color-background-inactive': '#3d424a',\n '--color-background-invalid': '#5c0000',\n '--color-background-selected': '#178fb9',\n '--color-button-background': '#282c34',\n '--color-button-background-focus': '#3d424a',\n '--color-button': '#afb3b9',\n '--color-button-active': '#61dafb',\n '--color-button-disabled': '#4f5766',\n '--color-button-focus': '#a2e9fc',\n '--color-button-hover': '#ededed',\n '--color-border': '#3d424a',\n '--color-commit-did-not-render-fill': '#777d88',\n '--color-commit-did-not-render-fill-text': '#000000',\n '--color-commit-did-not-render-pattern': '#666c77',\n '--color-commit-did-not-render-pattern-text': '#ffffff',\n '--color-commit-gradient-0': '#37afa9',\n '--color-commit-gradient-1': '#63b19e',\n '--color-commit-gradient-2': '#80b393',\n '--color-commit-gradient-3': '#97b488',\n '--color-commit-gradient-4': '#abb67d',\n '--color-commit-gradient-5': '#beb771',\n '--color-commit-gradient-6': '#cfb965',\n '--color-commit-gradient-7': '#dfba57',\n '--color-commit-gradient-8': '#efbb49',\n '--color-commit-gradient-9': '#febc38',\n '--color-commit-gradient-text': '#000000',\n '--color-component-name': '#61dafb',\n '--color-component-name-inverted': '#282828',\n '--color-component-badge-background': '#5e6167',\n '--color-component-badge-background-inverted': '#46494e',\n '--color-component-badge-count': '#8f949d',\n '--color-component-badge-count-inverted': 'rgba(255, 255, 255, 0.85)',\n '--color-console-error-badge-text': '#000000',\n '--color-console-error-background': '#290000',\n '--color-console-error-border': '#5c0000',\n '--color-console-error-icon': '#eb3941',\n '--color-console-error-text': '#fc7f7f',\n '--color-console-warning-badge-text': '#000000',\n '--color-console-warning-background': '#332b00',\n '--color-console-warning-border': '#665500',\n '--color-console-warning-icon': '#f4bd00',\n '--color-console-warning-text': '#f5f2ed',\n '--color-context-background': 'rgba(255,255,255,.95)',\n '--color-context-background-hover': 'rgba(0, 136, 250, 0.1)',\n '--color-context-background-selected': '#0088fa',\n '--color-context-border': '#eeeeee',\n '--color-context-text': '#000000',\n '--color-context-text-selected': '#ffffff',\n '--color-dim': '#8f949d',\n '--color-dimmer': '#777d88',\n '--color-dimmest': '#4f5766',\n '--color-error-background': '#200',\n '--color-error-border': '#900',\n '--color-error-text': '#f55',\n '--color-expand-collapse-toggle': '#8f949d',\n '--color-forget-badge-background': '#2683e2',\n '--color-forget-badge-background-inverted': '#1a6bbc',\n '--color-forget-text': '#fff',\n '--color-link': '#61dafb',\n '--color-modal-background': 'rgba(0, 0, 0, 0.75)',\n '--color-bridge-version-npm-background': 'rgba(0, 0, 0, 0.25)',\n '--color-bridge-version-npm-text': '#ffffff',\n '--color-bridge-version-number': 'yellow',\n '--color-primitive-hook-badge-background': 'rgba(0, 0, 0, 0.25)',\n '--color-primitive-hook-badge-text': 'rgba(255, 255, 255, 0.7)',\n '--color-record-active': '#fc3a4b',\n '--color-record-hover': '#a2e9fc',\n '--color-record-inactive': '#61dafb',\n '--color-resize-bar': '#282c34',\n '--color-resize-bar-active': '#31363f',\n '--color-resize-bar-border': '#3d424a',\n '--color-resize-bar-dot': '#cfd1d5',\n '--color-timeline-internal-module': '#303542',\n '--color-timeline-internal-module-hover': '#363b4a',\n '--color-timeline-internal-module-text': '#7f8899',\n '--color-timeline-native-event': '#b2b2b2',\n '--color-timeline-native-event-hover': '#949494',\n '--color-timeline-network-primary': '#fcf3dc',\n '--color-timeline-network-primary-hover': '#e3dbc5',\n '--color-timeline-network-secondary': '#efc457',\n '--color-timeline-network-secondary-hover': '#d6af4d',\n '--color-timeline-priority-background': '#1d2129',\n '--color-timeline-priority-border': '#282c34',\n '--color-timeline-user-timing': '#c9cacd',\n '--color-timeline-user-timing-hover': '#93959a',\n '--color-timeline-react-idle': '#3d485b',\n '--color-timeline-react-idle-hover': '#465269',\n '--color-timeline-react-render': '#2683E2',\n '--color-timeline-react-render-hover': '#1a76d4',\n '--color-timeline-react-render-text': '#11365e',\n '--color-timeline-react-commit': '#731fad',\n '--color-timeline-react-commit-hover': '#611b94',\n '--color-timeline-react-commit-text': '#e5c1ff',\n '--color-timeline-react-layout-effects': '#611b94',\n '--color-timeline-react-layout-effects-hover': '#51167a',\n '--color-timeline-react-layout-effects-text': '#e5c1ff',\n '--color-timeline-react-passive-effects': '#611b94',\n '--color-timeline-react-passive-effects-hover': '#51167a',\n '--color-timeline-react-passive-effects-text': '#e5c1ff',\n '--color-timeline-react-schedule': '#2683E2',\n '--color-timeline-react-schedule-hover': '#1a76d4',\n '--color-timeline-react-suspense-rejected': '#f1cc14',\n '--color-timeline-react-suspense-rejected-hover': '#e4c00f',\n '--color-timeline-react-suspense-resolved': '#a6e59f',\n '--color-timeline-react-suspense-resolved-hover': '#89d281',\n '--color-timeline-react-suspense-unresolved': '#c9cacd',\n '--color-timeline-react-suspense-unresolved-hover': '#93959a',\n '--color-timeline-thrown-error': '#fb3655',\n '--color-timeline-thrown-error-hover': '#f82042',\n '--color-timeline-text-color': '#282c34',\n '--color-timeline-text-dim-color': '#555b66',\n '--color-timeline-react-work-border': '#3d424a',\n '--color-search-match': 'yellow',\n '--color-search-match-current': '#f7923b',\n '--color-selected-tree-highlight-active': 'rgba(23, 143, 185, 0.15)',\n '--color-selected-tree-highlight-inactive': 'rgba(255, 255, 255, 0.05)',\n '--color-scroll-caret': '#4f5766',\n '--color-shadow': 'rgba(0, 0, 0, 0.5)',\n '--color-tab-selected-border': '#178fb9',\n '--color-text': '#ffffff',\n '--color-text-invalid': '#ff8080',\n '--color-text-selected': '#ffffff',\n '--color-toggle-background-invalid': '#fc3a4b',\n '--color-toggle-background-on': '#178fb9',\n '--color-toggle-background-off': '#777d88',\n '--color-toggle-text': '#ffffff',\n '--color-warning-background': '#ee1638',\n '--color-warning-background-hover': '#da1030',\n '--color-warning-text-color': '#ffffff',\n '--color-warning-text-color-inverted': '#ee1638',\n\n // The styles below should be kept in sync with 'root.css'\n // They are repeated there because they're used by e.g. tooltips or context menus\n // which get rendered outside of the DOM subtree (where normal theme/styles are written).\n '--color-scroll-thumb': '#afb3b9',\n '--color-scroll-track': '#313640',\n '--color-tooltip-background': 'rgba(255, 255, 255, 0.95)',\n '--color-tooltip-text': '#000000',\n },\n compact: {\n '--font-size-monospace-small': '9px',\n '--font-size-monospace-normal': '11px',\n '--font-size-monospace-large': '15px',\n '--font-size-sans-small': '10px',\n '--font-size-sans-normal': '12px',\n '--font-size-sans-large': '14px',\n '--line-height-data': '18px',\n },\n comfortable: {\n '--font-size-monospace-small': '10px',\n '--font-size-monospace-normal': '13px',\n '--font-size-monospace-large': '17px',\n '--font-size-sans-small': '12px',\n '--font-size-sans-normal': '14px',\n '--font-size-sans-large': '16px',\n '--line-height-data': '22px',\n },\n};\n\n// HACK\n//\n// Sometimes the inline target is rendered before root styles are applied,\n// which would result in e.g. NaN itemSize being passed to react-window list.\nconst COMFORTABLE_LINE_HEIGHT: number = parseInt(\n THEME_STYLES.comfortable['--line-height-data'],\n 10,\n);\nconst COMPACT_LINE_HEIGHT: number = parseInt(\n THEME_STYLES.compact['--line-height-data'],\n 10,\n);\n\nexport {COMFORTABLE_LINE_HEIGHT, COMPACT_LINE_HEIGHT};\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 * @flow\n */\n\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useReducer,\n useState,\n useContext,\n} from 'react';\nimport {\n localStorageGetItem,\n localStorageSetItem,\n} from 'react-devtools-shared/src/storage';\nimport {StoreContext, BridgeContext} from './context';\nimport {sanitizeForParse, smartParse, smartStringify} from '../utils';\n\ntype ACTION_RESET = {\n type: 'RESET',\n externalValue: any,\n};\ntype ACTION_UPDATE = {\n type: 'UPDATE',\n editableValue: any,\n externalValue: any,\n};\n\ntype UseEditableValueAction = ACTION_RESET | ACTION_UPDATE;\ntype UseEditableValueDispatch = (action: UseEditableValueAction) => void;\ntype UseEditableValueState = {\n editableValue: any,\n externalValue: any,\n hasPendingChanges: boolean,\n isValid: boolean,\n parsedValue: any,\n};\n\nfunction useEditableValueReducer(\n state: UseEditableValueState,\n action: UseEditableValueAction,\n) {\n switch (action.type) {\n case 'RESET':\n return {\n ...state,\n editableValue: smartStringify(action.externalValue),\n externalValue: action.externalValue,\n hasPendingChanges: false,\n isValid: true,\n parsedValue: action.externalValue,\n };\n case 'UPDATE':\n let isNewValueValid = false;\n let newParsedValue;\n try {\n newParsedValue = smartParse(action.editableValue);\n isNewValueValid = true;\n } catch (error) {}\n return {\n ...state,\n editableValue: sanitizeForParse(action.editableValue),\n externalValue: action.externalValue,\n hasPendingChanges:\n smartStringify(action.externalValue) !== action.editableValue,\n isValid: isNewValueValid,\n parsedValue: isNewValueValid ? newParsedValue : state.parsedValue,\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\n// Convenience hook for working with an editable value that is validated via JSON.parse.\nexport function useEditableValue(\n externalValue: any,\n): [UseEditableValueState, UseEditableValueDispatch] {\n const [state, dispatch] = useReducer<\n UseEditableValueState,\n UseEditableValueState,\n UseEditableValueAction,\n >(useEditableValueReducer, {\n editableValue: smartStringify(externalValue),\n externalValue,\n hasPendingChanges: false,\n isValid: true,\n parsedValue: externalValue,\n });\n if (!Object.is(state.externalValue, externalValue)) {\n if (!state.hasPendingChanges) {\n dispatch({\n type: 'RESET',\n externalValue,\n });\n } else {\n dispatch({\n type: 'UPDATE',\n editableValue: state.editableValue,\n externalValue,\n });\n }\n }\n\n return [state, dispatch];\n}\n\nexport function useIsOverflowing(\n containerRef: {current: HTMLDivElement | null, ...},\n totalChildWidth: number,\n): boolean {\n const [isOverflowing, setIsOverflowing] = useState<boolean>(false);\n\n // It's important to use a layout effect, so that we avoid showing a flash of overflowed content.\n useLayoutEffect(() => {\n if (containerRef.current === null) {\n return () => {};\n }\n\n const container = ((containerRef.current: any): HTMLDivElement);\n\n const handleResize = () =>\n setIsOverflowing(container.clientWidth <= totalChildWidth);\n\n handleResize();\n\n // It's important to listen to the ownerDocument.defaultView to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerWindow = container.ownerDocument.defaultView;\n ownerWindow.addEventListener('resize', handleResize);\n return () => ownerWindow.removeEventListener('resize', handleResize);\n }, [containerRef, totalChildWidth]);\n\n return isOverflowing;\n}\n\n// Forked from https://usehooks.com/useLocalStorage/\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T | (() => T),\n onValueSet?: (any, string) => void,\n): [T, (value: T | (() => T)) => void] {\n const getValueFromLocalStorage = useCallback(() => {\n try {\n const item = localStorageGetItem(key);\n if (item != null) {\n return JSON.parse(item);\n }\n } catch (error) {\n console.log(error);\n }\n if (typeof initialValue === 'function') {\n return ((initialValue: any): () => T)();\n } else {\n return initialValue;\n }\n }, [initialValue, key]);\n\n const [storedValue, setStoredValue] = useState<any>(getValueFromLocalStorage);\n\n const setValue = useCallback(\n (value: $FlowFixMe) => {\n try {\n const valueToStore =\n value instanceof Function ? (value: any)(storedValue) : value;\n setStoredValue(valueToStore);\n localStorageSetItem(key, JSON.stringify(valueToStore));\n\n // Notify listeners that this setting has changed.\n window.dispatchEvent(new Event(key));\n\n if (onValueSet != null) {\n onValueSet(valueToStore, key);\n }\n } catch (error) {\n console.log(error);\n }\n },\n [key, storedValue],\n );\n\n // Listen for changes to this local storage value made from other windows.\n // This enables the e.g. \"⚛ Elements\" tab to update in response to changes from \"⚛ Settings\".\n useLayoutEffect(() => {\n // $FlowFixMe[missing-local-annot]\n const onStorage = event => {\n const newValue = getValueFromLocalStorage();\n if (key === event.key && storedValue !== newValue) {\n setValue(newValue);\n }\n };\n\n window.addEventListener('storage', onStorage);\n\n return () => {\n window.removeEventListener('storage', onStorage);\n };\n }, [getValueFromLocalStorage, key, storedValue, setValue]);\n\n return [storedValue, setValue];\n}\n\nexport function useModalDismissSignal(\n modalRef: {current: HTMLDivElement | null, ...},\n dismissCallback: () => void,\n dismissOnClickOutside?: boolean = true,\n): void {\n useEffect(() => {\n if (modalRef.current === null) {\n return () => {};\n }\n\n const handleRootNodeKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n dismissCallback();\n }\n };\n\n const handleRootNodeClick: MouseEventHandler = event => {\n if (\n modalRef.current !== null &&\n /* $FlowExpectedError[incompatible-call] Instead of dealing with possibly multiple realms\n and multiple Node references to comply with Flow (e.g. checking with `event.target instanceof Node`)\n just delegate it to contains call */\n !modalRef.current.contains(event.target)\n ) {\n event.stopPropagation();\n event.preventDefault();\n\n dismissCallback();\n }\n };\n\n let modalRootNode = null;\n\n // Delay until after the current call stack is empty,\n // in case this effect is being run while an event is currently bubbling.\n // In that case, we don't want to listen to the pre-existing event.\n let timeoutID: null | TimeoutID = setTimeout(() => {\n timeoutID = null;\n\n // It's important to listen to the ownerDocument to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const modalDOMElement = modalRef.current;\n if (modalDOMElement != null) {\n modalRootNode = modalDOMElement.getRootNode();\n modalRootNode.addEventListener('keydown', handleRootNodeKeyDown);\n if (dismissOnClickOutside) {\n modalRootNode.addEventListener('click', handleRootNodeClick, true);\n }\n }\n }, 0);\n\n return () => {\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n\n if (modalRootNode !== null) {\n modalRootNode.removeEventListener('keydown', handleRootNodeKeyDown);\n modalRootNode.removeEventListener('click', handleRootNodeClick, true);\n }\n };\n }, [modalRef, dismissCallback, dismissOnClickOutside]);\n}\n\n// Copied from https://github.com/facebook/react/pull/15022\nexport function useSubscription<Value>({\n getCurrentValue,\n subscribe,\n}: {\n getCurrentValue: () => Value,\n subscribe: (callback: Function) => () => void,\n}): Value {\n const [state, setState] = useState(() => ({\n getCurrentValue,\n subscribe,\n value: getCurrentValue(),\n }));\n\n if (\n state.getCurrentValue !== getCurrentValue ||\n state.subscribe !== subscribe\n ) {\n setState({\n getCurrentValue,\n subscribe,\n value: getCurrentValue(),\n });\n }\n\n useEffect(() => {\n let didUnsubscribe = false;\n\n const checkForUpdates = () => {\n if (didUnsubscribe) {\n return;\n }\n\n setState(prevState => {\n if (\n prevState.getCurrentValue !== getCurrentValue ||\n prevState.subscribe !== subscribe\n ) {\n return prevState;\n }\n\n const value = getCurrentValue();\n if (prevState.value === value) {\n return prevState;\n }\n\n return {...prevState, value};\n });\n };\n const unsubscribe = subscribe(checkForUpdates);\n\n checkForUpdates();\n\n return () => {\n didUnsubscribe = true;\n unsubscribe();\n };\n }, [getCurrentValue, subscribe]);\n\n return state.value;\n}\n\nexport function useHighlightHostInstance(): {\n clearHighlightHostInstance: () => void,\n highlightHostInstance: (id: number) => void,\n} {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const highlightHostInstance = useCallback(\n (id: number) => {\n const element = store.getElementByID(id);\n const rendererID = store.getRendererIDForElement(id);\n if (element !== null && rendererID !== null) {\n bridge.send('highlightHostInstance', {\n displayName: element.displayName,\n hideAfterTimeout: false,\n id,\n openBuiltinElementsPanel: false,\n rendererID,\n scrollIntoView: false,\n });\n }\n },\n [store, bridge],\n );\n\n const clearHighlightHostInstance = useCallback(() => {\n bridge.send('clearHostInstanceHighlight');\n }, [bridge]);\n\n return {\n highlightHostInstance,\n clearHighlightHostInstance,\n };\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport {\n LOCAL_STORAGE_BROWSER_THEME,\n LOCAL_STORAGE_PARSE_HOOK_NAMES_KEY,\n LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY,\n} from 'react-devtools-shared/src/constants';\nimport {\n COMFORTABLE_LINE_HEIGHT,\n COMPACT_LINE_HEIGHT,\n} from 'react-devtools-shared/src/devtools/constants';\nimport {useLocalStorage} from '../hooks';\nimport {BridgeContext} from '../context';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\n\nimport type {BrowserTheme} from 'react-devtools-shared/src/frontend/types';\n\nexport type DisplayDensity = 'comfortable' | 'compact';\nexport type Theme = 'auto' | 'light' | 'dark';\n\ntype Context = {\n displayDensity: DisplayDensity,\n setDisplayDensity(value: DisplayDensity): void,\n\n // Derived from display density.\n // Specified as a separate prop so it can trigger a re-render of FixedSizeList.\n lineHeight: number,\n\n parseHookNames: boolean,\n setParseHookNames: (value: boolean) => void,\n\n theme: Theme,\n setTheme(value: Theme): void,\n\n browserTheme: Theme,\n\n traceUpdatesEnabled: boolean,\n setTraceUpdatesEnabled: (value: boolean) => void,\n};\n\nconst SettingsContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nSettingsContext.displayName = 'SettingsContext';\n\nfunction useLocalStorageWithLog<T>(\n key: string,\n initialValue: T | (() => T),\n): [T, (value: T | (() => T)) => void] {\n return useLocalStorage<T>(key, initialValue, (v, k) => {\n logEvent({\n event_name: 'settings-changed',\n metadata: {\n source: 'localStorage setter',\n key: k,\n value: v,\n },\n });\n });\n}\n\ntype DocumentElements = Array<HTMLElement>;\n\ntype Props = {\n browserTheme: BrowserTheme,\n children: React$Node,\n componentsPortalContainer?: Element,\n profilerPortalContainer?: Element,\n};\n\nfunction SettingsContextController({\n browserTheme,\n children,\n componentsPortalContainer,\n profilerPortalContainer,\n}: Props): React.Node {\n const bridge = useContext(BridgeContext);\n\n const [displayDensity, setDisplayDensity] =\n useLocalStorageWithLog<DisplayDensity>(\n 'React::DevTools::displayDensity',\n 'compact',\n );\n const [theme, setTheme] = useLocalStorageWithLog<Theme>(\n LOCAL_STORAGE_BROWSER_THEME,\n 'auto',\n );\n const [parseHookNames, setParseHookNames] = useLocalStorageWithLog<boolean>(\n LOCAL_STORAGE_PARSE_HOOK_NAMES_KEY,\n false,\n );\n const [traceUpdatesEnabled, setTraceUpdatesEnabled] =\n useLocalStorageWithLog<boolean>(\n LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY,\n false,\n );\n\n const documentElements = useMemo<DocumentElements>(() => {\n const array: Array<HTMLElement> = [\n ((document.documentElement: any): HTMLElement),\n ];\n if (componentsPortalContainer != null) {\n array.push(\n ((componentsPortalContainer.ownerDocument\n .documentElement: any): HTMLElement),\n );\n }\n if (profilerPortalContainer != null) {\n array.push(\n ((profilerPortalContainer.ownerDocument\n .documentElement: any): HTMLElement),\n );\n }\n return array;\n }, [componentsPortalContainer, profilerPortalContainer]);\n\n useLayoutEffect(() => {\n switch (displayDensity) {\n case 'comfortable':\n updateDisplayDensity('comfortable', documentElements);\n break;\n case 'compact':\n updateDisplayDensity('compact', documentElements);\n break;\n default:\n throw Error(`Unsupported displayDensity value \"${displayDensity}\"`);\n }\n }, [displayDensity, documentElements]);\n\n useLayoutEffect(() => {\n switch (theme) {\n case 'light':\n updateThemeVariables('light', documentElements);\n break;\n case 'dark':\n updateThemeVariables('dark', documentElements);\n break;\n case 'auto':\n updateThemeVariables(browserTheme, documentElements);\n break;\n default:\n throw Error(`Unsupported theme value \"${theme}\"`);\n }\n }, [browserTheme, theme, documentElements]);\n\n useEffect(() => {\n bridge.send('setTraceUpdatesEnabled', traceUpdatesEnabled);\n }, [bridge, traceUpdatesEnabled]);\n\n const value: Context = useMemo(\n () => ({\n displayDensity,\n lineHeight:\n displayDensity === 'compact'\n ? COMPACT_LINE_HEIGHT\n : COMFORTABLE_LINE_HEIGHT,\n parseHookNames,\n setDisplayDensity,\n setParseHookNames,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n browserTheme,\n traceUpdatesEnabled,\n }),\n [\n displayDensity,\n parseHookNames,\n setDisplayDensity,\n setParseHookNames,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n browserTheme,\n traceUpdatesEnabled,\n ],\n );\n\n return (\n <SettingsContext.Provider value={value}>\n {children}\n </SettingsContext.Provider>\n );\n}\n\nexport function updateDisplayDensity(\n displayDensity: DisplayDensity,\n documentElements: DocumentElements,\n): void {\n // Sizes and paddings/margins are all rem-based,\n // so update the root font-size as well when the display preference changes.\n const computedStyle = getComputedStyle((document.body: any));\n const fontSize = computedStyle.getPropertyValue(\n `--${displayDensity}-root-font-size`,\n );\n const root = ((document.querySelector(':root'): any): HTMLElement);\n root.style.fontSize = fontSize;\n}\n\nexport function updateThemeVariables(\n theme: Theme,\n documentElements: DocumentElements,\n): void {\n // Update scrollbar color to match theme.\n // this CSS property is currently only supported in Firefox,\n // but it makes a significant UI improvement in dark mode.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-color\n documentElements.forEach(documentElement => {\n // $FlowFixMe[prop-missing] scrollbarColor is missing in CSSStyleDeclaration\n documentElement.style.scrollbarColor = `var(${`--${theme}-color-scroll-thumb`}) var(${`--${theme}-color-scroll-track`})`;\n });\n}\n\nexport {SettingsContext, SettingsContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './ButtonIcon.css';\n\nexport type IconType =\n | 'add'\n | 'cancel'\n | 'clear'\n | 'close'\n | 'collapsed'\n | 'copy'\n | 'delete'\n | 'down'\n | 'editor'\n | 'expanded'\n | 'export'\n | 'filter'\n | 'import'\n | 'log-data'\n | 'more'\n | 'next'\n | 'parse-hook-names'\n | 'previous'\n | 'record'\n | 'reload'\n | 'save'\n | 'search'\n | 'settings'\n | 'error'\n | 'suspend'\n | 'undo'\n | 'up'\n | 'view-dom'\n | 'view-source';\n\ntype Props = {\n className?: string,\n type: IconType,\n};\n\nexport default function ButtonIcon({className = '', type}: Props): React.Node {\n let pathData = null;\n switch (type) {\n case 'add':\n pathData = PATH_ADD;\n break;\n case 'cancel':\n pathData = PATH_CANCEL;\n break;\n case 'clear':\n pathData = PATH_CLEAR;\n break;\n case 'close':\n pathData = PATH_CLOSE;\n break;\n case 'collapsed':\n pathData = PATH_COLLAPSED;\n break;\n case 'copy':\n pathData = PATH_COPY;\n break;\n case 'delete':\n pathData = PATH_DELETE;\n break;\n case 'down':\n pathData = PATH_DOWN;\n break;\n case 'editor':\n pathData = PATH_EDITOR;\n break;\n case 'expanded':\n pathData = PATH_EXPANDED;\n break;\n case 'export':\n pathData = PATH_EXPORT;\n break;\n case 'filter':\n pathData = PATH_FILTER;\n break;\n case 'import':\n pathData = PATH_IMPORT;\n break;\n case 'log-data':\n pathData = PATH_LOG_DATA;\n break;\n case 'more':\n pathData = PATH_MORE;\n break;\n case 'next':\n pathData = PATH_NEXT;\n break;\n case 'parse-hook-names':\n pathData = PATH_PARSE_HOOK_NAMES;\n break;\n case 'previous':\n pathData = PATH_PREVIOUS;\n break;\n case 'record':\n pathData = PATH_RECORD;\n break;\n case 'reload':\n pathData = PATH_RELOAD;\n break;\n case 'save':\n pathData = PATH_SAVE;\n break;\n case 'search':\n pathData = PATH_SEARCH;\n break;\n case 'settings':\n pathData = PATH_SETTINGS;\n break;\n case 'error':\n pathData = PATH_ERROR;\n break;\n case 'suspend':\n pathData = PATH_SUSPEND;\n break;\n case 'undo':\n pathData = PATH_UNDO;\n break;\n case 'up':\n pathData = PATH_UP;\n break;\n case 'view-dom':\n pathData = PATH_VIEW_DOM;\n break;\n case 'view-source':\n pathData = PATH_VIEW_SOURCE;\n break;\n default:\n console.warn(`Unsupported type \"${type}\" specified for ButtonIcon`);\n break;\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.ButtonIcon} ${className}`}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n {typeof pathData === 'string' ? (\n <path fill=\"currentColor\" d={pathData} />\n ) : (\n pathData\n )}\n </svg>\n );\n}\n\nconst PATH_ADD =\n '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';\n\nconst PATH_CANCEL = `\n 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\n`;\n\nconst PATH_CLEAR = `\n 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\n 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\n`;\n\nconst PATH_CLOSE =\n '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';\n\nconst PATH_COLLAPSED = 'M10 17l5-5-5-5v10z';\n\nconst PATH_COPY = `\n M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3a2 2 0 0 0 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9a2 2 0 0 0-2\n 2v10a2 2 0 0 0 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z\n`;\n\nconst PATH_DELETE = `\n 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\n 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\n`;\n\nconst PATH_DOWN = 'M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z';\n\nconst PATH_EXPANDED = 'M7 10l5 5 5-5z';\n\nconst PATH_EXPORT = 'M15.82,2.14v7H21l-9,9L3,9.18H8.18v-7ZM3,20.13H21v1.73H3Z';\n\nconst PATH_FILTER = 'M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z';\n\nconst PATH_IMPORT = 'M8.18,18.13v-7H3l9-8.95,9,9H15.82v7ZM3,20.13H21v1.73H3Z';\n\nconst PATH_LOG_DATA = `\n 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\n 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\n 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\n 8h-4v-2h4v2zm0-4h-4v-2h4v2z\n`;\n\nconst PATH_MORE = `\n 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\n 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\n`;\n\nconst PATH_NEXT = 'M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z';\n\nconst PATH_PARSE_HOOK_NAMES = (\n <g>\n <polygon points=\"20,7 20.94,4.94 23,4 20.94,3.06 20,1 19.06,3.06 17,4 19.06,4.94\" />\n <polygon points=\"8.5,7 9.44,4.94 11.5,4 9.44,3.06 8.5,1 7.56,3.06 5.5,4 7.56,4.94\" />\n <polygon points=\"20,12.5 19.06,14.56 17,15.5 19.06,16.44 20,18.5 20.94,16.44 23,15.5 20.94,14.56\" />\n <path d=\"M17.71,9.12l-2.83-2.83C14.68,6.1,14.43,6,14.17,6c-0.26,0-0.51,0.1-0.71,0.29L2.29,17.46c-0.39,0.39-0.39,1.02,0,1.41 l2.83,2.83C5.32,21.9,5.57,22,5.83,22s0.51-0.1,0.71-0.29l11.17-11.17C18.1,10.15,18.1,9.51,17.71,9.12z M14.17,8.42l1.41,1.41 L14.41,11L13,9.59L14.17,8.42z M5.83,19.59l-1.41-1.41L11.59,11L13,12.41L5.83,19.59z\" />\n </g>\n);\n\nconst PATH_PREVIOUS =\n 'M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z';\n\nconst PATH_RECORD = 'M4,12a8,8 0 1,0 16,0a8,8 0 1,0 -16,0';\n\nconst PATH_RELOAD = `\n 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\n 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\n 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\n`;\n\nconst PATH_SAVE = `\n 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\n`;\n\nconst PATH_SEARCH = `\n M8.5,22H3.7l-1.4-1.5V3.8l1.3-1.5h17.2l1,1.5v4.9h-1.3V4.3l-0.4-0.6H4.2L3.6,4.3V20l0.7,0.7h4.2V22z\n M23,13.9l-4.6,3.6l4.6,4.6l-1.1,1.1l-4.7-4.4l-3.3,4.4l-3.2-12.3L23,13.9z\n`;\n\nconst PATH_SETTINGS = `\n 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\n 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\n 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\n 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\n 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\n 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\n 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z\n`;\n\nconst PATH_ERROR =\n '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';\n\nconst PATH_SUSPEND = `\n 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\n 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\n`;\n\nconst PATH_UNDO = `\n 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\n 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\n`;\n\nconst PATH_UP = 'M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z';\n\nconst PATH_VIEW_DOM = `\n 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\n 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\n 3-1.34 3-3-1.34-3-3-3z\n`;\n\nconst PATH_VIEW_SOURCE = `\n 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\n `;\n\nconst PATH_EDITOR = `\n 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\n`;\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './Badge.css';\n\ntype Props = {\n className?: string,\n children: React$Node,\n};\n\nexport default function Badge({className = '', children}: Props): React.Node {\n return <div className={`${styles.Badge} ${className}`}>{children}</div>;\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport {createRegExp} from '../utils';\n\nimport {TreeStateContext} from './TreeContext';\nimport styles from './Element.css';\n\nconst {useMemo, useContext} = React;\n\ntype Props = {\n displayName: string | null,\n id: number,\n};\n\nfunction IndexableDisplayName({displayName, id}: Props): React.Node {\n const {searchIndex, searchResults, searchText} = useContext(TreeStateContext);\n const isSearchResult = useMemo(() => {\n return searchResults.includes(id);\n }, [id, searchResults]);\n const isCurrentResult =\n searchIndex !== null && id === searchResults[searchIndex];\n\n if (!isSearchResult || displayName === null) {\n return displayName;\n }\n\n const match = createRegExp(searchText).exec(displayName);\n\n if (match === null) {\n return displayName;\n }\n\n const startIndex = match.index;\n const stopIndex = startIndex + match[0].length;\n\n const children = [];\n if (startIndex > 0) {\n children.push(<span key=\"begin\">{displayName.slice(0, startIndex)}</span>);\n }\n children.push(\n <mark\n key=\"middle\"\n className={isCurrentResult ? styles.CurrentHighlight : styles.Highlight}>\n {displayName.slice(startIndex, stopIndex)}\n </mark>,\n );\n if (stopIndex < displayName.length) {\n children.push(<span key=\"end\">{displayName.slice(stopIndex)}</span>);\n }\n\n return children;\n}\n\nexport default IndexableDisplayName;\n","function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\n\nexport { canUseDOM };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { canUseDOM } from '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To\n * get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also\n * need affected components to render on the server. One example is when setting\n * a component's descendants to retrieve their index values.\n *\n * Important to note that using this hook as an escape hatch will break the\n * eslint dependency warnings unless you rename the import to `useLayoutEffect`.\n * Use sparingly only when the effect won't effect the rendered HTML to avoid\n * any server/client mismatch.\n *\n * If a useLayoutEffect is needed and the result would create a mismatch, it's\n * likely that the component in question shouldn't be rendered on the server at\n * all, so a better approach would be to lazily render those in a parent\n * component after client-side hydration.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n *\n * @param effect\n * @param deps\n */\n\nvar useIsomorphicLayoutEffect = /*#__PURE__*/canUseDOM() ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useState, useEffect } from 'react';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\n\n/*\n * Welcome to @reach/auto-id!\n\n * Let's see if we can make sense of why this hook exists and its\n * implementation.\n *\n * Some background:\n * 1. Accessibility APIs rely heavily on element IDs\n * 2. Requiring developers to put IDs on every element in Reach UI is both\n * cumbersome and error-prone\n * 3. With a component model, we can generate IDs for them!\n *\n * Solution 1: Generate random IDs.\n *\n * This works great as long as you don't server render your app. When React (in\n * the client) tries to reuse the markup from the server, the IDs won't match\n * and React will then recreate the entire DOM tree.\n *\n * Solution 2: Increment an integer\n *\n * This sounds great. Since we're rendering the exact same tree on the server\n * and client, we can increment a counter and get a deterministic result between\n * client and server. Also, JS integers can go up to nine-quadrillion. I'm\n * pretty sure the tab will be closed before an app never needs\n * 10 quadrillion IDs!\n *\n * Problem solved, right?\n *\n * Ah, but there's a catch! React's concurrent rendering makes this approach\n * non-deterministic. While the client and server will end up with the same\n * elements in the end, depending on suspense boundaries (and possibly some user\n * input during the initial render) the incrementing integers won't always match\n * up.\n *\n * Solution 3: Don't use IDs at all on the server; patch after first render.\n *\n * What we've done here is solution 2 with some tricks. With this approach, the\n * ID returned is an empty string on the first render. This way the server and\n * client have the same markup no matter how wild the concurrent rendering may\n * have gotten.\n *\n * After the render, we patch up the components with an incremented ID. This\n * causes a double render on any components with `useId`. Shouldn't be a problem\n * since the components using this hook should be small, and we're only updating\n * the ID attribute on the DOM, nothing big is happening.\n *\n * It doesn't have to be an incremented number, though--we could do generate\n * random strings instead, but incrementing a number is probably the cheapest\n * thing we can do.\n *\n * Additionally, we only do this patchup on the very first client render ever.\n * Any calls to `useId` that happen dynamically in the client will be\n * populated immediately with a value. So, we only get the double render after\n * server hydration and never again, SO BACK OFF ALRIGHT?\n */\nvar serverHandoffComplete = false;\nvar id = 0;\n\nvar genId = function genId() {\n return ++id;\n};\n/**\n * useId\n *\n * Autogenerate IDs to facilitate WAI-ARIA and server rendering.\n *\n * Note: The returned ID will initially be `null` and will update after a\n * component mounts. Users may need to supply their own ID if they need\n * consistent values for SSR.\n *\n * @see Docs https://reach.tech/auto-id\n */\n\n\nfunction useId(idFromProps) {\n /*\n * If this instance isn't part of the initial render, we don't have to do the\n * double render/patch-up dance. We can just generate the ID and return it.\n */\n var initialId = idFromProps || (serverHandoffComplete ? genId() : null);\n\n var _React$useState = useState(initialId),\n id = _React$useState[0],\n setId = _React$useState[1];\n\n useIsomorphicLayoutEffect(function () {\n if (id === null) {\n /*\n * Patch the ID after render. We do this in `useLayoutEffect` to avoid any\n * rendering flicker, though it'll make the first render slower (unlikely\n * to matter, but you're welcome to measure your app and let us know if\n * it's a problem).\n */\n setId(genId());\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, []);\n useEffect(function () {\n if (serverHandoffComplete === false) {\n /*\n * Flag all future uses of `useId` to skip the update dance. This is in\n * `useEffect` because it goes after `useLayoutEffect`, ensuring we don't\n * accidentally bail out of the patch-up dance prematurely.\n */\n serverHandoffComplete = true;\n }\n }, []);\n return id != null ? String(id) : undefined;\n}\n\nexport { useId };\n","import { canUseDOM } from '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * Get an element's owner document. Useful when components are used in iframes\n * or other environments like dev tools.\n *\n * @param element\n */\n\nfunction getOwnerDocument(element) {\n return canUseDOM() ? element ? element.ownerDocument : document : null;\n}\n/**\n * TODO: Remove in 1.0\n */\n\nfunction getOwnerWindow(element) {\n var ownerDocument = getOwnerDocument(element);\n return ownerDocument ? ownerDocument.defaultView || window : null;\n}\n\nexport { getOwnerDocument, getOwnerWindow };\n","/**\n * Joins strings to format IDs for compound components.\n *\n * @param args\n */\nfunction makeId() {\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.filter(function (val) {\n return val != null;\n }).join(\"--\");\n}\n\nexport { makeId };\n","/**\n * Checks whether or not a value is a boolean.\n *\n * @param value\n */\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\n/**\n * Checks whether or not a value is a function.\n *\n * @param value\n */\n\nfunction isFunction(value) {\n // eslint-disable-next-line eqeqeq\n return !!(value && {}.toString.call(value) == \"[object Function]\");\n}\n/**\n * Checks whether or not a value is a number.\n *\n * @param value\n */\n\nfunction isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}\n/**\n * Checks whether or not a value is a string.\n *\n * @param value\n */\n\nfunction isString(value) {\n return typeof value === \"string\";\n}\n\nexport { isBoolean, isFunction, isNumber, isString };\n","import { useCallback } from 'react';\nimport { isFunction } from '../../type-check/dist/reach-utils-type-check.esm.js';\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\n/**\n * Passes or assigns an arbitrary value to a ref function or object.\n *\n * @param ref\n * @param value\n */\nfunction assignRef(ref, value) {\n if (ref == null) return;\n\n if (isFunction(ref)) {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n }\n }\n}\n/**\n * Passes or assigns a value to multiple refs (typically a DOM node). Useful for\n * dealing with components that need an explicit ref for DOM calculations but\n * also forwards refs assigned by an app.\n *\n * @param refs Refs to fork\n */\n\nfunction useComposedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useCallback(function (node) {\n for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {\n var ref = _step.value;\n assignRef(ref, node);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, refs);\n}\n\nexport { assignRef, useComposedRefs };\n","/**\n * Wraps a lib-defined event handler and a user-defined event handler, returning\n * a single handler that allows a user to prevent lib-defined handlers from\n * firing.\n *\n * @param theirHandler User-supplied event handler\n * @param ourHandler Library-supplied event handler\n */\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return function (event) {\n theirHandler && theirHandler(event);\n\n if (!event.defaultPrevented) {\n return ourHandler(event);\n }\n };\n}\n\nexport { composeEventHandlers };\n","import { useState, useCallback } from 'react';\n\n/**\n * Forces a re-render, similar to `forceUpdate` in class components.\n */\n\nfunction useForceUpdate() {\n var _useState = useState(Object.create(null)),\n dispatch = _useState[1];\n\n return useCallback(function () {\n dispatch(Object.create(null));\n }, []);\n}\n\nexport { useForceUpdate };\n","import { useRef, createElement } from 'react';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { useForceUpdate } from '@reach/utils/use-force-update';\nimport { createPortal } from 'react-dom';\n\n/**\n * Welcome to @reach/portal!\n *\n * Creates and appends a DOM node to the end of `document.body` and renders a\n * React tree into it. Useful for rendering a natural React element hierarchy\n * with a different DOM hierarchy to prevent parent styles from clipping or\n * hiding content (for popovers, dropdowns, and modals).\n *\n * @see Docs https://reach.tech/portal\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/portal\n * @see React https://reactjs.org/docs/portals.html\n */\n/**\n * Portal\n *\n * @see Docs https://reach.tech/portal#portal\n */\n\nvar Portal = function Portal(_ref) {\n var children = _ref.children,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? \"reach-portal\" : _ref$type;\n var mountNode = useRef(null);\n var portalNode = useRef(null);\n var forceUpdate = useForceUpdate();\n useIsomorphicLayoutEffect(function () {\n // This ref may be null when a hot-loader replaces components on the page\n if (!mountNode.current) return; // It's possible that the content of the portal has, itself, been portaled.\n // In that case, it's important to append to the correct document element.\n\n var ownerDocument = mountNode.current.ownerDocument;\n portalNode.current = ownerDocument == null ? void 0 : ownerDocument.createElement(type);\n ownerDocument.body.appendChild(portalNode.current);\n forceUpdate();\n return function () {\n if (portalNode.current && portalNode.current.ownerDocument) {\n portalNode.current.ownerDocument.body.removeChild(portalNode.current);\n }\n };\n }, [type, forceUpdate]);\n return portalNode.current ? /*#__PURE__*/createPortal(children, portalNode.current) : /*#__PURE__*/createElement(\"span\", {\n ref: mountNode\n });\n};\n/**\n * @see Docs https://reach.tech/portal#portal-props\n */\n\n\nif (process.env.NODE_ENV !== \"production\") {\n Portal.displayName = \"Portal\";\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Portal;\nexport { Portal };\n","import { forwardRef, createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nvar _excluded = [\"as\", \"style\"];\n\n/**\n * VisuallyHidden\n *\n * Provides text for screen readers that is visually hidden.\n * It is the logical opposite of the `aria-hidden` attribute.\n */\nvar VisuallyHidden = /*#__PURE__*/forwardRef(function VisuallyHidden(_ref, ref) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"span\" : _ref$as,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/createElement(Comp, _extends({\n ref: ref,\n style: _extends({\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n }, style)\n }, props));\n});\n/**\n * @see Docs https://reach.tech/visually-hidden#visuallyhidden-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n VisuallyHidden.displayName = \"VisuallyHidden\";\n VisuallyHidden.propTypes = {\n as: PropTypes.any,\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default VisuallyHidden;\nexport { VisuallyHidden };\n","let props: (keyof DOMRect)[] = [\n\t\"bottom\",\n\t\"height\",\n\t\"left\",\n\t\"right\",\n\t\"top\",\n\t\"width\",\n];\n\nlet rectChanged = (a: DOMRect = {} as DOMRect, b: DOMRect = {} as DOMRect) =>\n\tprops.some((prop) => a[prop] !== b[prop]);\n\nlet observedNodes = new Map<Element, RectProps>();\nlet rafId: number;\n\nlet run = () => {\n\tconst changedStates: RectProps[] = [];\n\tobservedNodes.forEach((state, node) => {\n\t\tlet newRect = node.getBoundingClientRect();\n\t\tif (rectChanged(newRect, state.rect)) {\n\t\t\tstate.rect = newRect;\n\t\t\tchangedStates.push(state);\n\t\t}\n\t});\n\n\tchangedStates.forEach((state) => {\n\t\tstate.callbacks.forEach((cb) => cb(state.rect));\n\t});\n\n\trafId = window.requestAnimationFrame(run);\n};\n\nexport default function observeRect(\n\tnode: Element,\n\tcb: (rect: DOMRect) => void\n) {\n\treturn {\n\t\tobserve() {\n\t\t\tlet wasEmpty = observedNodes.size === 0;\n\t\t\tif (observedNodes.has(node)) {\n\t\t\t\tobservedNodes.get(node)!.callbacks.push(cb);\n\t\t\t} else {\n\t\t\t\tobservedNodes.set(node, {\n\t\t\t\t\trect: undefined,\n\t\t\t\t\thasRectChanged: false,\n\t\t\t\t\tcallbacks: [cb],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (wasEmpty) run();\n\t\t},\n\n\t\tunobserve() {\n\t\t\tlet state = observedNodes.get(node);\n\t\t\tif (state) {\n\t\t\t\t// Remove the callback\n\t\t\t\tconst index = state.callbacks.indexOf(cb);\n\t\t\t\tif (index >= 0) state.callbacks.splice(index, 1);\n\n\t\t\t\t// Remove the node reference\n\t\t\t\tif (!state.callbacks.length) observedNodes.delete(node);\n\n\t\t\t\t// Stop the loop\n\t\t\t\tif (!observedNodes.size) cancelAnimationFrame(rafId);\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport type PartialRect = Partial<DOMRect>;\n\nexport type RectProps = {\n\trect: DOMRect | undefined;\n\thasRectChanged: boolean;\n\tcallbacks: Function[];\n};\n","import { useRef, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport observeRect from '@reach/observe-rect';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { isBoolean, isFunction } from '@reach/utils/type-check';\nimport warning from 'tiny-warning';\n\n/**\n * Welcome to @reach/rect!\n *\n * Measures DOM elements (aka. bounding client rect).\n *\n * @see getBoundingClientRect https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect\n * @see Docs https://reach.tech/rect\n * @see Source https://github.com/reach/reach-ui/tree/main/packages/rect\n */\n\n/**\n * Rect\n *\n * @param props\n */\n\nvar Rect = function Rect(_ref) {\n var onChange = _ref.onChange,\n _ref$observe = _ref.observe,\n observe = _ref$observe === void 0 ? true : _ref$observe,\n children = _ref.children;\n var ref = useRef(null);\n var rect = useRect(ref, {\n observe: observe,\n onChange: onChange\n });\n return children({\n ref: ref,\n rect: rect\n });\n};\n/**\n * @see Docs https://reach.tech/rect#rect-props\n */\n\n\nif (process.env.NODE_ENV !== \"production\") {\n Rect.displayName = \"Rect\";\n Rect.propTypes = {\n children: PropTypes.func.isRequired,\n observe: PropTypes.bool,\n onChange: PropTypes.func\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * useRect\n *\n * @param nodeRef\n * @param observe\n * @param onChange\n */\nfunction useRect(nodeRef, observeOrOptions, deprecated_onChange) {\n var observe;\n var onChange;\n\n if (isBoolean(observeOrOptions)) {\n observe = observeOrOptions;\n } else {\n var _observeOrOptions$obs;\n\n observe = (_observeOrOptions$obs = observeOrOptions == null ? void 0 : observeOrOptions.observe) != null ? _observeOrOptions$obs : true;\n onChange = observeOrOptions == null ? void 0 : observeOrOptions.onChange;\n }\n\n if (isFunction(deprecated_onChange)) {\n onChange = deprecated_onChange;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(!isBoolean(observeOrOptions), \"Passing `observe` as the second argument to `useRect` is deprecated and will be removed in a future version of Reach UI. Instead, you can pass an object of options with an `observe` property as the second argument (`useRect(ref, { observe })`).\\n\" + \"See https://reach.tech/rect#userect-observe\") : void 0;\n }, [observeOrOptions]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(!isFunction(deprecated_onChange), \"Passing `onChange` as the third argument to `useRect` is deprecated and will be removed in a future version of Reach UI. Instead, you can pass an object of options with an `onChange` property as the second argument (`useRect(ref, { onChange })`).\\n\" + \"See https://reach.tech/rect#userect-onchange\") : void 0;\n }, [deprecated_onChange]);\n }\n\n var _React$useState = useState(nodeRef.current),\n element = _React$useState[0],\n setElement = _React$useState[1];\n\n var initialRectIsSet = useRef(false);\n var initialRefIsSet = useRef(false);\n\n var _React$useState2 = useState(null),\n rect = _React$useState2[0],\n setRect = _React$useState2[1];\n\n var onChangeRef = useRef(onChange); // eslint-disable-next-line react-hooks/exhaustive-deps\n\n useIsomorphicLayoutEffect(function () {\n onChangeRef.current = onChange;\n\n if (nodeRef.current !== element) {\n setElement(nodeRef.current);\n }\n });\n useIsomorphicLayoutEffect(function () {\n if (element && !initialRectIsSet.current) {\n initialRectIsSet.current = true;\n setRect(element.getBoundingClientRect());\n }\n }, [element]);\n useIsomorphicLayoutEffect(function () {\n if (!observe) {\n return;\n }\n\n var elem = element; // State initializes before refs are placed, meaning the element state will\n // be undefined on the first render. We still want the rect on the first\n // render, so initially we'll use the nodeRef that was passed instead of\n // state for our measurements.\n\n if (!initialRefIsSet.current) {\n initialRefIsSet.current = true;\n elem = nodeRef.current;\n }\n\n if (!elem) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"You need to place the ref\");\n }\n\n return;\n }\n\n var observer = observeRect(elem, function (rect) {\n onChangeRef.current == null ? void 0 : onChangeRef.current(rect);\n setRect(rect);\n });\n observer.observe();\n return function () {\n observer.unobserve();\n };\n }, [observe, element, nodeRef]);\n return rect;\n}\n\nexport default Rect;\nexport { Rect, useRect };\n","import { useState, useRef, useEffect, forwardRef, Children, createElement, Fragment, cloneElement } from 'react';\nimport { useId } from '@reach/auto-id';\nimport { getDocumentDimensions } from '@reach/utils/get-document-dimensions';\nimport { getOwnerDocument } from '@reach/utils/owner-document';\nimport { makeId } from '@reach/utils/make-id';\nimport { useCheckStyles } from '@reach/utils/dev-utils';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport { composeEventHandlers } from '@reach/utils/compose-event-handlers';\nimport { Portal } from '@reach/portal';\nimport { VisuallyHidden } from '@reach/visually-hidden';\nimport { useRect } from '@reach/rect';\nimport warning from 'tiny-warning';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nvar _excluded = [\"children\", \"label\", \"ariaLabel\", \"id\", \"DEBUG_STYLE\"],\n _excluded2 = [\"label\", \"ariaLabel\", \"isVisible\", \"id\"],\n _excluded3 = [\"ariaLabel\", \"aria-label\", \"as\", \"id\", \"isVisible\", \"label\", \"position\", \"style\", \"triggerRect\"],\n _excluded4 = [\"type\"];\n\nvar _on, _on2, _on3, _on4, _on5, _states;\nvar MOUSE_REST_TIMEOUT = 100;\nvar LEAVE_TIMEOUT = 500; ////////////////////////////////////////////////////////////////////////////////\n// States\n\nvar TooltipStates; ////////////////////////////////////////////////////////////////////////////////\n// Events\n\n(function (TooltipStates) {\n TooltipStates[\"Idle\"] = \"IDLE\";\n TooltipStates[\"Focused\"] = \"FOCUSED\";\n TooltipStates[\"Visible\"] = \"VISIBLE\";\n TooltipStates[\"LeavingVisible\"] = \"LEAVING_VISIBLE\";\n TooltipStates[\"Dismissed\"] = \"DISMISSED\";\n})(TooltipStates || (TooltipStates = {}));\n\nvar TooltipEvents;\n\n(function (TooltipEvents) {\n TooltipEvents[\"Blur\"] = \"BLUR\";\n TooltipEvents[\"Focus\"] = \"FOCUS\";\n TooltipEvents[\"GlobalMouseMove\"] = \"GLOBAL_MOUSE_MOVE\";\n TooltipEvents[\"MouseDown\"] = \"MOUSE_DOWN\";\n TooltipEvents[\"MouseEnter\"] = \"MOUSE_ENTER\";\n TooltipEvents[\"MouseLeave\"] = \"MOUSE_LEAVE\";\n TooltipEvents[\"MouseMove\"] = \"MOUSE_MOVE\";\n TooltipEvents[\"Rest\"] = \"REST\";\n TooltipEvents[\"SelectWithKeyboard\"] = \"SELECT_WITH_KEYBOARD\";\n TooltipEvents[\"TimeComplete\"] = \"TIME_COMPLETE\";\n})(TooltipEvents || (TooltipEvents = {}));\n\nvar chart = {\n initial: TooltipStates.Idle,\n states: (_states = {}, _states[TooltipStates.Idle] = {\n enter: clearContextId,\n on: (_on = {}, _on[TooltipEvents.MouseEnter] = TooltipStates.Focused, _on[TooltipEvents.Focus] = TooltipStates.Visible, _on)\n }, _states[TooltipStates.Focused] = {\n enter: startRestTimer,\n leave: clearRestTimer,\n on: (_on2 = {}, _on2[TooltipEvents.MouseMove] = TooltipStates.Focused, _on2[TooltipEvents.MouseLeave] = TooltipStates.Idle, _on2[TooltipEvents.MouseDown] = TooltipStates.Dismissed, _on2[TooltipEvents.Blur] = TooltipStates.Idle, _on2[TooltipEvents.Rest] = TooltipStates.Visible, _on2)\n }, _states[TooltipStates.Visible] = {\n on: (_on3 = {}, _on3[TooltipEvents.Focus] = TooltipStates.Focused, _on3[TooltipEvents.MouseEnter] = TooltipStates.Focused, _on3[TooltipEvents.MouseLeave] = TooltipStates.LeavingVisible, _on3[TooltipEvents.Blur] = TooltipStates.LeavingVisible, _on3[TooltipEvents.MouseDown] = TooltipStates.Dismissed, _on3[TooltipEvents.SelectWithKeyboard] = TooltipStates.Dismissed, _on3[TooltipEvents.GlobalMouseMove] = TooltipStates.LeavingVisible, _on3)\n }, _states[TooltipStates.LeavingVisible] = {\n enter: startLeavingVisibleTimer,\n leave: function leave() {\n clearLeavingVisibleTimer();\n clearContextId();\n },\n on: (_on4 = {}, _on4[TooltipEvents.MouseEnter] = TooltipStates.Visible, _on4[TooltipEvents.Focus] = TooltipStates.Visible, _on4[TooltipEvents.TimeComplete] = TooltipStates.Idle, _on4)\n }, _states[TooltipStates.Dismissed] = {\n leave: function leave() {\n clearContextId();\n },\n on: (_on5 = {}, _on5[TooltipEvents.MouseLeave] = TooltipStates.Idle, _on5[TooltipEvents.Blur] = TooltipStates.Idle, _on5)\n }, _states)\n};\n/*\n * Chart context allows us to persist some data around, in Tooltip all we use\n * is the id of the current tooltip being interacted with.\n */\n\nvar state = {\n value: chart.initial,\n context: {\n id: null\n }\n}; ////////////////////////////////////////////////////////////////////////////////\n// Subscriptions:\n//\n// We could require apps to render a <TooltipProvider> around the app and use\n// React context to notify Tooltips of changes to our state machine, instead\n// we manage subscriptions ourselves and simplify the Tooltip API.\n//\n// Maybe if default context could take a hook (instead of just a static value)\n// that was rendered at the root for us, that'd be cool! But it doesn't.\n\nvar subscriptions = [];\n\nfunction subscribe(fn) {\n subscriptions.push(fn);\n return function () {\n subscriptions.splice(subscriptions.indexOf(fn), 1);\n };\n}\n\nfunction notify() {\n subscriptions.forEach(function (fn) {\n return fn(state);\n });\n} ////////////////////////////////////////////////////////////////////////////////\n// Timeouts:\n// Manages when the user \"rests\" on an element. Keeps the interface from being\n// flashing tooltips all the time as the user moves the mouse around the screen.\n\n\nvar restTimeout;\n\nfunction startRestTimer() {\n window.clearTimeout(restTimeout);\n restTimeout = window.setTimeout(function () {\n send({\n type: TooltipEvents.Rest\n });\n }, MOUSE_REST_TIMEOUT);\n}\n\nfunction clearRestTimer() {\n window.clearTimeout(restTimeout);\n} // Manages the delay to hide the tooltip after rest leaves.\n\n\nvar leavingVisibleTimer;\n\nfunction startLeavingVisibleTimer() {\n window.clearTimeout(leavingVisibleTimer);\n leavingVisibleTimer = window.setTimeout(function () {\n return send({\n type: TooltipEvents.TimeComplete\n });\n }, LEAVE_TIMEOUT);\n}\n\nfunction clearLeavingVisibleTimer() {\n window.clearTimeout(leavingVisibleTimer);\n} // allows us to come on back later w/o entering something else first after the\n// user leaves or dismisses\n\n\nfunction clearContextId() {\n state.context.id = null;\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * useTooltip\n *\n * @param params\n */\n\n\nfunction useTooltip(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n idProp = _ref.id,\n onPointerEnter = _ref.onPointerEnter,\n onPointerMove = _ref.onPointerMove,\n onPointerLeave = _ref.onPointerLeave,\n onPointerDown = _ref.onPointerDown,\n onMouseEnter = _ref.onMouseEnter,\n onMouseMove = _ref.onMouseMove,\n onMouseLeave = _ref.onMouseLeave,\n onMouseDown = _ref.onMouseDown,\n onFocus = _ref.onFocus,\n onBlur = _ref.onBlur,\n onKeyDown = _ref.onKeyDown,\n disabled = _ref.disabled,\n forwardedRef = _ref.ref,\n DEBUG_STYLE = _ref.DEBUG_STYLE;\n\n var id = String(useId(idProp));\n\n var _React$useState = useState(DEBUG_STYLE ? true : isTooltipVisible(id, true)),\n isVisible = _React$useState[0],\n setIsVisible = _React$useState[1]; // hopefully they always pass a ref if they ever pass one\n\n\n var ownRef = useRef(null);\n var ref = useComposedRefs(forwardedRef, ownRef);\n var triggerRect = useRect(ownRef, {\n observe: isVisible\n });\n useEffect(function () {\n return subscribe(function () {\n setIsVisible(isTooltipVisible(id));\n });\n }, [id]);\n useCheckStyles(\"tooltip\");\n useEffect(function () {\n var ownerDocument = getOwnerDocument(ownRef.current);\n\n function listener(event) {\n if ((event.key === \"Escape\" || event.key === \"Esc\") && state.value === TooltipStates.Visible) {\n send({\n type: TooltipEvents.SelectWithKeyboard\n });\n }\n }\n\n ownerDocument.addEventListener(\"keydown\", listener);\n return function () {\n return ownerDocument.removeEventListener(\"keydown\", listener);\n };\n }, []);\n useDisabledTriggerOnSafari({\n disabled: disabled,\n isVisible: isVisible,\n ref: ownRef\n });\n\n function wrapMouseEvent(theirHandler, ourHandler) {\n // Use internal MouseEvent handler only if PointerEvent is not supported\n if (typeof window !== \"undefined\" && \"PointerEvent\" in window) {\n return theirHandler;\n }\n\n return composeEventHandlers(theirHandler, ourHandler);\n }\n\n function wrapPointerEventHandler(handler) {\n return function onPointerEvent(event) {\n // Handle pointer events only from mouse device\n if (event.pointerType !== \"mouse\") {\n return;\n }\n\n handler(event);\n };\n }\n\n function handleMouseEnter() {\n send({\n type: TooltipEvents.MouseEnter,\n id: id\n });\n }\n\n function handleMouseMove() {\n send({\n type: TooltipEvents.MouseMove,\n id: id\n });\n }\n\n function handleMouseLeave() {\n send({\n type: TooltipEvents.MouseLeave\n });\n }\n\n function handleMouseDown() {\n // Allow quick click from one tool to another\n if (state.context.id === id) {\n send({\n type: TooltipEvents.MouseDown\n });\n }\n }\n\n function handleFocus() {\n // @ts-ignore\n if (window.__REACH_DISABLE_TOOLTIPS) {\n return;\n }\n\n send({\n type: TooltipEvents.Focus,\n id: id\n });\n }\n\n function handleBlur() {\n // Allow quick click from one tool to another\n if (state.context.id === id) {\n send({\n type: TooltipEvents.Blur\n });\n }\n }\n\n function handleKeyDown(event) {\n if (event.key === \"Enter\" || event.key === \" \") {\n send({\n type: TooltipEvents.SelectWithKeyboard\n });\n }\n }\n\n var trigger = {\n // The element that triggers the tooltip references the tooltip element with\n // `aria-describedby`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tooltip\n \"aria-describedby\": isVisible ? makeId(\"tooltip\", id) : undefined,\n \"data-state\": isVisible ? \"tooltip-visible\" : \"tooltip-hidden\",\n \"data-reach-tooltip-trigger\": \"\",\n ref: ref,\n onPointerEnter: composeEventHandlers(onPointerEnter, wrapPointerEventHandler(handleMouseEnter)),\n onPointerMove: composeEventHandlers(onPointerMove, wrapPointerEventHandler(handleMouseMove)),\n onPointerLeave: composeEventHandlers(onPointerLeave, wrapPointerEventHandler(handleMouseLeave)),\n onPointerDown: composeEventHandlers(onPointerDown, wrapPointerEventHandler(handleMouseDown)),\n onMouseEnter: wrapMouseEvent(onMouseEnter, handleMouseEnter),\n onMouseMove: wrapMouseEvent(onMouseMove, handleMouseMove),\n onMouseLeave: wrapMouseEvent(onMouseLeave, handleMouseLeave),\n onMouseDown: wrapMouseEvent(onMouseDown, handleMouseDown),\n onFocus: composeEventHandlers(onFocus, handleFocus),\n onBlur: composeEventHandlers(onBlur, handleBlur),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown)\n };\n var tooltip = {\n id: id,\n triggerRect: triggerRect,\n isVisible: isVisible\n };\n return [trigger, tooltip, isVisible];\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Tooltip\n *\n * @see Docs https://reach.tech/tooltip#tooltip\n */\n\n\nvar Tooltip = /*#__PURE__*/forwardRef(function (_ref2, forwardedRef) {\n var children = _ref2.children,\n label = _ref2.label,\n DEPRECATED_ariaLabel = _ref2.ariaLabel,\n id = _ref2.id,\n DEBUG_STYLE = _ref2.DEBUG_STYLE,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var child = Children.only(children);\n process.env.NODE_ENV !== \"production\" ? warning(!DEPRECATED_ariaLabel, \"The `ariaLabel prop is deprecated and will be removed from @reach/tooltip in a future version of Reach UI. Please use `aria-label` instead.\") : void 0; // We need to pass some properties from the child into useTooltip\n // to make sure users can maintain control over the trigger's ref and events\n\n var _useTooltip = useTooltip({\n id: id,\n onPointerEnter: child.props.onPointerEnter,\n onPointerMove: child.props.onPointerMove,\n onPointerLeave: child.props.onPointerLeave,\n onPointerDown: child.props.onPointerDown,\n onMouseEnter: child.props.onMouseEnter,\n onMouseMove: child.props.onMouseMove,\n onMouseLeave: child.props.onMouseLeave,\n onMouseDown: child.props.onMouseDown,\n onFocus: child.props.onFocus,\n onBlur: child.props.onBlur,\n onKeyDown: child.props.onKeyDown,\n disabled: child.props.disabled,\n ref: child.ref,\n DEBUG_STYLE: DEBUG_STYLE\n }),\n trigger = _useTooltip[0],\n tooltip = _useTooltip[1];\n\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/cloneElement(child, trigger), /*#__PURE__*/createElement(TooltipPopup, _extends({\n ref: forwardedRef,\n label: label,\n \"aria-label\": DEPRECATED_ariaLabel\n }, tooltip, props)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Tooltip.displayName = \"Tooltip\";\n Tooltip.propTypes = {\n children: PropTypes.node.isRequired,\n label: PropTypes.node.isRequired,\n ariaLabel: PropTypes.string\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * TooltipPopup\n *\n * @see Docs https://reach.tech/tooltip#tooltippopup\n */\n\n\nvar TooltipPopup = /*#__PURE__*/forwardRef(function TooltipPopup(_ref3, forwardRef) {\n var label = _ref3.label,\n DEPRECATED_ariaLabel = _ref3.ariaLabel,\n isVisible = _ref3.isVisible,\n id = _ref3.id,\n props = _objectWithoutPropertiesLoose(_ref3, _excluded2);\n\n return isVisible ? /*#__PURE__*/createElement(Portal, null, /*#__PURE__*/createElement(TooltipContent, _extends({\n ref: forwardRef,\n label: label,\n \"aria-label\": DEPRECATED_ariaLabel,\n isVisible: isVisible\n }, props, {\n id: makeId(\"tooltip\", String(id))\n }))) : null;\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n TooltipPopup.displayName = \"TooltipPopup\";\n TooltipPopup.propTypes = {\n label: PropTypes.node.isRequired,\n ariaLabel: PropTypes.string,\n position: PropTypes.func\n };\n}\n/**\n * TooltipContent\n *\n * We need a separate component so that useRect works inside the portal.\n *\n * @see Docs https://reach.tech/tooltip#tooltipcontent\n */\n\n\nvar TooltipContent = /*#__PURE__*/forwardRef(function TooltipContent(_ref4, forwardedRef) {\n var ariaLabel = _ref4.ariaLabel,\n realAriaLabel = _ref4[\"aria-label\"],\n _ref4$as = _ref4.as,\n Comp = _ref4$as === void 0 ? \"div\" : _ref4$as,\n id = _ref4.id,\n isVisible = _ref4.isVisible,\n label = _ref4.label,\n _ref4$position = _ref4.position,\n position = _ref4$position === void 0 ? positionTooltip : _ref4$position,\n style = _ref4.style,\n triggerRect = _ref4.triggerRect,\n props = _objectWithoutPropertiesLoose(_ref4, _excluded3);\n\n // The element that serves as the tooltip container has role tooltip.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tooltip When an app passes\n // an `aria-label`, we actually want to implement `role=\"tooltip\"` on a\n // visually hidden element inside of the trigger. In these cases we want the\n // screen reader user to know both the content in the tooltip, but also the\n // content in the badge. For screen reader users, the only content announced\n // to them is whatever is in the tooltip.\n var hasAriaLabel = (realAriaLabel || ariaLabel) != null;\n var ownRef = useRef(null);\n var ref = useComposedRefs(forwardedRef, ownRef);\n var tooltipRect = useRect(ownRef, {\n observe: isVisible\n });\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Comp, _extends({\n role: hasAriaLabel ? undefined : \"tooltip\"\n }, props, {\n ref: ref,\n \"data-reach-tooltip\": \"\",\n id: hasAriaLabel ? undefined : id,\n style: _extends({}, style, getStyles(position, triggerRect, tooltipRect))\n }), label), hasAriaLabel && /*#__PURE__*/createElement(VisuallyHidden, {\n role: \"tooltip\",\n id: id\n }, realAriaLabel || ariaLabel));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n TooltipContent.displayName = \"TooltipContent\";\n TooltipContent.propTypes = {};\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction getStyles(position, triggerRect, tooltipRect) {\n var haventMeasuredTooltipYet = !tooltipRect;\n\n if (haventMeasuredTooltipYet) {\n return {\n visibility: \"hidden\"\n };\n }\n\n return position(triggerRect, tooltipRect);\n} // Default offset from the trigger (e.g., if the tooltip is positioned above,\n// there will be 8px between the bottom of the tooltip and the top of the trigger).\n// It feels awkward when it's perfectly aligned w/ the trigger\n\n\nvar OFFSET_DEFAULT = 8;\nvar positionTooltip = function positionTooltip(triggerRect, tooltipRect, offset) {\n if (offset === void 0) {\n offset = OFFSET_DEFAULT;\n }\n\n var _getDocumentDimension = getDocumentDimensions(),\n windowWidth = _getDocumentDimension.width,\n windowHeight = _getDocumentDimension.height;\n\n if (!triggerRect || !tooltipRect) {\n return {};\n }\n\n var collisions = {\n top: triggerRect.top - tooltipRect.height < 0,\n right: windowWidth < triggerRect.left + tooltipRect.width,\n bottom: windowHeight < triggerRect.bottom + tooltipRect.height + offset,\n left: triggerRect.left - tooltipRect.width < 0\n };\n var directionRight = collisions.right && !collisions.left;\n var directionUp = collisions.bottom && !collisions.top;\n return {\n left: directionRight ? triggerRect.right - tooltipRect.width + window.pageXOffset + \"px\" : triggerRect.left + window.pageXOffset + \"px\",\n top: directionUp ? triggerRect.top - offset - tooltipRect.height + window.pageYOffset + \"px\" : triggerRect.top + offset + triggerRect.height + window.pageYOffset + \"px\"\n };\n};\n/**\n * This is a workaround for using tooltips with disabled controls in Safari.\n * Safari fires `pointerenter` but does not fire `pointerleave`, and\n * `onPointerEventLeave` added to the trigger element will not work.\n *\n * TODO: We may remove or modiify this behavior in a future version. Direction\n * from WAI-ARIA needed for guidance on handling disabled triggers. Tooltips\n * must be accessible by keyboard, and disabled form controls are generally\n * excluded from the tab sequence.\n *\n * @see https://github.com/reach/reach-ui/issues/564\n * @see https://github.com/w3c/aria-practices/issues/128#issuecomment-588625727\n */\n\nfunction useDisabledTriggerOnSafari(_ref5) {\n var disabled = _ref5.disabled,\n isVisible = _ref5.isVisible,\n ref = _ref5.ref;\n useEffect(function () {\n if (!(typeof window !== \"undefined\" && \"PointerEvent\" in window) || !disabled || !isVisible) {\n return;\n }\n\n var ownerDocument = getOwnerDocument(ref.current);\n\n function handleMouseMove(event) {\n if (!isVisible) {\n return;\n }\n\n if (event.target instanceof Element && event.target.closest(\"[data-reach-tooltip-trigger][data-state='tooltip-visible']\")) {\n return;\n }\n\n send({\n type: TooltipEvents.GlobalMouseMove\n });\n }\n\n ownerDocument.addEventListener(\"mousemove\", handleMouseMove);\n return function () {\n ownerDocument.removeEventListener(\"mousemove\", handleMouseMove);\n };\n }, [disabled, isVisible, ref]);\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Send an event to our state machine to find the next state from the current\n * state + action.\n *\n * It also manages lifecycles of the machine, (enter/leave hooks on the state\n * chart)\n *\n * @param event\n * @param payload\n */\n\n\nfunction send(event) {\n var _transition = transition(state, event),\n value = _transition.value,\n context = _transition.context,\n changed = _transition.changed;\n\n if (changed) {\n state = {\n value: value,\n context: context\n };\n notify();\n }\n}\n\nfunction transition(currentState, event) {\n var stateDef = chart.states[currentState.value];\n var nextState = stateDef && stateDef.on && stateDef.on[event.type]; // Really useful for debugging\n // console.log({ event, state, nextState, contextId: context.id });\n // !nextState && console.log(\"no transition taken\");\n\n if (!nextState) {\n return _extends({}, currentState, {\n changed: false\n });\n }\n\n if (stateDef && stateDef.leave) {\n stateDef.leave(currentState.context, event);\n }\n\n event.type;\n var payload = _objectWithoutPropertiesLoose(event, _excluded4); // TODO: Use actions instead of directly setting context\n\n\n var context = _extends({}, state.context, payload);\n\n var nextStateValue = typeof nextState === \"string\" ? nextState : nextState.target;\n var nextDef = chart.states[nextStateValue];\n\n if (nextDef && nextDef.enter) {\n nextDef.enter(currentState.context, event);\n }\n\n return {\n value: nextStateValue,\n context: context,\n changed: true\n };\n}\n\nfunction isTooltipVisible(id, initial) {\n return state.context.id === id && (initial ? state.value === TooltipStates.Visible : state.value === TooltipStates.Visible || state.value === TooltipStates.LeavingVisible);\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Tooltip;\nexport { LEAVE_TIMEOUT, MOUSE_REST_TIMEOUT, Tooltip, TooltipPopup, positionTooltip, useTooltip };\n","import { getOwnerDocument } from '../../owner-document/dist/reach-utils-owner-document.esm.js';\nimport '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * Get the size of the working document minus the scrollbar offset.\n *\n * @param element\n */\n\nfunction getDocumentDimensions(element) {\n var _ownerDocument$docume, _ownerDocument$docume2;\n\n var ownerDocument = getOwnerDocument(element);\n var ownerWindow = ownerDocument.defaultView || window;\n\n if (!ownerDocument) {\n return {\n width: 0,\n height: 0\n };\n }\n\n return {\n width: (_ownerDocument$docume = ownerDocument.documentElement.clientWidth) != null ? _ownerDocument$docume : ownerWindow.innerWidth,\n height: (_ownerDocument$docume2 = ownerDocument.documentElement.clientHeight) != null ? _ownerDocument$docume2 : ownerWindow.innerHeight\n };\n}\n\nexport { getDocumentDimensions };\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 * @flow\n */\n\nimport {useContext, useMemo} from 'react';\nimport {SettingsContext} from './Settings/SettingsContext';\nimport {THEME_STYLES} from '../constants';\n\nconst useThemeStyles = (): any => {\n const {theme, displayDensity, browserTheme} = useContext(SettingsContext);\n\n const style = useMemo(\n () => ({\n ...THEME_STYLES[displayDensity],\n ...THEME_STYLES[theme === 'auto' ? browserTheme : theme],\n }),\n [theme, browserTheme, displayDensity],\n );\n\n return style;\n};\n\nexport default useThemeStyles;\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 * @flow\n */\n\nimport * as React from 'react';\nimport ReachTooltip from '@reach/tooltip';\nimport tooltipStyles from './Tooltip.css';\nimport useThemeStyles from '../../useThemeStyles';\n\nconst Tooltip = ({\n children,\n className = '',\n ...props\n}: {\n children: React$Node,\n className: string,\n ...\n}): React.Node => {\n const style = useThemeStyles();\n return (\n // $FlowFixMe[cannot-spread-inexact] unsafe spread\n <ReachTooltip\n className={`${tooltipStyles.Tooltip} ${className}`}\n style={style}\n {...props}>\n {children}\n </ReachTooltip>\n );\n};\n\nexport default Tooltip;\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback} from 'react';\n\nimport styles from './Toggle.css';\nimport Tooltip from './Components/reach-ui/tooltip';\n\ntype Props = {\n children: React$Node,\n className?: string,\n isChecked: boolean,\n isDisabled?: boolean,\n onChange: (isChecked: boolean) => void,\n testName?: ?string,\n title?: string,\n ...\n};\n\nexport default function Toggle({\n children,\n className = '',\n isDisabled = false,\n isChecked,\n onChange,\n testName,\n title,\n}: Props): React.Node {\n let defaultClassName;\n if (isDisabled) {\n defaultClassName = styles.ToggleDisabled;\n } else if (isChecked) {\n defaultClassName = styles.ToggleOn;\n } else {\n defaultClassName = styles.ToggleOff;\n }\n\n const handleClick = useCallback(\n () => onChange(!isChecked),\n [isChecked, onChange],\n );\n\n let toggle = (\n <button\n className={`${defaultClassName} ${className}`}\n data-testname={testName}\n disabled={isDisabled}\n onClick={handleClick}>\n <span className={styles.ToggleContent} tabIndex={-1}>\n {children}\n </span>\n </button>\n );\n\n if (title) {\n toggle = <Tooltip label={title}>{toggle}</Tooltip>;\n }\n\n return toggle;\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport Badge from './Badge';\nimport IndexableDisplayName from './IndexableDisplayName';\nimport Toggle from '../Toggle';\n\nimport styles from './ForgetBadge.css';\n\ntype CommonProps = {\n className?: string,\n};\n\ntype PropsForIndexable = CommonProps & {\n indexable: true,\n elementID: number,\n};\n\ntype PropsForNonIndexable = CommonProps & {\n indexable: false | void,\n elementID?: number,\n};\n\ntype Props = PropsForIndexable | PropsForNonIndexable;\n\nexport default function ForgetBadge(props: Props): React.Node {\n const {className = ''} = props;\n\n const innerView = props.indexable ? (\n <IndexableDisplayName displayName=\"Memo\" id={props.elementID} />\n ) : (\n 'Memo'\n );\n\n const onChange = () => {};\n const title =\n '✨ This component has been auto-memoized by the React Compiler.';\n return (\n <Toggle onChange={onChange} className={styles.ForgetToggle} title={title}>\n <Badge className={`${styles.Root} ${className}`}>{innerView}</Badge>\n </Toggle>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport Badge from './Badge';\nimport ForgetBadge from './ForgetBadge';\nimport IndexableDisplayName from './IndexableDisplayName';\n\nimport styles from './IndexableElementBadges.css';\n\ntype Props = {\n hocDisplayNames: Array<string> | null,\n compiledWithForget: boolean,\n elementID: number,\n className?: string,\n};\n\nexport default function IndexableElementBadges({\n compiledWithForget,\n hocDisplayNames,\n elementID,\n className = '',\n}: Props): React.Node {\n if (\n !compiledWithForget &&\n (hocDisplayNames == null || hocDisplayNames.length === 0)\n ) {\n return null;\n }\n\n return (\n <div className={`${styles.Root} ${className}`}>\n {compiledWithForget && (\n <ForgetBadge indexable={true} elementID={elementID} />\n )}\n\n {hocDisplayNames != null && hocDisplayNames.length > 0 && (\n <Badge>\n <IndexableDisplayName\n displayName={hocDisplayNames[0]}\n id={elementID}\n />\n </Badge>\n )}\n\n {hocDisplayNames != null && hocDisplayNames.length > 1 && (\n <div className={styles.ExtraLabel}>+{hocDisplayNames.length - 1}</div>\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useMemo, useState} from 'react';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport ButtonIcon from '../ButtonIcon';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\nimport IndexableElementBadges from './IndexableElementBadges';\nimport IndexableDisplayName from './IndexableDisplayName';\n\nimport type {ItemData} from './Tree';\nimport type {Element as ElementType} from 'react-devtools-shared/src/frontend/types';\n\nimport styles from './Element.css';\nimport Icon from '../Icon';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nexport default function Element({data, index, style}: Props): React.Node {\n const store = useContext(StoreContext);\n const {ownerFlatTree, ownerID, inspectedElementID} =\n useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n\n const element =\n ownerFlatTree !== null\n ? ownerFlatTree[index]\n : store.getElementAtIndex(index);\n\n const [isHovered, setIsHovered] = useState(false);\n\n const {isNavigatingWithKeyboard, onElementMouseEnter, treeFocused} = data;\n const id = element === null ? null : element.id;\n const isSelected = inspectedElementID === id;\n\n const errorsAndWarningsSubscription = useMemo(\n () => ({\n getCurrentValue: () =>\n element === null\n ? {errorCount: 0, warningCount: 0}\n : store.getErrorAndWarningCountForElementID(element.id),\n subscribe: (callback: Function) => {\n store.addListener('mutated', callback);\n return () => store.removeListener('mutated', callback);\n },\n }),\n [store, element],\n );\n const {errorCount, warningCount} = useSubscription<{\n errorCount: number,\n warningCount: number,\n }>(errorsAndWarningsSubscription);\n\n const handleDoubleClick = () => {\n if (id !== null) {\n dispatch({type: 'SELECT_OWNER', payload: id});\n }\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleClick = ({metaKey}) => {\n if (id !== null) {\n logEvent({\n event_name: 'select-element',\n metadata: {source: 'click-element'},\n });\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: metaKey ? null : id,\n });\n }\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n if (id !== null) {\n onElementMouseEnter(id);\n }\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleKeyDoubleClick = event => {\n // Double clicks on key value are used for text selection (if the text has been truncated).\n // They should not enter the owners tree view.\n event.stopPropagation();\n event.preventDefault();\n };\n\n // Handle elements that are removed from the tree while an async render is in progress.\n if (element == null) {\n console.warn(`<Element> Could not find element at index ${index}`);\n\n // This return needs to happen after hooks, since hooks can't be conditional.\n return null;\n }\n\n const {\n depth,\n displayName,\n hocDisplayNames,\n isStrictModeNonCompliant,\n key,\n compiledWithForget,\n } = element;\n\n // Only show strict mode non-compliance badges for top level elements.\n // Showing an inline badge for every element in the tree would be noisy.\n const showStrictModeBadge = isStrictModeNonCompliant && depth === 0;\n\n let className = styles.Element;\n if (isSelected) {\n className = treeFocused\n ? styles.SelectedElement\n : styles.InactiveSelectedElement;\n } else if (isHovered && !isNavigatingWithKeyboard) {\n className = styles.HoveredElement;\n }\n\n return (\n <div\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleClick}\n onDoubleClick={handleDoubleClick}\n style={style}\n data-testname=\"ComponentTreeListItem\"\n data-depth={depth}>\n {/* This wrapper is used by Tree for measurement purposes. */}\n <div\n className={styles.Wrapper}\n style={{\n // Left offset presents the appearance of a nested tree structure.\n // We must use padding rather than margin/left because of the selected background color.\n transform: `translateX(calc(${depth} * var(--indentation-size)))`,\n }}>\n {ownerID === null && (\n <ExpandCollapseToggle element={element} store={store} />\n )}\n\n <IndexableDisplayName displayName={displayName} id={id} />\n\n {key && (\n <Fragment>\n &nbsp;<span className={styles.KeyName}>key</span>=\"\n <span\n className={styles.KeyValue}\n title={key}\n onDoubleClick={handleKeyDoubleClick}>\n <pre>{key}</pre>\n </span>\n \"\n </Fragment>\n )}\n\n <IndexableElementBadges\n hocDisplayNames={hocDisplayNames}\n compiledWithForget={compiledWithForget}\n elementID={id}\n className={styles.BadgesBlock}\n />\n\n {errorCount > 0 && (\n <Icon\n type=\"error\"\n className={\n isSelected && treeFocused\n ? styles.ErrorIconContrast\n : styles.ErrorIcon\n }\n />\n )}\n {warningCount > 0 && (\n <Icon\n type=\"warning\"\n className={\n isSelected && treeFocused\n ? styles.WarningIconContrast\n : styles.WarningIcon\n }\n />\n )}\n {showStrictModeBadge && (\n <Icon\n className={\n isSelected && treeFocused\n ? styles.StrictModeContrast\n : styles.StrictMode\n }\n title=\"This component is not running in StrictMode.\"\n type=\"strict-mode-non-compliant\"\n />\n )}\n </div>\n </div>\n );\n}\n\n// Prevent double clicks on toggle from drilling into the owner list.\n// $FlowFixMe[missing-local-annot]\nconst swallowDoubleClick = event => {\n event.preventDefault();\n event.stopPropagation();\n};\n\ntype ExpandCollapseToggleProps = {\n element: ElementType,\n store: Store,\n};\n\nfunction ExpandCollapseToggle({element, store}: ExpandCollapseToggleProps) {\n const {children, id, isCollapsed} = element;\n\n // $FlowFixMe[missing-local-annot]\n const toggleCollapsed = event => {\n event.preventDefault();\n event.stopPropagation();\n\n store.toggleIsCollapsed(id, !isCollapsed);\n };\n\n // $FlowFixMe[missing-local-annot]\n const stopPropagation = event => {\n // Prevent the row from selecting\n event.stopPropagation();\n };\n\n if (children.length === 0) {\n return <div className={styles.ExpandCollapseToggle} />;\n }\n\n return (\n <div\n className={styles.ExpandCollapseToggle}\n onMouseDown={stopPropagation}\n onClick={toggleCollapsed}\n onDoubleClick={swallowDoubleClick}>\n <ButtonIcon type={isCollapsed ? 'collapsed' : 'expanded'} />\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useEffect, useState} from 'react';\nimport {BridgeContext} from '../context';\nimport Toggle from '../Toggle';\nimport ButtonIcon from '../ButtonIcon';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\n\nexport default function InspectHostNodesToggle(): React.Node {\n const [isInspecting, setIsInspecting] = useState(false);\n const bridge = useContext(BridgeContext);\n\n const handleChange = useCallback(\n (isChecked: boolean) => {\n setIsInspecting(isChecked);\n\n if (isChecked) {\n logEvent({event_name: 'inspect-element-button-clicked'});\n bridge.send('startInspectingHost');\n } else {\n bridge.send('stopInspectingHost', false);\n }\n },\n [bridge],\n );\n\n useEffect(() => {\n const onStopInspectingHost = () => setIsInspecting(false);\n bridge.addListener('stopInspectingHost', onStopInspectingHost);\n return () =>\n bridge.removeListener('stopInspectingHost', onStopInspectingHost);\n }, [bridge]);\n\n return (\n <Toggle\n onChange={handleChange}\n isChecked={isInspecting}\n title=\"Select an element in the page to inspect it\">\n <ButtonIcon type=\"search\" />\n </Toggle>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './Button.css';\nimport Tooltip from './Components/reach-ui/tooltip';\n\ntype Props = {\n children: React$Node,\n className?: string,\n testName?: ?string,\n title: React$Node,\n ...\n};\n\nexport default function Button({\n children,\n className = '',\n testName,\n title,\n ...rest\n}: Props): React.Node {\n let button = (\n // $FlowFixMe[cannot-spread-inexact] unsafe spread\n <button\n className={`${styles.Button} ${className}`}\n data-testname={testName}\n {...rest}>\n <span className={`${styles.ButtonContent} ${className}`} tabIndex={-1}>\n {children}\n </span>\n </button>\n );\n\n if (title) {\n button = <Tooltip label={title}>{button}</Tooltip>;\n }\n\n return button;\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport Badge from './Badge';\nimport ForgetBadge from './ForgetBadge';\n\nimport styles from './ElementBadges.css';\n\ntype Props = {\n hocDisplayNames: Array<string> | null,\n compiledWithForget: boolean,\n className?: string,\n};\n\nexport default function ElementBadges({\n compiledWithForget,\n hocDisplayNames,\n className = '',\n}: Props): React.Node {\n if (\n !compiledWithForget &&\n (hocDisplayNames == null || hocDisplayNames.length === 0)\n ) {\n return null;\n }\n\n return (\n <div className={`${styles.Root} ${className}`}>\n {compiledWithForget && <ForgetBadge indexable={false} />}\n\n {hocDisplayNames != null && hocDisplayNames.length > 0 && (\n <Badge>{hocDisplayNames[0]}</Badge>\n )}\n\n {hocDisplayNames != null && hocDisplayNames.length > 1 && (\n <div className={styles.ExtraLabel}>+{hocDisplayNames.length - 1}</div>\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport type {ReactContext, Thenable} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {createContext} from 'react';\n\n// TODO (cache) Remove this cache; it is outdated and will not work with newer APIs like startTransition.\n\n// Cache implementation was forked from the React repo:\n// https://github.com/facebook/react/blob/main/packages/react-cache/src/ReactCacheOld.js\n//\n// This cache is simpler than react-cache in that:\n// 1. Individual items don't need to be invalidated.\n// Profiling data is invalidated as a whole.\n// 2. We didn't need the added overhead of an LRU cache.\n// The size of this cache is bounded by how many renders were profiled,\n// and it will be fully reset between profiling sessions.\n\nexport type {Thenable};\n\ninterface Suspender {\n then(resolve: () => mixed, reject: () => mixed): mixed;\n}\n\ntype PendingResult = {\n status: 0,\n value: Suspender,\n};\n\ntype ResolvedResult<Value> = {\n status: 1,\n value: Value,\n};\n\ntype RejectedResult = {\n status: 2,\n value: mixed,\n};\n\ntype Result<Value> = PendingResult | ResolvedResult<Value> | RejectedResult;\n\nexport type Resource<Input, Key, Value> = {\n clear(): void,\n invalidate(Key): void,\n read(Input): Value,\n preload(Input): void,\n write(Key, Value): void,\n};\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\nlet readContext;\nif (typeof React.use === 'function') {\n readContext = function (Context: ReactContext<null>) {\n return React.use(Context);\n };\n} else if (\n typeof (React: any).__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ===\n 'object'\n) {\n const ReactCurrentDispatcher = (React: any)\n .__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;\n readContext = function (Context: ReactContext<null>) {\n const dispatcher = ReactCurrentDispatcher.current;\n if (dispatcher === null) {\n throw new Error(\n 'react-cache: read and preload may only be called from within a ' +\n \"component's render. They are not supported in event handlers or \" +\n 'lifecycle methods.',\n );\n }\n return dispatcher.readContext(Context);\n };\n} else {\n throw new Error('react-cache: Unsupported React version');\n}\n\nconst CacheContext = createContext(null);\n\ntype Config = {useWeakMap?: boolean, ...};\n\nconst entries: Map<\n Resource<any, any, any>,\n Map<any, any> | WeakMap<any, any>,\n> = new Map();\nconst resourceConfigs: Map<Resource<any, any, any>, Config> = new Map();\n\nfunction getEntriesForResource(\n resource: any,\n): Map<any, any> | WeakMap<any, any> {\n let entriesForResource: Map<any, any> | WeakMap<any, any> = ((entries.get(\n resource,\n ): any): Map<any, any>);\n if (entriesForResource === undefined) {\n const config = resourceConfigs.get(resource);\n entriesForResource =\n config !== undefined && config.useWeakMap ? new WeakMap() : new Map();\n entries.set(resource, entriesForResource);\n }\n return entriesForResource;\n}\n\nfunction accessResult<Input, Key, Value>(\n resource: any,\n fetch: Input => Thenable<Value>,\n input: Input,\n key: Key,\n): Result<Value> {\n const entriesForResource = getEntriesForResource(resource);\n const entry = entriesForResource.get(key);\n if (entry === undefined) {\n const thenable = fetch(input);\n thenable.then(\n value => {\n if (newResult.status === Pending) {\n const resolvedResult: ResolvedResult<Value> = (newResult: any);\n resolvedResult.status = Resolved;\n resolvedResult.value = value;\n }\n },\n error => {\n if (newResult.status === Pending) {\n const rejectedResult: RejectedResult = (newResult: any);\n rejectedResult.status = Rejected;\n rejectedResult.value = error;\n }\n },\n );\n const newResult: PendingResult = {\n status: Pending,\n value: thenable,\n };\n entriesForResource.set(key, newResult);\n return newResult;\n } else {\n return entry;\n }\n}\n\nexport function createResource<Input, Key, Value>(\n fetch: Input => Thenable<Value>,\n hashInput: Input => Key,\n config?: Config = {},\n): Resource<Input, Key, Value> {\n const resource = {\n clear(): void {\n entries.delete(resource);\n },\n\n invalidate(key: Key): void {\n const entriesForResource = getEntriesForResource(resource);\n entriesForResource.delete(key);\n },\n\n read(input: Input): Value {\n // Prevent access outside of render.\n readContext(CacheContext);\n\n const key = hashInput(input);\n const result: Result<Value> = accessResult(resource, fetch, input, key);\n switch (result.status) {\n case Pending: {\n const suspender = result.value;\n throw suspender;\n }\n case Resolved: {\n const value = result.value;\n return value;\n }\n case Rejected: {\n const error = result.value;\n throw error;\n }\n default:\n // Should be unreachable\n return (undefined: any);\n }\n },\n\n preload(input: Input): void {\n // Prevent access outside of render.\n readContext(CacheContext);\n\n const key = hashInput(input);\n accessResult(resource, fetch, input, key);\n },\n\n write(key: Key, value: Value): void {\n const entriesForResource = getEntriesForResource(resource);\n\n const resolvedResult: ResolvedResult<Value> = {\n status: Resolved,\n value,\n };\n\n entriesForResource.set(key, resolvedResult);\n },\n };\n\n resourceConfigs.set(resource, config);\n\n return resource;\n}\n\nexport function invalidateResources(): void {\n entries.clear();\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {createContext, useCallback, useContext, useEffect} from 'react';\nimport {createResource} from '../../cache';\nimport {BridgeContext, StoreContext} from '../context';\nimport {TreeStateContext} from './TreeContext';\nimport {backendToFrontendSerializedElementMapper} from 'react-devtools-shared/src/utils';\n\nimport type {OwnersList} from 'react-devtools-shared/src/backend/types';\nimport type {\n Element,\n SerializedElement,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {Resource, Thenable} from '../../cache';\n\ntype Context = (id: number) => Array<SerializedElement> | null;\n\nconst OwnersListContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nOwnersListContext.displayName = 'OwnersListContext';\n\ntype ResolveFn = (ownersList: Array<SerializedElement> | null) => void;\ntype InProgressRequest = {\n promise: Thenable<Array<SerializedElement>>,\n resolveFn: ResolveFn,\n};\n\nconst inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();\nconst resource: Resource<\n Element,\n Element,\n Array<SerializedElement>,\n> = createResource(\n (element: Element) => {\n const request = inProgressRequests.get(element);\n if (request != null) {\n return request.promise;\n }\n\n let resolveFn:\n | ResolveFn\n | ((\n result: Promise<Array<SerializedElement>> | Array<SerializedElement>,\n ) => void) = ((null: any): ResolveFn);\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n // $FlowFixMe[incompatible-call] found when upgrading Flow\n inProgressRequests.set(element, {promise, resolveFn});\n\n return (promise: $FlowFixMe);\n },\n (element: Element) => element,\n {useWeakMap: true},\n);\n\ntype Props = {\n children: React$Node,\n};\n\nfunction OwnersListContextController({children}: Props): React.Node {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {ownerID} = useContext(TreeStateContext);\n\n const read = useCallback(\n (id: number) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n return resource.read(element);\n } else {\n return null;\n }\n },\n [store],\n );\n\n useEffect(() => {\n const onOwnersList = (ownersList: OwnersList) => {\n const id = ownersList.id;\n\n const element = store.getElementByID(id);\n if (element !== null) {\n const request = inProgressRequests.get(element);\n if (request != null) {\n inProgressRequests.delete(element);\n\n request.resolveFn(\n ownersList.owners === null\n ? null\n : ownersList.owners.map(backendToFrontendSerializedElementMapper),\n );\n }\n }\n };\n\n bridge.addListener('ownersList', onOwnersList);\n return () => bridge.removeListener('ownersList', onOwnersList);\n }, [bridge, store]);\n\n // This effect requests an updated owners list any time the selected owner changes\n useEffect(() => {\n if (ownerID !== null) {\n const rendererID = store.getRendererIDForElement(ownerID);\n if (rendererID !== null) {\n bridge.send('getOwnersList', {id: ownerID, rendererID});\n }\n }\n\n return () => {};\n }, [bridge, ownerID, store]);\n\n return (\n <OwnersListContext.Provider value={read}>\n {children}\n </OwnersListContext.Provider>\n );\n}\n\nexport {OwnersListContext, OwnersListContextController};\n","import { forwardRef, createElement, useRef, useEffect } from 'react';\nimport { Portal } from '@reach/portal';\nimport { useRect } from '@reach/rect';\nimport { getOwnerDocument } from '@reach/utils/owner-document';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport tabbable from 'tabbable';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar _excluded = [\"as\", \"targetRef\", \"position\", \"unstable_observableRefs\"];\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Popover\n */\nvar Popover = /*#__PURE__*/forwardRef(function Popover(props, ref) {\n return /*#__PURE__*/createElement(Portal, null, /*#__PURE__*/createElement(PopoverImpl, _extends({\n ref: ref\n }, props)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Popover.displayName = \"Popover\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * PopoverImpl\n *\n * Popover is conditionally rendered so we can't start measuring until it shows\n * up, so useRect needs to live down here not up in Popover\n */\n\n\nvar PopoverImpl = /*#__PURE__*/forwardRef(function PopoverImpl(_ref, forwardedRef) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n targetRef = _ref.targetRef,\n _ref$position = _ref.position,\n position = _ref$position === void 0 ? positionDefault : _ref$position,\n _ref$unstable_observa = _ref.unstable_observableRefs,\n unstable_observableRefs = _ref$unstable_observa === void 0 ? [] : _ref$unstable_observa,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var popoverRef = useRef(null);\n var popoverRect = useRect(popoverRef, {\n observe: !props.hidden\n });\n var targetRect = useRect(targetRef, {\n observe: !props.hidden\n });\n var ref = useComposedRefs(popoverRef, forwardedRef);\n useSimulateTabNavigationForReactTree(targetRef, popoverRef);\n return /*#__PURE__*/createElement(Comp, _extends({\n \"data-reach-popover\": \"\",\n ref: ref\n }, props, {\n style: _extends({\n position: \"absolute\"\n }, getStyles.apply(void 0, [position, targetRect, popoverRect].concat(unstable_observableRefs)), props.style)\n }));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n PopoverImpl.displayName = \"PopoverImpl\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction getStyles(position, targetRect, popoverRect) {\n for (var _len = arguments.length, unstable_observableRefs = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n unstable_observableRefs[_key - 3] = arguments[_key];\n }\n\n return popoverRect ? position.apply(void 0, [targetRect, popoverRect].concat(unstable_observableRefs.map(function (ref) {\n return ref.current;\n }))) : {\n visibility: \"hidden\"\n };\n}\n\nfunction getTopPosition(targetRect, popoverRect, isDirectionUp) {\n return {\n top: isDirectionUp ? targetRect.top - popoverRect.height + window.pageYOffset + \"px\" : targetRect.top + targetRect.height + window.pageYOffset + \"px\"\n };\n}\n\nvar positionDefault = function positionDefault(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions = getCollisions(targetRect, popoverRect),\n directionRight = _getCollisions.directionRight,\n directionUp = _getCollisions.directionUp;\n\n return _extends({\n left: directionRight ? targetRect.right - popoverRect.width + window.pageXOffset + \"px\" : targetRect.left + window.pageXOffset + \"px\"\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nvar positionRight = function positionRight(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions2 = getCollisions(targetRect, popoverRect),\n directionLeft = _getCollisions2.directionLeft,\n directionUp = _getCollisions2.directionUp;\n\n return _extends({\n left: directionLeft ? targetRect.left + window.pageXOffset + \"px\" : targetRect.right - popoverRect.width + window.pageXOffset + \"px\"\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nvar positionMatchWidth = function positionMatchWidth(targetRect, popoverRect) {\n if (!targetRect || !popoverRect) {\n return {};\n }\n\n var _getCollisions3 = getCollisions(targetRect, popoverRect),\n directionUp = _getCollisions3.directionUp;\n\n return _extends({\n width: targetRect.width,\n left: targetRect.left\n }, getTopPosition(targetRect, popoverRect, directionUp));\n};\n\nfunction getCollisions(targetRect, popoverRect, offsetLeft, offsetBottom) {\n if (offsetLeft === void 0) {\n offsetLeft = 0;\n }\n\n if (offsetBottom === void 0) {\n offsetBottom = 0;\n }\n\n var collisions = {\n top: targetRect.top - popoverRect.height < 0,\n right: window.innerWidth < targetRect.left + popoverRect.width - offsetLeft,\n bottom: window.innerHeight < targetRect.bottom + popoverRect.height - offsetBottom,\n left: targetRect.left + targetRect.width - popoverRect.width < 0\n };\n var directionRight = collisions.right && !collisions.left;\n var directionLeft = collisions.left && !collisions.right;\n var directionUp = collisions.bottom && !collisions.top;\n var directionDown = collisions.top && !collisions.bottom;\n return {\n directionRight: directionRight,\n directionLeft: directionLeft,\n directionUp: directionUp,\n directionDown: directionDown\n };\n} // Heads up, my jQuery past haunts this function. This hook scopes the tab\n// order to the React element tree, instead of the DOM tree. This way, when the\n// user navigates with tab from the targetRef, the tab order moves into the\n// popup, and then out of the popup back to the rest of the document.\n// (We call targetRef, triggerRef inside this function to avoid confusion with\n// event.target)\n\n\nfunction useSimulateTabNavigationForReactTree(triggerRef, popoverRef) {\n var ownerDocument = getOwnerDocument(triggerRef.current);\n\n function handleKeyDown(event) {\n if (event.key === \"Tab\" && popoverRef.current && tabbable(popoverRef.current).length === 0) {\n return;\n }\n\n if (event.key === \"Tab\" && event.shiftKey) {\n if (shiftTabbedFromElementAfterTrigger(event)) {\n focusLastTabbableInPopover(event);\n } else if (shiftTabbedOutOfPopover(event)) {\n focusTriggerRef(event);\n } else if (shiftTabbedToBrowserChrome(event)) {\n disableTabbablesInPopover();\n }\n } else if (event.key === \"Tab\") {\n if (tabbedFromTriggerToPopover()) {\n focusFirstPopoverTabbable(event);\n } else if (tabbedOutOfPopover()) {\n focusTabbableAfterTrigger(event);\n } else if (tabbedToBrowserChrome(event)) {\n disableTabbablesInPopover();\n }\n }\n }\n\n useEffect(function () {\n ownerDocument.addEventListener(\"keydown\", handleKeyDown);\n return function () {\n ownerDocument.removeEventListener(\"keydown\", handleKeyDown);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function getElementAfterTrigger() {\n var elements = tabbable(ownerDocument);\n var targetIndex = elements && triggerRef.current ? elements.indexOf(triggerRef.current) : -1;\n var elementAfterTrigger = elements && elements[targetIndex + 1];\n return popoverRef.current && popoverRef.current.contains(elementAfterTrigger || null) ? false : elementAfterTrigger;\n }\n\n function tabbedFromTriggerToPopover() {\n return triggerRef.current ? triggerRef.current === ownerDocument.activeElement : false;\n }\n\n function focusFirstPopoverTabbable(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements && elements[0]) {\n event.preventDefault();\n elements[0].focus();\n }\n }\n\n function tabbedOutOfPopover() {\n var inPopover = popoverRef.current ? popoverRef.current.contains(ownerDocument.activeElement || null) : false;\n\n if (inPopover) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n return Boolean(elements && elements[elements.length - 1] === ownerDocument.activeElement);\n }\n\n return false;\n }\n\n function focusTabbableAfterTrigger(event) {\n var elementAfterTrigger = getElementAfterTrigger();\n\n if (elementAfterTrigger) {\n event.preventDefault();\n elementAfterTrigger.focus();\n }\n }\n\n function shiftTabbedFromElementAfterTrigger(event) {\n if (!event.shiftKey) return;\n var elementAfterTrigger = getElementAfterTrigger();\n return event.target === elementAfterTrigger;\n }\n\n function focusLastTabbableInPopover(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n var last = elements && elements[elements.length - 1];\n\n if (last) {\n event.preventDefault();\n last.focus();\n }\n }\n\n function shiftTabbedOutOfPopover(event) {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements) {\n return elements.length === 0 ? false : event.target === elements[0];\n }\n\n return false;\n }\n\n function focusTriggerRef(event) {\n var _triggerRef$current;\n\n event.preventDefault();\n (_triggerRef$current = triggerRef.current) == null ? void 0 : _triggerRef$current.focus();\n }\n\n function tabbedToBrowserChrome(event) {\n var elements = popoverRef.current ? tabbable(ownerDocument).filter(function (element) {\n return !popoverRef.current.contains(element);\n }) : null;\n return elements ? event.target === elements[elements.length - 1] : false;\n }\n\n function shiftTabbedToBrowserChrome(event) {\n // we're assuming the popover will never contain the first tabbable\n // element, and it better not, because the trigger needs to be tabbable!\n return event.target === tabbable(ownerDocument)[0];\n }\n\n var restoreTabIndexTuplés = [];\n\n function disableTabbablesInPopover() {\n var elements = popoverRef.current && tabbable(popoverRef.current);\n\n if (elements) {\n elements.forEach(function (element) {\n restoreTabIndexTuplés.push([element, element.tabIndex]);\n element.tabIndex = -1;\n });\n ownerDocument.addEventListener(\"focusin\", enableTabbablesInPopover);\n }\n }\n\n function enableTabbablesInPopover() {\n ownerDocument.removeEventListener(\"focusin\", enableTabbablesInPopover);\n restoreTabIndexTuplés.forEach(function (_ref2) {\n var element = _ref2[0],\n tabIndex = _ref2[1];\n element.tabIndex = tabIndex;\n });\n }\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Popover;\nexport { Popover, getCollisions, positionDefault, positionMatchWidth, positionRight };\n","import { createContext } from 'react';\n\nfunction createNamedContext(name, defaultValue) {\n var Ctx = /*#__PURE__*/createContext(defaultValue);\n\n if (process.env.NODE_ENV !== \"production\") {\n Ctx.displayName = name;\n }\n\n return Ctx;\n}\n\nexport { createNamedContext };\n","function noop() {}\n\nexport { noop };\n","import { useContext, useState, useCallback, createElement, useMemo } from 'react';\nimport { useForceUpdate } from '@reach/utils/use-force-update';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { createNamedContext } from '@reach/utils/context';\nimport { noop } from '@reach/utils/noop';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar _excluded = [\"element\", \"index\"];\n\nfunction createDescendantContext(name, initialValue) {\n if (initialValue === void 0) {\n initialValue = {};\n }\n\n var descendants = [];\n return createNamedContext(name, _extends({\n descendants: descendants,\n registerDescendant: noop,\n unregisterDescendant: noop\n }, initialValue));\n}\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node and (optionally) a key. The key is useful\n * if multiple descendants have identical text values and we need to\n * differentiate siblings for some reason.\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation. However, in the few cases where\n * this is not the case, we can require an explicit index from the app.\n */\n\n\nfunction useDescendant(descendant, context, indexProp) {\n var forceUpdate = useForceUpdate();\n\n var _React$useContext = useContext(context),\n registerDescendant = _React$useContext.registerDescendant,\n unregisterDescendant = _React$useContext.unregisterDescendant,\n descendants = _React$useContext.descendants; // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants so that\n // everything is up-to-date before the user interacts with a collection.\n\n\n var index = indexProp != null ? indexProp : descendants.findIndex(function (item) {\n return item.element === descendant.element;\n }); // Prevent any flashing\n\n useIsomorphicLayoutEffect(function () {\n if (!descendant.element) forceUpdate();\n registerDescendant(_extends({}, descendant, {\n index: index\n }));\n return function () {\n unregisterDescendant(descendant.element);\n };\n }, [descendant, forceUpdate, index, registerDescendant, unregisterDescendant].concat(Object.values(descendant)));\n return index;\n}\n\nfunction useDescendantsInit() {\n return useState([]);\n}\n\nfunction useDescendants(ctx) {\n return useContext(ctx).descendants;\n}\n\nfunction DescendantProvider(_ref) {\n var Ctx = _ref.context,\n children = _ref.children,\n items = _ref.items,\n set = _ref.set;\n var registerDescendant = useCallback(function (_ref2) {\n var element = _ref2.element,\n explicitIndex = _ref2.index,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (!element) {\n return;\n }\n\n set(function (items) {\n var newItems;\n\n if (explicitIndex != null) {\n return [].concat(items, [_extends({}, rest, {\n element: element,\n index: explicitIndex\n })]).sort(function (a, b) {\n return a.index - b.index;\n });\n } else if (items.length === 0) {\n // If there are no items, register at index 0 and bail.\n newItems = [_extends({}, rest, {\n element: element,\n index: 0\n })];\n } else if (items.find(function (item) {\n return item.element === element;\n })) {\n // If the element is already registered, just use the same array\n newItems = items;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n var index = items.findIndex(function (item) {\n if (!item.element || !element) {\n return false;\n } // Does this element's DOM node appear before another item in the\n // array in our DOM tree? If so, return true to grab the index at\n // this point in the array so we know where to insert the new\n // element.\n\n\n return Boolean(item.element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING);\n });\n\n var newItem = _extends({}, rest, {\n element: element,\n index: index\n }); // If an index is not found we will push the element to the end.\n\n\n if (index === -1) {\n newItems = [].concat(items, [newItem]);\n } else {\n newItems = [].concat(items.slice(0, index), [newItem], items.slice(index));\n }\n }\n\n return newItems.map(function (item, index) {\n return _extends({}, item, {\n index: index\n });\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n var unregisterDescendant = useCallback(function (element) {\n if (!element) {\n return;\n }\n\n set(function (items) {\n return items.filter(function (item) {\n return element !== item.element;\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n return /*#__PURE__*/createElement(Ctx.Provider, {\n value: useMemo(function () {\n return {\n descendants: items,\n registerDescendant: registerDescendant,\n unregisterDescendant: unregisterDescendant\n };\n }, [items, registerDescendant, unregisterDescendant])\n }, children);\n}\n/**\n * Testing this as an abstraction for compound components that use keyboard\n * navigation. Hoping this will help us prevent bugs and mismatched behavior\n * across various components, but it may also prove to be too messy of an\n * abstraction in the end.\n *\n * Currently used in:\n * - Tabs\n * - Accordion\n *\n * @param context\n * @param options\n */\n\n\nfunction useDescendantKeyDown(context, options) {\n var _React$useContext2 = useContext(context),\n descendants = _React$useContext2.descendants;\n\n var callback = options.callback,\n currentIndex = options.currentIndex,\n filter = options.filter,\n _options$key = options.key,\n key = _options$key === void 0 ? \"index\" : _options$key,\n _options$orientation = options.orientation,\n orientation = _options$orientation === void 0 ? \"vertical\" : _options$orientation,\n _options$rotate = options.rotate,\n rotate = _options$rotate === void 0 ? true : _options$rotate,\n _options$rtl = options.rtl,\n rtl = _options$rtl === void 0 ? false : _options$rtl;\n return function handleKeyDown(event) {\n if (![\"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\", \"PageUp\", \"PageDown\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n var index = currentIndex != null ? currentIndex : -1; // If we use a filter function, we need to re-index our descendants array\n // so that filtered descendent elements aren't selected.\n\n var selectableDescendants = filter ? descendants.filter(filter) : descendants; // We need some options for any of this to work!\n\n if (!selectableDescendants.length) {\n return;\n }\n\n var selectableIndex = selectableDescendants.findIndex(function (descendant) {\n return descendant.index === currentIndex;\n });\n\n function getNextOption() {\n var atBottom = index === getLastOption().index;\n return atBottom ? rotate ? getFirstOption() : selectableDescendants[selectableIndex] : selectableDescendants[(selectableIndex + 1) % selectableDescendants.length];\n }\n\n function getPreviousOption() {\n var atTop = index === getFirstOption().index;\n return atTop ? rotate ? getLastOption() : selectableDescendants[selectableIndex] : selectableDescendants[(selectableIndex - 1 + selectableDescendants.length) % selectableDescendants.length];\n }\n\n function getFirstOption() {\n return selectableDescendants[0];\n }\n\n function getLastOption() {\n return selectableDescendants[selectableDescendants.length - 1];\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var next = getNextOption();\n callback(key === \"option\" ? next : next[key]);\n }\n\n break;\n\n case \"ArrowUp\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var prev = getPreviousOption();\n callback(key === \"option\" ? prev : prev[key]);\n }\n\n break;\n\n case \"ArrowLeft\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var nextOrPrev = (rtl ? getNextOption : getPreviousOption)();\n callback(key === \"option\" ? nextOrPrev : nextOrPrev[key]);\n }\n\n break;\n\n case \"ArrowRight\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var prevOrNext = (rtl ? getPreviousOption : getNextOption)();\n callback(key === \"option\" ? prevOrNext : prevOrNext[key]);\n }\n\n break;\n\n case \"PageUp\":\n event.preventDefault();\n var prevOrFirst = (event.ctrlKey ? getPreviousOption : getFirstOption)();\n callback(key === \"option\" ? prevOrFirst : prevOrFirst[key]);\n break;\n\n case \"Home\":\n event.preventDefault();\n var first = getFirstOption();\n callback(key === \"option\" ? first : first[key]);\n break;\n\n case \"PageDown\":\n event.preventDefault();\n var nextOrLast = (event.ctrlKey ? getNextOption : getLastOption)();\n callback(key === \"option\" ? nextOrLast : nextOrLast[key]);\n break;\n\n case \"End\":\n event.preventDefault();\n var last = getLastOption();\n callback(key === \"option\" ? last : last[key]);\n break;\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport { DescendantProvider, createDescendantContext, useDescendant, useDescendantKeyDown, useDescendants, useDescendantsInit };\n","/**\n * Detects right clicks\n *\n * @param nativeEvent\n */\nfunction isRightClick(nativeEvent) {\n return \"which\" in nativeEvent ? nativeEvent.which === 3 : \"button\" in nativeEvent ? nativeEvent.button === 2 : false;\n}\n\nexport { isRightClick };\n","import { useRef, useEffect } from 'react';\n\n/**\n * Returns the previous value of a reference after a component update.\n *\n * @param value\n */\n\nfunction usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport { usePrevious };\n","import { useRef, useReducer, useEffect, createElement, useContext, useMemo, forwardRef, useState, useCallback } from 'react';\nimport { useId } from '@reach/auto-id';\nimport { Popover } from '@reach/popover';\nimport { createDescendantContext, useDescendantsInit, DescendantProvider, useDescendants, useDescendant, useDescendantKeyDown } from '@reach/descendants';\nimport { isRightClick } from '@reach/utils/is-right-click';\nimport { usePrevious } from '@reach/utils/use-previous';\nimport { getOwnerDocument } from '@reach/utils/owner-document';\nimport { createNamedContext } from '@reach/utils/context';\nimport { isFunction, isString } from '@reach/utils/type-check';\nimport { makeId } from '@reach/utils/make-id';\nimport { useStatefulRefValue } from '@reach/utils/use-stateful-ref-value';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport { composeEventHandlers } from '@reach/utils/compose-event-handlers';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar _excluded = [\"onKeyDown\", \"onMouseDown\", \"id\", \"ref\"],\n _excluded2 = [\"as\"],\n _excluded3 = [\"index\", \"isLink\", \"onClick\", \"onDragStart\", \"onMouseDown\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseMove\", \"onMouseUp\", \"onSelect\", \"disabled\", \"onFocus\", \"valueText\", \"ref\"],\n _excluded4 = [\"as\"],\n _excluded5 = [\"id\", \"onKeyDown\", \"ref\"],\n _excluded6 = [\"as\"],\n _excluded7 = [\"onBlur\", \"portal\", \"position\", \"ref\"],\n _excluded8 = [\"as\"];\n////////////////////////////////////////////////////////////////////////////////\n// Actions\nvar CLEAR_SELECTION_INDEX = \"CLEAR_SELECTION_INDEX\";\nvar CLICK_MENU_ITEM = \"CLICK_MENU_ITEM\";\nvar CLOSE_MENU = \"CLOSE_MENU\";\nvar OPEN_MENU_AT_FIRST_ITEM = \"OPEN_MENU_AT_FIRST_ITEM\";\nvar OPEN_MENU_AT_INDEX = \"OPEN_MENU_AT_INDEX\";\nvar OPEN_MENU_CLEARED = \"OPEN_MENU_CLEARED\";\nvar SEARCH_FOR_ITEM = \"SEARCH_FOR_ITEM\";\nvar SELECT_ITEM_AT_INDEX = \"SELECT_ITEM_AT_INDEX\";\nvar SET_BUTTON_ID = \"SET_BUTTON_ID\";\nvar DropdownDescendantContext = /*#__PURE__*/createDescendantContext(\"DropdownDescendantContext\");\nvar DropdownContext = /*#__PURE__*/createNamedContext(\"DropdownContext\", {});\nvar initialState = {\n // The button ID is needed for aria controls and can be set directly and\n // updated for top-level use via context. Otherwise a default is set by useId.\n // TODO: Consider deprecating direct ID in 1.0 in favor of id at the top level\n // for passing deterministic IDs to descendent components.\n triggerId: null,\n // Whether or not the dropdown is expanded\n isExpanded: false,\n // When a user begins typing a character string, the selection will change if\n // a matching item is found\n typeaheadQuery: \"\",\n // The index of the current selected item. When the selection is cleared a\n // value of -1 is used.\n selectionIndex: -1\n}; ////////////////////////////////////////////////////////////////////////////////\n// Dropdown!\n\nvar DropdownProvider = function DropdownProvider(_ref) {\n var id = _ref.id,\n children = _ref.children;\n var triggerRef = useRef(null);\n var dropdownRef = useRef(null);\n var popoverRef = useRef(null);\n\n var _useDescendantsInit = useDescendantsInit(),\n descendants = _useDescendantsInit[0],\n setDescendants = _useDescendantsInit[1];\n\n var _id = useId(id);\n\n var dropdownId = id || makeId(\"menu\", _id);\n var triggerId = makeId(\"menu-button\", dropdownId);\n\n var _React$useReducer = useReducer(reducer, _extends({}, initialState, {\n triggerId: triggerId\n })),\n state = _React$useReducer[0],\n dispatch = _React$useReducer[1]; // We use an event listener attached to the window to capture outside clicks\n // that close the dropdown. We don't want the initial button click to trigger\n // this when a dropdown is closed, so we can track this behavior in a ref for\n // now. We shouldn't need this when we rewrite with state machine logic.\n\n\n var triggerClickedRef = useRef(false); // We will put children callbacks in a ref to avoid triggering endless render\n // loops when using render props if the app code doesn't useCallback\n // https://github.com/reach/reach-ui/issues/523\n\n var selectCallbacks = useRef([]); // If the popover's position overlaps with an option when the popover\n // initially opens, the mouseup event will trigger a select. To prevent that,\n // we decide the control is only ready to make a selection if the pointer\n // moves a certain distance OR if the mouse button is pressed for a certain\n // length of time, otherwise the user is just registering the initial button\n // click rather than selecting an item.\n // For context on some implementation details, see https://github.com/reach/reach-ui/issues/563\n\n var readyToSelect = useRef(false);\n var mouseDownStartPosRef = useRef({\n x: 0,\n y: 0\n }); // Trying a new approach for splitting up contexts by stable/unstable\n // references. We'll see how it goes!\n\n var context = {\n dispatch: dispatch,\n dropdownId: dropdownId,\n dropdownRef: dropdownRef,\n mouseDownStartPosRef: mouseDownStartPosRef,\n popoverRef: popoverRef,\n readyToSelect: readyToSelect,\n selectCallbacks: selectCallbacks,\n state: state,\n triggerClickedRef: triggerClickedRef,\n triggerRef: triggerRef\n }; // When the dropdown is open, focus is placed on the dropdown itself so that\n // keyboard navigation is still possible.\n\n useEffect(function () {\n if (state.isExpanded) {\n // @ts-ignore\n window.__REACH_DISABLE_TOOLTIPS = true;\n window.requestAnimationFrame(function () {\n focus(dropdownRef.current);\n });\n } else {\n // We want to ignore the immediate focus of a tooltip so it doesn't pop up\n // again when the dropdown closes, only pops up when focus returns again\n // to the tooltip (like native OS tooltips).\n // @ts-ignore\n window.__REACH_DISABLE_TOOLTIPS = false;\n }\n }, [state.isExpanded]);\n return /*#__PURE__*/createElement(DescendantProvider, {\n context: DropdownDescendantContext,\n items: descendants,\n set: setDescendants\n }, /*#__PURE__*/createElement(DropdownContext.Provider, {\n value: context\n }, isFunction(children) ? children({\n isExpanded: state.isExpanded,\n // TODO: Remove in 1.0\n isOpen: state.isExpanded\n }) : children));\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n DropdownProvider.displayName = \"DropdownProvider\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction useDropdownTrigger(_ref2) {\n var onKeyDown = _ref2.onKeyDown,\n onMouseDown = _ref2.onMouseDown,\n id = _ref2.id,\n forwardedRef = _ref2.ref,\n props = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var _useDropdownContext = useDropdownContext(),\n dispatch = _useDropdownContext.dispatch,\n dropdownId = _useDropdownContext.dropdownId,\n mouseDownStartPosRef = _useDropdownContext.mouseDownStartPosRef,\n triggerClickedRef = _useDropdownContext.triggerClickedRef,\n triggerRef = _useDropdownContext.triggerRef,\n _useDropdownContext$s = _useDropdownContext.state,\n triggerId = _useDropdownContext$s.triggerId,\n isExpanded = _useDropdownContext$s.isExpanded;\n\n var ref = useComposedRefs(triggerRef, forwardedRef);\n var items = useDropdownDescendants();\n var firstNonDisabledIndex = useMemo(function () {\n return items.findIndex(function (item) {\n return !item.disabled;\n });\n }, [items]);\n useEffect(function () {\n if (id != null && id !== triggerId) {\n dispatch({\n type: SET_BUTTON_ID,\n payload: id\n });\n }\n }, [triggerId, dispatch, id]);\n\n function handleKeyDown(event) {\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n event.preventDefault(); // prevent scroll\n\n dispatch({\n type: OPEN_MENU_AT_INDEX,\n payload: {\n index: firstNonDisabledIndex\n }\n });\n break;\n\n case \"Enter\":\n case \" \":\n dispatch({\n type: OPEN_MENU_AT_INDEX,\n payload: {\n index: firstNonDisabledIndex\n }\n });\n break;\n }\n }\n\n function handleMouseDown(event) {\n if (isRightClick(event.nativeEvent)) {\n return;\n }\n\n mouseDownStartPosRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (!isExpanded) {\n triggerClickedRef.current = true;\n }\n\n if (isExpanded) {\n dispatch({\n type: CLOSE_MENU\n });\n } else {\n dispatch({\n type: OPEN_MENU_CLEARED\n });\n }\n }\n\n return {\n data: {\n isExpanded: isExpanded,\n controls: dropdownId\n },\n props: _extends({}, props, {\n ref: ref,\n id: triggerId || undefined,\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),\n onMouseDown: composeEventHandlers(onMouseDown, handleMouseDown),\n type: \"button\"\n })\n };\n}\n\nvar DropdownTrigger = /*#__PURE__*/forwardRef(function (_ref3, forwardedRef) {\n var _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"button\" : _ref3$as,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded2);\n\n var _useDropdownTrigger = useDropdownTrigger(_extends({}, rest, {\n ref: forwardedRef\n })),\n props = _useDropdownTrigger.props;\n\n return /*#__PURE__*/createElement(Comp, _extends({\n \"data-reach-dropdown-trigger\": \"\"\n }, props));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DropdownTrigger.displayName = \"DropdownTrigger\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction useDropdownItem(_ref4) {\n var indexProp = _ref4.index,\n _ref4$isLink = _ref4.isLink,\n isLink = _ref4$isLink === void 0 ? false : _ref4$isLink,\n onClick = _ref4.onClick,\n onDragStart = _ref4.onDragStart,\n onMouseDown = _ref4.onMouseDown,\n onMouseEnter = _ref4.onMouseEnter,\n onMouseLeave = _ref4.onMouseLeave,\n onMouseMove = _ref4.onMouseMove,\n onMouseUp = _ref4.onMouseUp,\n onSelect = _ref4.onSelect,\n disabled = _ref4.disabled,\n onFocus = _ref4.onFocus,\n valueTextProp = _ref4.valueText,\n forwardedRef = _ref4.ref,\n props = _objectWithoutPropertiesLoose(_ref4, _excluded3);\n\n var _useDropdownContext2 = useDropdownContext(),\n dispatch = _useDropdownContext2.dispatch,\n dropdownRef = _useDropdownContext2.dropdownRef,\n mouseDownStartPosRef = _useDropdownContext2.mouseDownStartPosRef,\n readyToSelect = _useDropdownContext2.readyToSelect,\n selectCallbacks = _useDropdownContext2.selectCallbacks,\n triggerRef = _useDropdownContext2.triggerRef,\n _useDropdownContext2$ = _useDropdownContext2.state,\n selectionIndex = _useDropdownContext2$.selectionIndex,\n isExpanded = _useDropdownContext2$.isExpanded;\n\n var ownRef = useRef(null); // After the ref is mounted to the DOM node, we check to see if we have an\n // explicit valueText prop before looking for the node's textContent for\n // typeahead functionality.\n\n var _React$useState = useState(valueTextProp || \"\"),\n valueText = _React$useState[0],\n setValueText = _React$useState[1];\n\n var setValueTextFromDOM = useCallback(function (node) {\n if (!valueTextProp && node != null && node.textContent) {\n setValueText(node.textContent);\n }\n }, [valueTextProp]);\n var mouseEventStarted = useRef(false);\n\n var _useStatefulRefValue = useStatefulRefValue(ownRef, null),\n element = _useStatefulRefValue[0],\n handleRefSet = _useStatefulRefValue[1];\n\n var descendant = useMemo(function () {\n return {\n element: element,\n key: valueText,\n disabled: disabled,\n isLink: isLink\n };\n }, [disabled, element, isLink, valueText]);\n var index = useDescendant(descendant, DropdownDescendantContext, indexProp);\n var isSelected = index === selectionIndex && !disabled;\n var ref = useComposedRefs(forwardedRef, handleRefSet, setValueTextFromDOM); // Update the callback ref array on every render\n\n selectCallbacks.current[index] = onSelect;\n\n function select() {\n focus(triggerRef.current);\n onSelect && onSelect();\n dispatch({\n type: CLICK_MENU_ITEM\n });\n }\n\n function handleClick(event) {\n if (isRightClick(event.nativeEvent)) {\n return;\n }\n\n if (isLink) {\n if (disabled) {\n event.preventDefault();\n } else {\n select();\n }\n }\n }\n\n function handleDragStart(event) {\n // Because we don't preventDefault on mousedown for links (we need the\n // native click event), clicking and holding on a link triggers a\n // dragstart which we don't want.\n if (isLink) {\n event.preventDefault();\n }\n }\n\n function handleMouseDown(event) {\n if (isRightClick(event.nativeEvent)) {\n return;\n }\n\n if (isLink) {\n // Signal that the mouse is down so we can call the right function if the\n // user is clicking on a link.\n mouseEventStarted.current = true;\n } else {\n event.preventDefault();\n }\n }\n\n function handleMouseEnter(event) {\n var doc = getOwnerDocument(dropdownRef.current);\n\n if (!isSelected && index != null && !disabled) {\n if (dropdownRef != null && dropdownRef.current && dropdownRef.current !== doc.activeElement && ownRef.current !== doc.activeElement) {\n dropdownRef.current.focus();\n }\n\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: index\n }\n });\n }\n }\n\n function handleMouseLeave(event) {\n // Clear out selection when mouse over a non-dropdown-item child.\n dispatch({\n type: CLEAR_SELECTION_INDEX\n });\n }\n\n function handleMouseMove(event) {\n if (!readyToSelect.current) {\n var threshold = 8;\n var deltaX = Math.abs(event.clientX - mouseDownStartPosRef.current.x);\n var deltaY = Math.abs(event.clientY - mouseDownStartPosRef.current.y);\n\n if (deltaX > threshold || deltaY > threshold) {\n readyToSelect.current = true;\n }\n }\n\n if (!isSelected && index != null && !disabled) {\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: index,\n dropdownRef: dropdownRef\n }\n });\n }\n }\n\n function handleFocus() {\n readyToSelect.current = true;\n\n if (!isSelected && index != null && !disabled) {\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: index\n }\n });\n }\n }\n\n function handleMouseUp(event) {\n if (isRightClick(event.nativeEvent)) {\n return;\n }\n\n if (!readyToSelect.current) {\n readyToSelect.current = true;\n return;\n }\n\n if (isLink) {\n // If a mousedown event was initiated on a link item followed by a mouseup\n // event on the same link, we do nothing; a click event will come next and\n // handle selection. Otherwise, we trigger a click event.\n if (mouseEventStarted.current) {\n mouseEventStarted.current = false;\n } else if (ownRef.current) {\n ownRef.current.click();\n }\n } else {\n if (!disabled) {\n select();\n }\n }\n }\n\n useEffect(function () {\n if (isExpanded) {\n // When the dropdown opens, wait for about half a second before enabling\n // selection. This is designed to mirror dropdown menus on macOS, where\n // opening a menu on top of a trigger would otherwise result in an\n // immediate accidental selection once the click trigger is released.\n var id = window.setTimeout(function () {\n readyToSelect.current = true;\n }, 400);\n return function () {\n window.clearTimeout(id);\n };\n } else {\n // When the dropdown closes, reset readyToSelect for the next interaction.\n readyToSelect.current = false;\n }\n }, [isExpanded, readyToSelect]); // Any time a mouseup event occurs anywhere in the document, we reset the\n // mouseEventStarted ref so we can check it again when needed.\n\n useEffect(function () {\n var ownerDocument = getOwnerDocument(ownRef.current);\n ownerDocument.addEventListener(\"mouseup\", listener);\n return function () {\n ownerDocument.removeEventListener(\"mouseup\", listener);\n };\n\n function listener() {\n mouseEventStarted.current = false;\n }\n }, []);\n return {\n data: {\n disabled: disabled\n },\n props: _extends({\n id: useItemId(index),\n tabIndex: -1\n }, props, {\n ref: ref,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": isSelected ? \"\" : undefined,\n \"data-valuetext\": valueText,\n onClick: composeEventHandlers(onClick, handleClick),\n onDragStart: composeEventHandlers(onDragStart, handleDragStart),\n onMouseDown: composeEventHandlers(onMouseDown, handleMouseDown),\n onMouseEnter: composeEventHandlers(onMouseEnter, handleMouseEnter),\n onMouseLeave: composeEventHandlers(onMouseLeave, handleMouseLeave),\n onMouseMove: composeEventHandlers(onMouseMove, handleMouseMove),\n onFocus: composeEventHandlers(onFocus, handleFocus),\n onMouseUp: composeEventHandlers(onMouseUp, handleMouseUp)\n })\n };\n}\n/**\n * DropdownItem\n */\n\n\nvar DropdownItem = /*#__PURE__*/forwardRef(function (_ref5, forwardedRef) {\n var _ref5$as = _ref5.as,\n Comp = _ref5$as === void 0 ? \"div\" : _ref5$as,\n rest = _objectWithoutPropertiesLoose(_ref5, _excluded4);\n\n var _useDropdownItem = useDropdownItem(_extends({}, rest, {\n ref: forwardedRef\n })),\n props = _useDropdownItem.props;\n\n return /*#__PURE__*/createElement(Comp, _extends({\n \"data-reach-dropdown-item\": \"\"\n }, props));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DropdownItem.displayName = \"DropdownItem\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction useDropdownItems(_ref6) {\n _ref6.id;\n var onKeyDown = _ref6.onKeyDown,\n forwardedRef = _ref6.ref,\n props = _objectWithoutPropertiesLoose(_ref6, _excluded5);\n\n var _useDropdownContext3 = useDropdownContext(),\n dispatch = _useDropdownContext3.dispatch,\n triggerRef = _useDropdownContext3.triggerRef,\n dropdownRef = _useDropdownContext3.dropdownRef,\n selectCallbacks = _useDropdownContext3.selectCallbacks,\n dropdownId = _useDropdownContext3.dropdownId,\n _useDropdownContext3$ = _useDropdownContext3.state,\n isExpanded = _useDropdownContext3$.isExpanded,\n triggerId = _useDropdownContext3$.triggerId,\n selectionIndex = _useDropdownContext3$.selectionIndex,\n typeaheadQuery = _useDropdownContext3$.typeaheadQuery;\n\n var items = useDropdownDescendants();\n var ref = useComposedRefs(dropdownRef, forwardedRef);\n useEffect(function () {\n // Respond to user char key input with typeahead\n var match = findItemFromTypeahead(items, typeaheadQuery);\n\n if (typeaheadQuery && match != null) {\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: match,\n dropdownRef: dropdownRef\n }\n });\n }\n\n var timeout = window.setTimeout(function () {\n return typeaheadQuery && dispatch({\n type: SEARCH_FOR_ITEM,\n payload: \"\"\n });\n }, 1000);\n return function () {\n return window.clearTimeout(timeout);\n };\n }, [dispatch, items, typeaheadQuery, dropdownRef]);\n var prevItemsLength = usePrevious(items.length);\n var prevSelected = usePrevious(items[selectionIndex]);\n var prevSelectionIndex = usePrevious(selectionIndex);\n useEffect(function () {\n if (selectionIndex > items.length - 1) {\n // If for some reason our selection index is larger than our possible\n // index range (let's say the last item is selected and the list\n // dynamically updates), we need to select the last item in the list.\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: items.length - 1,\n dropdownRef: dropdownRef\n }\n });\n } else if ( // Checks if\n // - item length has changed\n // - selection index has not changed BUT selected item has changed\n //\n // This prevents any dynamic adding/removing of items from actually\n // changing a user's expected selection.\n prevItemsLength !== items.length && selectionIndex > -1 && prevSelected && prevSelectionIndex === selectionIndex && items[selectionIndex] !== prevSelected) {\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: items.findIndex(function (i) {\n return i.key === (prevSelected == null ? void 0 : prevSelected.key);\n }),\n dropdownRef: dropdownRef\n }\n });\n }\n }, [dropdownRef, dispatch, items, prevItemsLength, prevSelected, prevSelectionIndex, selectionIndex]);\n var handleKeyDown = composeEventHandlers(function handleKeyDown(event) {\n var key = event.key;\n\n if (!isExpanded) {\n return;\n }\n\n switch (key) {\n case \"Enter\":\n case \" \":\n var selected = items.find(function (item) {\n return item.index === selectionIndex;\n }); // For links, the Enter key will trigger a click by default, but for\n // consistent behavior across items we'll trigger a click when the\n // spacebar is pressed.\n\n if (selected && !selected.disabled) {\n event.preventDefault();\n\n if (selected.isLink && selected.element) {\n selected.element.click();\n } else {\n // Focus the button first by default when an item is selected.\n // We fire the onSelect callback next so the app can manage\n // focus if needed.\n focus(triggerRef.current);\n selectCallbacks.current[selected.index] && selectCallbacks.current[selected.index]();\n dispatch({\n type: CLICK_MENU_ITEM\n });\n }\n }\n\n break;\n\n case \"Escape\":\n focus(triggerRef.current);\n dispatch({\n type: CLOSE_MENU\n });\n break;\n\n case \"Tab\":\n // prevent leaving\n event.preventDefault();\n break;\n\n default:\n // Check if a user is typing some char keys and respond by setting\n // the query state.\n if (isString(key) && key.length === 1) {\n var query = typeaheadQuery + key.toLowerCase();\n dispatch({\n type: SEARCH_FOR_ITEM,\n payload: query\n });\n }\n\n break;\n }\n }, useDescendantKeyDown(DropdownDescendantContext, {\n currentIndex: selectionIndex,\n orientation: \"vertical\",\n rotate: false,\n filter: function filter(item) {\n return !item.disabled;\n },\n callback: function callback(index) {\n dispatch({\n type: SELECT_ITEM_AT_INDEX,\n payload: {\n index: index,\n dropdownRef: dropdownRef\n }\n });\n },\n key: \"index\"\n }));\n return {\n data: {\n activeDescendant: useItemId(selectionIndex) || undefined,\n triggerId: triggerId\n },\n props: _extends({\n tabIndex: -1\n }, props, {\n ref: ref,\n id: dropdownId,\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown)\n })\n };\n}\n/**\n * DropdownItem\n */\n\n\nvar DropdownItems = /*#__PURE__*/forwardRef(function (_ref7, forwardedRef) {\n var _ref7$as = _ref7.as,\n Comp = _ref7$as === void 0 ? \"div\" : _ref7$as,\n rest = _objectWithoutPropertiesLoose(_ref7, _excluded6);\n\n var _useDropdownItems = useDropdownItems(_extends({}, rest, {\n ref: forwardedRef\n })),\n props = _useDropdownItems.props;\n\n return /*#__PURE__*/createElement(Comp, _extends({\n \"data-reach-dropdown-items\": \"\"\n }, props));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DropdownItems.displayName = \"DropdownItems\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction useDropdownPopover(_ref8) {\n var onBlur = _ref8.onBlur,\n _ref8$portal = _ref8.portal,\n portal = _ref8$portal === void 0 ? true : _ref8$portal,\n position = _ref8.position,\n forwardedRef = _ref8.ref,\n props = _objectWithoutPropertiesLoose(_ref8, _excluded7);\n\n var _useDropdownContext4 = useDropdownContext(),\n triggerRef = _useDropdownContext4.triggerRef,\n triggerClickedRef = _useDropdownContext4.triggerClickedRef,\n dispatch = _useDropdownContext4.dispatch,\n dropdownRef = _useDropdownContext4.dropdownRef,\n popoverRef = _useDropdownContext4.popoverRef,\n isExpanded = _useDropdownContext4.state.isExpanded;\n\n var ref = useComposedRefs(popoverRef, forwardedRef);\n useEffect(function () {\n if (!isExpanded) {\n return;\n }\n\n var ownerDocument = getOwnerDocument(popoverRef.current);\n\n function listener(event) {\n if (triggerClickedRef.current) {\n triggerClickedRef.current = false;\n } else if (!popoverContainsEventTarget(popoverRef.current, event.target)) {\n // We on want to close only if focus rests outside the dropdown\n dispatch({\n type: CLOSE_MENU\n });\n }\n }\n\n ownerDocument.addEventListener(\"mousedown\", listener); // see https://github.com/reach/reach-ui/pull/700#discussion_r530369265\n // ownerDocument.addEventListener(\"touchstart\", listener);\n\n return function () {\n ownerDocument.removeEventListener(\"mousedown\", listener); // ownerDocument.removeEventListener(\"touchstart\", listener);\n };\n }, [triggerClickedRef, triggerRef, dispatch, dropdownRef, popoverRef, isExpanded]);\n return {\n data: {\n portal: portal,\n position: position,\n targetRef: triggerRef,\n isExpanded: isExpanded\n },\n props: _extends({\n ref: ref,\n hidden: !isExpanded,\n onBlur: composeEventHandlers(onBlur, function (event) {\n if (event.currentTarget.contains(event.relatedTarget)) {\n return;\n }\n\n dispatch({\n type: CLOSE_MENU\n });\n })\n }, props)\n };\n}\n\nvar DropdownPopover = /*#__PURE__*/forwardRef(function (_ref9, forwardedRef) {\n var _ref9$as = _ref9.as,\n Comp = _ref9$as === void 0 ? \"div\" : _ref9$as,\n rest = _objectWithoutPropertiesLoose(_ref9, _excluded8);\n\n var _useDropdownPopover = useDropdownPopover(_extends({}, rest, {\n ref: forwardedRef\n })),\n _useDropdownPopover$d = _useDropdownPopover.data,\n portal = _useDropdownPopover$d.portal,\n targetRef = _useDropdownPopover$d.targetRef,\n position = _useDropdownPopover$d.position,\n props = _useDropdownPopover.props;\n\n var sharedProps = {\n \"data-reach-dropdown-popover\": \"\"\n };\n return portal ? /*#__PURE__*/createElement(Popover, _extends({}, props, sharedProps, {\n as: Comp,\n targetRef: targetRef,\n position: position\n })) : /*#__PURE__*/createElement(Comp, _extends({}, props, sharedProps));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DropdownPopover.displayName = \"DropdownPopover\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * When a user's typed input matches the string displayed in an item, it is\n * expected that the matching item is selected. This is our matching function.\n */\n\n\nfunction findItemFromTypeahead(items, string) {\n if (string === void 0) {\n string = \"\";\n }\n\n if (!string) {\n return null;\n }\n\n var found = items.find(function (item) {\n var _item$element, _item$element$dataset, _item$element$dataset2;\n\n return item.disabled ? false : (_item$element = item.element) == null ? void 0 : (_item$element$dataset = _item$element.dataset) == null ? void 0 : (_item$element$dataset2 = _item$element$dataset.valuetext) == null ? void 0 : _item$element$dataset2.toLowerCase().startsWith(string);\n });\n return found ? items.indexOf(found) : null;\n}\n\nfunction useItemId(index) {\n var _React$useContext = useContext(DropdownContext),\n dropdownId = _React$useContext.dropdownId;\n\n return index != null && index > -1 ? makeId(\"option-\" + index, dropdownId) : undefined;\n}\n\nfunction focus(element) {\n element && element.focus();\n}\n\nfunction popoverContainsEventTarget(popover, target) {\n return !!(popover && popover.contains(target));\n}\n\nfunction reducer(state, action) {\n if (action === void 0) {\n action = {};\n }\n\n switch (action.type) {\n case CLICK_MENU_ITEM:\n return _extends({}, state, {\n isExpanded: false,\n selectionIndex: -1\n });\n\n case CLOSE_MENU:\n return _extends({}, state, {\n isExpanded: false,\n selectionIndex: -1\n });\n\n case OPEN_MENU_AT_FIRST_ITEM:\n return _extends({}, state, {\n isExpanded: true,\n selectionIndex: 0\n });\n\n case OPEN_MENU_AT_INDEX:\n return _extends({}, state, {\n isExpanded: true,\n selectionIndex: action.payload.index\n });\n\n case OPEN_MENU_CLEARED:\n return _extends({}, state, {\n isExpanded: true,\n selectionIndex: -1\n });\n\n case SELECT_ITEM_AT_INDEX:\n {\n var _action$payload$dropd = action.payload.dropdownRef,\n dropdownRef = _action$payload$dropd === void 0 ? {\n current: null\n } : _action$payload$dropd;\n\n if (action.payload.index >= 0 && action.payload.index !== state.selectionIndex) {\n if (dropdownRef.current) {\n var doc = getOwnerDocument(dropdownRef.current);\n\n if (dropdownRef.current !== (doc == null ? void 0 : doc.activeElement)) {\n dropdownRef.current.focus();\n }\n }\n\n return _extends({}, state, {\n selectionIndex: action.payload.max != null ? Math.min(Math.max(action.payload.index, 0), action.payload.max) : Math.max(action.payload.index, 0)\n });\n }\n\n return state;\n }\n\n case CLEAR_SELECTION_INDEX:\n return _extends({}, state, {\n selectionIndex: -1\n });\n\n case SET_BUTTON_ID:\n return _extends({}, state, {\n triggerId: action.payload\n });\n\n case SEARCH_FOR_ITEM:\n if (typeof action.payload !== \"undefined\") {\n return _extends({}, state, {\n typeaheadQuery: action.payload\n });\n }\n\n return state;\n\n default:\n return state;\n }\n}\n\nfunction useDropdownContext() {\n return useContext(DropdownContext);\n}\n\nfunction useDropdownDescendants() {\n return useDescendants(DropdownDescendantContext);\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport { DropdownItem, DropdownItems, DropdownPopover, DropdownProvider, DropdownTrigger, useDropdownContext, useDropdownDescendants, useDropdownItem, useDropdownItems, useDropdownPopover, useDropdownTrigger };\n","import { forwardRef, useMemo, createElement, useRef, useEffect, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport { Popover } from '@reach/popover';\nimport { DropdownProvider, useDropdownTrigger, useDropdownItem, useDropdownItems, useDropdownPopover, useDropdownContext } from '@reach/dropdown';\nimport { noop } from '@reach/utils/noop';\nimport { useCheckStyles } from '@reach/utils/dev-utils';\nimport { isFragment } from 'react-is';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nvar _excluded = [\"as\", \"id\", \"children\"],\n _excluded2 = [\"as\"],\n _excluded3 = [\"as\"],\n _excluded4 = [\"as\"],\n _excluded5 = [\"as\"],\n _excluded6 = [\"as\", \"component\", \"onSelect\"],\n _excluded7 = [\"portal\"],\n _excluded8 = [\"as\"];\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Menu\n *\n * The wrapper component for the other components. No DOM element is rendered.\n *\n * @see Docs https://reach.tech/menu-button#menu\n */\nvar Menu = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? Fragment : _ref$as,\n id = _ref.id,\n children = _ref.children,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n useCheckStyles(\"menu-button\");\n var parentIsFragment = useMemo(function () {\n try {\n // To test if the component renders a fragment we need to actually\n // render it, but this may throw an error since we can't predict what is\n // actually provided. There's technically a small chance that this could\n // get it wrong but I don't think it's too likely in practice.\n return isFragment( /*#__PURE__*/createElement(Comp, null));\n } catch (err) {\n return false;\n }\n }, [Comp]);\n var props = parentIsFragment ? {} : _extends({\n ref: forwardedRef,\n id: id,\n \"data-reach-menu\": \"\"\n }, rest);\n return /*#__PURE__*/createElement(Comp, props, /*#__PURE__*/createElement(DropdownProvider, {\n id: id,\n children: children\n }));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menu-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n Menu.displayName = \"Menu\";\n Menu.propTypes = {\n children: /*#__PURE__*/PropTypes.oneOfType([PropTypes.func, PropTypes.node])\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuButton\n *\n * Wraps a DOM `button` that toggles the opening and closing of the dropdown\n * menu. Must be rendered inside of a `<Menu>`.\n *\n * @see Docs https://reach.tech/menu-button#menubutton\n */\n\n\nvar MenuButton = /*#__PURE__*/forwardRef(function (_ref2, forwardedRef) {\n var _ref2$as = _ref2.as,\n Comp = _ref2$as === void 0 ? \"button\" : _ref2$as,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n\n var _useDropdownTrigger = useDropdownTrigger(_extends({}, rest, {\n ref: forwardedRef\n })),\n _useDropdownTrigger$d = _useDropdownTrigger.data,\n isExpanded = _useDropdownTrigger$d.isExpanded,\n controls = _useDropdownTrigger$d.controls,\n props = _useDropdownTrigger.props;\n\n return /*#__PURE__*/createElement(Comp // When the menu is displayed, the element with role `button` has\n // `aria-expanded` set to `true`. When the menu is hidden, it is\n // recommended that `aria-expanded` is not present.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#menubutton\n , _extends({\n \"aria-expanded\": isExpanded ? true : undefined // The element with role `button` has `aria-haspopup` set to either\n // `\"menu\"` or `true`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#menubutton\n ,\n \"aria-haspopup\": true // Optionally, the element with role `button` has a value specified for\n // `aria-controls` that refers to the element with role `menu`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#menubutton\n ,\n \"aria-controls\": controls\n }, props, {\n \"data-reach-menu-button\": \"\"\n }));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menubutton-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuButton.displayName = \"MenuButton\";\n MenuButton.propTypes = {\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuItemImpl\n *\n * MenuItem and MenuLink share most of the same functionality captured here.\n */\n\n\nvar MenuItemImpl = /*#__PURE__*/forwardRef(function (_ref3, forwardedRef) {\n var _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"div\" : _ref3$as,\n rest = _objectWithoutPropertiesLoose(_ref3, _excluded3);\n\n var _useDropdownItem = useDropdownItem(_extends({}, rest, {\n ref: forwardedRef\n })),\n disabled = _useDropdownItem.data.disabled,\n props = _useDropdownItem.props;\n\n return /*#__PURE__*/createElement(Comp, _extends({\n role: \"menuitem\"\n }, props, {\n \"aria-disabled\": disabled || undefined,\n \"data-reach-menu-item\": \"\"\n }));\n});\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuItem\n *\n * Handles menu selection. Must be a direct child of a `<MenuList>`.\n *\n * @see Docs https://reach.tech/menu-button#menuitem\n */\nvar MenuItem = /*#__PURE__*/forwardRef(function (_ref4, forwardedRef) {\n var _ref4$as = _ref4.as,\n as = _ref4$as === void 0 ? \"div\" : _ref4$as,\n props = _objectWithoutPropertiesLoose(_ref4, _excluded4);\n\n return /*#__PURE__*/createElement(MenuItemImpl, _extends({}, props, {\n ref: forwardedRef,\n as: as\n }));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menuitem-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuItem.displayName = \"MenuItem\";\n MenuItem.propTypes = {\n as: PropTypes.any,\n onSelect: PropTypes.func.isRequired\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuItems\n *\n * A low-level wrapper for menu items. Compose it with `MenuPopover` for more\n * control over the nested components and their rendered DOM nodes, or if you\n * need to nest arbitrary components between the outer wrapper and your list.\n *\n * @see Docs https://reach.tech/menu-button#menuitems\n */\n\n\nvar MenuItems = /*#__PURE__*/forwardRef(function (_ref5, forwardedRef) {\n var _ref5$as = _ref5.as,\n Comp = _ref5$as === void 0 ? \"div\" : _ref5$as,\n rest = _objectWithoutPropertiesLoose(_ref5, _excluded5);\n\n var _useDropdownItems = useDropdownItems(_extends({}, rest, {\n ref: forwardedRef\n })),\n _useDropdownItems$dat = _useDropdownItems.data,\n activeDescendant = _useDropdownItems$dat.activeDescendant,\n triggerId = _useDropdownItems$dat.triggerId,\n props = _useDropdownItems.props;\n\n return (\n /*#__PURE__*/\n // TODO: Should probably file a but in jsx-a11y, but this is correct\n // according to https://www.w3.org/TR/wai-aria-practices-1.2/examples/menu-button/menu-button-actions-active-descendant.html\n // eslint-disable-next-line jsx-a11y/aria-activedescendant-has-tabindex\n createElement(Comp // Refers to the descendant menuitem element that is visually indicated\n // as focused.\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/menu-button/menu-button-actions-active-descendant.html\n , _extends({\n \"aria-activedescendant\": activeDescendant // Refers to the element that contains the accessible name for the\n // `menu`. The menu is labeled by the menu button.\n // https://www.w3.org/TR/wai-aria-practices-1.2/examples/menu-button/menu-button-actions-active-descendant.html\n ,\n \"aria-labelledby\": triggerId || undefined // The element that contains the menu items displayed by activating the\n // button has role menu.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#menubutton\n ,\n role: \"menu\"\n }, props, {\n \"data-reach-menu-items\": \"\"\n }))\n );\n});\n/**\n * @see Docs https://reach.tech/menu-button#menuitems-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuItems.displayName = \"MenuItems\";\n MenuItems.propTypes = {\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuLink\n *\n * Handles linking to a different page in the menu. By default it renders `<a>`,\n * but also accepts any other kind of Link as long as the `Link` uses the\n * `React.forwardRef` API.\n *\n * Must be a direct child of a `<MenuList>`.\n *\n * @see Docs https://reach.tech/menu-button#menulink\n */\n\n\nvar MenuLink = /*#__PURE__*/forwardRef(function (_ref6, forwardedRef) {\n var _ref6$as = _ref6.as,\n as = _ref6$as === void 0 ? \"a\" : _ref6$as,\n component = _ref6.component,\n onSelect = _ref6.onSelect,\n props = _objectWithoutPropertiesLoose(_ref6, _excluded6);\n\n useDevWarning(!component, \"[@reach/menu-button]: Please use the `as` prop instead of `component`\");\n return /*#__PURE__*/createElement(MenuItemImpl, _extends({}, props, {\n ref: forwardedRef,\n \"data-reach-menu-link\": \"\",\n as: as,\n isLink: true,\n onSelect: onSelect || noop\n }));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menulink-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuLink.displayName = \"MenuLink\";\n MenuLink.propTypes = {\n as: PropTypes.any\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuList\n *\n * Wraps a DOM element that renders the menu items. Must be rendered inside of\n * a `<Menu>`.\n *\n * @see Docs https://reach.tech/menu-button#menulist\n */\n\n\nvar MenuList = /*#__PURE__*/forwardRef(function (_ref7, forwardedRef) {\n var _ref7$portal = _ref7.portal,\n portal = _ref7$portal === void 0 ? true : _ref7$portal,\n props = _objectWithoutPropertiesLoose(_ref7, _excluded7);\n\n return /*#__PURE__*/createElement(MenuPopover, {\n portal: portal\n }, /*#__PURE__*/createElement(MenuItems, _extends({}, props, {\n ref: forwardedRef,\n \"data-reach-menu-list\": \"\"\n })));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menulist-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuList.displayName = \"MenuList\";\n MenuList.propTypes = {\n children: PropTypes.node.isRequired\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * MenuPopover\n *\n * A low-level wrapper for the popover that appears when a menu button is open.\n * You can compose it with `MenuItems` for more control over the nested\n * components and their rendered DOM nodes, or if you need to nest arbitrary\n * components between the outer wrapper and your list.\n *\n * @see Docs https://reach.tech/menu-button#menupopover\n */\n\n\nvar MenuPopover = /*#__PURE__*/forwardRef(function (_ref8, forwardedRef) {\n var _ref8$as = _ref8.as,\n Comp = _ref8$as === void 0 ? \"div\" : _ref8$as,\n rest = _objectWithoutPropertiesLoose(_ref8, _excluded8);\n\n var _useDropdownPopover = useDropdownPopover(_extends({}, rest, {\n ref: forwardedRef\n })),\n _useDropdownPopover$d = _useDropdownPopover.data,\n portal = _useDropdownPopover$d.portal,\n targetRef = _useDropdownPopover$d.targetRef,\n position = _useDropdownPopover$d.position,\n props = _useDropdownPopover.props;\n\n var sharedProps = {\n \"data-reach-menu-popover\": \"\"\n };\n return portal ? /*#__PURE__*/createElement(Popover, _extends({}, props, sharedProps, {\n as: Comp,\n targetRef: targetRef,\n position: position\n })) : /*#__PURE__*/createElement(Comp, _extends({}, props, sharedProps));\n});\n/**\n * @see Docs https://reach.tech/menu-button#menupopover-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n MenuPopover.displayName = \"MenuPopover\";\n MenuPopover.propTypes = {\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hook that exposes data for a given `Menu` component to its descendants.\n *\n * @see Docs https://reach.tech/menu-button#usemenubuttoncontext\n */\n\n\nfunction useMenuButtonContext() {\n var _useDropdownContext = useDropdownContext(),\n isExpanded = _useDropdownContext.state.isExpanded;\n\n return useMemo(function () {\n return {\n isExpanded: isExpanded\n };\n }, [isExpanded]);\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction useDevWarning(condition, message) {\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable react-hooks/rules-of-hooks */\n var messageRef = useRef(message);\n useEffect(function () {\n messageRef.current = message;\n }, [message]);\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(condition, messageRef.current) : void 0;\n }, [condition]);\n /* eslint-enable react-hooks/rules-of-hooks */\n }\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport { Menu, MenuButton, MenuItem, MenuItems, MenuLink, MenuList, MenuPopover, useMenuButtonContext };\n","import { useState, useCallback } from 'react';\n\nfunction useStatefulRefValue(ref, initialState) {\n var _useState = useState(initialState),\n state = _useState[0],\n setState = _useState[1];\n\n var callbackRef = useCallback(function (refValue) {\n ref.current = refValue;\n setState(refValue); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [state, callbackRef];\n}\n\nexport { useStatefulRefValue };\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n Menu,\n MenuList as ReachMenuList,\n MenuButton,\n MenuItem,\n} from '@reach/menu-button';\nimport useThemeStyles from '../../useThemeStyles';\n\nconst MenuList = ({\n children,\n ...props\n}: {\n children: React$Node,\n ...\n}): React.Node => {\n const style = useThemeStyles();\n return (\n // $FlowFixMe[cannot-spread-inexact] unsafe spread\n <ReachMenuList style={style} {...props}>\n {children}\n </ReachMenuList>\n );\n};\n\nexport {MenuItem, MenuButton, MenuList, Menu};\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 * @flow\n */\nimport * as React from 'react';\nimport {\n Fragment,\n useCallback,\n useContext,\n useLayoutEffect,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Toggle from '../Toggle';\nimport ElementBadges from './ElementBadges';\nimport {OwnersListContext} from './OwnersListContext';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport {useIsOverflowing} from '../hooks';\nimport {StoreContext} from '../context';\nimport Tooltip from '../Components/reach-ui/tooltip';\nimport {\n Menu,\n MenuList,\n MenuButton,\n MenuItem,\n} from '../Components/reach-ui/menu-button';\n\nimport type {SerializedElement} from 'react-devtools-shared/src/frontend/types';\n\nimport styles from './OwnersStack.css';\n\ntype SelectOwner = (owner: SerializedElement | null) => void;\n\ntype ACTION_UPDATE_OWNER_ID = {\n type: 'UPDATE_OWNER_ID',\n ownerID: number | null,\n owners: Array<SerializedElement>,\n};\ntype ACTION_UPDATE_SELECTED_INDEX = {\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: number,\n};\n\ntype Action = ACTION_UPDATE_OWNER_ID | ACTION_UPDATE_SELECTED_INDEX;\n\ntype State = {\n ownerID: number | null,\n owners: Array<SerializedElement>,\n selectedIndex: number,\n};\n\nfunction dialogReducer(state: State, action: Action) {\n switch (action.type) {\n case 'UPDATE_OWNER_ID':\n const selectedIndex = action.owners.findIndex(\n owner => owner.id === action.ownerID,\n );\n return {\n ownerID: action.ownerID,\n owners: action.owners,\n selectedIndex,\n };\n case 'UPDATE_SELECTED_INDEX':\n return {\n ...state,\n selectedIndex: action.selectedIndex,\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\nexport default function OwnerStack(): React.Node {\n const read = useContext(OwnersListContext);\n const {ownerID} = useContext(TreeStateContext);\n const treeDispatch = useContext(TreeDispatcherContext);\n\n const [state, dispatch] = useReducer<State, State, Action>(dialogReducer, {\n ownerID: null,\n owners: [],\n selectedIndex: 0,\n });\n\n // When an owner is selected, we either need to update the selected index, or we need to fetch a new list of owners.\n // We use a reducer here so that we can avoid fetching a new list unless the owner ID has actually changed.\n if (ownerID === null) {\n dispatch({\n type: 'UPDATE_OWNER_ID',\n ownerID: null,\n owners: [],\n });\n } else if (ownerID !== state.ownerID) {\n const isInStore =\n state.owners.findIndex(owner => owner.id === ownerID) >= 0;\n dispatch({\n type: 'UPDATE_OWNER_ID',\n ownerID,\n owners: isInStore ? state.owners : read(ownerID) || [],\n });\n }\n\n const {owners, selectedIndex} = state;\n\n const selectOwner = useCallback<SelectOwner>(\n (owner: SerializedElement | null) => {\n if (owner !== null) {\n const index = owners.indexOf(owner);\n dispatch({\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: index >= 0 ? index : 0,\n });\n treeDispatch({type: 'SELECT_OWNER', payload: owner.id});\n } else {\n dispatch({\n type: 'UPDATE_SELECTED_INDEX',\n selectedIndex: 0,\n });\n treeDispatch({type: 'RESET_OWNER_STACK'});\n }\n },\n [owners, treeDispatch],\n );\n\n const [elementsTotalWidth, setElementsTotalWidth] = useState(0);\n const elementsBarRef = useRef<HTMLDivElement | null>(null);\n const isOverflowing = useIsOverflowing(elementsBarRef, elementsTotalWidth);\n\n const selectedOwner = owners[selectedIndex];\n\n useLayoutEffect(() => {\n // If we're already overflowing, then we don't need to re-measure items.\n // That's because once the owners stack is open, it can only get larger (by drilling in).\n // A totally new stack can only be reached by exiting this mode and re-entering it.\n if (elementsBarRef.current === null || isOverflowing) {\n return () => {};\n }\n\n let totalWidth = 0;\n for (let i = 0; i < owners.length; i++) {\n const element = elementsBarRef.current.children[i];\n const computedStyle = getComputedStyle(element);\n\n totalWidth +=\n element.offsetWidth +\n parseInt(computedStyle.marginLeft, 10) +\n parseInt(computedStyle.marginRight, 10);\n }\n\n setElementsTotalWidth(totalWidth);\n }, [elementsBarRef, isOverflowing, owners.length]);\n\n return (\n <div className={styles.OwnerStack}>\n <div className={styles.Bar} ref={elementsBarRef}>\n {isOverflowing && (\n <Fragment>\n <ElementsDropdown\n owners={owners}\n selectedIndex={selectedIndex}\n selectOwner={selectOwner}\n />\n <BackToOwnerButton\n owners={owners}\n selectedIndex={selectedIndex}\n selectOwner={selectOwner}\n />\n {selectedOwner != null && (\n <ElementView\n owner={selectedOwner}\n isSelected={true}\n selectOwner={selectOwner}\n />\n )}\n </Fragment>\n )}\n {!isOverflowing &&\n owners.map((owner, index) => (\n <ElementView\n key={index}\n owner={owner}\n isSelected={index === selectedIndex}\n selectOwner={selectOwner}\n />\n ))}\n </div>\n <div className={styles.VRule} />\n <Button onClick={() => selectOwner(null)} title=\"Back to tree view\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n );\n}\n\ntype ElementsDropdownProps = {\n owners: Array<SerializedElement>,\n selectedIndex: number,\n selectOwner: SelectOwner,\n};\nfunction ElementsDropdown({owners, selectOwner}: ElementsDropdownProps) {\n const store = useContext(StoreContext);\n\n const menuItems = [];\n for (let index = owners.length - 1; index >= 0; index--) {\n const owner = owners[index];\n const isInStore = store.containsElement(owner.id);\n menuItems.push(\n <MenuItem\n key={owner.id}\n className={`${styles.Component} ${isInStore ? '' : styles.NotInStore}`}\n onSelect={() => (isInStore ? selectOwner(owner) : null)}>\n {owner.displayName}\n\n <ElementBadges\n hocDisplayNames={owner.hocDisplayNames}\n compiledWithForget={owner.compiledWithForget}\n className={styles.BadgesBlock}\n />\n </MenuItem>,\n );\n }\n\n return (\n <Menu>\n <MenuButton className={styles.MenuButton}>\n <Tooltip label=\"Open elements dropdown\">\n <span className={styles.MenuButtonContent} tabIndex={-1}>\n <ButtonIcon type=\"more\" />\n </span>\n </Tooltip>\n </MenuButton>\n <MenuList className={styles.Modal}>{menuItems}</MenuList>\n </Menu>\n );\n}\n\ntype ElementViewProps = {\n isSelected: boolean,\n owner: SerializedElement,\n selectOwner: SelectOwner,\n ...\n};\nfunction ElementView({isSelected, owner, selectOwner}: ElementViewProps) {\n const store = useContext(StoreContext);\n\n const {displayName, hocDisplayNames, compiledWithForget} = owner;\n const isInStore = store.containsElement(owner.id);\n\n const handleChange = useCallback(() => {\n if (isInStore) {\n selectOwner(owner);\n }\n }, [isInStore, selectOwner, owner]);\n\n return (\n <Toggle\n className={`${styles.Component} ${isInStore ? '' : styles.NotInStore}`}\n isChecked={isSelected}\n onChange={handleChange}>\n {displayName}\n\n <ElementBadges\n hocDisplayNames={hocDisplayNames}\n compiledWithForget={compiledWithForget}\n className={styles.BadgesBlock}\n />\n </Toggle>\n );\n}\n\ntype BackToOwnerButtonProps = {\n owners: Array<SerializedElement>,\n selectedIndex: number,\n selectOwner: SelectOwner,\n};\nfunction BackToOwnerButton({\n owners,\n selectedIndex,\n selectOwner,\n}: BackToOwnerButtonProps) {\n const store = useContext(StoreContext);\n\n if (selectedIndex <= 0) {\n return null;\n }\n\n const owner = owners[selectedIndex - 1];\n const isInStore = store.containsElement(owner.id);\n\n return (\n <Button\n className={isInStore ? undefined : styles.NotInStore}\n onClick={() => (isInStore ? selectOwner(owner) : null)}\n title={`Up to ${owner.displayName || 'owner'}`}>\n <ButtonIcon type=\"previous\" />\n </Button>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useEffect, useRef} from 'react';\nimport Button from './Button';\nimport ButtonIcon from './ButtonIcon';\nimport Icon from './Icon';\n\nimport styles from './SearchInput.css';\n\ntype Props = {\n goToNextResult: () => void,\n goToPreviousResult: () => void,\n placeholder: string,\n search: (text: string) => void,\n searchIndex: number,\n searchResultsCount: number,\n searchText: string,\n testName?: ?string,\n};\n\nexport default function SearchInput({\n goToNextResult,\n goToPreviousResult,\n placeholder,\n search,\n searchIndex,\n searchResultsCount,\n searchText,\n testName,\n}: Props): React.Node {\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const resetSearch = () => search('');\n\n // $FlowFixMe[missing-local-annot]\n const handleChange = ({currentTarget}) => {\n search(currentTarget.value);\n };\n // $FlowFixMe[missing-local-annot]\n const handleKeyPress = ({key, shiftKey}) => {\n if (key === 'Enter') {\n if (shiftKey) {\n goToPreviousResult();\n } else {\n goToNextResult();\n }\n }\n };\n\n // Auto-focus search input\n useEffect(() => {\n if (inputRef.current === null) {\n return () => {};\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const {key, metaKey} = event;\n if (key === 'f' && metaKey) {\n if (inputRef.current !== null) {\n inputRef.current.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n // It's important to listen to the ownerDocument to support the browser extension.\n // Here we use portals to render individual tabs (e.g. Profiler),\n // and the root document might belong to a different window.\n const ownerDocument = inputRef.current.ownerDocument;\n ownerDocument.addEventListener('keydown', handleKeyDown);\n\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n return (\n <div className={styles.SearchInput} data-testname={testName}>\n <Icon className={styles.InputIcon} type=\"search\" />\n <input\n data-testname={testName ? `${testName}-Input` : undefined}\n className={styles.Input}\n onChange={handleChange}\n onKeyPress={handleKeyPress}\n placeholder={placeholder}\n ref={inputRef}\n value={searchText}\n />\n {!!searchText && (\n <React.Fragment>\n <span\n className={styles.IndexLabel}\n data-testname={testName ? `${testName}-ResultsCount` : undefined}>\n {Math.min(searchIndex + 1, searchResultsCount)} |{' '}\n {searchResultsCount}\n </span>\n <div className={styles.LeftVRule} />\n <Button\n data-testname={testName ? `${testName}-PreviousButton` : undefined}\n disabled={!searchText}\n onClick={goToPreviousResult}\n title={\n <React.Fragment>\n Scroll to previous search result (<kbd>Shift</kbd> +{' '}\n <kbd>Enter</kbd>)\n </React.Fragment>\n }>\n <ButtonIcon type=\"up\" />\n </Button>\n <Button\n data-testname={testName ? `${testName}-NextButton` : undefined}\n disabled={!searchText}\n onClick={goToNextResult}\n title={\n <React.Fragment>\n Scroll to next search result (<kbd>Enter</kbd>)\n </React.Fragment>\n }>\n <ButtonIcon type=\"down\" />\n </Button>\n <Button\n data-testname={testName ? `${testName}-ResetButton` : undefined}\n disabled={!searchText}\n onClick={resetSearch}\n title=\"Reset search\">\n <ButtonIcon type=\"close\" />\n </Button>\n </React.Fragment>\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\n\nimport SearchInput from '../SearchInput';\n\ntype Props = {};\n\nexport default function ComponentSearchInput(props: Props): React.Node {\n const {searchIndex, searchResults, searchText} = useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n\n const search = (text: string) =>\n dispatch({type: 'SET_SEARCH_TEXT', payload: text});\n const goToNextResult = () => dispatch({type: 'GO_TO_NEXT_SEARCH_RESULT'});\n const goToPreviousResult = () =>\n dispatch({type: 'GO_TO_PREVIOUS_SEARCH_RESULT'});\n\n return (\n <SearchInput\n goToNextResult={goToNextResult}\n goToPreviousResult={goToPreviousResult}\n placeholder=\"Search (text or /regex/)\"\n search={search}\n searchIndex={searchIndex}\n searchResultsCount={searchResults.length}\n searchText={searchText}\n testName=\"ComponentSearchInput\"\n />\n );\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n useContext,\n useCallback,\n useState,\n startTransition,\n} from 'react';\n\nimport {BridgeContext, StoreContext} from '../context';\n\nimport type {FrontendBridge} from '../../../bridge';\nimport type {DevToolsHookSettings} from '../../../backend/types';\nimport type Store from '../../store';\n\nexport type Theme = 'auto' | 'light' | 'dark';\n\ntype Context = {\n isModalShowing: boolean,\n setIsModalShowing: (value: boolean) => void,\n environmentNames: null | Promise<Array<string>>,\n hookSettings: null | Promise<$ReadOnly<DevToolsHookSettings>>,\n};\n\nconst SettingsModalContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nSettingsModalContext.displayName = 'SettingsModalContext';\n\nfunction fetchEnvironmentNames(bridge: FrontendBridge): Promise<Array<string>> {\n return new Promise(resolve => {\n function onEnvironmentNames(names: Array<string>) {\n bridge.removeListener('environmentNames', onEnvironmentNames);\n resolve(names);\n }\n bridge.addListener('environmentNames', onEnvironmentNames);\n bridge.send('getEnvironmentNames');\n });\n}\n\nfunction fetchHookSettings(\n store: Store,\n): Promise<$ReadOnly<DevToolsHookSettings>> {\n return new Promise(resolve => {\n function onHookSettings(settings: $ReadOnly<DevToolsHookSettings>) {\n store.removeListener('hookSettings', onHookSettings);\n resolve(settings);\n }\n\n store.addListener('hookSettings', onHookSettings);\n store.getHookSettings();\n });\n}\n\nfunction SettingsModalContextController({\n children,\n}: {\n children: React$Node,\n}): React.Node {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const setIsModalShowing: boolean => void = useCallback(\n (value: boolean) => {\n startTransition(() => {\n setContext({\n isModalShowing: value,\n setIsModalShowing,\n environmentNames: value ? fetchEnvironmentNames(bridge) : null,\n hookSettings: value ? fetchHookSettings(store) : null,\n });\n });\n },\n [bridge, store],\n );\n\n const [currentContext, setContext] = useState<Context>({\n isModalShowing: false,\n setIsModalShowing,\n environmentNames: null,\n hookSettings: null,\n });\n\n return (\n <SettingsModalContext.Provider value={currentContext}>\n {children}\n </SettingsModalContext.Provider>\n );\n}\n\nexport {SettingsModalContext, SettingsModalContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo} from 'react';\nimport {SettingsModalContext} from './SettingsModalContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\nexport default function SettingsModalContextToggle(): React.Node {\n const {setIsModalShowing} = useContext(SettingsModalContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n const showFilterModal = useCallback(\n () => setIsModalShowing(true),\n [setIsModalShowing],\n );\n\n // Updating preferences while profiling is in progress could break things (e.g. filtering)\n // Explicitly disallow it for now.\n const isProfilingSubscription = useMemo(\n () => ({\n getCurrentValue: () => profilerStore.isProfilingBasedOnUserInput,\n subscribe: (callback: Function) => {\n profilerStore.addListener('isProfiling', callback);\n return () => profilerStore.removeListener('isProfiling', callback);\n },\n }),\n [profilerStore],\n );\n const isProfiling = useSubscription<boolean>(isProfilingSubscription);\n\n return (\n <Button\n disabled={isProfiling}\n onClick={showFilterModal}\n title=\"View settings\">\n <ButtonIcon type=\"settings\" />\n </Button>\n );\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport {createContext} from 'react';\n\nconst TreeFocusedContext: ReactContext<boolean> = createContext<boolean>(false);\n\nexport default TreeFocusedContext;\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 * @flow\n */\n\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\nimport * as React from 'react';\nimport {useContext, useMemo} from 'react';\nimport {TreeStateContext} from './TreeContext';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport TreeFocusedContext from './TreeFocusedContext';\nimport {StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\nimport styles from './SelectedTreeHighlight.css';\n\ntype Data = {\n startIndex: number,\n stopIndex: number,\n};\n\nexport default function SelectedTreeHighlight(_: {}): React.Node {\n const {lineHeight} = useContext(SettingsContext);\n const store = useContext(StoreContext);\n const treeFocused = useContext(TreeFocusedContext);\n const {ownerID, inspectedElementID} = useContext(TreeStateContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => {\n if (\n inspectedElementID === null ||\n store.isInsideCollapsedSubTree(inspectedElementID)\n ) {\n return null;\n }\n\n const element = store.getElementByID(inspectedElementID);\n if (\n element === null ||\n element.isCollapsed ||\n element.children.length === 0\n ) {\n return null;\n }\n\n const startIndex = store.getIndexOfElementID(element.children[0]);\n if (startIndex === null) {\n return null;\n }\n\n let stopIndex = null;\n let current: null | Element = element;\n while (current !== null) {\n if (current.isCollapsed || current.children.length === 0) {\n // We've found the last/deepest descendant.\n stopIndex = store.getIndexOfElementID(current.id);\n current = null;\n } else {\n const lastChildID = current.children[current.children.length - 1];\n current = store.getElementByID(lastChildID);\n }\n }\n\n if (stopIndex === null) {\n return null;\n }\n\n return {\n startIndex,\n stopIndex,\n };\n },\n subscribe: (callback: Function) => {\n store.addListener('mutated', callback);\n return () => {\n store.removeListener('mutated', callback);\n };\n },\n }),\n [inspectedElementID, store],\n );\n const data = useSubscription<Data | null>(subscription);\n\n if (ownerID !== null) {\n return null;\n }\n\n if (data === null) {\n return null;\n }\n\n const {startIndex, stopIndex} = data;\n\n return (\n <div\n className={treeFocused ? styles.Active : styles.Inactive}\n style={{\n position: 'absolute',\n top: `${startIndex * lineHeight}px`,\n height: `${(stopIndex + 1 - startIndex) * lineHeight}px`,\n }}\n />\n );\n}\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 * @flow\n */\n\nexport default class TimeoutError extends Error {\n constructor(message: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TimeoutError);\n }\n\n this.name = 'TimeoutError';\n }\n}\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 * @flow\n */\n\nexport default class ElementPollingCancellationError extends Error {\n constructor() {\n super();\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ElementPollingCancellationError);\n }\n\n this.name = 'ElementPollingCancellationError';\n }\n}\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 * @flow\n */\n\nimport {hydrate, fillInPath} from 'react-devtools-shared/src/hydration';\nimport {backendToFrontendSerializedElementMapper} from 'react-devtools-shared/src/utils';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport TimeoutError from 'react-devtools-shared/src/errors/TimeoutError';\nimport ElementPollingCancellationError from 'react-devtools-shared/src/errors/ElementPollingCancellationError';\n\nimport type {\n InspectedElement as InspectedElementBackend,\n InspectedElementPayload,\n} from 'react-devtools-shared/src/backend/types';\nimport type {\n BackendEvents,\n FrontendBridge,\n} from 'react-devtools-shared/src/bridge';\nimport type {\n DehydratedData,\n InspectedElement as InspectedElementFrontend,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {InspectedElementPath} from 'react-devtools-shared/src/frontend/types';\n\nexport function clearErrorsAndWarnings({\n bridge,\n store,\n}: {\n bridge: FrontendBridge,\n store: Store,\n}): void {\n store.rootIDToRendererID.forEach(rendererID => {\n bridge.send('clearErrorsAndWarnings', {rendererID});\n });\n}\n\nexport function clearErrorsForElement({\n bridge,\n id,\n rendererID,\n}: {\n bridge: FrontendBridge,\n id: number,\n rendererID: number,\n}): void {\n bridge.send('clearErrorsForElementID', {\n rendererID,\n id,\n });\n}\n\nexport function clearWarningsForElement({\n bridge,\n id,\n rendererID,\n}: {\n bridge: FrontendBridge,\n id: number,\n rendererID: number,\n}): void {\n bridge.send('clearWarningsForElementID', {\n rendererID,\n id,\n });\n}\n\nexport function copyInspectedElementPath({\n bridge,\n id,\n path,\n rendererID,\n}: {\n bridge: FrontendBridge,\n id: number,\n path: Array<string | number>,\n rendererID: number,\n}): void {\n bridge.send('copyElementPath', {\n id,\n path,\n rendererID,\n });\n}\n\nexport function inspectElement(\n bridge: FrontendBridge,\n forceFullData: boolean,\n id: number,\n path: InspectedElementPath | null,\n rendererID: number,\n shouldListenToPauseEvents: boolean = false,\n): Promise<InspectedElementPayload> {\n const requestID = requestCounter++;\n const promise = getPromiseForRequestID<InspectedElementPayload>(\n requestID,\n 'inspectedElement',\n bridge,\n `Timed out while inspecting element ${id}.`,\n shouldListenToPauseEvents,\n );\n\n bridge.send('inspectElement', {\n forceFullData,\n id,\n path,\n rendererID,\n requestID,\n });\n\n return promise;\n}\n\nlet storeAsGlobalCount = 0;\n\nexport function storeAsGlobal({\n bridge,\n id,\n path,\n rendererID,\n}: {\n bridge: FrontendBridge,\n id: number,\n path: Array<string | number>,\n rendererID: number,\n}): void {\n bridge.send('storeAsGlobal', {\n count: storeAsGlobalCount++,\n id,\n path,\n rendererID,\n });\n}\n\nconst TIMEOUT_DELAY = 10_000;\n\nlet requestCounter = 0;\n\nfunction getPromiseForRequestID<T>(\n requestID: number,\n eventType: $Keys<BackendEvents>,\n bridge: FrontendBridge,\n timeoutMessage: string,\n shouldListenToPauseEvents: boolean = false,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const cleanup = () => {\n bridge.removeListener(eventType, onInspectedElement);\n bridge.removeListener('shutdown', onShutdown);\n\n if (shouldListenToPauseEvents) {\n bridge.removeListener('pauseElementPolling', onDisconnect);\n }\n\n clearTimeout(timeoutID);\n };\n\n const onShutdown = () => {\n cleanup();\n reject(\n new Error(\n 'Failed to inspect element. Try again or restart React DevTools.',\n ),\n );\n };\n\n const onDisconnect = () => {\n cleanup();\n reject(new ElementPollingCancellationError());\n };\n\n const onInspectedElement = (data: any) => {\n if (data.responseID === requestID) {\n cleanup();\n resolve((data: T));\n }\n };\n\n const onTimeout = () => {\n cleanup();\n reject(new TimeoutError(timeoutMessage));\n };\n\n bridge.addListener(eventType, onInspectedElement);\n bridge.addListener('shutdown', onShutdown);\n\n if (shouldListenToPauseEvents) {\n bridge.addListener('pauseElementPolling', onDisconnect);\n }\n\n const timeoutID = setTimeout(onTimeout, TIMEOUT_DELAY);\n });\n}\n\nexport function cloneInspectedElementWithPath(\n inspectedElement: InspectedElementFrontend,\n path: Array<string | number>,\n value: Object,\n): InspectedElementFrontend {\n const hydratedValue = hydrateHelper(value, path);\n const clonedInspectedElement = {...inspectedElement};\n\n fillInPath(clonedInspectedElement, value, path, hydratedValue);\n\n return clonedInspectedElement;\n}\n\nexport function convertInspectedElementBackendToFrontend(\n inspectedElementBackend: InspectedElementBackend,\n): InspectedElementFrontend {\n const {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n canEditHooks,\n canEditHooksAndDeletePaths,\n canEditHooksAndRenamePaths,\n canToggleError,\n isErrored,\n canToggleSuspense,\n canViewSource,\n hasLegacyContext,\n id,\n type,\n owners,\n source,\n context,\n hooks,\n plugins,\n props,\n rendererPackageName,\n rendererVersion,\n rootType,\n state,\n key,\n errors,\n warnings,\n } = inspectedElementBackend;\n\n const inspectedElement: InspectedElementFrontend = {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n canEditHooks,\n canEditHooksAndDeletePaths,\n canEditHooksAndRenamePaths,\n canToggleError,\n isErrored,\n canToggleSuspense,\n canViewSource,\n hasLegacyContext,\n id,\n key,\n plugins,\n rendererPackageName,\n rendererVersion,\n rootType,\n // Previous backend implementations (<= 5.0.1) have a different interface for Source, with fileName.\n // This gates the source features for only compatible backends: >= 5.0.2\n source: source && source.sourceURL ? source : null,\n type,\n owners:\n owners === null\n ? null\n : owners.map(backendToFrontendSerializedElementMapper),\n context: hydrateHelper(context),\n hooks: hydrateHelper(hooks),\n props: hydrateHelper(props),\n state: hydrateHelper(state),\n errors,\n warnings,\n };\n\n return inspectedElement;\n}\n\nexport function hydrateHelper(\n dehydratedData: DehydratedData | null,\n path: ?InspectedElementPath,\n): Object | null {\n if (dehydratedData !== null) {\n const {cleaned, data, unserializable} = dehydratedData;\n\n if (path) {\n const {length} = path;\n if (length > 0) {\n // Hydration helper requires full paths, but inspection dehydrates with relative paths.\n // In that event it's important that we adjust the \"cleaned\" paths to match.\n return hydrate(\n data,\n cleaned.map(cleanedPath => cleanedPath.slice(length)),\n unserializable.map(unserializablePath =>\n unserializablePath.slice(length),\n ),\n );\n }\n }\n\n return hydrate(data, cleaned, unserializable);\n } else {\n return null;\n }\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n Fragment,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {TreeDispatcherContext, TreeStateContext} from './TreeContext';\nimport Icon from '../Icon';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport {BridgeContext, StoreContext, OptionsContext} from '../context';\nimport Element from './Element';\nimport InspectHostNodesToggle from './InspectHostNodesToggle';\nimport OwnersStack from './OwnersStack';\nimport ComponentSearchInput from './ComponentSearchInput';\nimport SettingsModalContextToggle from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle';\nimport SelectedTreeHighlight from './SelectedTreeHighlight';\nimport TreeFocusedContext from './TreeFocusedContext';\nimport {useHighlightHostInstance, useSubscription} from '../hooks';\nimport {clearErrorsAndWarnings as clearErrorsAndWarningsAPI} from 'react-devtools-shared/src/backendAPI';\nimport styles from './Tree.css';\nimport ButtonIcon from '../ButtonIcon';\nimport Button from '../Button';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\nimport {useExtensionComponentsPanelVisibility} from 'react-devtools-shared/src/frontend/hooks/useExtensionComponentsPanelVisibility';\n\n// Never indent more than this number of pixels (even if we have the room).\nconst DEFAULT_INDENTATION_SIZE = 12;\n\nexport type ItemData = {\n isNavigatingWithKeyboard: boolean,\n onElementMouseEnter: (id: number) => void,\n treeFocused: boolean,\n};\n\nfunction calculateInitialScrollOffset(\n inspectedElementIndex: number | null,\n elementHeight: number,\n): number | void {\n if (inspectedElementIndex === null) {\n return undefined;\n }\n\n if (inspectedElementIndex < 3) {\n return undefined;\n }\n\n // Make 3 elements on top of the inspected one visible\n return (inspectedElementIndex - 3) * elementHeight;\n}\n\nexport default function Tree(): React.Node {\n const dispatch = useContext(TreeDispatcherContext);\n const {\n numElements,\n ownerID,\n searchIndex,\n searchResults,\n inspectedElementID,\n inspectedElementIndex,\n } = useContext(TreeStateContext);\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {hideSettings} = useContext(OptionsContext);\n const {lineHeight} = useContext(SettingsContext);\n\n const [isNavigatingWithKeyboard, setIsNavigatingWithKeyboard] =\n useState(false);\n const {highlightHostInstance, clearHighlightHostInstance} =\n useHighlightHostInstance();\n const [treeFocused, setTreeFocused] = useState<boolean>(false);\n const componentsPanelVisible = useExtensionComponentsPanelVisibility(bridge);\n\n const treeRef = useRef<HTMLDivElement | null>(null);\n const focusTargetRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef(null);\n\n useEffect(() => {\n if (!componentsPanelVisible) {\n return;\n }\n\n if (listRef.current != null && inspectedElementIndex !== null) {\n listRef.current.scrollToItem(inspectedElementIndex, 'smart');\n }\n }, [inspectedElementIndex, componentsPanelVisible]);\n\n // Picking an element in the inspector should put focus into the tree.\n // If possible, navigation works right after picking a node.\n // NOTE: This is not guaranteed to work, because browser extension panels are hosted inside an iframe.\n useEffect(() => {\n function handleStopInspectingHost(didSelectNode: boolean) {\n if (didSelectNode && focusTargetRef.current !== null) {\n focusTargetRef.current.focus();\n logEvent({\n event_name: 'select-element',\n metadata: {source: 'inspector'},\n });\n }\n }\n bridge.addListener('stopInspectingHost', handleStopInspectingHost);\n return () =>\n bridge.removeListener('stopInspectingHost', handleStopInspectingHost);\n }, [bridge]);\n\n // Navigate the tree with up/down arrow keys.\n useEffect(() => {\n if (treeRef.current === null) {\n return () => {};\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if ((event: any).target.tagName === 'INPUT' || event.defaultPrevented) {\n return;\n }\n\n let element;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (event.altKey) {\n dispatch({type: 'SELECT_NEXT_SIBLING_IN_TREE'});\n } else {\n dispatch({type: 'SELECT_NEXT_ELEMENT_IN_TREE'});\n }\n break;\n case 'ArrowLeft':\n event.preventDefault();\n element =\n inspectedElementID !== null\n ? store.getElementByID(inspectedElementID)\n : null;\n if (element !== null) {\n if (event.altKey) {\n if (element.ownerID !== null) {\n dispatch({type: 'SELECT_OWNER_LIST_PREVIOUS_ELEMENT_IN_TREE'});\n }\n } else {\n if (element.children.length > 0 && !element.isCollapsed) {\n store.toggleIsCollapsed(element.id, true);\n } else {\n dispatch({type: 'SELECT_PARENT_ELEMENT_IN_TREE'});\n }\n }\n }\n break;\n case 'ArrowRight':\n event.preventDefault();\n element =\n inspectedElementID !== null\n ? store.getElementByID(inspectedElementID)\n : null;\n if (element !== null) {\n if (event.altKey) {\n dispatch({type: 'SELECT_OWNER_LIST_NEXT_ELEMENT_IN_TREE'});\n } else {\n if (element.children.length > 0 && element.isCollapsed) {\n store.toggleIsCollapsed(element.id, false);\n } else {\n dispatch({type: 'SELECT_CHILD_ELEMENT_IN_TREE'});\n }\n }\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (event.altKey) {\n dispatch({type: 'SELECT_PREVIOUS_SIBLING_IN_TREE'});\n } else {\n dispatch({type: 'SELECT_PREVIOUS_ELEMENT_IN_TREE'});\n }\n break;\n default:\n return;\n }\n setIsNavigatingWithKeyboard(true);\n };\n\n // We used to listen to at the document level for this event.\n // That allowed us to listen to up/down arrow key events while another section\n // of DevTools (like the search input) was focused.\n // This was a minor UX positive.\n //\n // (We had to use ownerDocument rather than document for this, because the\n // DevTools extension renders the Components and Profiler tabs into portals.)\n //\n // This approach caused a problem though: it meant that a react-devtools-inline\n // instance could steal (and prevent/block) keyboard events from other JavaScript\n // on the page which could even include other react-devtools-inline instances.\n // This is a potential major UX negative.\n //\n // Given the above trade offs, we now listen on the root of the Tree itself.\n const container = treeRef.current;\n container.addEventListener('keydown', handleKeyDown);\n\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, [dispatch, inspectedElementID, store]);\n\n // Focus management.\n const handleBlur = useCallback(() => setTreeFocused(false), []);\n const handleFocus = useCallback(() => setTreeFocused(true), []);\n\n const handleKeyPress = useCallback(\n (event: $FlowFixMe) => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (inspectedElementID !== null) {\n dispatch({type: 'SELECT_OWNER', payload: inspectedElementID});\n }\n break;\n default:\n break;\n }\n },\n [dispatch, inspectedElementID],\n );\n\n // If we switch the selected element while using the keyboard,\n // start highlighting it in the DOM instead of the last hovered node.\n const searchRef = useRef({searchIndex, searchResults});\n useEffect(() => {\n let didSelectNewSearchResult = false;\n if (\n searchRef.current.searchIndex !== searchIndex ||\n searchRef.current.searchResults !== searchResults\n ) {\n searchRef.current.searchIndex = searchIndex;\n searchRef.current.searchResults = searchResults;\n didSelectNewSearchResult = true;\n }\n if (isNavigatingWithKeyboard || didSelectNewSearchResult) {\n if (inspectedElementID !== null) {\n highlightHostInstance(inspectedElementID);\n } else {\n clearHighlightHostInstance();\n }\n }\n }, [\n bridge,\n isNavigatingWithKeyboard,\n highlightHostInstance,\n searchIndex,\n searchResults,\n inspectedElementID,\n ]);\n\n // Highlight last hovered element.\n const handleElementMouseEnter = useCallback(\n (id: $FlowFixMe) => {\n // Ignore hover while we're navigating with keyboard.\n // This avoids flicker from the hovered nodes under the mouse.\n if (!isNavigatingWithKeyboard) {\n highlightHostInstance(id);\n }\n },\n [isNavigatingWithKeyboard, highlightHostInstance],\n );\n\n const handleMouseMove = useCallback(() => {\n // We started using the mouse again.\n // This will enable hover styles in individual rows.\n setIsNavigatingWithKeyboard(false);\n }, []);\n\n const handleMouseLeave = clearHighlightHostInstance;\n\n // Let react-window know to re-render any time the underlying tree data changes.\n // This includes the owner context, since it controls a filtered view of the tree.\n const itemData = useMemo<ItemData>(\n () => ({\n isNavigatingWithKeyboard,\n onElementMouseEnter: handleElementMouseEnter,\n treeFocused,\n }),\n [isNavigatingWithKeyboard, handleElementMouseEnter, treeFocused],\n );\n\n const itemKey = useCallback(\n (index: number) => store.getElementIDAtIndex(index),\n [store],\n );\n\n const handlePreviousErrorOrWarningClick = React.useCallback(() => {\n dispatch({type: 'SELECT_PREVIOUS_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE'});\n }, []);\n\n const handleNextErrorOrWarningClick = React.useCallback(() => {\n dispatch({type: 'SELECT_NEXT_ELEMENT_WITH_ERROR_OR_WARNING_IN_TREE'});\n }, []);\n\n const errorsOrWarningsSubscription = useMemo(\n () => ({\n getCurrentValue: () => ({\n errors: store.componentWithErrorCount,\n warnings: store.componentWithWarningCount,\n }),\n subscribe: (callback: Function) => {\n store.addListener('mutated', callback);\n return () => store.removeListener('mutated', callback);\n },\n }),\n [store],\n );\n const {errors, warnings} = useSubscription(errorsOrWarningsSubscription);\n\n const clearErrorsAndWarnings = () => {\n clearErrorsAndWarningsAPI({bridge, store});\n };\n\n const zeroElementsNotice = (\n <div className={styles.ZeroElementsNotice}>\n <p>Loading React Element Tree...</p>\n <p>\n If this seems stuck, please follow the{' '}\n <a\n className={styles.Link}\n href=\"https://github.com/facebook/react/blob/main/packages/react-devtools/README.md#the-react-tab-shows-no-components\"\n target=\"_blank\">\n troubleshooting instructions\n </a>\n .\n </p>\n </div>\n );\n\n return (\n <TreeFocusedContext.Provider value={treeFocused}>\n <div className={styles.Tree} ref={treeRef}>\n <div className={styles.SearchInput}>\n {store.supportsClickToInspect && (\n <Fragment>\n <InspectHostNodesToggle />\n <div className={styles.VRule} />\n </Fragment>\n )}\n <Suspense fallback={<Loading />}>\n {ownerID !== null ? <OwnersStack /> : <ComponentSearchInput />}\n </Suspense>\n {ownerID === null && (errors > 0 || warnings > 0) && (\n <React.Fragment>\n <div className={styles.VRule} />\n {errors > 0 && (\n <div className={styles.IconAndCount}>\n <Icon className={styles.ErrorIcon} type=\"error\" />\n {errors}\n </div>\n )}\n {warnings > 0 && (\n <div className={styles.IconAndCount}>\n <Icon className={styles.WarningIcon} type=\"warning\" />\n {warnings}\n </div>\n )}\n <Button\n onClick={handlePreviousErrorOrWarningClick}\n title=\"Scroll to previous error or warning\">\n <ButtonIcon type=\"up\" />\n </Button>\n <Button\n onClick={handleNextErrorOrWarningClick}\n title=\"Scroll to next error or warning\">\n <ButtonIcon type=\"down\" />\n </Button>\n <Button\n onClick={clearErrorsAndWarnings}\n title=\"Clear all errors and warnings\">\n <ButtonIcon type=\"clear\" />\n </Button>\n </React.Fragment>\n )}\n {!hideSettings && (\n <Fragment>\n <div className={styles.VRule} />\n <SettingsModalContextToggle />\n </Fragment>\n )}\n </div>\n {numElements === 0 ? (\n zeroElementsNotice\n ) : (\n <div\n className={styles.AutoSizerWrapper}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onKeyPress={handleKeyPress}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n ref={focusTargetRef}\n tabIndex={0}>\n <AutoSizer>\n {({height, width}) => (\n <FixedSizeList\n className={styles.List}\n height={height}\n initialScrollOffset={calculateInitialScrollOffset(\n inspectedElementIndex,\n lineHeight,\n )}\n innerElementType={InnerElementType}\n itemCount={numElements}\n itemData={itemData}\n itemKey={itemKey}\n itemSize={lineHeight}\n ref={listRef}\n width={width}>\n {Element}\n </FixedSizeList>\n )}\n </AutoSizer>\n </div>\n )}\n </div>\n </TreeFocusedContext.Provider>\n );\n}\n\n// Indentation size can be adjusted but child width is fixed.\n// We need to adjust indentations so the widest child can fit without overflowing.\n// Sometimes the widest child is also the deepest in the tree:\n// ┏----------------------┓\n// ┆ <Foo> ┆\n// ┆ ••••<Foobar> ┆\n// ┆ ••••••••<Baz> ┆\n// ┗----------------------┛\n//\n// But this is not always the case.\n// Even with the above example, a change in indentation may change the overall widest child:\n// ┏----------------------┓\n// ┆ <Foo> ┆\n// ┆ ••<Foobar> ┆\n// ┆ ••••<Baz> ┆\n// ┗----------------------┛\n//\n// In extreme cases this difference can be important:\n// ┏----------------------┓\n// ┆ <ReallyLongName> ┆\n// ┆ ••<Foo> ┆\n// ┆ ••••<Bar> ┆\n// ┆ ••••••<Baz> ┆\n// ┆ ••••••••<Qux> ┆\n// ┗----------------------┛\n//\n// In the above example, the current indentation is fine,\n// but if we naively assumed that the widest element is also the deepest element,\n// we would end up compressing the indentation unnecessarily:\n// ┏----------------------┓\n// ┆ <ReallyLongName> ┆\n// ┆ •<Foo> ┆\n// ┆ ••<Bar> ┆\n// ┆ •••<Baz> ┆\n// ┆ ••••<Qux> ┆\n// ┗----------------------┛\n//\n// The way we deal with this is to compute the max indentation size that can fit each child,\n// given the child's fixed width and depth within the tree.\n// Then we take the smallest of these indentation sizes...\nfunction updateIndentationSizeVar(\n innerDiv: HTMLDivElement,\n cachedChildWidths: WeakMap<HTMLElement, number>,\n indentationSizeRef: {current: number},\n prevListWidthRef: {current: number},\n): void {\n const list = ((innerDiv.parentElement: any): HTMLDivElement);\n const listWidth = list.clientWidth;\n\n // Skip measurements when the Components panel is hidden.\n if (listWidth === 0) {\n return;\n }\n\n // Reset the max indentation size if the width of the tree has increased.\n if (listWidth > prevListWidthRef.current) {\n indentationSizeRef.current = DEFAULT_INDENTATION_SIZE;\n }\n prevListWidthRef.current = listWidth;\n\n let maxIndentationSize: number = indentationSizeRef.current;\n\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const child of innerDiv.children) {\n const depth = parseInt(child.getAttribute('data-depth'), 10) || 0;\n\n let childWidth: number = 0;\n\n const cachedChildWidth = cachedChildWidths.get(child);\n if (cachedChildWidth != null) {\n childWidth = cachedChildWidth;\n } else {\n const {firstElementChild} = child;\n\n // Skip over e.g. the guideline element\n if (firstElementChild != null) {\n childWidth = firstElementChild.clientWidth;\n cachedChildWidths.set(child, childWidth);\n }\n }\n\n const remainingWidth = Math.max(0, listWidth - childWidth);\n\n maxIndentationSize = Math.min(maxIndentationSize, remainingWidth / depth);\n }\n\n indentationSizeRef.current = maxIndentationSize;\n\n list.style.setProperty('--indentation-size', `${maxIndentationSize}px`);\n}\n\n// $FlowFixMe[missing-local-annot]\nfunction InnerElementType({children, style}) {\n const {ownerID} = useContext(TreeStateContext);\n\n const cachedChildWidths = useMemo<WeakMap<HTMLElement, number>>(\n () => new WeakMap(),\n [],\n );\n\n // This ref tracks the current indentation size.\n // We decrease indentation to fit wider/deeper trees.\n // We intentionally do not increase it again afterward, to avoid the perception of content \"jumping\"\n // e.g. clicking to toggle/collapse a row might otherwise jump horizontally beneath your cursor,\n // e.g. scrolling a wide row off screen could cause narrower rows to jump to the right some.\n //\n // There are two exceptions for this:\n // 1. The first is when the width of the tree increases.\n // The user may have resized the window specifically to make more room for DevTools.\n // In either case, this should reset our max indentation size logic.\n // 2. The second is when the user enters or exits an owner tree.\n const indentationSizeRef = useRef<number>(DEFAULT_INDENTATION_SIZE);\n const prevListWidthRef = useRef<number>(0);\n const prevOwnerIDRef = useRef<number | null>(ownerID);\n const divRef = useRef<HTMLDivElement | null>(null);\n\n // We shouldn't retain this width across different conceptual trees though,\n // so when the user opens the \"owners tree\" view, we should discard the previous width.\n if (ownerID !== prevOwnerIDRef.current) {\n prevOwnerIDRef.current = ownerID;\n indentationSizeRef.current = DEFAULT_INDENTATION_SIZE;\n }\n\n // When we render new content, measure to see if we need to shrink indentation to fit it.\n useEffect(() => {\n if (divRef.current !== null) {\n updateIndentationSizeVar(\n divRef.current,\n cachedChildWidths,\n indentationSizeRef,\n prevListWidthRef,\n );\n }\n });\n\n // This style override enables the background color to fill the full visible width,\n // when combined with the CSS tweaks in Element.\n // A lot of options were considered; this seemed the one that requires the least code.\n // See https://github.com/bvaughn/react-devtools-experimental/issues/9\n return (\n <div\n className={styles.InnerElementType}\n ref={divRef}\n style={{...style, pointerEvents: null}}>\n <SelectedTreeHighlight />\n {children}\n </div>\n );\n}\n\nfunction Loading() {\n return <div className={styles.Loading}>Loading...</div>;\n}\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 * @flow\n */\n\nimport {useState, useEffect} from 'react';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\n// Events that are prefixed with `extension` will only be emitted for the browser extension implementation.\n// For other implementations, this hook will just return constant `true` value.\nexport function useExtensionComponentsPanelVisibility(\n bridge: FrontendBridge,\n): boolean {\n const [isVisible, setIsVisible] = useState(true);\n\n useEffect(() => {\n function onPanelShown() {\n setIsVisible(true);\n }\n function onPanelHidden() {\n setIsVisible(false);\n }\n\n bridge.addListener('extensionComponentsPanelShown', onPanelShown);\n bridge.addListener('extensionComponentsPanelHidden', onPanelHidden);\n\n return () => {\n bridge.removeListener('extensionComponentsPanelShown', onPanelShown);\n bridge.removeListener('extensionComponentsPanelHidden', onPanelHidden);\n };\n }, [bridge]);\n\n return isVisible;\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './shared.css';\n\ntype Props = {\n callStack: string | null,\n children: React$Node,\n componentStack: string | null,\n errorMessage: string | null,\n};\n\nexport default function UnsupportedBridgeOperationView({\n callStack,\n children,\n componentStack,\n errorMessage,\n}: Props): React.Node {\n return (\n <div className={styles.ErrorBoundary}>\n {children}\n <div className={styles.ErrorInfo}>\n <div className={styles.HeaderRow}>\n <div className={styles.ErrorHeader}>\n {errorMessage || 'Bridge protocol mismatch'}\n </div>\n </div>\n <div className={styles.InfoBox}>\n An incompatible version of <code>react-devtools-core</code> has been\n embedded in a renderer like React Native. To fix this, update the{' '}\n <code>react-devtools-core</code> package within the React Native\n application, or downgrade the <code>react-devtools</code> package you\n use to open the DevTools UI.\n </div>\n {!!callStack && (\n <div className={styles.ErrorStack}>\n The error was thrown {callStack.trim()}\n </div>\n )}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport styles from './shared.css';\n\ntype Props = {\n callStack: string | null,\n children: React$Node,\n componentStack: string | null,\n dismissError: Function | null,\n errorMessage: string | null,\n};\n\nexport default function ErrorView({\n callStack,\n children,\n componentStack,\n dismissError = null,\n errorMessage,\n}: Props): React.Node {\n return (\n <div className={styles.ErrorBoundary}>\n {children}\n <div className={styles.ErrorInfo}>\n <div className={styles.HeaderRow}>\n <div className={styles.ErrorHeader}>\n Uncaught Error: {errorMessage || ''}\n </div>\n {dismissError !== null && (\n <Button className={styles.CloseButton} onClick={dismissError}>\n Dismiss\n <ButtonIcon className={styles.CloseButtonIcon} type=\"close\" />\n </Button>\n )}\n </div>\n {!!callStack && (\n <div className={styles.ErrorStack}>\n The error was thrown {callStack.trim()}\n </div>\n )}\n {!!componentStack && (\n <div className={styles.ErrorStack}>\n The error occurred {componentStack.trim()}\n </div>\n )}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './LoadingAnimation.css';\n\ntype Props = {\n className?: string,\n};\n\nexport default function LoadingAnimation({className = ''}: Props): React.Node {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.Icon} ${className}`}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 100 100\">\n <path d=\"M0 0h100v100H0z\" fill=\"none\" />\n <circle fill=\"currentColor\" stroke=\"none\" cx=\"20\" cy=\"50\" r=\"10\">\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n values=\"0;1;0\"\n repeatCount=\"indefinite\"\n begin=\"0.1\"\n />\n </circle>\n <circle fill=\"currentColor\" stroke=\"none\" cx=\"50\" cy=\"50\" r=\"10\">\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n values=\"0;1;0\"\n repeatCount=\"indefinite\"\n begin=\"0.2\"\n />\n </circle>\n <circle fill=\"currentColor\" stroke=\"none\" cx=\"80\" cy=\"50\" r=\"10\">\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n values=\"0;1;0\"\n repeatCount=\"indefinite\"\n begin=\"0.3\"\n />\n </circle>\n </svg>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport LoadingAnimation from 'react-devtools-shared/src/devtools/views/Components/LoadingAnimation';\nimport styles from './shared.css';\n\nexport default function SearchingGitHubIssues(): React.Node {\n return (\n <div className={styles.GitHubLinkRow}>\n <LoadingAnimation className={styles.LoadingIcon} />\n Searching GitHub for reports of this error...\n </div>\n );\n}\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 * @flow\n */\n\nexport type GitHubIssue = {\n title: string,\n url: string,\n};\n\nconst GITHUB_ISSUES_API = 'https://api.github.com/search/issues';\n\nexport function searchGitHubIssuesURL(message: string): string {\n // Remove Fiber IDs from error message (as those will be unique).\n message = message.replace(/\"[0-9]+\"/g, '');\n\n const filters = [\n 'in:title',\n 'is:issue',\n 'is:open',\n 'is:public',\n 'label:\"Component: Developer Tools\"',\n 'repo:facebook/react',\n ];\n\n return (\n GITHUB_ISSUES_API +\n '?q=' +\n encodeURIComponent(message) +\n '%20' +\n filters.map(encodeURIComponent).join('%20')\n );\n}\n\nexport async function searchGitHubIssues(\n message: string,\n): Promise<GitHubIssue | null> {\n const response = await fetch(searchGitHubIssuesURL(message));\n const data = await response.json();\n if (data.items.length > 0) {\n const item = data.items[0];\n return {\n title: item.title,\n url: item.html_url,\n };\n } else {\n return null;\n }\n}\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 * @flow\n */\n\nimport type {Wakeable} from 'shared/ReactTypes';\nimport type {GitHubIssue} from './githubAPI';\n\nimport {unstable_getCacheForType as getCacheForType} from 'react';\nimport {searchGitHubIssues} from './githubAPI';\n\nconst API_TIMEOUT = 3000;\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\ntype PendingRecord = {\n status: 0,\n value: Wakeable,\n};\n\ntype ResolvedRecord<T> = {\n status: 1,\n value: T,\n};\n\ntype RejectedRecord = {\n status: 2,\n value: null,\n};\n\ntype Record<T> = PendingRecord | ResolvedRecord<T> | RejectedRecord;\n\nfunction readRecord<T>(record: Record<T>): ResolvedRecord<T> | RejectedRecord {\n if (record.status === Resolved) {\n // This is just a type refinement.\n return record;\n } else if (record.status === Rejected) {\n // This is just a type refinement.\n return record;\n } else {\n throw record.value;\n }\n}\n\ntype GitHubIssueMap = Map<string, Record<GitHubIssue>>;\n\nfunction createMap(): GitHubIssueMap {\n return new Map();\n}\n\nfunction getRecordMap(): Map<string, Record<GitHubIssue>> {\n return getCacheForType(createMap);\n}\n\nexport function findGitHubIssue(errorMessage: string): GitHubIssue | null {\n errorMessage = normalizeErrorMessage(errorMessage);\n\n const map = getRecordMap();\n let record = map.get(errorMessage);\n\n if (!record) {\n const callbacks = new Set<() => mixed>();\n const wakeable: Wakeable = {\n then(callback: () => mixed) {\n callbacks.add(callback);\n },\n\n // Optional property used by Timeline:\n displayName: `Searching GitHub issues for error \"${errorMessage}\"`,\n };\n const wake = () => {\n // This assumes they won't throw.\n callbacks.forEach(callback => callback());\n callbacks.clear();\n };\n const newRecord: Record<GitHubIssue> = (record = {\n status: Pending,\n value: wakeable,\n });\n\n let didTimeout = false;\n\n searchGitHubIssues(errorMessage)\n .then(maybeItem => {\n if (didTimeout) {\n return;\n }\n\n if (maybeItem) {\n const resolvedRecord =\n ((newRecord: any): ResolvedRecord<GitHubIssue>);\n resolvedRecord.status = Resolved;\n resolvedRecord.value = maybeItem;\n } else {\n const notFoundRecord = ((newRecord: any): RejectedRecord);\n notFoundRecord.status = Rejected;\n notFoundRecord.value = null;\n }\n\n wake();\n })\n .catch(error => {\n const thrownRecord = ((newRecord: any): RejectedRecord);\n thrownRecord.status = Rejected;\n thrownRecord.value = null;\n\n wake();\n });\n\n // Only wait a little while for GitHub results before showing a fallback.\n setTimeout(() => {\n didTimeout = true;\n\n const timedoutRecord = ((newRecord: any): RejectedRecord);\n timedoutRecord.status = Rejected;\n timedoutRecord.value = null;\n\n wake();\n }, API_TIMEOUT);\n\n map.set(errorMessage, record);\n }\n\n const response = readRecord(record).value;\n return response;\n}\n\nfunction normalizeErrorMessage(errorMessage: string): string {\n // Remove Fiber IDs from error message (as those will be unique).\n errorMessage = errorMessage.replace(/\"[0-9]+\"/, '');\n return errorMessage;\n}\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 * @flow\n */\n\nimport type {GitHubIssue} from './githubAPI';\n\nimport * as React from 'react';\nimport Icon from '../Icon';\nimport styles from './shared.css';\n\nexport default function UpdateExistingIssue({\n gitHubIssue,\n}: {\n gitHubIssue: GitHubIssue,\n}): React.Node {\n const {title, url} = gitHubIssue;\n return (\n <div className={styles.GitHubLinkRow}>\n <Icon className={styles.ReportIcon} type=\"bug\" />\n <div className={styles.UpdateExistingIssuePrompt}>\n Update existing issue:\n </div>\n <a\n className={styles.ReportLink}\n href={url}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n title=\"Report bug\">\n {title}\n </a>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport Icon from '../Icon';\nimport {searchGitHubIssuesURL} from './githubAPI';\nimport styles from './shared.css';\n\nconst LABELS = [\n 'Component: Developer Tools',\n 'Type: Bug',\n 'Status: Unconfirmed',\n];\n\n// This must match the filename in \".github/ISSUE_TEMPLATE/\"\nconst TEMPLATE = 'devtools_bug_report.yml';\n\ntype Props = {\n callStack: string | null,\n componentStack: string | null,\n errorMessage: string | null,\n};\n\nexport default function ReportNewIssue({\n callStack,\n componentStack,\n errorMessage,\n}: Props): React.Node {\n let bugURL = process.env.GITHUB_URL;\n if (!bugURL) {\n return null;\n }\n\n const gitHubAPISearch =\n errorMessage !== null ? searchGitHubIssuesURL(errorMessage) : '(none)';\n\n const title = `[DevTools Bug] ${errorMessage || ''}`;\n\n const parameters = [\n `template=${TEMPLATE}`,\n `labels=${encodeURIComponent(LABELS.join(','))}`,\n `title=${encodeURIComponent(title)}`,\n `automated_package=${process.env.DEVTOOLS_PACKAGE || ''}`,\n `automated_version=${process.env.DEVTOOLS_VERSION || ''}`,\n `automated_error_message=${encodeURIComponent(errorMessage || '')}`,\n `automated_call_stack=${encodeURIComponent(callStack || '')}`,\n `automated_component_stack=${encodeURIComponent(componentStack || '')}`,\n `automated_github_query_string=${gitHubAPISearch}`,\n ];\n\n bugURL += `/issues/new?${parameters.join('&')}`;\n\n return (\n <div className={styles.GitHubLinkRow}>\n <Icon className={styles.ReportIcon} type=\"bug\" />\n <a\n className={styles.ReportLink}\n href={bugURL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n title=\"Report bug\">\n Report this issue\n </a>\n <div className={styles.ReproSteps}>\n (Please include steps on how to reproduce it and the components used.)\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {isInternalFacebookBuild} from 'react-devtools-feature-flags';\nimport {REACT_DEVTOOLS_WORKPLACE_URL} from 'react-devtools-shared/src/devtools/constants';\nimport Icon from '../Icon';\nimport styles from './shared.css';\n\nexport default function WorkplaceGroup(): React.Node {\n if (!isInternalFacebookBuild) {\n return null;\n }\n\n return (\n <div className={styles.WorkplaceGroupRow}>\n <Icon className={styles.ReportIcon} type=\"facebook\" />\n <a\n className={styles.ReportLink}\n href={REACT_DEVTOOLS_WORKPLACE_URL}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n title=\"Report bug\">\n Report this on Workplace\n </a>\n <div className={styles.FacebookOnly}>(Facebook employees only.)</div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {findGitHubIssue} from './cache';\nimport UpdateExistingIssue from './UpdateExistingIssue';\nimport ReportNewIssue from './ReportNewIssue';\nimport WorkplaceGroup from './WorkplaceGroup';\n\ntype Props = {\n callStack: string | null,\n componentStack: string | null,\n errorMessage: string | null,\n};\n\nexport default function SuspendingErrorView({\n callStack,\n componentStack,\n errorMessage,\n}: Props): React.Node {\n const maybeItem =\n errorMessage !== null ? findGitHubIssue(errorMessage) : null;\n\n let GitHubUI;\n if (maybeItem != null) {\n GitHubUI = <UpdateExistingIssue gitHubIssue={maybeItem} />;\n } else {\n GitHubUI = (\n <ReportNewIssue\n callStack={callStack}\n componentStack={componentStack}\n errorMessage={errorMessage}\n />\n );\n }\n\n return (\n <>\n {GitHubUI}\n <WorkplaceGroup />\n </>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport styles from './shared.css';\n\ntype Props = {\n callStack: string | null,\n children: React$Node,\n componentStack: string | null,\n dismissError: Function,\n errorMessage: string | null,\n};\n\nexport default function TimeoutView({\n callStack,\n children,\n componentStack,\n dismissError = null,\n errorMessage,\n}: Props): React.Node {\n return (\n <div className={styles.ErrorBoundary}>\n {children}\n <div className={styles.ErrorInfo}>\n <div className={styles.HeaderRow}>\n <div className={styles.TimeoutHeader}>\n {errorMessage || 'Timed out waiting'}\n </div>\n <Button className={styles.CloseButton} onClick={dismissError}>\n Retry\n <ButtonIcon className={styles.CloseButtonIcon} type=\"close\" />\n </Button>\n </div>\n {!!componentStack && (\n <div className={styles.TimeoutStack}>\n The timeout occurred {componentStack.trim()}\n </div>\n )}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './shared.css';\n\ntype Props = {\n callStack: string | null,\n children: React$Node,\n info: React$Node | null,\n componentStack: string | null,\n errorMessage: string,\n};\n\nexport default function CaughtErrorView({\n callStack,\n children,\n info,\n componentStack,\n errorMessage,\n}: Props): React.Node {\n return (\n <div className={styles.ErrorBoundary}>\n {children}\n <div className={styles.ErrorInfo}>\n <div className={styles.HeaderRow}>\n <div className={styles.ErrorHeader}>{errorMessage}</div>\n </div>\n {!!info && <div className={styles.InfoBox}>{info}</div>}\n {!!callStack && (\n <div className={styles.ErrorStack}>\n The error was thrown {callStack.trim()}\n </div>\n )}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nexport default class UserError extends Error {\n constructor(message: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UserError);\n }\n\n this.name = 'UserError';\n }\n}\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 * @flow\n */\n\nexport default class UnknownHookError extends Error {\n constructor(message: string) {\n super(message);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnknownHookError);\n }\n\n this.name = 'UnknownHookError';\n }\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Component, Suspense} from 'react';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport UnsupportedBridgeOperationView from './UnsupportedBridgeOperationView';\nimport ErrorView from './ErrorView';\nimport SearchingGitHubIssues from './SearchingGitHubIssues';\nimport SuspendingErrorView from './SuspendingErrorView';\nimport TimeoutView from './TimeoutView';\nimport CaughtErrorView from './CaughtErrorView';\nimport UnsupportedBridgeOperationError from 'react-devtools-shared/src/UnsupportedBridgeOperationError';\nimport TimeoutError from 'react-devtools-shared/src/errors/TimeoutError';\nimport UserError from 'react-devtools-shared/src/errors/UserError';\nimport UnknownHookError from 'react-devtools-shared/src/errors/UnknownHookError';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\n\ntype Props = {\n children: React$Node,\n canDismiss?: boolean,\n onBeforeDismissCallback?: () => void,\n store?: Store,\n};\n\ntype State = {\n callStack: string | null,\n canDismiss: boolean,\n componentStack: string | null,\n errorMessage: string | null,\n hasError: boolean,\n isUnsupportedBridgeOperationError: boolean,\n isTimeout: boolean,\n isUserError: boolean,\n isUnknownHookError: boolean,\n};\n\nconst InitialState: State = {\n callStack: null,\n canDismiss: false,\n componentStack: null,\n errorMessage: null,\n hasError: false,\n isUnsupportedBridgeOperationError: false,\n isTimeout: false,\n isUserError: false,\n isUnknownHookError: false,\n};\n\nexport default class ErrorBoundary extends Component<Props, State> {\n state: State = InitialState;\n\n static getDerivedStateFromError(error: any): {\n callStack: string | null,\n errorMessage: string | null,\n hasError: boolean,\n isTimeout: boolean,\n isUnknownHookError: boolean,\n isUnsupportedBridgeOperationError: boolean,\n isUserError: boolean,\n } {\n const errorMessage =\n typeof error === 'object' &&\n error !== null &&\n typeof error.message === 'string'\n ? error.message\n : null;\n\n const isTimeout = error instanceof TimeoutError;\n const isUserError = error instanceof UserError;\n const isUnknownHookError = error instanceof UnknownHookError;\n const isUnsupportedBridgeOperationError =\n error instanceof UnsupportedBridgeOperationError;\n\n const callStack =\n typeof error === 'object' &&\n error !== null &&\n typeof error.stack === 'string'\n ? error.stack.split('\\n').slice(1).join('\\n')\n : null;\n\n return {\n callStack,\n errorMessage,\n hasError: true,\n isUnsupportedBridgeOperationError,\n isUnknownHookError,\n isTimeout,\n isUserError,\n };\n }\n\n componentDidCatch(error: any, {componentStack}: any) {\n this._logError(error, componentStack);\n this.setState({\n componentStack,\n });\n }\n\n componentDidMount() {\n const {store} = this.props;\n if (store != null) {\n store.addListener('error', this._onStoreError);\n }\n }\n\n componentWillUnmount() {\n const {store} = this.props;\n if (store != null) {\n store.removeListener('error', this._onStoreError);\n }\n }\n\n render(): React.Node {\n const {canDismiss: canDismissProp, children} = this.props;\n const {\n callStack,\n canDismiss: canDismissState,\n componentStack,\n errorMessage,\n hasError,\n isUnsupportedBridgeOperationError,\n isTimeout,\n isUserError,\n isUnknownHookError,\n } = this.state;\n\n if (hasError) {\n if (isTimeout) {\n return (\n <TimeoutView\n callStack={callStack}\n componentStack={componentStack}\n dismissError={\n canDismissProp || canDismissState ? this._dismissError : null\n }\n errorMessage={errorMessage}\n />\n );\n } else if (isUnsupportedBridgeOperationError) {\n return (\n <UnsupportedBridgeOperationView\n callStack={callStack}\n componentStack={componentStack}\n errorMessage={errorMessage}\n />\n );\n } else if (isUserError) {\n return (\n <CaughtErrorView\n callStack={callStack}\n componentStack={componentStack}\n errorMessage={errorMessage || 'Error occured in inspected element'}\n info={\n <>\n React DevTools encountered an error while trying to inspect the\n hooks. This is most likely caused by a developer error in the\n currently inspected element. Please see your console for logged\n error.\n </>\n }\n />\n );\n } else if (isUnknownHookError) {\n return (\n <CaughtErrorView\n callStack={callStack}\n componentStack={componentStack}\n errorMessage={errorMessage || 'Encountered an unknown hook'}\n info={\n <>\n React DevTools encountered an unknown hook. This is probably\n because the react-debug-tools package is out of date. To fix,\n upgrade the React DevTools to the most recent version.\n </>\n }\n />\n );\n } else {\n return (\n <ErrorView\n callStack={callStack}\n componentStack={componentStack}\n dismissError={\n canDismissProp || canDismissState ? this._dismissError : null\n }\n errorMessage={errorMessage}>\n <Suspense fallback={<SearchingGitHubIssues />}>\n <SuspendingErrorView\n callStack={callStack}\n componentStack={componentStack}\n errorMessage={errorMessage}\n />\n </Suspense>\n </ErrorView>\n );\n }\n }\n\n return children;\n }\n\n _logError: (error: any, componentStack: string | null) => void = (\n error,\n componentStack,\n ) => {\n logEvent({\n event_name: 'error',\n error_message: error.message ?? null,\n error_stack: error.stack ?? null,\n error_component_stack: componentStack ?? null,\n });\n };\n\n _dismissError: () => void = () => {\n const onBeforeDismissCallback = this.props.onBeforeDismissCallback;\n if (typeof onBeforeDismissCallback === 'function') {\n onBeforeDismissCallback();\n }\n\n this.setState(InitialState);\n };\n\n _onStoreError: (error: Error) => void = error => {\n if (!this.state.hasError) {\n this._logError(error, null);\n this.setState({\n ...ErrorBoundary.getDerivedStateFromError(error),\n canDismiss: true,\n });\n }\n };\n}\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 * @flow\n */\n\nimport ErrorBoundary from './ErrorBoundary';\n\nexport default ErrorBoundary;\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 * @flow\n */\n\nimport * as React from 'react';\nimport useThemeStyles from './useThemeStyles';\n\nexport default function ThemeProvider({\n children,\n}: {\n children: React.Node,\n}): React.Node {\n const themeStyle = useThemeStyles();\n\n const style = React.useMemo(() => {\n return {\n ...themeStyle,\n width: '100%',\n height: '100%',\n };\n }, [themeStyle]);\n\n return <div style={style}>{children}</div>;\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {createPortal} from 'react-dom';\nimport ErrorBoundary from './ErrorBoundary';\nimport {StoreContext} from './context';\nimport ThemeProvider from './ThemeProvider';\n\nexport type Props = {portalContainer?: Element, ...};\n\nexport default function portaledContent(\n Component: React$ComponentType<any>,\n): React$ComponentType<any> {\n return function PortaledContent({portalContainer, ...rest}: Props) {\n const store = useContext(StoreContext);\n\n let children = (\n <ErrorBoundary store={store}>\n <Component {...rest} />\n </ErrorBoundary>\n );\n\n if (portalContainer != null) {\n // The ThemeProvider works by writing DOM style variables to an HTMLDivElement.\n // Because Portals render in a different DOM subtree, these variables don't propagate.\n // So in this case, we need to re-wrap portaled content in a second ThemeProvider.\n children = (\n <ThemeProvider>\n <div\n data-react-devtools-portal-root={true}\n style={{width: '100vw', height: '100vh'}}>\n {children}\n </div>\n </ThemeProvider>\n );\n }\n\n return portalContainer != null\n ? createPortal(children, portalContainer)\n : children;\n };\n}\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 * @flow\n */\n\nimport LRU from 'lru-cache';\nimport {\n convertInspectedElementBackendToFrontend,\n hydrateHelper,\n inspectElement as inspectElementAPI,\n} from 'react-devtools-shared/src/backendAPI';\nimport {fillInPath} from 'react-devtools-shared/src/hydration';\n\nimport type {LRUCache} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {\n InspectElementError,\n InspectElementFullData,\n InspectElementHydratedPath,\n} from 'react-devtools-shared/src/backend/types';\nimport UserError from 'react-devtools-shared/src/errors/UserError';\nimport UnknownHookError from 'react-devtools-shared/src/errors/UnknownHookError';\nimport type {\n Element,\n InspectedElement as InspectedElementFrontend,\n InspectedElementResponseType,\n InspectedElementPath,\n} from 'react-devtools-shared/src/frontend/types';\n\n// Maps element ID to inspected data.\n// We use an LRU for this rather than a WeakMap because of how the \"no-change\" optimization works.\n// When the frontend polls the backend for an update on the element that's currently inspected,\n// the backend will send a \"no-change\" message if the element hasn't updated (rendered) since the last time it was asked.\n// In this case, the frontend cache should reuse the previous (cached) value.\n// Using a WeakMap keyed on Element generally works well for this, since Elements are mutable and stable in the Store.\n// This doens't work properly though when component filters are changed,\n// because this will cause the Store to dump all roots and re-initialize the tree (recreating the Element objects).\n// So instead we key on Element ID (which is stable in this case) and use an LRU for eviction.\nconst inspectedElementCache: LRUCache<number, InspectedElementFrontend> =\n new LRU({\n max: 25,\n });\n\ntype InspectElementReturnType = [\n InspectedElementFrontend,\n InspectedElementResponseType,\n];\n\nexport function inspectElement(\n bridge: FrontendBridge,\n element: Element,\n path: InspectedElementPath | null,\n rendererID: number,\n shouldListenToPauseEvents: boolean = false,\n): Promise<InspectElementReturnType> {\n const {id} = element;\n\n // This could indicate that the DevTools UI has been closed and reopened.\n // The in-memory cache will be clear but the backend still thinks we have cached data.\n // In this case, we need to tell it to resend the full data.\n const forceFullData = !inspectedElementCache.has(id);\n\n return inspectElementAPI(\n bridge,\n forceFullData,\n id,\n path,\n rendererID,\n shouldListenToPauseEvents,\n ).then((data: any) => {\n const {type} = data;\n\n let inspectedElement;\n switch (type) {\n case 'error': {\n const {message, stack, errorType} = ((data: any): InspectElementError);\n\n // create a different error class for each error type\n // and keep useful information from backend.\n let error;\n if (errorType === 'user') {\n error = new UserError(message);\n } else if (errorType === 'unknown-hook') {\n error = new UnknownHookError(message);\n } else {\n error = new Error(message);\n }\n // The backend's stack (where the error originated) is more meaningful than this stack.\n error.stack = stack || error.stack;\n\n throw error;\n }\n\n case 'no-change':\n // This is a no-op for the purposes of our cache.\n inspectedElement = inspectedElementCache.get(id);\n if (inspectedElement != null) {\n return [inspectedElement, type];\n }\n\n // We should only encounter this case in the event of a bug.\n throw Error(`Cached data for element \"${id}\" not found`);\n\n case 'not-found':\n // This is effectively a no-op.\n // If the Element is still in the Store, we can eagerly remove it from the Map.\n inspectedElementCache.del(id);\n\n throw Error(`Element \"${id}\" not found`);\n\n case 'full-data':\n const fullData = ((data: any): InspectElementFullData);\n\n // New data has come in.\n // We should replace the data in our local mutable copy.\n inspectedElement = convertInspectedElementBackendToFrontend(\n fullData.value,\n );\n\n inspectedElementCache.set(id, inspectedElement);\n\n return [inspectedElement, type];\n\n case 'hydrated-path':\n const hydratedPathData = ((data: any): InspectElementHydratedPath);\n const {value} = hydratedPathData;\n\n // A path has been hydrated.\n // Merge it with the latest copy we have locally and resolve with the merged value.\n inspectedElement = inspectedElementCache.get(id) || null;\n if (inspectedElement !== null) {\n // Clone element\n inspectedElement = {...inspectedElement};\n\n // Merge hydrated data\n if (path != null) {\n fillInPath(\n inspectedElement,\n value,\n path,\n hydrateHelper(value, path),\n );\n }\n\n inspectedElementCache.set(id, inspectedElement);\n\n return [inspectedElement, type];\n }\n break;\n\n default:\n // Should never happen.\n if (__DEV__) {\n console.error(\n `Unexpected inspected element response data: \"${type}\"`,\n );\n }\n break;\n }\n\n throw Error(`Unable to inspect element with id \"${id}\"`);\n });\n}\n\nexport function clearCacheForTests(): void {\n inspectedElementCache.reset();\n}\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 * @flow\n */\n\nimport {\n unstable_getCacheForType as getCacheForType,\n startTransition,\n} from 'react';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport {inspectElement as inspectElementMutableSource} from 'react-devtools-shared/src/inspectedElementMutableSource';\nimport ElementPollingCancellationError from 'react-devtools-shared/src//errors/ElementPollingCancellationError';\n\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Wakeable} from 'shared/ReactTypes';\nimport type {\n Element,\n InspectedElement as InspectedElementFrontend,\n InspectedElementResponseType,\n InspectedElementPath,\n} from 'react-devtools-shared/src/frontend/types';\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\ntype PendingRecord = {\n status: 0,\n value: Wakeable,\n};\n\ntype ResolvedRecord<T> = {\n status: 1,\n value: T,\n};\n\ntype RejectedRecord = {\n status: 2,\n value: Error | string,\n};\n\ntype Record<T> = PendingRecord | ResolvedRecord<T> | RejectedRecord;\n\nfunction readRecord<T>(record: Record<T>): ResolvedRecord<T> {\n if (record.status === Resolved) {\n // This is just a type refinement.\n return record;\n } else {\n throw record.value;\n }\n}\n\ntype InspectedElementMap = WeakMap<Element, Record<InspectedElementFrontend>>;\ntype CacheSeedKey = () => InspectedElementMap;\n\nfunction createMap(): InspectedElementMap {\n return new WeakMap();\n}\n\nfunction getRecordMap(): WeakMap<Element, Record<InspectedElementFrontend>> {\n return getCacheForType(createMap);\n}\n\nfunction createCacheSeed(\n element: Element,\n inspectedElement: InspectedElementFrontend,\n): [CacheSeedKey, InspectedElementMap] {\n const newRecord: Record<InspectedElementFrontend> = {\n status: Resolved,\n value: inspectedElement,\n };\n const map = createMap();\n map.set(element, newRecord);\n return [createMap, map];\n}\n\n/**\n * Fetches element props and state from the backend for inspection.\n * This method should be called during render; it will suspend if data has not yet been fetched.\n */\nexport function inspectElement(\n element: Element,\n path: InspectedElementPath | null,\n store: Store,\n bridge: FrontendBridge,\n): InspectedElementFrontend | null {\n const map = getRecordMap();\n let record = map.get(element);\n if (!record) {\n const callbacks = new Set<() => mixed>();\n const wakeable: Wakeable = {\n then(callback: () => mixed) {\n callbacks.add(callback);\n },\n\n // Optional property used by Timeline:\n displayName: `Inspecting ${element.displayName || 'Unknown'}`,\n };\n\n const wake = () => {\n // This assumes they won't throw.\n callbacks.forEach(callback => callback());\n callbacks.clear();\n };\n const newRecord: Record<InspectedElementFrontend> = (record = {\n status: Pending,\n value: wakeable,\n });\n\n const rendererID = store.getRendererIDForElement(element.id);\n if (rendererID == null) {\n const rejectedRecord = ((newRecord: any): RejectedRecord);\n rejectedRecord.status = Rejected;\n rejectedRecord.value = new Error(\n `Could not inspect element with id \"${element.id}\". No renderer found.`,\n );\n\n map.set(element, record);\n\n return null;\n }\n\n inspectElementMutableSource(bridge, element, path, rendererID).then(\n ([inspectedElement]: [\n InspectedElementFrontend,\n InspectedElementResponseType,\n ]) => {\n const resolvedRecord =\n ((newRecord: any): ResolvedRecord<InspectedElementFrontend>);\n resolvedRecord.status = Resolved;\n resolvedRecord.value = inspectedElement;\n\n wake();\n },\n\n error => {\n console.error(error);\n\n const rejectedRecord = ((newRecord: any): RejectedRecord);\n rejectedRecord.status = Rejected;\n rejectedRecord.value = error;\n\n wake();\n },\n );\n\n map.set(element, record);\n }\n\n const response = readRecord(record).value;\n return response;\n}\n\ntype RefreshFunction = (\n seedKey: CacheSeedKey,\n cacheMap: InspectedElementMap,\n) => void;\n\n/**\n * Asks the backend for updated props and state from an expected element.\n * This method should never be called during render; call it from an effect or event handler.\n * This method will schedule an update if updated information is returned.\n */\nexport function checkForUpdate({\n bridge,\n element,\n refresh,\n store,\n}: {\n bridge: FrontendBridge,\n element: Element,\n refresh: RefreshFunction,\n store: Store,\n}): void | Promise<void> {\n const {id} = element;\n const rendererID = store.getRendererIDForElement(id);\n\n if (rendererID == null) {\n return;\n }\n\n return inspectElementMutableSource(\n bridge,\n element,\n null,\n rendererID,\n true,\n ).then(\n ([inspectedElement, responseType]: [\n InspectedElementFrontend,\n InspectedElementResponseType,\n ]) => {\n if (responseType === 'full-data') {\n startTransition(() => {\n const [key, value] = createCacheSeed(element, inspectedElement);\n refresh(key, value);\n });\n }\n },\n );\n}\n\nfunction createPromiseWhichResolvesInOneSecond() {\n return new Promise(resolve => setTimeout(resolve, 1000));\n}\n\ntype PollingStatus = 'idle' | 'running' | 'paused' | 'aborted';\n\nexport function startElementUpdatesPolling({\n bridge,\n element,\n refresh,\n store,\n}: {\n bridge: FrontendBridge,\n element: Element,\n refresh: RefreshFunction,\n store: Store,\n}): {abort: () => void, pause: () => void, resume: () => void} {\n let status: PollingStatus = 'idle';\n\n function abort() {\n status = 'aborted';\n }\n\n function resume() {\n if (status === 'running' || status === 'aborted') {\n return;\n }\n\n status = 'idle';\n poll();\n }\n\n function pause() {\n if (status === 'paused' || status === 'aborted') {\n return;\n }\n\n status = 'paused';\n }\n\n function poll(): Promise<void> {\n status = 'running';\n\n return Promise.allSettled([\n checkForUpdate({bridge, element, refresh, store}),\n createPromiseWhichResolvesInOneSecond(),\n ])\n .then(([{status: updateStatus, reason}]) => {\n // There isn't much to do about errors in this case,\n // but we should at least log them, so they aren't silent.\n // Log only if polling is still active, we can't handle the case when\n // request was sent, and then bridge was remounted (for example, when user did navigate to a new page),\n // but at least we can mark that polling was aborted\n if (updateStatus === 'rejected' && status !== 'aborted') {\n // This is expected Promise rejection, no need to log it\n if (reason instanceof ElementPollingCancellationError) {\n return;\n }\n\n console.error(reason);\n }\n })\n .finally(() => {\n const shouldContinuePolling =\n status !== 'aborted' && status !== 'paused';\n\n status = 'idle';\n\n if (shouldContinuePolling) {\n return poll();\n }\n });\n }\n\n poll();\n\n return {abort, resume, pause};\n}\n\nexport function clearCacheBecauseOfError(refresh: RefreshFunction): void {\n startTransition(() => {\n const map = createMap();\n refresh(createMap, map);\n });\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n useCallback,\n useContext,\n unstable_useCacheRefresh as useCacheRefresh,\n} from 'react';\nimport ErrorBoundary from '../ErrorBoundary';\nimport {TreeStateContext} from './TreeContext';\nimport {clearCacheBecauseOfError} from '../../../inspectedElementCache';\nimport styles from './InspectedElementErrorBoundary.css';\n\ntype WrapperProps = {\n children: React$Node,\n};\n\nexport default function InspectedElementErrorBoundaryWrapper({\n children,\n}: WrapperProps): React.Node {\n // Key on the selected element ID so that changing the selected element automatically hides the boundary.\n // This seems best since an error inspecting one element isn't likely to be relevant to another element.\n const {inspectedElementID} = useContext(TreeStateContext);\n\n const refresh = useCacheRefresh();\n const handleDsmiss = useCallback(() => {\n clearCacheBecauseOfError(refresh);\n }, [refresh]);\n\n return (\n <div className={styles.Wrapper}>\n <ErrorBoundary\n key={inspectedElementID}\n canDismiss={true}\n onBeforeDismissCallback={handleDsmiss}>\n {children}\n </ErrorBoundary>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport Badge from './Badge';\nimport ForgetBadge from './ForgetBadge';\n\nimport styles from './InspectedElementBadges.css';\n\ntype Props = {\n hocDisplayNames: null | Array<string>,\n compiledWithForget: boolean,\n};\n\nexport default function InspectedElementBadges({\n hocDisplayNames,\n compiledWithForget,\n}: Props): React.Node {\n if (\n !compiledWithForget &&\n (hocDisplayNames == null || hocDisplayNames.length === 0)\n ) {\n return null;\n }\n\n return (\n <div className={styles.Root}>\n {compiledWithForget && <ForgetBadge indexable={false} />}\n\n {hocDisplayNames !== null &&\n hocDisplayNames.map(hocDisplayName => (\n <Badge key={hocDisplayName}>{hocDisplayName}</Badge>\n ))}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './AutoSizeInput.css';\n\ntype Props = {\n className?: string,\n onFocus?: (event: FocusEvent) => void,\n placeholder?: string,\n testName?: ?string,\n value: any,\n};\n\nexport default function AutoSizeInput({\n className,\n onFocus,\n placeholder = '',\n testName,\n value,\n ...rest\n}: Props): React.Node {\n // $FlowFixMe[missing-local-annot]\n const onFocusWrapper = event => {\n const input = event.target;\n if (input !== null) {\n input.selectionStart = 0;\n input.selectionEnd = value.length;\n }\n\n if (typeof onFocus === 'function') {\n onFocus(event);\n }\n };\n\n const isEmpty = value === '' || value === '\"\"';\n\n return (\n // $FlowFixMe[cannot-spread-inexact] unsafe rest spread\n <input\n className={[styles.Input, className].join(' ')}\n data-testname={testName}\n onFocus={onFocusWrapper}\n placeholder={placeholder}\n style={{\n width: `calc(${isEmpty ? placeholder.length : value.length}ch + 1px)`,\n }}\n value={isEmpty ? '' : value}\n {...rest}\n />\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useState} from 'react';\nimport AutoSizeInput from './NativeStyleEditor/AutoSizeInput';\nimport styles from './EditableName.css';\n\ntype Type = 'props' | 'state' | 'context' | 'hooks';\ntype OverrideNameFn = (\n oldName: Array<string | number>,\n newName: Array<string | number>,\n) => void;\n\ntype EditableNameProps = {\n allowEmpty?: boolean,\n allowWhiteSpace?: boolean,\n autoFocus?: boolean,\n className?: string,\n initialValue?: string,\n overrideName: OverrideNameFn,\n path: Array<string | number>,\n type: Type,\n};\n\nexport default function EditableName({\n allowEmpty = false,\n allowWhiteSpace = false,\n autoFocus = false,\n className = '',\n initialValue = '',\n overrideName,\n path,\n type,\n}: EditableNameProps): React.Node {\n const [editableName, setEditableName] = useState(initialValue);\n const [isValid, setIsValid] = useState(false);\n\n const handleChange = useCallback(\n ({target}: $FlowFixMe) => {\n let value = target.value;\n if (!allowWhiteSpace) {\n value = value.trim();\n }\n\n if (allowEmpty || value !== '') {\n setIsValid(true);\n } else {\n setIsValid(false);\n }\n\n setEditableName(value);\n },\n [overrideName],\n );\n\n const handleKeyDown = useCallback(\n (event: $FlowFixMe) => {\n // Prevent keydown events from e.g. change selected element in the tree\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n if (isValid) {\n const basePath = path.slice(0, path.length - 1);\n overrideName(\n [...basePath, initialValue],\n [...basePath, editableName],\n );\n }\n break;\n case 'Escape':\n setEditableName(initialValue);\n break;\n default:\n break;\n }\n },\n [editableName, setEditableName, isValid, initialValue, overrideName],\n );\n\n return (\n <AutoSizeInput\n autoFocus={autoFocus}\n className={[styles.Input, className].join(' ')}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder=\"new entry\"\n testName=\"EditableName\"\n type=\"text\"\n value={editableName}\n />\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment} from 'react';\nimport styles from './EditableValue.css';\nimport {useEditableValue} from '../hooks';\n\ntype OverrideValueFn = (path: Array<string | number>, value: any) => void;\n\ntype EditableValueProps = {\n className?: string,\n overrideValue: OverrideValueFn,\n path: Array<string | number>,\n value: any,\n};\n\nexport default function EditableValue({\n className = '',\n overrideValue,\n path,\n value,\n}: EditableValueProps): React.Node {\n const [state, dispatch] = useEditableValue(value);\n const {editableValue, hasPendingChanges, isValid, parsedValue} = state;\n\n const reset = () =>\n dispatch({\n type: 'RESET',\n externalValue: value,\n });\n\n // $FlowFixMe[missing-local-annot]\n const handleChange = ({target}) =>\n dispatch({\n type: 'UPDATE',\n editableValue: target.value,\n externalValue: value,\n });\n\n // $FlowFixMe[missing-local-annot]\n const handleCheckBoxToggle = ({target}) => {\n dispatch({\n type: 'UPDATE',\n editableValue: target.checked,\n externalValue: value,\n });\n\n // Unlike <input type=\"text\"> which has both an onChange and an onBlur,\n // <input type=\"checkbox\"> updates state *and* applies changes in a single event.\n // So we read from target.checked rather than parsedValue (which has not yet updated).\n // We also don't check isValid (because that hasn't changed yet either);\n // we don't need to check it anyway, since target.checked is always a boolean.\n overrideValue(path, target.checked);\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleKeyDown = event => {\n // Prevent keydown events from e.g. change selected element in the tree\n event.stopPropagation();\n\n switch (event.key) {\n case 'Enter':\n applyChanges();\n break;\n case 'Escape':\n reset();\n break;\n default:\n break;\n }\n };\n\n const applyChanges = () => {\n if (isValid && hasPendingChanges) {\n overrideValue(path, parsedValue);\n }\n };\n\n let placeholder = '';\n if (editableValue === undefined) {\n placeholder = '(undefined)';\n } else {\n placeholder = 'Enter valid JSON';\n }\n\n const isBool = parsedValue === true || parsedValue === false;\n\n return (\n <Fragment>\n <input\n autoComplete=\"new-password\"\n className={`${isValid ? styles.Input : styles.Invalid} ${className}`}\n data-testname=\"EditableValue\"\n onBlur={applyChanges}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n type=\"text\"\n value={editableValue}\n />\n {isBool && (\n <input\n className={styles.Checkbox}\n checked={parsedValue}\n type=\"checkbox\"\n onChange={handleCheckBoxToggle}\n />\n )}\n </Fragment>\n );\n}\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 * @flow\n */\n\n/**\n * Converts nested hooks paths to the format expected by the backend.\n * e.g. [''] => ['']\n * e.g. [1, 'value', ...] => [...]\n * e.g. [2, 'subhooks', 1, 'value', ...] => [...]\n * e.g. [1, 'subhooks', 3, 'subhooks', 2, 'value', ...] => [...]\n */\nexport function parseHookPathForEdit(\n path: Array<string | number>,\n): Array<string | number> {\n let index = 0;\n for (let i = 0; i < path.length; i++) {\n if (path[i] === 'value') {\n index = i + 1;\n break;\n }\n }\n return path.slice(index);\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useState} from 'react';\nimport Store from '../../store';\nimport EditableName from './EditableName';\nimport {smartParse} from '../../utils';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './NewArrayValue.css';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {\n bridge: FrontendBridge,\n depth: number,\n hidden: boolean,\n hookID?: ?number,\n index: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n store: Store,\n type: 'props' | 'context' | 'hooks' | 'state',\n};\n\nexport default function NewArrayValue({\n bridge,\n depth,\n hidden,\n hookID,\n index,\n inspectedElement,\n path,\n store,\n type,\n}: Props): React.Node {\n const [key, setKey] = useState<number>(0);\n const [isInvalid, setIsInvalid] = useState(false);\n\n // This is a bit of an unusual usage of the EditableName component,\n // but otherwise it acts the way we want for a new Array entry.\n // $FlowFixMe[missing-local-annot]\n const overrideName = (oldPath: any, newPath) => {\n const value = newPath[newPath.length - 1];\n\n let parsedValue;\n let newIsInvalid = true;\n try {\n parsedValue = smartParse(value);\n newIsInvalid = false;\n } catch (error) {}\n\n if (isInvalid !== newIsInvalid) {\n setIsInvalid(newIsInvalid);\n }\n\n if (!newIsInvalid) {\n setKey(key + 1);\n\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n let basePath = path;\n if (hookID != null) {\n basePath = parseHookPathForEdit(basePath);\n }\n\n bridge.send('overrideValueAtPath', {\n type,\n hookID,\n id,\n path: [...basePath, index],\n rendererID,\n value: parsedValue,\n });\n }\n }\n };\n\n return (\n <div\n key={key}\n hidden={hidden}\n style={{\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n }}>\n <div className={styles.NewArrayValue}>\n <EditableName\n allowWhiteSpace={true}\n autoFocus={key > 0}\n className={[styles.EditableName, isInvalid && styles.Invalid].join(\n ' ',\n )}\n initialValue=\"\"\n overrideName={overrideName}\n path={path}\n />\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useState} from 'react';\nimport Store from '../../store';\nimport EditableName from './EditableName';\nimport EditableValue from './EditableValue';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './NewKeyValue.css';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {\n bridge: FrontendBridge,\n depth: number,\n hidden: boolean,\n hookID?: ?number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n store: Store,\n type: 'props' | 'state' | 'hooks' | 'context',\n};\n\nexport default function NewKeyValue({\n bridge,\n depth,\n hidden,\n hookID,\n inspectedElement,\n path,\n store,\n type,\n}: Props): React.Node {\n const [newPropKey, setNewPropKey] = useState<number>(0);\n const [newPropName, setNewPropName] = useState<string>('');\n\n // $FlowFixMe[missing-local-annot]\n const overrideNewEntryName = (oldPath: any, newPath) => {\n setNewPropName(newPath[newPath.length - 1]);\n };\n\n const overrideNewEntryValue = (\n newPath: Array<string | number>,\n value: any,\n ) => {\n if (!newPropName) {\n return;\n }\n\n setNewPropName('');\n setNewPropKey(newPropKey + 1);\n\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n let basePath: Array<string | number> = newPath;\n if (hookID != null) {\n basePath = parseHookPathForEdit(basePath);\n }\n\n bridge.send('overrideValueAtPath', {\n type,\n hookID,\n id,\n path: basePath,\n rendererID,\n value,\n });\n }\n };\n\n return (\n <div\n data-testname=\"NewKeyValue\"\n key={newPropKey}\n hidden={hidden}\n style={{\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n }}>\n <div className={styles.NewKeyValue}>\n <EditableName\n autoFocus={newPropKey > 0}\n className={styles.EditableName}\n overrideName={overrideNewEntryName}\n path={[]}\n />\n :&nbsp;\n <EditableValue\n className={styles.EditableValue}\n overrideValue={overrideNewEntryValue}\n path={[...path, newPropName]}\n value={''}\n />\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\n\nimport styles from './ExpandCollapseToggle.css';\n\ntype ExpandCollapseToggleProps = {\n disabled: boolean,\n isOpen: boolean,\n setIsOpen: Function,\n};\n\nexport default function ExpandCollapseToggle({\n disabled,\n isOpen,\n setIsOpen,\n}: ExpandCollapseToggleProps): React.Node {\n return (\n <Button\n className={styles.ExpandCollapseToggle}\n disabled={disabled}\n onClick={() => setIsOpen(prevIsOpen => !prevIsOpen)}\n title={`${isOpen ? 'Collapse' : 'Expand'} prop value`}>\n <ButtonIcon type={isOpen ? 'expanded' : 'collapsed'} />\n </Button>\n );\n}\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 * @flow\n */\n\nimport {__DEBUG__} from 'react-devtools-shared/src/constants';\n\nimport type {Thenable, Wakeable} from 'shared/ReactTypes';\n\nconst TIMEOUT = 30000;\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\ntype PendingRecord = {\n status: 0,\n value: Wakeable,\n};\n\ntype ResolvedRecord<T> = {\n status: 1,\n value: T,\n};\n\ntype RejectedRecord = {\n status: 2,\n value: null,\n};\n\ntype Record<T> = PendingRecord | ResolvedRecord<T> | RejectedRecord;\n\ntype Module = any;\ntype ModuleLoaderFunction = () => Thenable<Module>;\n\n// This is intentionally a module-level Map, rather than a React-managed one.\n// Otherwise, refreshing the inspected element cache would also clear this cache.\n// Modules are static anyway.\nconst moduleLoaderFunctionToModuleMap: Map<ModuleLoaderFunction, Module> =\n new Map();\n\nfunction readRecord<T>(record: Record<T>): ResolvedRecord<T> | RejectedRecord {\n if (record.status === Resolved) {\n // This is just a type refinement.\n return record;\n } else if (record.status === Rejected) {\n // This is just a type refinement.\n return record;\n } else {\n throw record.value;\n }\n}\n\n// TODO Flow type\nexport function loadModule(moduleLoaderFunction: ModuleLoaderFunction): Module {\n let record = moduleLoaderFunctionToModuleMap.get(moduleLoaderFunction);\n\n if (__DEBUG__) {\n console.log(\n `[dynamicImportCache] loadModule(\"${moduleLoaderFunction.name}\")`,\n );\n }\n\n if (!record) {\n const callbacks = new Set<() => mixed>();\n const wakeable: Wakeable = {\n then(callback: () => mixed) {\n callbacks.add(callback);\n },\n\n // Optional property used by Timeline:\n displayName: `Loading module \"${moduleLoaderFunction.name}\"`,\n };\n\n const wake = () => {\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n // This assumes they won't throw.\n callbacks.forEach(callback => callback());\n callbacks.clear();\n };\n\n const newRecord: Record<Module> = (record = {\n status: Pending,\n value: wakeable,\n });\n\n let didTimeout = false;\n\n moduleLoaderFunction().then(\n module => {\n if (__DEBUG__) {\n console.log(\n `[dynamicImportCache] loadModule(\"${moduleLoaderFunction.name}\") then()`,\n );\n }\n\n if (didTimeout) {\n return;\n }\n\n const resolvedRecord = ((newRecord: any): ResolvedRecord<Module>);\n resolvedRecord.status = Resolved;\n resolvedRecord.value = module;\n\n wake();\n },\n error => {\n if (__DEBUG__) {\n console.log(\n `[dynamicImportCache] loadModule(\"${moduleLoaderFunction.name}\") catch()`,\n );\n }\n\n if (didTimeout) {\n return;\n }\n\n console.log(error);\n\n const thrownRecord = ((newRecord: any): RejectedRecord);\n thrownRecord.status = Rejected;\n thrownRecord.value = null;\n\n wake();\n },\n );\n\n // Eventually timeout and stop trying to load the module.\n let timeoutID: null | TimeoutID = setTimeout(function onTimeout() {\n if (__DEBUG__) {\n console.log(\n `[dynamicImportCache] loadModule(\"${moduleLoaderFunction.name}\") onTimeout()`,\n );\n }\n\n timeoutID = null;\n\n didTimeout = true;\n\n const timedoutRecord = ((newRecord: any): RejectedRecord);\n timedoutRecord.status = Rejected;\n timedoutRecord.value = null;\n\n wake();\n }, TIMEOUT);\n\n moduleLoaderFunctionToModuleMap.set(moduleLoaderFunction, record);\n }\n\n // $FlowFixMe[underconstrained-implicit-instantiation]\n const response = readRecord(record).value;\n return response;\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport {createContext} from 'react';\n\nexport type FetchFileWithCaching = (url: string) => Promise<string>;\nexport type Context = FetchFileWithCaching | null;\n\nconst FetchFileWithCachingContext: ReactContext<Context> =\n createContext<Context>(null);\nFetchFileWithCachingContext.displayName = 'FetchFileWithCachingContext';\n\nexport default FetchFileWithCachingContext;\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport type {Thenable} from 'shared/ReactTypes';\n\nimport {createContext} from 'react';\nimport typeof * as ParseHookNamesModule from 'react-devtools-shared/src/hooks/parseHookNames';\n\nexport type HookNamesModuleLoaderFunction =\n () => Thenable<ParseHookNamesModule>;\nexport type Context = HookNamesModuleLoaderFunction | null;\n\n// TODO (Webpack 5) Hopefully we can remove this context entirely once the Webpack 5 upgrade is completed.\nconst HookNamesModuleLoaderContext: ReactContext<Context> =\n createContext<Context>(null);\nHookNamesModuleLoaderContext.displayName = 'HookNamesModuleLoaderContext';\n\nexport default HookNamesModuleLoaderContext;\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n startTransition,\n unstable_useCacheRefresh as useCacheRefresh,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {TreeStateContext} from './TreeContext';\nimport {BridgeContext, StoreContext} from '../context';\nimport {\n inspectElement,\n startElementUpdatesPolling,\n} from 'react-devtools-shared/src/inspectedElementCache';\nimport {\n clearHookNamesCache,\n hasAlreadyLoadedHookNames,\n loadHookNames,\n} from 'react-devtools-shared/src/hookNamesCache';\nimport {loadModule} from 'react-devtools-shared/src/dynamicImportCache';\nimport FetchFileWithCachingContext from 'react-devtools-shared/src/devtools/views/Components/FetchFileWithCachingContext';\nimport HookNamesModuleLoaderContext from 'react-devtools-shared/src/devtools/views/Components/HookNamesModuleLoaderContext';\nimport {SettingsContext} from '../Settings/SettingsContext';\n\nimport type {HookNames} from 'react-devtools-shared/src/frontend/types';\nimport type {ReactNodeList} from 'shared/ReactTypes';\nimport type {\n Element,\n InspectedElement,\n} from 'react-devtools-shared/src/frontend/types';\n\ntype Path = Array<string | number>;\ntype InspectPathFunction = (path: Path) => void;\nexport type ToggleParseHookNames = () => void;\n\ntype Context = {\n hookNames: HookNames | null,\n inspectedElement: InspectedElement | null,\n inspectPaths: InspectPathFunction,\n parseHookNames: boolean,\n toggleParseHookNames: ToggleParseHookNames,\n};\n\nexport const InspectedElementContext: ReactContext<Context> =\n createContext<Context>(((null: any): Context));\n\nexport type Props = {\n children: ReactNodeList,\n};\n\nexport function InspectedElementContextController({\n children,\n}: Props): React.Node {\n const {inspectedElementID} = useContext(TreeStateContext);\n const fetchFileWithCaching = useContext(FetchFileWithCachingContext);\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {parseHookNames: parseHookNamesByDefault} = useContext(SettingsContext);\n\n // parseHookNames has a lot of code.\n // Embedding it into a build makes the build large.\n // This function enables DevTools to make use of Suspense to lazily import() it only if the feature will be used.\n // TODO (Webpack 5) Hopefully we can remove this indirection once the Webpack 5 upgrade is completed.\n const hookNamesModuleLoader = useContext(HookNamesModuleLoaderContext);\n\n const refresh = useCacheRefresh();\n\n // Temporarily stores most recently-inspected (hydrated) path.\n // The transition that updates this causes the component to re-render and ask the cache->backend for the new path.\n // When a path is sent along with an \"inspectElement\" request,\n // the backend knows to send its dehydrated data even if the element hasn't updated since the last request.\n const [state, setState] = useState<{\n element: Element | null,\n path: Array<number | string> | null,\n }>({\n element: null,\n path: null,\n });\n\n const element =\n inspectedElementID !== null\n ? store.getElementByID(inspectedElementID)\n : null;\n\n const alreadyLoadedHookNames =\n element != null && hasAlreadyLoadedHookNames(element);\n\n // Parse the currently inspected element's hook names.\n // This may be enabled by default (for all elements)\n // or it may be opted into on a per-element basis (if it's too slow to be on by default).\n const [parseHookNames, setParseHookNames] = useState<boolean>(\n parseHookNamesByDefault || alreadyLoadedHookNames,\n );\n\n const [bridgeIsAlive, setBridgeIsAliveStatus] = useState<boolean>(true);\n\n const elementHasChanged = element !== null && element !== state.element;\n\n // Reset the cached inspected paths when a new element is selected.\n if (elementHasChanged) {\n setState({\n element,\n path: null,\n });\n\n setParseHookNames(parseHookNamesByDefault || alreadyLoadedHookNames);\n }\n\n const purgeCachedMetadataRef = useRef(null);\n\n // Don't load a stale element from the backend; it wastes bridge bandwidth.\n let hookNames: HookNames | null = null;\n let inspectedElement = null;\n if (!elementHasChanged && element !== null) {\n inspectedElement = inspectElement(element, state.path, store, bridge);\n\n if (typeof hookNamesModuleLoader === 'function') {\n if (parseHookNames || alreadyLoadedHookNames) {\n const hookNamesModule = loadModule(hookNamesModuleLoader);\n if (hookNamesModule !== null) {\n const {parseHookNames: loadHookNamesFunction, purgeCachedMetadata} =\n hookNamesModule;\n\n purgeCachedMetadataRef.current = purgeCachedMetadata;\n\n if (\n inspectedElement !== null &&\n inspectedElement.hooks !== null &&\n loadHookNamesFunction !== null\n ) {\n hookNames = loadHookNames(\n element,\n inspectedElement.hooks,\n loadHookNamesFunction,\n fetchFileWithCaching,\n );\n }\n }\n }\n }\n }\n\n const toggleParseHookNames: ToggleParseHookNames =\n useCallback<ToggleParseHookNames>(() => {\n startTransition(() => {\n setParseHookNames(value => !value);\n refresh();\n });\n }, [setParseHookNames]);\n\n const inspectPaths: InspectPathFunction = useCallback<InspectPathFunction>(\n (path: Path) => {\n startTransition(() => {\n setState({\n element: state.element,\n path,\n });\n refresh();\n });\n },\n [setState, state],\n );\n\n useEffect(() => {\n const purgeCachedMetadata = purgeCachedMetadataRef.current;\n if (typeof purgeCachedMetadata === 'function') {\n // When Fast Refresh updates a component, any cached AST metadata may be invalid.\n const fastRefreshScheduled = () => {\n startTransition(() => {\n clearHookNamesCache();\n purgeCachedMetadata();\n refresh();\n });\n };\n bridge.addListener('fastRefreshScheduled', fastRefreshScheduled);\n return () =>\n bridge.removeListener('fastRefreshScheduled', fastRefreshScheduled);\n }\n }, [bridge]);\n\n // Reset path now that we've asked the backend to hydrate it.\n // The backend is stateful, so we don't need to remember this path the next time we inspect.\n useEffect(() => {\n if (state.path !== null) {\n setState({\n element: state.element,\n path: null,\n });\n }\n }, [state]);\n\n useEffect(() => {\n // Assuming that new bridge is always alive at this moment\n setBridgeIsAliveStatus(true);\n\n const listener = () => setBridgeIsAliveStatus(false);\n bridge.addListener('shutdown', listener);\n\n return () => bridge.removeListener('shutdown', listener);\n }, [bridge]);\n\n // Periodically poll the selected element for updates.\n useEffect(() => {\n if (element !== null && bridgeIsAlive) {\n const {abort, pause, resume} = startElementUpdatesPolling({\n bridge,\n element,\n refresh,\n store,\n });\n\n bridge.addListener('resumeElementPolling', resume);\n bridge.addListener('pauseElementPolling', pause);\n\n return () => {\n bridge.removeListener('resumeElementPolling', resume);\n bridge.removeListener('pauseElementPolling', pause);\n\n abort();\n };\n }\n }, [\n element,\n hookNames,\n // Reset this timer any time the element we're inspecting gets a new response.\n // No sense to ping right away after e.g. inspecting/hydrating a path.\n inspectedElement,\n state,\n bridgeIsAlive,\n ]);\n\n const value = useMemo<Context>(\n () => ({\n hookNames,\n inspectedElement,\n inspectPaths,\n parseHookNames,\n toggleParseHookNames,\n }),\n [\n hookNames,\n inspectedElement,\n inspectPaths,\n parseHookNames,\n toggleParseHookNames,\n ],\n );\n\n return (\n <InspectedElementContext.Provider value={value}>\n {children}\n </InspectedElementContext.Provider>\n );\n}\n","export const PROTOCOLS_SUPPORTED_AS_LINKS_IN_KEY_VALUE = [\n 'file:///',\n 'http://',\n 'https://',\n 'vscode://',\n];\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './ContextMenuItem.css';\n\ntype Props = {\n children: React.Node,\n onClick: () => void,\n hide: () => void,\n};\n\nexport default function ContextMenuItem({\n children,\n onClick,\n hide,\n}: Props): React.Node {\n const handleClick = () => {\n onClick();\n hide();\n };\n\n return (\n <div\n className={styles.ContextMenuItem}\n onClick={handleClick}\n onTouchEnd={handleClick}>\n {children}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useLayoutEffect, createRef} from 'react';\nimport {createPortal} from 'react-dom';\n\nimport ContextMenuItem from './ContextMenuItem';\n\nimport type {\n ContextMenuItem as ContextMenuItemType,\n ContextMenuPosition,\n ContextMenuRef,\n} from './types';\n\nimport styles from './ContextMenu.css';\n\nfunction repositionToFit(element: HTMLElement, x: number, y: number) {\n const ownerWindow = element.ownerDocument.defaultView;\n if (y + element.offsetHeight >= ownerWindow.innerHeight) {\n if (y - element.offsetHeight > 0) {\n element.style.top = `${y - element.offsetHeight}px`;\n } else {\n element.style.top = '0px';\n }\n } else {\n element.style.top = `${y}px`;\n }\n\n if (x + element.offsetWidth >= ownerWindow.innerWidth) {\n if (x - element.offsetWidth > 0) {\n element.style.left = `${x - element.offsetWidth}px`;\n } else {\n element.style.left = '0px';\n }\n } else {\n element.style.left = `${x}px`;\n }\n}\n\ntype Props = {\n anchorElementRef: {current: React.ElementRef<any> | null},\n items: ContextMenuItemType[],\n position: ContextMenuPosition,\n hide: () => void,\n ref?: ContextMenuRef,\n};\n\nexport default function ContextMenu({\n anchorElementRef,\n position,\n items,\n hide,\n ref = createRef(),\n}: Props): React.Node {\n // This works on the assumption that ContextMenu component is only rendered when it should be shown\n const anchor = anchorElementRef.current;\n\n if (anchor == null) {\n throw new Error(\n 'Attempted to open a context menu for an element, which is not mounted',\n );\n }\n\n const ownerDocument = anchor.ownerDocument;\n const portalContainer = ownerDocument.querySelector(\n '[data-react-devtools-portal-root]',\n );\n\n useLayoutEffect(() => {\n const menu = ((ref.current: any): HTMLElement);\n\n function hideUnlessContains(event: Event) {\n if (!menu.contains(((event.target: any): Node))) {\n hide();\n }\n }\n\n ownerDocument.addEventListener('mousedown', hideUnlessContains);\n ownerDocument.addEventListener('touchstart', hideUnlessContains);\n ownerDocument.addEventListener('keydown', hideUnlessContains);\n\n const ownerWindow = ownerDocument.defaultView;\n ownerWindow.addEventListener('resize', hide);\n\n repositionToFit(menu, position.x, position.y);\n\n return () => {\n ownerDocument.removeEventListener('mousedown', hideUnlessContains);\n ownerDocument.removeEventListener('touchstart', hideUnlessContains);\n ownerDocument.removeEventListener('keydown', hideUnlessContains);\n\n ownerWindow.removeEventListener('resize', hide);\n };\n }, []);\n\n if (portalContainer == null || items.length === 0) {\n return null;\n }\n\n return createPortal(\n <div className={styles.ContextMenu} ref={ref}>\n {items.map(({onClick, content}, index) => (\n <ContextMenuItem key={index} onClick={onClick} hide={hide}>\n {content}\n </ContextMenuItem>\n ))}\n </div>,\n portalContainer,\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useImperativeHandle} from 'react';\n\nimport ContextMenu from './ContextMenu';\nimport useContextMenu from './useContextMenu';\n\nimport type {ContextMenuItem, ContextMenuRef} from './types';\n\ntype Props = {\n anchorElementRef: {\n current: React.ElementRef<any> | null,\n },\n items: ContextMenuItem[],\n closedMenuStub?: React.Node | null,\n ref?: ContextMenuRef,\n};\n\nexport default function ContextMenuContainer({\n anchorElementRef,\n items,\n closedMenuStub = null,\n ref,\n}: Props): React.Node {\n const {shouldShow, position, hide} = useContextMenu(anchorElementRef);\n\n useImperativeHandle(\n ref,\n () => ({\n isShown() {\n return shouldShow;\n },\n hide,\n }),\n [shouldShow, hide],\n );\n\n if (!shouldShow) {\n return closedMenuStub;\n }\n\n return (\n <ContextMenu\n anchorElementRef={anchorElementRef}\n position={position}\n hide={hide}\n items={items}\n ref={ref}\n />\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useState, useEffect, useCallback} from 'react';\n\nimport type {ContextMenuPosition} from './types';\n\ntype Payload = {\n shouldShow: boolean,\n position: ContextMenuPosition | null,\n hide: () => void,\n};\n\nexport default function useContextMenu(anchorElementRef: {\n current: React.ElementRef<any> | null,\n}): Payload {\n const [shouldShow, setShouldShow] = useState(false);\n const [position, setPosition] = React.useState<ContextMenuPosition | null>(\n null,\n );\n\n const hide = useCallback(() => {\n setShouldShow(false);\n setPosition(null);\n }, []);\n\n useEffect(() => {\n const anchor = anchorElementRef.current;\n if (anchor == null) return;\n\n function handleAnchorContextMenu(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n const {pageX, pageY} = e;\n\n const ownerDocument = anchor?.ownerDocument;\n const portalContainer = ownerDocument?.querySelector(\n '[data-react-devtools-portal-root]',\n );\n\n if (portalContainer == null) {\n throw new Error(\n \"DevTools tooltip root node not found: can't display the context menu\",\n );\n }\n\n // `x` and `y` should be relative to the container, to which these context menus will be portaled\n // we can't use just `pageX` or `pageY` for Fusebox integration, because RDT frontend is inlined with the whole document\n // meaning that `pageY` will have an offset of 27, which is the tab bar height\n // for the browser extension, these will equal to 0\n const {top: containerTop, left: containerLeft} =\n portalContainer.getBoundingClientRect();\n\n setShouldShow(true);\n setPosition({x: pageX - containerLeft, y: pageY - containerTop});\n }\n\n anchor.addEventListener('contextmenu', handleAnchorContextMenu);\n return () => {\n anchor.removeEventListener('contextmenu', handleAnchorContextMenu);\n };\n }, [anchorElementRef]);\n\n return {shouldShow, position, hide};\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\n\nimport {ContextMenuContext} from '../context';\nimport {\n copyInspectedElementPath as copyInspectedElementPathAPI,\n storeAsGlobal as storeAsGlobalAPI,\n} from '../../../backendAPI';\nimport Icon from '../Icon';\nimport ContextMenuContainer from '../../ContextMenu/ContextMenuContainer';\n\nimport type Store from 'react-devtools-shared/src/devtools/store';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {ContextMenuContextType} from '../context';\n\nimport styles from './KeyValueContextMenuContainer.css';\n\ntype Props = {\n children: React.Node,\n anchorElementRef: {\n current: React.ElementRef<any> | null,\n },\n store: Store,\n attributeSourceCanBeInspected: boolean,\n bridge: FrontendBridge,\n id: number,\n path: Array<any>,\n canBeCopiedToClipboard: boolean,\n};\n\nexport default function KeyValueContextMenuContainer({\n children,\n anchorElementRef,\n store,\n attributeSourceCanBeInspected,\n bridge,\n id,\n path,\n canBeCopiedToClipboard,\n}: Props): React.Node {\n const {\n isEnabledForInspectedElement: isContextMenuEnabledForInspectedElement,\n viewAttributeSourceFunction,\n } = useContext<ContextMenuContextType>(ContextMenuContext);\n\n const menuItems = React.useMemo(() => {\n const items = [\n {\n onClick: () => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n storeAsGlobalAPI({\n bridge,\n id,\n path,\n rendererID,\n });\n }\n },\n content: (\n <span className={styles.ContextMenuItemContent}>\n <Icon type=\"store-as-global-variable\" />\n <label>Store as global variable</label>\n </span>\n ),\n },\n ];\n\n if (canBeCopiedToClipboard) {\n items.unshift({\n onClick: () => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n copyInspectedElementPathAPI({\n bridge,\n id,\n path,\n rendererID,\n });\n }\n },\n content: (\n <span className={styles.ContextMenuItemContent}>\n <Icon type=\"copy\" />\n <label>Copy value to clipboard</label>\n </span>\n ),\n });\n }\n\n if (viewAttributeSourceFunction != null && attributeSourceCanBeInspected) {\n items.push({\n onClick: () => viewAttributeSourceFunction(id, path),\n content: (\n <span className={styles.ContextMenuItemContent}>\n <Icon type=\"code\" />\n <label>Go to definition</label>\n </span>\n ),\n });\n }\n return items;\n }, [\n store,\n viewAttributeSourceFunction,\n attributeSourceCanBeInspected,\n canBeCopiedToClipboard,\n bridge,\n id,\n path,\n ]);\n\n if (!isContextMenuEnabledForInspectedElement) {\n return children;\n }\n\n return (\n <>\n {children}\n <ContextMenuContainer\n anchorElementRef={anchorElementRef}\n items={menuItems}\n />\n </>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useTransition, useContext, useRef, useState, useMemo} from 'react';\nimport {OptionsContext} from '../context';\nimport EditableName from './EditableName';\nimport EditableValue from './EditableValue';\nimport NewArrayValue from './NewArrayValue';\nimport NewKeyValue from './NewKeyValue';\nimport LoadingAnimation from './LoadingAnimation';\nimport ExpandCollapseToggle from './ExpandCollapseToggle';\nimport {alphaSortEntries, getMetaValueLabel} from '../utils';\nimport {meta} from '../../../hydration';\nimport Store from '../../store';\nimport {parseHookPathForEdit} from './utils';\nimport styles from './KeyValue.css';\nimport Button from 'react-devtools-shared/src/devtools/views/Button';\nimport ButtonIcon from 'react-devtools-shared/src/devtools/views/ButtonIcon';\nimport isArray from 'react-devtools-shared/src/isArray';\nimport {InspectedElementContext} from './InspectedElementContext';\nimport {PROTOCOLS_SUPPORTED_AS_LINKS_IN_KEY_VALUE} from './constants';\nimport KeyValueContextMenuContainer from './KeyValueContextMenuContainer';\nimport {ContextMenuContext} from '../context';\n\nimport type {ContextMenuContextType} from '../context';\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\nimport type {Element as ReactElement} from 'react';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\ntype Type = 'props' | 'state' | 'context' | 'hooks';\n\ntype KeyValueProps = {\n alphaSort: boolean,\n bridge: FrontendBridge,\n canDeletePaths: boolean,\n canEditValues: boolean,\n canRenamePaths: boolean,\n canRenamePathsAtDepth?: (depth: number) => boolean,\n depth: number,\n element: Element,\n hidden: boolean,\n hookID?: ?number,\n hookName?: ?string,\n inspectedElement: InspectedElement,\n isDirectChildOfAnArray?: boolean,\n name: string,\n path: Array<any>,\n pathRoot: Type,\n store: Store,\n value: any,\n};\n\nexport default function KeyValue({\n alphaSort,\n bridge,\n canDeletePaths,\n canEditValues,\n canRenamePaths,\n canRenamePathsAtDepth,\n depth,\n element,\n inspectedElement,\n isDirectChildOfAnArray,\n hidden,\n hookID,\n hookName,\n name,\n path,\n pathRoot,\n store,\n value,\n}: KeyValueProps): React.Node {\n const {readOnly: readOnlyGlobalFlag} = useContext(OptionsContext);\n canDeletePaths = !readOnlyGlobalFlag && canDeletePaths;\n canEditValues = !readOnlyGlobalFlag && canEditValues;\n canRenamePaths = !readOnlyGlobalFlag && canRenamePaths;\n\n const {id} = inspectedElement;\n const fullPath = useMemo(() => [pathRoot, ...path], [pathRoot, path]);\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const contextMenuTriggerRef = useRef(null);\n\n const {inspectPaths} = useContext(InspectedElementContext);\n const {viewAttributeSourceFunction} =\n useContext<ContextMenuContextType>(ContextMenuContext);\n\n let isInspectable = false;\n let isReadOnlyBasedOnMetadata = false;\n if (value !== null && typeof value === 'object') {\n isInspectable = value[meta.inspectable] && value[meta.size] !== 0;\n isReadOnlyBasedOnMetadata = value[meta.readonly];\n }\n\n const [isInspectPathsPending, startInspectPathsTransition] = useTransition();\n const toggleIsOpen = () => {\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n\n if (isInspectable) {\n startInspectPathsTransition(() => {\n inspectPaths([pathRoot, ...path]);\n });\n }\n }\n };\n\n const dataType = typeof value;\n const isSimpleType =\n dataType === 'number' ||\n dataType === 'string' ||\n dataType === 'boolean' ||\n value == null;\n\n const pathType =\n value !== null &&\n typeof value === 'object' &&\n hasOwnProperty.call(value, meta.type)\n ? value[meta.type]\n : typeof value;\n const pathIsFunction = pathType === 'function';\n\n const style = {\n paddingLeft: `${(depth - 1) * 0.75}rem`,\n };\n\n const overrideValue = (newPath: Array<string | number>, newValue: any) => {\n if (hookID != null) {\n newPath = parseHookPathForEdit(newPath);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('overrideValueAtPath', {\n hookID,\n id,\n path: newPath,\n rendererID,\n type: pathRoot,\n value: newValue,\n });\n }\n };\n\n const deletePath = (pathToDelete: Array<string | number>) => {\n if (hookID != null) {\n pathToDelete = parseHookPathForEdit(pathToDelete);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('deletePath', {\n hookID,\n id,\n path: pathToDelete,\n rendererID,\n type: pathRoot,\n });\n }\n };\n\n const renamePath = (\n oldPath: Array<string | number>,\n newPath: Array<string | number>,\n ) => {\n if (newPath[newPath.length - 1] === '') {\n // Deleting the key suggests an intent to delete the whole path.\n if (canDeletePaths) {\n deletePath(oldPath);\n }\n } else {\n if (hookID != null) {\n oldPath = parseHookPathForEdit(oldPath);\n newPath = parseHookPathForEdit(newPath);\n }\n\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('renamePath', {\n hookID,\n id,\n newPath,\n oldPath,\n rendererID,\n type: pathRoot,\n });\n }\n }\n };\n\n // TRICKY This is a bit of a hack to account for context and hooks.\n // In these cases, paths can be renamed but only at certain depths.\n // The special \"value\" wrapper for context shouldn't be editable.\n // Only certain types of hooks should be editable.\n let canRenameTheCurrentPath = canRenamePaths;\n if (canRenameTheCurrentPath && typeof canRenamePathsAtDepth === 'function') {\n canRenameTheCurrentPath = canRenamePathsAtDepth(depth);\n }\n\n let renderedName;\n if (isDirectChildOfAnArray) {\n if (canDeletePaths) {\n renderedName = (\n <DeleteToggle name={name} deletePath={deletePath} path={path} />\n );\n } else {\n renderedName = (\n <span className={styles.Name}>\n {name}\n {!!hookName && <span className={styles.HookName}>({hookName})</span>}\n </span>\n );\n }\n } else if (canRenameTheCurrentPath) {\n renderedName = (\n <EditableName\n allowEmpty={canDeletePaths}\n className={styles.EditableName}\n initialValue={name}\n overrideName={renamePath}\n path={path}\n />\n );\n } else {\n renderedName = (\n <span className={styles.Name} data-testname=\"NonEditableName\">\n {name}\n {!!hookName && <span className={styles.HookName}>({hookName})</span>}\n </span>\n );\n }\n\n let children = null;\n if (isSimpleType) {\n let displayValue = value;\n if (dataType === 'string') {\n displayValue = `\"${value}\"`;\n } else if (dataType === 'boolean') {\n displayValue = value ? 'true' : 'false';\n } else if (value === null) {\n displayValue = 'null';\n } else if (value === undefined) {\n displayValue = 'undefined';\n } else if (isNaN(value)) {\n displayValue = 'NaN';\n }\n\n let shouldDisplayValueAsLink = false;\n if (\n dataType === 'string' &&\n PROTOCOLS_SUPPORTED_AS_LINKS_IN_KEY_VALUE.some(protocolPrefix =>\n value.startsWith(protocolPrefix),\n )\n ) {\n shouldDisplayValueAsLink = true;\n }\n\n children = (\n <KeyValueContextMenuContainer\n key=\"root\"\n anchorElementRef={contextMenuTriggerRef}\n attributeSourceCanBeInspected={false}\n canBeCopiedToClipboard={true}\n store={store}\n bridge={bridge}\n id={id}\n path={fullPath}>\n <div\n data-testname=\"KeyValue\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n <div className={styles.ExpandCollapseToggleSpacer} />\n {renderedName}\n <div className={styles.AfterName}>:</div>\n {canEditValues ? (\n <EditableValue\n overrideValue={overrideValue}\n path={path}\n value={value}\n />\n ) : shouldDisplayValueAsLink ? (\n <a\n className={styles.Link}\n href={value}\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {displayValue}\n </a>\n ) : (\n <span className={styles.Value} data-testname=\"NonEditableValue\">\n {displayValue}\n </span>\n )}\n </div>\n </KeyValueContextMenuContainer>\n );\n } else if (pathIsFunction && viewAttributeSourceFunction != null) {\n children = (\n <KeyValueContextMenuContainer\n key=\"root\"\n anchorElementRef={contextMenuTriggerRef}\n attributeSourceCanBeInspected={true}\n canBeCopiedToClipboard={false}\n store={store}\n bridge={bridge}\n id={id}\n path={fullPath}>\n <div\n data-testname=\"KeyValue\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n <div className={styles.ExpandCollapseToggleSpacer} />\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Link}\n onClick={() => {\n viewAttributeSourceFunction(id, fullPath);\n }}>\n {getMetaValueLabel(value)}\n </span>\n </div>\n </KeyValueContextMenuContainer>\n );\n } else if (\n hasOwnProperty.call(value, meta.type) &&\n !hasOwnProperty.call(value, meta.unserializable)\n ) {\n children = (\n <KeyValueContextMenuContainer\n key=\"root\"\n anchorElementRef={contextMenuTriggerRef}\n attributeSourceCanBeInspected={false}\n canBeCopiedToClipboard={true}\n store={store}\n bridge={bridge}\n id={id}\n path={fullPath}>\n <div\n data-testname=\"KeyValue\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {isInspectable ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={toggleIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={isInspectable ? toggleIsOpen : undefined}>\n {getMetaValueLabel(value)}\n </span>\n </div>\n </KeyValueContextMenuContainer>\n );\n\n if (isInspectPathsPending) {\n children = (\n <>\n {children}\n <div className={styles.Item} style={style}>\n <div className={styles.ExpandCollapseToggleSpacer} />\n <LoadingAnimation />\n </div>\n </>\n );\n }\n } else {\n if (isArray(value)) {\n const hasChildren = value.length > 0 || canEditValues;\n const displayName = getMetaValueLabel(value);\n\n children = value.map((innerValue, index) => (\n <KeyValue\n key={index}\n alphaSort={alphaSort}\n bridge={bridge}\n canDeletePaths={canDeletePaths && !isReadOnlyBasedOnMetadata}\n canEditValues={canEditValues && !isReadOnlyBasedOnMetadata}\n canRenamePaths={canRenamePaths && !isReadOnlyBasedOnMetadata}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={depth + 1}\n element={element}\n hookID={hookID}\n inspectedElement={inspectedElement}\n isDirectChildOfAnArray={true}\n hidden={hidden || !isOpen}\n name={index}\n path={path.concat(index)}\n pathRoot={pathRoot}\n store={store}\n value={value[index]}\n />\n ));\n\n if (canEditValues && !isReadOnlyBasedOnMetadata) {\n children.push(\n <NewArrayValue\n key=\"NewKeyValue\"\n bridge={bridge}\n depth={depth + 1}\n hidden={hidden || !isOpen}\n hookID={hookID}\n index={value.length}\n element={element}\n inspectedElement={inspectedElement}\n path={path}\n store={store}\n type={pathRoot}\n />,\n );\n }\n\n children.unshift(\n <KeyValueContextMenuContainer\n key={`${depth}-root`}\n anchorElementRef={contextMenuTriggerRef}\n attributeSourceCanBeInspected={pathIsFunction}\n canBeCopiedToClipboard={!pathIsFunction}\n store={store}\n bridge={bridge}\n id={id}\n path={fullPath}>\n <div\n data-testname=\"KeyValue\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {hasChildren ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={hasChildren ? toggleIsOpen : undefined}>\n {displayName}\n </span>\n </div>\n </KeyValueContextMenuContainer>,\n );\n } else {\n // TRICKY\n // It's important to use Object.entries() rather than Object.keys()\n // because of the hidden meta Symbols used for hydration and unserializable values.\n const entries = Object.entries(value);\n if (alphaSort) {\n entries.sort(alphaSortEntries);\n }\n\n const hasChildren = entries.length > 0 || canEditValues;\n const displayName = getMetaValueLabel(value);\n\n children = entries.map(([key, keyValue]): ReactElement<any> => (\n <KeyValue\n key={key}\n alphaSort={alphaSort}\n bridge={bridge}\n canDeletePaths={canDeletePaths && !isReadOnlyBasedOnMetadata}\n canEditValues={canEditValues && !isReadOnlyBasedOnMetadata}\n canRenamePaths={canRenamePaths && !isReadOnlyBasedOnMetadata}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={depth + 1}\n element={element}\n hookID={hookID}\n inspectedElement={inspectedElement}\n hidden={hidden || !isOpen}\n name={key}\n path={path.concat(key)}\n pathRoot={pathRoot}\n store={store}\n value={keyValue}\n />\n ));\n\n if (canEditValues && !isReadOnlyBasedOnMetadata) {\n children.push(\n <NewKeyValue\n key=\"NewKeyValue\"\n bridge={bridge}\n depth={depth + 1}\n element={element}\n hidden={hidden || !isOpen}\n hookID={hookID}\n inspectedElement={inspectedElement}\n path={path}\n store={store}\n type={pathRoot}\n />,\n );\n }\n\n children.unshift(\n <KeyValueContextMenuContainer\n key={`${depth}-root`}\n anchorElementRef={contextMenuTriggerRef}\n attributeSourceCanBeInspected={pathIsFunction}\n canBeCopiedToClipboard={!pathIsFunction}\n store={store}\n bridge={bridge}\n id={id}\n path={fullPath}>\n <div\n data-testname=\"KeyValue\"\n className={styles.Item}\n hidden={hidden}\n ref={contextMenuTriggerRef}\n style={style}>\n {hasChildren ? (\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n ) : (\n <div className={styles.ExpandCollapseToggleSpacer} />\n )}\n {renderedName}\n <div className={styles.AfterName}>:</div>\n <span\n className={styles.Value}\n onClick={hasChildren ? toggleIsOpen : undefined}>\n {displayName}\n </span>\n </div>\n </KeyValueContextMenuContainer>,\n );\n }\n }\n\n return children;\n}\n\n// $FlowFixMe[missing-local-annot]\nfunction DeleteToggle({deletePath, name, path}) {\n // $FlowFixMe[missing-local-annot]\n const handleClick = event => {\n event.stopPropagation();\n deletePath(path);\n };\n\n return (\n <>\n <Button\n className={styles.DeleteArrayItemButton}\n onClick={handleClick}\n title=\"Delete entry\">\n <ButtonIcon type=\"delete\" />\n </Button>\n <span className={styles.Name}>{name}</span>\n </>\n );\n}\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\nimport {\n ElementTypeClass,\n ElementTypeFunction,\n} from 'react-devtools-shared/src/frontend/types';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\ntype Props = {\n bridge: FrontendBridge,\n element: Element,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementContextTree({\n bridge,\n element,\n inspectedElement,\n store,\n}: Props): React.Node {\n const {hasLegacyContext, context, type} = inspectedElement;\n\n const isReadOnly = type !== ElementTypeClass && type !== ElementTypeFunction;\n\n const entries = context != null ? Object.entries(context) : null;\n if (entries !== null) {\n entries.sort(alphaSortEntries);\n }\n\n const isEmpty = entries === null || entries.length === 0;\n\n const handleCopy = () => copy(serializeDataForCopy(((context: any): Object)));\n\n // We add an object with a \"value\" key as a wrapper around Context data\n // so that we can use the shared <KeyValue> component to display it.\n // This wrapper object can't be renamed.\n // $FlowFixMe[missing-local-annot]\n const canRenamePathsAtDepth = depth => depth > 1;\n\n if (isEmpty) {\n return null;\n } else {\n return (\n <div>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>\n {hasLegacyContext ? 'legacy context' : 'context'}\n </div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {isEmpty && <div className={styles.Empty}>None</div>}\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={!isReadOnly}\n canEditValues={!isReadOnly}\n canRenamePaths={!isReadOnly}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n element={element}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"context\"\n store={store}\n type=\"context\"\n value={value}\n />\n ))}\n </div>\n );\n }\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n unstable_useCacheRefresh as useCacheRefresh,\n useTransition,\n} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Store from '../../store';\nimport sharedStyles from './InspectedElementSharedStyles.css';\nimport styles from './InspectedElementErrorsAndWarningsTree.css';\nimport {\n clearErrorsForElement as clearErrorsForElementAPI,\n clearWarningsForElement as clearWarningsForElementAPI,\n} from 'react-devtools-shared/src/backendAPI';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {\n bridge: FrontendBridge,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementErrorsAndWarningsTree({\n bridge,\n inspectedElement,\n store,\n}: Props): React.Node {\n const refresh = useCacheRefresh();\n\n const [isErrorsTransitionPending, startClearErrorsTransition] =\n useTransition();\n const clearErrorsForInspectedElement = () => {\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n startClearErrorsTransition(() => {\n clearErrorsForElementAPI({\n bridge,\n id,\n rendererID,\n });\n refresh();\n });\n }\n };\n\n const [isWarningsTransitionPending, startClearWarningsTransition] =\n useTransition();\n const clearWarningsForInspectedElement = () => {\n const {id} = inspectedElement;\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n startClearWarningsTransition(() => {\n clearWarningsForElementAPI({\n bridge,\n id,\n rendererID,\n });\n refresh();\n });\n }\n };\n\n if (!store.displayingErrorsAndWarningsEnabled) {\n return null;\n }\n\n const {errors, warnings} = inspectedElement;\n if (errors.length === 0 && warnings.length === 0) {\n return null;\n }\n\n return (\n <React.Fragment>\n {errors.length > 0 && (\n <Tree\n badgeClassName={styles.ErrorBadge}\n bridge={bridge}\n className={styles.ErrorTree}\n clearMessages={clearErrorsForInspectedElement}\n entries={errors}\n isTransitionPending={isErrorsTransitionPending}\n label=\"errors\"\n messageClassName={styles.Error}\n />\n )}\n {warnings.length > 0 && (\n <Tree\n badgeClassName={styles.WarningBadge}\n bridge={bridge}\n className={styles.WarningTree}\n clearMessages={clearWarningsForInspectedElement}\n entries={warnings}\n isTransitionPending={isWarningsTransitionPending}\n label=\"warnings\"\n messageClassName={styles.Warning}\n />\n )}\n </React.Fragment>\n );\n}\n\ntype TreeProps = {\n badgeClassName: string,\n actions: React$Node,\n className: string,\n clearMessages: () => void,\n entries: Array<[string, number]>,\n isTransitionPending: boolean,\n label: string,\n messageClassName: string,\n};\n\nfunction Tree({\n badgeClassName,\n actions,\n className,\n clearMessages,\n entries,\n isTransitionPending,\n label,\n messageClassName,\n}: TreeProps) {\n if (entries.length === 0) {\n return null;\n }\n return (\n <div className={className}>\n <div className={`${sharedStyles.HeaderRow} ${styles.HeaderRow}`}>\n <div className={sharedStyles.Header}>{label}</div>\n <Button\n disabled={isTransitionPending}\n onClick={clearMessages}\n title={`Clear all ${label} for this component`}>\n <ButtonIcon type=\"clear\" />\n </Button>\n </div>\n {entries.map(([message, count], index) => (\n <ErrorOrWarningView\n key={`${label}-${index}`}\n badgeClassName={badgeClassName}\n className={messageClassName}\n count={count}\n message={message}\n />\n ))}\n </div>\n );\n}\n\ntype ErrorOrWarningViewProps = {\n badgeClassName: string,\n className: string,\n count: number,\n message: string,\n};\n\nfunction ErrorOrWarningView({\n className,\n badgeClassName,\n count,\n message,\n}: ErrorOrWarningViewProps) {\n return (\n <div className={className}>\n {count > 1 && <div className={badgeClassName}>{count}</div>}\n <div className={styles.Message} title={message}>\n {message}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport {useCallback, useContext, useState} from 'react';\nimport {BridgeContext, StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Toggle from '../Toggle';\nimport ExpandCollapseToggle from './ExpandCollapseToggle';\nimport KeyValue from './KeyValue';\nimport {getMetaValueLabel, serializeHooksForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementHooksTree.css';\nimport {meta} from '../../../hydration';\nimport {getHookSourceLocationKey} from 'react-devtools-shared/src/hookNamesCache';\nimport HookNamesModuleLoaderContext from 'react-devtools-shared/src/devtools/views/Components/HookNamesModuleLoaderContext';\nimport isArray from 'react-devtools-shared/src/isArray';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {HooksNode, HooksTree} from 'react-debug-tools/src/ReactDebugHooks';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {HookNames} from 'react-devtools-shared/src/frontend/types';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\nimport type {ToggleParseHookNames} from './InspectedElementContext';\n\ntype HooksTreeViewProps = {\n bridge: FrontendBridge,\n element: Element,\n hookNames: HookNames | null,\n inspectedElement: InspectedElement,\n parseHookNames: boolean,\n store: Store,\n toggleParseHookNames: ToggleParseHookNames,\n};\n\nexport function InspectedElementHooksTree({\n bridge,\n element,\n hookNames,\n inspectedElement,\n parseHookNames,\n store,\n toggleParseHookNames,\n}: HooksTreeViewProps): React.Node {\n const {hooks, id} = inspectedElement;\n\n // Changing parseHookNames is done in a transition, because it suspends.\n // This value is done outside of the transition, so the UI toggle feels responsive.\n const [parseHookNamesOptimistic, setParseHookNamesOptimistic] =\n useState(parseHookNames);\n const handleChange = () => {\n setParseHookNamesOptimistic(!parseHookNames);\n toggleParseHookNames();\n };\n\n const hookNamesModuleLoader = useContext(HookNamesModuleLoaderContext);\n\n const hookParsingFailed = parseHookNames && hookNames === null;\n\n let toggleTitle;\n if (hookParsingFailed) {\n toggleTitle = 'Hook parsing failed';\n } else if (parseHookNames) {\n toggleTitle = 'Parsing hook names ...';\n } else {\n toggleTitle = 'Parse hook names (may be slow)';\n }\n\n const handleCopy = () => copy(serializeHooksForCopy(hooks));\n\n if (hooks === null) {\n return null;\n } else {\n return (\n <div data-testname=\"InspectedElementHooksTree\">\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>hooks</div>\n {typeof hookNamesModuleLoader === 'function' &&\n (!parseHookNames || hookParsingFailed) && (\n <Toggle\n className={hookParsingFailed ? styles.ToggleError : null}\n isChecked={parseHookNamesOptimistic}\n isDisabled={parseHookNamesOptimistic || hookParsingFailed}\n onChange={handleChange}\n testName=\"LoadHookNamesButton\"\n title={toggleTitle}>\n <ButtonIcon type=\"parse-hook-names\" />\n </Toggle>\n )}\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n <InnerHooksTreeView\n hookNames={hookNames}\n hooks={hooks}\n id={id}\n element={element}\n inspectedElement={inspectedElement}\n path={[]}\n />\n </div>\n );\n }\n}\n\ntype InnerHooksTreeViewProps = {\n element: Element,\n hookNames: HookNames | null,\n hooks: HooksTree,\n id: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n};\n\nexport function InnerHooksTreeView({\n element,\n hookNames,\n hooks,\n id,\n inspectedElement,\n path,\n}: InnerHooksTreeViewProps): React.Node {\n return hooks.map((hook, index) => (\n <HookView\n key={index}\n element={element}\n hook={hooks[index]}\n hookNames={hookNames}\n id={id}\n inspectedElement={inspectedElement}\n path={path.concat([index])}\n />\n ));\n}\n\ntype HookViewProps = {\n element: Element,\n hook: HooksNode,\n hookNames: HookNames | null,\n id: number,\n inspectedElement: InspectedElement,\n path: Array<string | number>,\n};\n\nfunction HookView({\n element,\n hook,\n hookNames,\n id,\n inspectedElement,\n path,\n}: HookViewProps) {\n const {canEditHooks, canEditHooksAndDeletePaths, canEditHooksAndRenamePaths} =\n inspectedElement;\n const {id: hookID, isStateEditable, subHooks, value} = hook;\n\n const isReadOnly = hookID == null || !isStateEditable;\n\n const canDeletePaths = !isReadOnly && canEditHooksAndDeletePaths;\n const canEditValues = !isReadOnly && canEditHooks;\n const canRenamePaths = !isReadOnly && canEditHooksAndRenamePaths;\n\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const [isOpen, setIsOpen] = useState<boolean>(false);\n\n const toggleIsOpen = useCallback(\n () => setIsOpen(prevIsOpen => !prevIsOpen),\n [],\n );\n\n if (hook.hasOwnProperty(meta.inspected)) {\n // This Hook is too deep and hasn't been hydrated.\n if (__DEV__) {\n console.warn('Unexpected dehydrated hook; this is a DevTools error.');\n }\n return (\n <div className={styles.Hook}>\n <div className={styles.NameValueRow}>\n <span className={styles.TruncationIndicator}>...</span>\n </div>\n </div>\n );\n }\n\n // Certain hooks are not editable at all (as identified by react-debug-tools).\n // Primitive hook names (e.g. the \"State\" name for useState) are also never editable.\n // $FlowFixMe[missing-local-annot]\n const canRenamePathsAtDepth = depth => isStateEditable && depth > 1;\n\n const isCustomHook = subHooks.length > 0;\n\n let name = hook.name;\n if (hookID !== null) {\n name = (\n <>\n <span className={styles.PrimitiveHookNumber}>{hookID + 1}</span>\n {name}\n </>\n );\n }\n\n const type = typeof value;\n\n let displayValue;\n let isComplexDisplayValue = false;\n\n const hookSource = hook.hookSource;\n const hookName =\n hookNames != null && hookSource != null\n ? hookNames.get(getHookSourceLocationKey(hookSource))\n : null;\n const hookDisplayName = hookName ? (\n <>\n {name}\n {!!hookName && <span className={styles.HookName}>({hookName})</span>}\n </>\n ) : (\n name\n );\n\n // Format data for display to mimic the props/state/context for now.\n if (type === 'string') {\n displayValue = `\"${((value: any): string)}\"`;\n } else if (type === 'boolean') {\n displayValue = value ? 'true' : 'false';\n } else if (type === 'number') {\n displayValue = value;\n } else if (value === null) {\n displayValue = 'null';\n } else if (value === undefined) {\n displayValue = null;\n } else if (isArray(value)) {\n isComplexDisplayValue = true;\n displayValue = 'Array';\n } else if (type === 'object') {\n isComplexDisplayValue = true;\n displayValue = 'Object';\n }\n\n if (isCustomHook) {\n const subHooksView = isArray(subHooks) ? (\n <InnerHooksTreeView\n element={element}\n hooks={subHooks}\n hookNames={hookNames}\n id={id}\n inspectedElement={inspectedElement}\n path={path.concat(['subHooks'])}\n />\n ) : (\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n element={element}\n hookID={hookID}\n hookName={hookName}\n inspectedElement={inspectedElement}\n name=\"subHooks\"\n path={path.concat(['subHooks'])}\n store={store}\n type=\"hooks\"\n value={subHooks}\n />\n );\n\n if (isComplexDisplayValue) {\n return (\n <div className={styles.Hook}>\n <div className={styles.NameValueRow}>\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n <span\n onClick={toggleIsOpen}\n className={name !== '' ? styles.Name : styles.NameAnonymous}>\n {hookDisplayName || 'Anonymous'}\n </span>\n <span className={styles.Value} onClick={toggleIsOpen}>\n {isOpen || getMetaValueLabel(value)}\n </span>\n </div>\n <div className={styles.Children} hidden={!isOpen}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n element={element}\n hookID={hookID}\n hookName={hookName}\n inspectedElement={inspectedElement}\n name=\"DebugValue\"\n path={path.concat(['value'])}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n {subHooksView}\n </div>\n </div>\n );\n } else {\n return (\n <div className={styles.Hook}>\n <div className={styles.NameValueRow}>\n <ExpandCollapseToggle isOpen={isOpen} setIsOpen={setIsOpen} />\n <span\n onClick={toggleIsOpen}\n className={name !== '' ? styles.Name : styles.NameAnonymous}>\n {hookDisplayName || 'Anonymous'}\n </span>{' '}\n <span className={styles.Value} onClick={toggleIsOpen}>\n {displayValue}\n </span>\n </div>\n <div className={styles.Children} hidden={!isOpen}>\n {subHooksView}\n </div>\n </div>\n );\n }\n } else {\n if (isComplexDisplayValue) {\n return (\n <div className={styles.Hook}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n canRenamePathsAtDepth={canRenamePathsAtDepth}\n depth={1}\n element={element}\n hookID={hookID}\n hookName={hookName}\n inspectedElement={inspectedElement}\n name={name}\n path={path.concat(['value'])}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n </div>\n );\n } else {\n return (\n <div className={styles.Hook}>\n <KeyValue\n alphaSort={false}\n bridge={bridge}\n canDeletePaths={false}\n canEditValues={canEditValues}\n canRenamePaths={false}\n depth={1}\n element={element}\n hookID={hookID}\n hookName={hookName}\n inspectedElement={inspectedElement}\n name={name}\n path={path.concat(['value'])}\n pathRoot=\"hooks\"\n store={store}\n value={value}\n />\n </div>\n );\n }\n }\n}\n\nexport default (React.memo(\n InspectedElementHooksTree,\n): React.ComponentType<HookViewProps>);\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport {OptionsContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport NewKeyValue from './NewKeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\nimport {ElementTypeClass} from 'react-devtools-shared/src/frontend/types';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\ntype Props = {\n bridge: FrontendBridge,\n element: Element,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementPropsTree({\n bridge,\n element,\n inspectedElement,\n store,\n}: Props): React.Node {\n const {readOnly} = React.useContext(OptionsContext);\n\n const {\n canEditFunctionProps,\n canEditFunctionPropsDeletePaths,\n canEditFunctionPropsRenamePaths,\n props,\n type,\n } = inspectedElement;\n\n const canDeletePaths =\n type === ElementTypeClass || canEditFunctionPropsDeletePaths;\n const canEditValues =\n !readOnly && (type === ElementTypeClass || canEditFunctionProps);\n const canRenamePaths =\n type === ElementTypeClass || canEditFunctionPropsRenamePaths;\n\n const entries = props != null ? Object.entries(props) : null;\n if (entries === null) {\n // Skip the section for null props.\n return null;\n }\n\n entries.sort(alphaSortEntries);\n\n const isEmpty = entries.length === 0;\n\n const handleCopy = () => copy(serializeDataForCopy(((props: any): Object)));\n\n return (\n <div data-testname=\"InspectedElementPropsTree\">\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>props</div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={canDeletePaths}\n canEditValues={canEditValues}\n canRenamePaths={canRenamePaths}\n depth={1}\n element={element}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"props\"\n store={store}\n value={value}\n />\n ))}\n {canEditValues && (\n <NewKeyValue\n bridge={bridge}\n depth={0}\n hidden={false}\n inspectedElement={inspectedElement}\n path={[]}\n store={store}\n type=\"props\"\n />\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport {copy} from 'clipboard-js';\nimport * as React from 'react';\nimport {ElementTypeHostComponent} from 'react-devtools-shared/src/frontend/types';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport KeyValue from './KeyValue';\nimport {alphaSortEntries, serializeDataForCopy} from '../utils';\nimport Store from '../../store';\nimport styles from './InspectedElementSharedStyles.css';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\ntype Props = {\n bridge: FrontendBridge,\n element: Element,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementStateTree({\n bridge,\n element,\n inspectedElement,\n store,\n}: Props): React.Node {\n const {state, type} = inspectedElement;\n\n // HostSingleton and HostHoistable may have state that we don't want to expose to users\n const isHostComponent = type === ElementTypeHostComponent;\n\n const entries = state != null ? Object.entries(state) : null;\n const isEmpty = entries === null || entries.length === 0;\n\n if (isEmpty || isHostComponent) {\n return null;\n }\n\n if (entries !== null) {\n entries.sort(alphaSortEntries);\n }\n\n const handleCopy = () => copy(serializeDataForCopy(((state: any): Object)));\n\n return (\n <div>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>state</div>\n {!isEmpty && (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n )}\n </div>\n {isEmpty && <div className={styles.Empty}>None</div>}\n {!isEmpty &&\n (entries: any).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={true}\n canEditValues={true}\n canRenamePaths={true}\n depth={1}\n element={element}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"state\"\n store={store}\n value={value}\n />\n ))}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport KeyValue from './KeyValue';\nimport Store from '../../store';\nimport sharedStyles from './InspectedElementSharedStyles.css';\nimport styles from './InspectedElementStyleXPlugin.css';\nimport {enableStyleXFeatures} from 'react-devtools-feature-flags';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\n\ntype Props = {\n bridge: FrontendBridge,\n element: Element,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementStyleXPlugin({\n bridge,\n element,\n inspectedElement,\n store,\n}: Props): React.Node {\n if (!enableStyleXFeatures) {\n return null;\n }\n\n const styleXPlugin = inspectedElement.plugins.stylex;\n if (styleXPlugin == null) {\n return null;\n }\n\n const {resolvedStyles, sources} = styleXPlugin;\n\n return (\n <div>\n <div className={sharedStyles.HeaderRow}>\n <div className={sharedStyles.Header}>stylex</div>\n </div>\n {sources.map(source => (\n <div key={source} className={styles.Source}>\n {source}\n </div>\n ))}\n {Object.entries(resolvedStyles).map(([name, value]) => (\n <KeyValue\n key={name}\n alphaSort={true}\n bridge={bridge}\n canDeletePaths={false}\n canEditValues={false}\n canRenamePaths={false}\n depth={1}\n element={element}\n hidden={false}\n inspectedElement={inspectedElement}\n name={name}\n path={[name]}\n pathRoot=\"stylex\"\n store={store}\n value={value}\n />\n ))}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {OptionsContext} from '../context';\nimport EditableValue from './EditableValue';\nimport Store from '../../store';\nimport {ElementTypeSuspense} from 'react-devtools-shared/src/frontend/types';\nimport styles from './InspectedElementSharedStyles.css';\n\nimport type {InspectedElement} from 'react-devtools-shared/src/frontend/types';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\n\ntype Props = {\n bridge: FrontendBridge,\n inspectedElement: InspectedElement,\n store: Store,\n};\n\nexport default function InspectedElementSuspenseToggle({\n bridge,\n inspectedElement,\n store,\n}: Props): React.Node {\n const {readOnly} = React.useContext(OptionsContext);\n\n const {id, state, type} = inspectedElement;\n const canToggleSuspense = !readOnly && inspectedElement.canToggleSuspense;\n\n if (type !== ElementTypeSuspense) {\n return null;\n }\n\n const isSuspended = state !== null;\n\n const toggleSuspense = (path: any, value: boolean) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('overrideSuspense', {\n id,\n rendererID,\n forceFallback: value,\n });\n }\n };\n\n return (\n <div>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>suspense</div>\n </div>\n <div className={styles.ToggleSuspenseRow}>\n <span className={styles.Name}>Suspended</span>\n {canToggleSuspense ? (\n // key is required to keep <EditableValue> and header row toggle button in sync\n <EditableValue\n key={isSuspended}\n overrideValue={toggleSuspense}\n path={['suspense', 'Suspended']}\n value={isSuspended}\n />\n ) : (\n <span className={styles.Value}>{isSuspended ? 'true' : 'false'}</span>\n )}\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport {createResource} from 'react-devtools-shared/src/devtools/cache';\nimport {\n BridgeContext,\n StoreContext,\n} from 'react-devtools-shared/src/devtools/views/context';\nimport {TreeStateContext} from '../TreeContext';\n\nimport type {StateContext} from '../TreeContext';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type Store from 'react-devtools-shared/src/devtools/store';\nimport type {StyleAndLayout as StyleAndLayoutBackend} from 'react-devtools-shared/src/backend/NativeStyleEditor/types';\nimport type {StyleAndLayout as StyleAndLayoutFrontend} from './types';\nimport type {Element} from 'react-devtools-shared/src/frontend/types';\nimport type {\n Resource,\n Thenable,\n} from 'react-devtools-shared/src/devtools/cache';\n\nexport type GetStyleAndLayout = (id: number) => StyleAndLayoutFrontend | null;\n\ntype Context = {\n getStyleAndLayout: GetStyleAndLayout,\n};\n\nconst NativeStyleContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nNativeStyleContext.displayName = 'NativeStyleContext';\n\ntype ResolveFn = (styleAndLayout: StyleAndLayoutFrontend) => void;\ntype InProgressRequest = {\n promise: Thenable<StyleAndLayoutFrontend>,\n resolveFn: ResolveFn,\n};\n\nconst inProgressRequests: WeakMap<Element, InProgressRequest> = new WeakMap();\nconst resource: Resource<Element, Element, StyleAndLayoutFrontend> =\n createResource(\n (element: Element) => {\n const request = inProgressRequests.get(element);\n if (request != null) {\n return request.promise;\n }\n\n let resolveFn:\n | ResolveFn\n | ((\n result: Promise<StyleAndLayoutFrontend> | StyleAndLayoutFrontend,\n ) => void) = ((null: any): ResolveFn);\n const promise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n inProgressRequests.set(element, ({promise, resolveFn}: $FlowFixMe));\n\n return (promise: $FlowFixMe);\n },\n (element: Element) => element,\n {useWeakMap: true},\n );\n\ntype Props = {\n children: React$Node,\n};\n\nfunction NativeStyleContextController({children}: Props): React.Node {\n const bridge = useContext<FrontendBridge>(BridgeContext);\n const store = useContext<Store>(StoreContext);\n\n const getStyleAndLayout = useCallback<GetStyleAndLayout>(\n (id: number) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n return resource.read(element);\n } else {\n return null;\n }\n },\n [store],\n );\n\n // It's very important that this context consumes inspectedElementID and not NativeStyleID.\n // Otherwise the effect that sends the \"inspect\" message across the bridge-\n // would itself be blocked by the same render that suspends (waiting for the data).\n const {inspectedElementID} = useContext<StateContext>(TreeStateContext);\n\n const [currentStyleAndLayout, setCurrentStyleAndLayout] =\n useState<StyleAndLayoutFrontend | null>(null);\n\n // This effect handler invalidates the suspense cache and schedules rendering updates with React.\n useEffect(() => {\n const onStyleAndLayout = ({id, layout, style}: StyleAndLayoutBackend) => {\n const element = store.getElementByID(id);\n if (element !== null) {\n const styleAndLayout: StyleAndLayoutFrontend = {\n layout,\n style,\n };\n const request = inProgressRequests.get(element);\n if (request != null) {\n inProgressRequests.delete(element);\n request.resolveFn(styleAndLayout);\n setCurrentStyleAndLayout(styleAndLayout);\n } else {\n resource.write(element, styleAndLayout);\n\n // Schedule update with React if the currently-selected element has been invalidated.\n if (id === inspectedElementID) {\n setCurrentStyleAndLayout(styleAndLayout);\n }\n }\n }\n };\n\n bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);\n return () =>\n bridge.removeListener(\n 'NativeStyleEditor_styleAndLayout',\n onStyleAndLayout,\n );\n }, [bridge, currentStyleAndLayout, inspectedElementID, store]);\n\n // This effect handler polls for updates on the currently selected element.\n useEffect(() => {\n if (inspectedElementID === null) {\n return () => {};\n }\n\n const rendererID = store.getRendererIDForElement(inspectedElementID);\n\n let timeoutID: TimeoutID | null = null;\n\n const sendRequest = () => {\n timeoutID = null;\n\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_measure', {\n id: inspectedElementID,\n rendererID,\n });\n }\n };\n\n // Send the initial measurement request.\n // We'll poll for an update in the response handler below.\n sendRequest();\n\n const onStyleAndLayout = ({id}: StyleAndLayoutBackend) => {\n // If this is the element we requested, wait a little bit and then ask for another update.\n if (id === inspectedElementID) {\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n timeoutID = setTimeout(sendRequest, 1000);\n }\n };\n\n bridge.addListener('NativeStyleEditor_styleAndLayout', onStyleAndLayout);\n\n return () => {\n bridge.removeListener(\n 'NativeStyleEditor_styleAndLayout',\n onStyleAndLayout,\n );\n\n if (timeoutID !== null) {\n clearTimeout(timeoutID);\n }\n };\n }, [bridge, inspectedElementID, store]);\n\n const value = useMemo(\n () => ({getStyleAndLayout}),\n // NativeStyle is used to invalidate the cache and schedule an update with React.\n [currentStyleAndLayout, getStyleAndLayout],\n );\n\n return (\n <NativeStyleContext.Provider value={value}>\n {children}\n </NativeStyleContext.Provider>\n );\n}\n\nexport {NativeStyleContext, NativeStyleContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport styles from './LayoutViewer.css';\n\nimport type {Layout} from './types';\n\ntype Props = {\n id: number,\n layout: Layout,\n};\n\nexport default function LayoutViewer({id, layout}: Props): React.Node {\n const {height, margin, padding, y, width, x} = layout;\n\n return (\n <div className={styles.LayoutViewer}>\n <div className={styles.Header}>layout</div>\n <div className={styles.DashedBox}>\n <div className={styles.LabelRow}>\n <label className={styles.Label}>margin</label>\n\n <label>{margin.top || '-'}</label>\n </div>\n\n <div className={styles.BoxRow}>\n <label>{margin.left || '-'}</label>\n\n <div className={styles.SolidBox}>\n <div className={styles.LabelRow}>\n <label className={styles.Label}>padding</label>\n\n <label>{padding.top || '-'}</label>\n </div>\n\n <div className={styles.BoxRow}>\n <label>{padding.left || '-'}</label>\n\n <div className={styles.DashedBox}>\n <div className={styles.LabelRow}>\n {format(width)} x {format(height)} ({format(x)}, {format(y)})\n </div>\n </div>\n\n <label>{padding.right || '-'}</label>\n </div>\n\n <label>{padding.bottom || '-'}</label>\n </div>\n <label>{margin.right || '-'}</label>\n </div>\n <label>{margin.bottom || '-'}</label>\n </div>\n </div>\n );\n}\n\nfunction format(number: number): string | number {\n if (Math.round(number) === number) {\n return number;\n } else {\n return number.toFixed(1);\n }\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext, useMemo, useRef, useState} from 'react';\nimport {copy} from 'clipboard-js';\nimport {\n BridgeContext,\n StoreContext,\n} from 'react-devtools-shared/src/devtools/views/context';\nimport Button from '../../Button';\nimport ButtonIcon from '../../ButtonIcon';\nimport {serializeDataForCopy} from '../../utils';\nimport AutoSizeInput from './AutoSizeInput';\nimport styles from './StyleEditor.css';\nimport {sanitizeForParse} from '../../../utils';\n\nimport type {Style} from './types';\n\ntype Props = {\n id: number,\n style: Style,\n};\n\ntype ChangeAttributeFn = (oldName: string, newName: string, value: any) => void;\ntype ChangeValueFn = (name: string, value: any) => void;\n\nexport default function StyleEditor({id, style}: Props): React.Node {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const changeAttribute = (oldName: string, newName: string, value: any) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_renameAttribute', {\n id,\n rendererID,\n oldName,\n newName,\n value,\n });\n }\n };\n\n const changeValue = (name: string, value: any) => {\n const rendererID = store.getRendererIDForElement(id);\n if (rendererID !== null) {\n bridge.send('NativeStyleEditor_setValue', {\n id,\n rendererID,\n name,\n value,\n });\n }\n };\n\n const keys = useMemo(() => Array.from(Object.keys(style)), [style]);\n\n const handleCopy = () => copy(serializeDataForCopy(style));\n\n return (\n <div className={styles.StyleEditor}>\n <div className={styles.HeaderRow}>\n <div className={styles.Header}>\n <div className={styles.Brackets}>{'style {'}</div>\n </div>\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n {keys.length > 0 &&\n keys.map(attribute => (\n <Row\n key={attribute}\n attribute={attribute}\n changeAttribute={changeAttribute}\n changeValue={changeValue}\n validAttributes={store.nativeStyleEditorValidAttributes}\n value={style[attribute]}\n />\n ))}\n <NewRow\n changeAttribute={changeAttribute}\n changeValue={changeValue}\n validAttributes={store.nativeStyleEditorValidAttributes}\n />\n <div className={styles.Brackets}>{'}'}</div>\n </div>\n );\n}\n\ntype NewRowProps = {\n changeAttribute: ChangeAttributeFn,\n changeValue: ChangeValueFn,\n validAttributes: $ReadOnlyArray<string> | null,\n};\n\nfunction NewRow({changeAttribute, changeValue, validAttributes}: NewRowProps) {\n const [key, setKey] = useState<number>(0);\n const reset = () => setKey(key + 1);\n\n const newAttributeRef = useRef<string>('');\n\n const changeAttributeWrapper = (\n oldAttribute: string,\n newAttribute: string,\n value: any,\n ) => {\n // Ignore attribute changes until a value has been specified\n newAttributeRef.current = newAttribute;\n };\n\n const changeValueWrapper = (attribute: string, value: any) => {\n // Blur events should reset/cancel if there's no value or no attribute\n if (newAttributeRef.current !== '') {\n if (value !== '') {\n changeValue(newAttributeRef.current, value);\n }\n reset();\n }\n };\n\n return (\n <Row\n key={key}\n attribute={''}\n attributePlaceholder=\"attribute\"\n changeAttribute={changeAttributeWrapper}\n changeValue={changeValueWrapper}\n validAttributes={validAttributes}\n value={''}\n valuePlaceholder=\"value\"\n />\n );\n}\n\ntype RowProps = {\n attribute: string,\n attributePlaceholder?: string,\n changeAttribute: ChangeAttributeFn,\n changeValue: ChangeValueFn,\n validAttributes: $ReadOnlyArray<string> | null,\n value: any,\n valuePlaceholder?: string,\n};\n\nfunction Row({\n attribute,\n attributePlaceholder,\n changeAttribute,\n changeValue,\n validAttributes,\n value,\n valuePlaceholder,\n}: RowProps) {\n // TODO (RN style editor) Use @reach/combobox to auto-complete attributes.\n // The list of valid attributes would need to be injected by RN backend,\n // which would need to require them from ReactNativeViewViewConfig \"validAttributes.style\" keys.\n // This would need to degrade gracefully for react-native-web,\n // although we could let it also inject a custom set of allowed attributes.\n\n const [localAttribute, setLocalAttribute] = useState(attribute);\n const [localValue, setLocalValue] = useState(JSON.stringify(value));\n const [isAttributeValid, setIsAttributeValid] = useState(true);\n const [isValueValid, setIsValueValid] = useState(true);\n\n // $FlowFixMe[missing-local-annot]\n const validateAndSetLocalAttribute = newAttribute => {\n const isValid =\n newAttribute === '' ||\n validAttributes === null ||\n validAttributes.indexOf(newAttribute) >= 0;\n\n setLocalAttribute(newAttribute);\n setIsAttributeValid(isValid);\n };\n\n // $FlowFixMe[missing-local-annot]\n const validateAndSetLocalValue = newValue => {\n let isValid = false;\n try {\n JSON.parse(sanitizeForParse(newValue));\n isValid = true;\n } catch (error) {}\n\n setLocalValue(newValue);\n setIsValueValid(isValid);\n };\n\n const resetAttribute = () => {\n setLocalAttribute(attribute);\n };\n\n const resetValue = () => {\n setLocalValue(value);\n };\n\n const submitValueChange = () => {\n if (isAttributeValid && isValueValid) {\n const parsedLocalValue = JSON.parse(sanitizeForParse(localValue));\n if (value !== parsedLocalValue) {\n changeValue(attribute, parsedLocalValue);\n }\n }\n };\n\n const submitAttributeChange = () => {\n if (isAttributeValid && isValueValid) {\n if (attribute !== localAttribute) {\n changeAttribute(attribute, localAttribute, value);\n }\n }\n };\n\n return (\n <div className={styles.Row}>\n <Field\n className={isAttributeValid ? styles.Attribute : styles.Invalid}\n onChange={validateAndSetLocalAttribute}\n onReset={resetAttribute}\n onSubmit={submitAttributeChange}\n placeholder={attributePlaceholder}\n value={localAttribute}\n />\n :&nbsp;\n <Field\n className={isValueValid ? styles.Value : styles.Invalid}\n onChange={validateAndSetLocalValue}\n onReset={resetValue}\n onSubmit={submitValueChange}\n placeholder={valuePlaceholder}\n value={localValue}\n />\n ;\n </div>\n );\n}\n\ntype FieldProps = {\n className: string,\n onChange: (value: any) => void,\n onReset: () => void,\n onSubmit: () => void,\n placeholder?: string,\n value: any,\n};\n\nfunction Field({\n className,\n onChange,\n onReset,\n onSubmit,\n placeholder,\n value,\n}: FieldProps) {\n // $FlowFixMe[missing-local-annot]\n const onKeyDown = event => {\n switch (event.key) {\n case 'Enter':\n onSubmit();\n break;\n case 'Escape':\n onReset();\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n event.stopPropagation();\n break;\n default:\n break;\n }\n };\n\n return (\n <AutoSizeInput\n className={`${className} ${styles.Input}`}\n onBlur={onSubmit}\n onChange={(event: $FlowFixMe) => onChange(event.target.value)}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n value={value}\n />\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useMemo} from 'react';\nimport {StoreContext} from 'react-devtools-shared/src/devtools/views/context';\nimport {useSubscription} from 'react-devtools-shared/src/devtools/views/hooks';\nimport {NativeStyleContext} from './context';\nimport LayoutViewer from './LayoutViewer';\nimport StyleEditor from './StyleEditor';\nimport {TreeStateContext} from '../TreeContext';\n\ntype Props = {};\n\nexport default function NativeStyleEditorWrapper(_: Props): React.Node {\n const store = useContext(StoreContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => store.supportsNativeStyleEditor,\n subscribe: (callback: Function) => {\n store.addListener('supportsNativeStyleEditor', callback);\n return () => {\n store.removeListener('supportsNativeStyleEditor', callback);\n };\n },\n }),\n [store],\n );\n const supportsNativeStyleEditor = useSubscription<boolean>(subscription);\n\n if (!supportsNativeStyleEditor) {\n return null;\n }\n\n return <NativeStyleEditor />;\n}\n\nfunction NativeStyleEditor(_: Props) {\n const {getStyleAndLayout} = useContext(NativeStyleContext);\n\n const {inspectedElementID} = useContext(TreeStateContext);\n if (inspectedElementID === null) {\n return null;\n }\n\n const maybeStyleAndLayout = getStyleAndLayout(inspectedElementID);\n if (maybeStyleAndLayout === null) {\n return null;\n }\n\n const {layout, style} = maybeStyleAndLayout;\n\n return (\n <Fragment>\n {layout !== null && (\n <LayoutViewer id={inspectedElementID} layout={layout} />\n )}\n {style !== null && (\n <StyleEditor\n id={inspectedElementID}\n style={style !== null ? style : {}}\n />\n )}\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './Skeleton.css';\n\ntype Props = {\n height: number | string,\n width: number | string,\n};\n\nfunction Skeleton({height, width}: Props): React.Node {\n return <div className={styles.root} style={{height, width}} />;\n}\n\nexport default Skeleton;\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 * @flow\n */\n\nimport * as React from 'react';\nimport {copy} from 'clipboard-js';\nimport {toNormalUrl} from 'jsc-safe-url';\n\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Skeleton from './Skeleton';\n\nimport type {Source as InspectedElementSource} from 'react-devtools-shared/src/shared/types';\nimport styles from './InspectedElementSourcePanel.css';\n\ntype Props = {\n source: InspectedElementSource,\n symbolicatedSourcePromise: Promise<InspectedElementSource | null>,\n};\n\nfunction InspectedElementSourcePanel({\n source,\n symbolicatedSourcePromise,\n}: Props): React.Node {\n return (\n <div>\n <div className={styles.SourceHeaderRow}>\n <div className={styles.SourceHeader}>source</div>\n\n <React.Suspense fallback={<Skeleton height={16} width={16} />}>\n <CopySourceButton\n source={source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n </React.Suspense>\n </div>\n\n <React.Suspense\n fallback={\n <div className={styles.SourceOneLiner}>\n <Skeleton height={16} width=\"40%\" />\n </div>\n }>\n <FormattedSourceString\n source={source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n </React.Suspense>\n </div>\n );\n}\n\nfunction CopySourceButton({source, symbolicatedSourcePromise}: Props) {\n const symbolicatedSource = React.use(symbolicatedSourcePromise);\n if (symbolicatedSource == null) {\n const {sourceURL, line, column} = source;\n const handleCopy = () => copy(`${sourceURL}:${line}:${column}`);\n\n return (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n );\n }\n\n const {sourceURL, line, column} = symbolicatedSource;\n const handleCopy = () => copy(`${sourceURL}:${line}:${column}`);\n\n return (\n <Button onClick={handleCopy} title=\"Copy to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n );\n}\n\nfunction FormattedSourceString({source, symbolicatedSourcePromise}: Props) {\n const symbolicatedSource = React.use(symbolicatedSourcePromise);\n if (symbolicatedSource == null) {\n const {sourceURL, line} = source;\n\n return (\n <div\n className={styles.SourceOneLiner}\n data-testname=\"InspectedElementView-FormattedSourceString\">\n {formatSourceForDisplay(sourceURL, line)}\n </div>\n );\n }\n\n const {sourceURL, line} = symbolicatedSource;\n\n return (\n <div\n className={styles.SourceOneLiner}\n data-testname=\"InspectedElementView-FormattedSourceString\">\n {formatSourceForDisplay(sourceURL, line)}\n </div>\n );\n}\n\n// This function is based on describeComponentFrame() in packages/shared/ReactComponentStackFrame\nfunction formatSourceForDisplay(sourceURL: string, line: number) {\n // Metro can return JSC-safe URLs, which have `//&` as a delimiter\n // https://www.npmjs.com/package/jsc-safe-url\n const sanitizedSourceURL = sourceURL.includes('//&')\n ? toNormalUrl(sourceURL)\n : sourceURL;\n\n // Note: this RegExp doesn't work well with URLs from Metro,\n // which provides bundle URL with query parameters prefixed with /&\n const BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\n\n let nameOnly = sanitizedSourceURL.replace(BEFORE_SLASH_RE, '');\n\n // In DEV, include code for a common special case:\n // prefer \"folder/index.js\" instead of just \"index.js\".\n if (/^index\\./.test(nameOnly)) {\n const match = sanitizedSourceURL.match(BEFORE_SLASH_RE);\n if (match) {\n const pathBeforeSlash = match[1];\n if (pathBeforeSlash) {\n const folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');\n nameOnly = folderName + '/' + nameOnly;\n }\n }\n }\n\n return `${nameOnly}:${line}`;\n}\n\nexport default InspectedElementSourcePanel;\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback, useContext} from 'react';\nimport {TreeDispatcherContext} from './TreeContext';\nimport {BridgeContext, StoreContext} from '../context';\nimport Button from '../Button';\nimport InspectedElementBadges from './InspectedElementBadges';\nimport InspectedElementContextTree from './InspectedElementContextTree';\nimport InspectedElementErrorsAndWarningsTree from './InspectedElementErrorsAndWarningsTree';\nimport InspectedElementHooksTree from './InspectedElementHooksTree';\nimport InspectedElementPropsTree from './InspectedElementPropsTree';\nimport InspectedElementStateTree from './InspectedElementStateTree';\nimport InspectedElementStyleXPlugin from './InspectedElementStyleXPlugin';\nimport InspectedElementSuspenseToggle from './InspectedElementSuspenseToggle';\nimport NativeStyleEditor from './NativeStyleEditor';\nimport ElementBadges from './ElementBadges';\nimport {useHighlightHostInstance} from '../hooks';\nimport {enableStyleXFeatures} from 'react-devtools-feature-flags';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\nimport InspectedElementSourcePanel from './InspectedElementSourcePanel';\n\nimport styles from './InspectedElementView.css';\n\nimport type {\n Element,\n InspectedElement,\n} from 'react-devtools-shared/src/frontend/types';\nimport type {HookNames} from 'react-devtools-shared/src/frontend/types';\nimport type {ToggleParseHookNames} from './InspectedElementContext';\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\ntype Props = {\n element: Element,\n hookNames: HookNames | null,\n inspectedElement: InspectedElement,\n parseHookNames: boolean,\n toggleParseHookNames: ToggleParseHookNames,\n symbolicatedSourcePromise: Promise<Source | null>,\n};\n\nexport default function InspectedElementView({\n element,\n hookNames,\n inspectedElement,\n parseHookNames,\n toggleParseHookNames,\n symbolicatedSourcePromise,\n}: Props): React.Node {\n const {owners, rendererPackageName, rendererVersion, rootType, source} =\n inspectedElement;\n\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const rendererLabel =\n rendererPackageName !== null && rendererVersion !== null\n ? `${rendererPackageName}@${rendererVersion}`\n : null;\n const showOwnersList = owners !== null && owners.length > 0;\n const showRenderedBy =\n showOwnersList || rendererLabel !== null || rootType !== null;\n\n return (\n <Fragment>\n <div className={styles.InspectedElement}>\n <div className={styles.InspectedElementSection}>\n <InspectedElementBadges\n hocDisplayNames={element.hocDisplayNames}\n compiledWithForget={element.compiledWithForget}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementPropsTree\n bridge={bridge}\n element={element}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementSuspenseToggle\n bridge={bridge}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementStateTree\n bridge={bridge}\n element={element}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementHooksTree\n bridge={bridge}\n element={element}\n hookNames={hookNames}\n inspectedElement={inspectedElement}\n parseHookNames={parseHookNames}\n store={store}\n toggleParseHookNames={toggleParseHookNames}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementContextTree\n bridge={bridge}\n element={element}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n\n {enableStyleXFeatures && (\n <div className={styles.InspectedElementSection}>\n <InspectedElementStyleXPlugin\n bridge={bridge}\n element={element}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n )}\n\n <div className={styles.InspectedElementSection}>\n <InspectedElementErrorsAndWarningsTree\n bridge={bridge}\n element={element}\n inspectedElement={inspectedElement}\n store={store}\n />\n </div>\n\n <div className={styles.InspectedElementSection}>\n <NativeStyleEditor />\n </div>\n\n {showRenderedBy && (\n <div\n className={styles.InspectedElementSection}\n data-testname=\"InspectedElementView-Owners\">\n <div className={styles.OwnersHeader}>rendered by</div>\n\n {showOwnersList &&\n owners?.map(owner => (\n <OwnerView\n key={owner.id}\n displayName={owner.displayName || 'Anonymous'}\n hocDisplayNames={owner.hocDisplayNames}\n compiledWithForget={owner.compiledWithForget}\n id={owner.id}\n isInStore={store.containsElement(owner.id)}\n type={owner.type}\n />\n ))}\n\n {rootType !== null && (\n <div className={styles.OwnersMetaField}>{rootType}</div>\n )}\n {rendererLabel !== null && (\n <div className={styles.OwnersMetaField}>{rendererLabel}</div>\n )}\n </div>\n )}\n\n {source != null && (\n <div className={styles.InspectedElementSection}>\n <InspectedElementSourcePanel\n source={source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n </div>\n )}\n </div>\n </Fragment>\n );\n}\n\ntype OwnerViewProps = {\n displayName: string,\n hocDisplayNames: Array<string> | null,\n compiledWithForget: boolean,\n id: number,\n isInStore: boolean,\n};\n\nfunction OwnerView({\n displayName,\n hocDisplayNames,\n compiledWithForget,\n id,\n isInStore,\n}: OwnerViewProps) {\n const dispatch = useContext(TreeDispatcherContext);\n const {highlightHostInstance, clearHighlightHostInstance} =\n useHighlightHostInstance();\n\n const handleClick = useCallback(() => {\n logEvent({\n event_name: 'select-element',\n metadata: {source: 'owner-view'},\n });\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: id,\n });\n }, [dispatch, id]);\n\n return (\n <Button\n key={id}\n className={styles.OwnerButton}\n disabled={!isInStore}\n onClick={handleClick}\n onMouseEnter={() => highlightHostInstance(id)}\n onMouseLeave={clearHighlightHostInstance}>\n <span className={styles.OwnerContent}>\n <span\n className={`${styles.Owner} ${isInStore ? '' : styles.NotInStore}`}\n title={displayName}>\n {displayName}\n </span>\n\n <ElementBadges\n hocDisplayNames={hocDisplayNames}\n compiledWithForget={compiledWithForget}\n />\n </span>\n </Button>\n );\n}\n","export type SourceMapSegment =\n\t| [number]\n\t| [number, number, number, number]\n\t| [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nconst charToInteger: { [charCode: number]: number } = {};\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfor (let i = 0; i < chars.length; i++) {\n\tcharToInteger[chars.charCodeAt(i)] = i;\n}\n\nexport function decode(mappings: string): SourceMapMappings {\n\tconst decoded: SourceMapMappings = [];\n\tlet line: SourceMapLine = [];\n\tconst segment: SourceMapSegment = [\n\t\t0, // generated code column\n\t\t0, // source file index\n\t\t0, // source code line\n\t\t0, // source code column\n\t\t0, // name index\n\t];\n\n\tlet j = 0;\n\tfor (let i = 0, shift = 0, value = 0; i < mappings.length; i++) {\n\t\tconst c = mappings.charCodeAt(i);\n\n\t\tif (c === 44) { // \",\"\n\t\t\tsegmentify(line, segment, j);\n\t\t\tj = 0;\n\n\t\t} else if (c === 59) { // \";\"\n\t\t\tsegmentify(line, segment, j);\n\t\t\tj = 0;\n\t\t\tdecoded.push(line);\n\t\t\tline = [];\n\t\t\tsegment[0] = 0;\n\n\t\t} else {\n\t\t\tlet integer = charToInteger[c];\n\t\t\tif (integer === undefined) {\n\t\t\t\tthrow new Error('Invalid character (' + String.fromCharCode(c) + ')');\n\t\t\t}\n\n\t\t\tconst hasContinuationBit = integer & 32;\n\n\t\t\tinteger &= 31;\n\t\t\tvalue += integer << shift;\n\n\t\t\tif (hasContinuationBit) {\n\t\t\t\tshift += 5;\n\t\t\t} else {\n\t\t\t\tconst shouldNegate = value & 1;\n\t\t\t\tvalue >>>= 1;\n\n\t\t\t\tif (shouldNegate) {\n\t\t\t\t\tvalue = value === 0 ? -0x80000000 : -value;\n\t\t\t\t}\n\n\t\t\t\tsegment[j] += value;\n\t\t\t\tj++;\n\t\t\t\tvalue = shift = 0; // reset\n\t\t\t}\n\t\t}\n\t}\n\n\tsegmentify(line, segment, j);\n\tdecoded.push(line);\n\n\treturn decoded;\n}\n\nfunction segmentify(line: SourceMapSegment[], segment: SourceMapSegment, j: number) {\n\t// This looks ugly, but we're creating specialized arrays with a specific\n\t// length. This is much faster than creating a new array (which v8 expands to\n\t// a capacity of 17 after pushing the first item), or slicing out a subarray\n\t// (which is slow). Length 4 is assumed to be the most frequent, followed by\n\t// length 5 (since not everything will have an associated name), followed by\n\t// length 1 (it's probably rare for a source substring to not have an\n\t// associated segment data).\n\tif (j === 4) line.push([segment[0], segment[1], segment[2], segment[3]]);\n\telse if (j === 5) line.push([segment[0], segment[1], segment[2], segment[3], segment[4]]);\n\telse if (j === 1) line.push([segment[0]]);\n}\n\nexport function encode(decoded: SourceMapMappings): string {\n\tlet sourceFileIndex = 0; // second field\n\tlet sourceCodeLine = 0; // third field\n\tlet sourceCodeColumn = 0; // fourth field\n\tlet nameIndex = 0; // fifth field\n\tlet mappings = '';\n\n\tfor (let i = 0; i < decoded.length; i++) {\n\t\tconst line = decoded[i];\n\t\tif (i > 0) mappings += ';';\n\t\tif (line.length === 0) continue;\n\n\t\tlet generatedCodeColumn = 0; // first field\n\n\t\tconst lineMappings: string[] = [];\n\n\t\tfor (const segment of line) {\n\t\t\tlet segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n\t\t\tgeneratedCodeColumn = segment[0];\n\n\t\t\tif (segment.length > 1) {\n\t\t\t\tsegmentMappings +=\n\t\t\t\t\tencodeInteger(segment[1] - sourceFileIndex) +\n\t\t\t\t\tencodeInteger(segment[2] - sourceCodeLine) +\n\t\t\t\t\tencodeInteger(segment[3] - sourceCodeColumn);\n\n\t\t\t\tsourceFileIndex = segment[1];\n\t\t\t\tsourceCodeLine = segment[2];\n\t\t\t\tsourceCodeColumn = segment[3];\n\t\t\t}\n\n\t\t\tif (segment.length === 5) {\n\t\t\t\tsegmentMappings += encodeInteger(segment[4] - nameIndex);\n\t\t\t\tnameIndex = segment[4];\n\t\t\t}\n\n\t\t\tlineMappings.push(segmentMappings);\n\t\t}\n\n\t\tmappings += lineMappings.join(',');\n\t}\n\n\treturn mappings;\n}\n\nfunction encodeInteger(num: number): string {\n\tvar result = '';\n\tnum = num < 0 ? (-num << 1) | 1 : num << 1;\n\tdo {\n\t\tvar clamped = num & 31;\n\t\tnum >>>= 5;\n\t\tif (num > 0) {\n\t\t\tclamped |= 32;\n\t\t}\n\t\tresult += chars[clamped];\n\t} while (num > 0);\n\n\treturn result;\n}\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 * @flow\n */\nimport {withSyncPerfMeasurements} from 'react-devtools-shared/src/PerformanceLoggingUtils';\nimport {decode} from 'sourcemap-codec';\n\nimport type {\n IndexSourceMap,\n IndexSourceMapSection,\n BasicSourceMap,\n MixedSourceMap,\n} from './SourceMapTypes';\n\ntype SearchPosition = {\n columnNumber: number,\n lineNumber: number,\n};\n\ntype ResultPosition = {\n column: number,\n line: number,\n sourceContent: string | null,\n sourceURL: string | null,\n};\n\nexport type SourceMapConsumerType = {\n originalPositionFor: SearchPosition => ResultPosition,\n};\n\ntype Mappings = Array<Array<Array<number>>>;\n\nexport default function SourceMapConsumer(\n sourceMapJSON: MixedSourceMap | IndexSourceMapSection,\n): SourceMapConsumerType {\n if (sourceMapJSON.sections != null) {\n return IndexedSourceMapConsumer(((sourceMapJSON: any): IndexSourceMap));\n } else {\n return BasicSourceMapConsumer(((sourceMapJSON: any): BasicSourceMap));\n }\n}\n\nfunction BasicSourceMapConsumer(sourceMapJSON: BasicSourceMap) {\n const decodedMappings: Mappings = withSyncPerfMeasurements(\n 'Decoding source map mappings with sourcemap-codec',\n () => decode(sourceMapJSON.mappings),\n );\n\n function originalPositionFor({\n columnNumber,\n lineNumber,\n }: SearchPosition): ResultPosition {\n // Error.prototype.stack columns are 1-based (like most IDEs) but ASTs are 0-based.\n const targetColumnNumber = columnNumber - 1;\n\n const lineMappings = decodedMappings[lineNumber - 1];\n\n let nearestEntry = null;\n\n let startIndex = 0;\n let stopIndex = lineMappings.length - 1;\n let index = -1;\n while (startIndex <= stopIndex) {\n index = Math.floor((stopIndex + startIndex) / 2);\n nearestEntry = lineMappings[index];\n\n const currentColumn = nearestEntry[0];\n if (currentColumn === targetColumnNumber) {\n break;\n } else {\n if (currentColumn > targetColumnNumber) {\n if (stopIndex - index > 0) {\n stopIndex = index;\n } else {\n index = stopIndex;\n break;\n }\n } else {\n if (index - startIndex > 0) {\n startIndex = index;\n } else {\n index = startIndex;\n break;\n }\n }\n }\n }\n\n // We have found either the exact element, or the next-closest element.\n // However there may be more than one such element.\n // Make sure we always return the smallest of these.\n while (index > 0) {\n const previousEntry = lineMappings[index - 1];\n const currentColumn = previousEntry[0];\n if (currentColumn !== targetColumnNumber) {\n break;\n }\n index--;\n }\n\n if (nearestEntry == null) {\n // TODO maybe fall back to the runtime source instead of throwing?\n throw Error(\n `Could not find runtime location for line:${lineNumber} and column:${columnNumber}`,\n );\n }\n\n const sourceIndex = nearestEntry[1];\n const sourceContent =\n sourceMapJSON.sourcesContent != null\n ? sourceMapJSON.sourcesContent[sourceIndex]\n : null;\n const sourceURL = sourceMapJSON.sources[sourceIndex] ?? null;\n const line = nearestEntry[2] + 1;\n const column = nearestEntry[3];\n\n return {\n column,\n line,\n sourceContent: ((sourceContent: any): string | null),\n sourceURL: ((sourceURL: any): string | null),\n };\n }\n\n return (({\n originalPositionFor,\n }: any): SourceMapConsumerType);\n}\n\ntype Section = {\n +generatedColumn: number,\n +generatedLine: number,\n +map: MixedSourceMap,\n\n // Lazily parsed only when/as the section is needed.\n sourceMapConsumer: SourceMapConsumerType | null,\n};\n\nfunction IndexedSourceMapConsumer(sourceMapJSON: IndexSourceMap) {\n let lastOffset = {\n line: -1,\n column: 0,\n };\n\n const sections: Array<Section> = sourceMapJSON.sections.map(section => {\n const offset = section.offset;\n const offsetLine = offset.line;\n const offsetColumn = offset.column;\n\n if (\n offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)\n ) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n\n lastOffset = offset;\n\n return {\n // The offset fields are 0-based, but we use 1-based indices when encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1,\n map: section.map,\n sourceMapConsumer: null,\n };\n });\n\n function originalPositionFor({\n columnNumber,\n lineNumber,\n }: SearchPosition): ResultPosition {\n // Error.prototype.stack columns are 1-based (like most IDEs) but ASTs are 0-based.\n const targetColumnNumber = columnNumber - 1;\n\n let section = null;\n\n let startIndex = 0;\n let stopIndex = sections.length - 1;\n let index = -1;\n while (startIndex <= stopIndex) {\n index = Math.floor((stopIndex + startIndex) / 2);\n section = sections[index];\n\n const currentLine = section.generatedLine;\n if (currentLine === lineNumber) {\n const currentColumn = section.generatedColumn;\n if (currentColumn === lineNumber) {\n break;\n } else {\n if (currentColumn > targetColumnNumber) {\n if (stopIndex - index > 0) {\n stopIndex = index;\n } else {\n index = stopIndex;\n break;\n }\n } else {\n if (index - startIndex > 0) {\n startIndex = index;\n } else {\n index = startIndex;\n break;\n }\n }\n }\n } else {\n if (currentLine > lineNumber) {\n if (stopIndex - index > 0) {\n stopIndex = index;\n } else {\n index = stopIndex;\n break;\n }\n } else {\n if (index - startIndex > 0) {\n startIndex = index;\n } else {\n index = startIndex;\n break;\n }\n }\n }\n }\n\n if (section == null) {\n // TODO maybe fall back to the runtime source instead of throwing?\n throw Error(\n `Could not find matching section for line:${lineNumber} and column:${columnNumber}`,\n );\n }\n\n if (section.sourceMapConsumer === null) {\n // Lazily parse the section only when it's needed.\n // $FlowFixMe[invalid-constructor] Flow no longer supports calling new on functions\n section.sourceMapConsumer = new SourceMapConsumer(section.map);\n }\n\n return section.sourceMapConsumer.originalPositionFor({\n columnNumber,\n lineNumber,\n });\n }\n\n return (({\n originalPositionFor,\n }: any): SourceMapConsumerType);\n}\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 * @flow\n */\n\nimport {normalizeUrl} from 'react-devtools-shared/src/utils';\nimport SourceMapConsumer from 'react-devtools-shared/src/hooks/SourceMapConsumer';\n\nimport type {Source} from 'react-devtools-shared/src/shared/types';\nimport type {FetchFileWithCaching} from 'react-devtools-shared/src/devtools/views/Components/FetchFileWithCachingContext';\n\nconst symbolicationCache: Map<string, Promise<Source | null>> = new Map();\n\nexport async function symbolicateSourceWithCache(\n fetchFileWithCaching: FetchFileWithCaching,\n sourceURL: string,\n line: number, // 1-based\n column: number, // 1-based\n): Promise<Source | null> {\n const key = `${sourceURL}:${line}:${column}`;\n const cachedPromise = symbolicationCache.get(key);\n if (cachedPromise != null) {\n return cachedPromise;\n }\n\n const promise = symbolicateSource(\n fetchFileWithCaching,\n sourceURL,\n line,\n column,\n );\n symbolicationCache.set(key, promise);\n\n return promise;\n}\n\nconst SOURCE_MAP_ANNOTATION_PREFIX = 'sourceMappingURL=';\nexport async function symbolicateSource(\n fetchFileWithCaching: FetchFileWithCaching,\n sourceURL: string,\n lineNumber: number, // 1-based\n columnNumber: number, // 1-based\n): Promise<Source | null> {\n const resource = await fetchFileWithCaching(sourceURL).catch(() => null);\n if (resource == null) {\n return null;\n }\n\n const resourceLines = resource.split(/[\\r\\n]+/);\n for (let i = resourceLines.length - 1; i >= 0; --i) {\n const resourceLine = resourceLines[i];\n\n // In case there is empty last line\n if (!resourceLine) continue;\n // Not an annotation? Stop looking for a source mapping url.\n if (!resourceLine.startsWith('//#')) break;\n\n if (resourceLine.includes(SOURCE_MAP_ANNOTATION_PREFIX)) {\n const sourceMapAnnotationStartIndex = resourceLine.indexOf(\n SOURCE_MAP_ANNOTATION_PREFIX,\n );\n const sourceMapAt = resourceLine.slice(\n sourceMapAnnotationStartIndex + SOURCE_MAP_ANNOTATION_PREFIX.length,\n resourceLine.length,\n );\n\n const sourceMapURL = new URL(sourceMapAt, sourceURL).toString();\n const sourceMap = await fetchFileWithCaching(sourceMapURL).catch(\n () => null,\n );\n if (sourceMap != null) {\n try {\n const parsedSourceMap = JSON.parse(sourceMap);\n const consumer = SourceMapConsumer(parsedSourceMap);\n const {\n sourceURL: possiblyURL,\n line,\n column,\n } = consumer.originalPositionFor({\n lineNumber, // 1-based\n columnNumber, // 1-based\n });\n\n if (possiblyURL === null) {\n return null;\n }\n try {\n // sourceMapURL = https://react.dev/script.js.map\n void new URL(possiblyURL); // test if it is a valid URL\n const normalizedURL = normalizeUrl(possiblyURL);\n\n return {sourceURL: normalizedURL, line, column};\n } catch (e) {\n // This is not valid URL\n if (\n // sourceMapURL = /file\n possiblyURL.startsWith('/') ||\n // sourceMapURL = C:\\\\...\n possiblyURL.slice(1).startsWith(':\\\\\\\\')\n ) {\n // This is an absolute path\n return {sourceURL: possiblyURL, line, column};\n }\n\n // This is a relative path\n // possiblyURL = x.js.map, sourceMapURL = https://react.dev/script.js.map\n const absoluteSourcePath = new URL(\n possiblyURL,\n sourceMapURL,\n ).toString();\n return {sourceURL: absoluteSourcePath, line, column};\n }\n } catch (e) {\n return null;\n }\n }\n\n return null;\n }\n }\n\n return null;\n}\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\nimport * as React from 'react';\n\nimport Button from 'react-devtools-shared/src/devtools/views/Button';\nimport ButtonIcon from 'react-devtools-shared/src/devtools/views/ButtonIcon';\n\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\ntype Props = {\n editorURL: string,\n source: Source,\n symbolicatedSourcePromise: Promise<Source | null>,\n};\n\nfunction checkConditions(\n editorURL: string,\n source: Source,\n): {url: URL | null, shouldDisableButton: boolean} {\n try {\n const url = new URL(editorURL);\n\n let sourceURL = source.sourceURL;\n\n // Check if sourceURL is a correct URL, which has a protocol specified\n if (sourceURL.includes('://')) {\n if (!__IS_INTERNAL_VERSION__) {\n // In this case, we can't really determine the path to a file, disable a button\n return {url: null, shouldDisableButton: true};\n } else {\n const endOfSourceMapURLPattern = '.js/';\n const endOfSourceMapURLIndex = sourceURL.lastIndexOf(\n endOfSourceMapURLPattern,\n );\n\n if (endOfSourceMapURLIndex === -1) {\n return {url: null, shouldDisableButton: true};\n } else {\n sourceURL = sourceURL.slice(\n endOfSourceMapURLIndex + endOfSourceMapURLPattern.length,\n sourceURL.length,\n );\n }\n }\n }\n\n const lineNumberAsString = String(source.line);\n\n url.href = url.href\n .replace('{path}', sourceURL)\n .replace('{line}', lineNumberAsString)\n .replace('%7Bpath%7D', sourceURL)\n .replace('%7Bline%7D', lineNumberAsString);\n\n return {url, shouldDisableButton: false};\n } catch (e) {\n // User has provided incorrect editor url\n return {url: null, shouldDisableButton: true};\n }\n}\n\nfunction OpenInEditorButton({\n editorURL,\n source,\n symbolicatedSourcePromise,\n}: Props): React.Node {\n const symbolicatedSource = React.use(symbolicatedSourcePromise);\n\n const {url, shouldDisableButton} = checkConditions(\n editorURL,\n symbolicatedSource ? symbolicatedSource : source,\n );\n\n return (\n <Button\n disabled={shouldDisableButton}\n onClick={() => window.open(url)}\n title=\"Open in editor\">\n <ButtonIcon type=\"editor\" />\n </Button>\n );\n}\n\nexport default OpenInEditorButton;\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport {createContext} from 'react';\n\nimport type {\n CanViewElementSource,\n ViewElementSource,\n} from 'react-devtools-shared/src/devtools/views/DevTools';\n\nexport type Context = {\n canViewElementSourceFunction: CanViewElementSource | null,\n viewElementSourceFunction: ViewElementSource | null,\n};\n\nconst ViewElementSourceContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nViewElementSourceContext.displayName = 'ViewElementSourceContext';\n\nexport default ViewElementSourceContext;\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport ButtonIcon from '../ButtonIcon';\nimport Button from '../Button';\nimport ViewElementSourceContext from './ViewElementSourceContext';\nimport Skeleton from './Skeleton';\n\nimport type {Source as InspectedElementSource} from 'react-devtools-shared/src/shared/types';\nimport type {\n CanViewElementSource,\n ViewElementSource,\n} from 'react-devtools-shared/src/devtools/views/DevTools';\n\nconst {useCallback, useContext} = React;\n\ntype Props = {\n canViewSource: ?boolean,\n source: ?InspectedElementSource,\n symbolicatedSourcePromise: Promise<InspectedElementSource | null> | null,\n};\n\nfunction InspectedElementViewSourceButton({\n canViewSource,\n source,\n symbolicatedSourcePromise,\n}: Props): React.Node {\n const {canViewElementSourceFunction, viewElementSourceFunction} = useContext(\n ViewElementSourceContext,\n );\n\n return (\n <React.Suspense fallback={<Skeleton height={16} width={24} />}>\n <ActualSourceButton\n canViewSource={canViewSource}\n source={source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n canViewElementSourceFunction={canViewElementSourceFunction}\n viewElementSourceFunction={viewElementSourceFunction}\n />\n </React.Suspense>\n );\n}\n\ntype ActualSourceButtonProps = {\n canViewSource: ?boolean,\n source: ?InspectedElementSource,\n symbolicatedSourcePromise: Promise<InspectedElementSource | null> | null,\n canViewElementSourceFunction: CanViewElementSource | null,\n viewElementSourceFunction: ViewElementSource | null,\n};\nfunction ActualSourceButton({\n canViewSource,\n source,\n symbolicatedSourcePromise,\n canViewElementSourceFunction,\n viewElementSourceFunction,\n}: ActualSourceButtonProps): React.Node {\n const symbolicatedSource =\n symbolicatedSourcePromise == null\n ? null\n : React.use(symbolicatedSourcePromise);\n\n // In some cases (e.g. FB internal usage) the standalone shell might not be able to view the source.\n // To detect this case, we defer to an injected helper function (if present).\n const buttonIsEnabled =\n !!canViewSource &&\n viewElementSourceFunction != null &&\n source != null &&\n (canViewElementSourceFunction == null ||\n canViewElementSourceFunction(source, symbolicatedSource));\n\n const viewSource = useCallback(() => {\n if (viewElementSourceFunction != null && source != null) {\n viewElementSourceFunction(source, symbolicatedSource);\n }\n }, [source, symbolicatedSource]);\n\n return (\n <Button\n disabled={!buttonIsEnabled}\n onClick={viewSource}\n title=\"View source for this element\">\n <ButtonIcon type=\"view-source\" />\n </Button>\n );\n}\n\nexport default InspectedElementViewSourceButton;\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useSyncExternalStore} from 'react';\nimport {TreeStateContext} from './TreeContext';\nimport {BridgeContext, StoreContext, OptionsContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Icon from '../Icon';\nimport Toggle from '../Toggle';\nimport {ElementTypeSuspense} from 'react-devtools-shared/src/frontend/types';\nimport InspectedElementView from './InspectedElementView';\nimport {InspectedElementContext} from './InspectedElementContext';\nimport {getOpenInEditorURL} from '../../../utils';\nimport {LOCAL_STORAGE_OPEN_IN_EDITOR_URL} from '../../../constants';\nimport FetchFileWithCachingContext from './FetchFileWithCachingContext';\nimport {symbolicateSourceWithCache} from 'react-devtools-shared/src/symbolicateSource';\nimport OpenInEditorButton from './OpenInEditorButton';\nimport InspectedElementViewSourceButton from './InspectedElementViewSourceButton';\nimport Skeleton from './Skeleton';\n\nimport styles from './InspectedElement.css';\n\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\nexport type Props = {};\n\n// TODO Make edits and deletes also use transition API!\n\nexport default function InspectedElementWrapper(_: Props): React.Node {\n const {inspectedElementID} = useContext(TreeStateContext);\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n const {\n hideToggleErrorAction,\n hideToggleSuspenseAction,\n hideLogAction,\n hideViewSourceAction,\n } = useContext(OptionsContext);\n\n const {hookNames, inspectedElement, parseHookNames, toggleParseHookNames} =\n useContext(InspectedElementContext);\n\n const fetchFileWithCaching = useContext(FetchFileWithCachingContext);\n\n const symbolicatedSourcePromise: null | Promise<Source | null> =\n React.useMemo(() => {\n if (inspectedElement == null) return null;\n if (fetchFileWithCaching == null) return Promise.resolve(null);\n\n const {source} = inspectedElement;\n if (source == null) return Promise.resolve(null);\n\n const {sourceURL, line, column} = source;\n return symbolicateSourceWithCache(\n fetchFileWithCaching,\n sourceURL,\n line,\n column,\n );\n }, [inspectedElement]);\n\n const element =\n inspectedElementID !== null\n ? store.getElementByID(inspectedElementID)\n : null;\n\n const highlightElement = useCallback(() => {\n if (element !== null && inspectedElementID !== null) {\n const rendererID = store.getRendererIDForElement(inspectedElementID);\n if (rendererID !== null) {\n bridge.send('highlightHostInstance', {\n displayName: element.displayName,\n hideAfterTimeout: true,\n id: inspectedElementID,\n openBuiltinElementsPanel: true,\n rendererID,\n scrollIntoView: true,\n });\n }\n }\n }, [bridge, element, inspectedElementID, store]);\n\n const logElement = useCallback(() => {\n if (inspectedElementID !== null) {\n const rendererID = store.getRendererIDForElement(inspectedElementID);\n if (rendererID !== null) {\n bridge.send('logElementToConsole', {\n id: inspectedElementID,\n rendererID,\n });\n }\n }\n }, [bridge, inspectedElementID, store]);\n\n const isErrored = inspectedElement != null && inspectedElement.isErrored;\n\n const isSuspended =\n element !== null &&\n element.type === ElementTypeSuspense &&\n inspectedElement != null &&\n inspectedElement.state != null;\n\n const canToggleError =\n !hideToggleErrorAction &&\n inspectedElement != null &&\n inspectedElement.canToggleError;\n\n const canToggleSuspense =\n !hideToggleSuspenseAction &&\n inspectedElement != null &&\n inspectedElement.canToggleSuspense;\n\n const editorURL = useSyncExternalStore(\n function subscribe(callback) {\n window.addEventListener(LOCAL_STORAGE_OPEN_IN_EDITOR_URL, callback);\n return function unsubscribe() {\n window.removeEventListener(LOCAL_STORAGE_OPEN_IN_EDITOR_URL, callback);\n };\n },\n function getState() {\n return getOpenInEditorURL();\n },\n );\n\n const toggleErrored = useCallback(() => {\n if (inspectedElement == null) {\n return;\n }\n\n const rendererID = store.getRendererIDForElement(inspectedElement.id);\n if (rendererID !== null) {\n // Toggle error.\n // Because triggering an error will always delete the children, we'll\n // automatically select the nearest still mounted instance which will be\n // the error boundary.\n bridge.send('overrideError', {\n id: inspectedElement.id,\n rendererID,\n forceError: !isErrored,\n });\n }\n }, [bridge, store, isErrored, inspectedElement]);\n\n // TODO (suspense toggle) Would be nice to eventually use a two setState pattern here as well.\n const toggleSuspended = useCallback(() => {\n if (inspectedElement == null) {\n return;\n }\n\n const rendererID = store.getRendererIDForElement(inspectedElement.id);\n if (rendererID !== null) {\n // Toggle suspended\n // Because suspending or unsuspending always delete the children or fallback,\n // we'll automatically select the nearest still mounted instance which will be\n // the Suspense boundary.\n bridge.send('overrideSuspense', {\n id: inspectedElement.id,\n rendererID,\n forceFallback: !isSuspended,\n });\n }\n }, [bridge, store, isSuspended, inspectedElement]);\n\n if (element === null) {\n return (\n <div className={styles.InspectedElement}>\n <div className={styles.TitleRow} />\n </div>\n );\n }\n\n let strictModeBadge = null;\n if (element.isStrictModeNonCompliant) {\n strictModeBadge = (\n <a\n className={styles.StrictModeNonCompliant}\n href=\"https://react.dev/reference/react/StrictMode\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n title=\"This component is not running in StrictMode. Click to learn more.\">\n <Icon type=\"strict-mode-non-compliant\" />\n </a>\n );\n }\n\n return (\n <div className={styles.InspectedElement}>\n <div className={styles.TitleRow} data-testname=\"InspectedElement-Title\">\n {strictModeBadge}\n\n {element.key && (\n <>\n <div className={styles.Key} title={`key \"${element.key}\"`}>\n {element.key}\n </div>\n <div className={styles.KeyArrow} />\n </>\n )}\n\n <div className={styles.SelectedComponentName}>\n <div\n className={\n element.isStrictModeNonCompliant\n ? `${styles.ComponentName} ${styles.StrictModeNonCompliantComponentName}`\n : styles.ComponentName\n }\n title={element.displayName}>\n {element.displayName}\n </div>\n </div>\n\n {!!editorURL &&\n inspectedElement != null &&\n inspectedElement.source != null &&\n symbolicatedSourcePromise != null && (\n <React.Suspense fallback={<Skeleton height={16} width={24} />}>\n <OpenInEditorButton\n editorURL={editorURL}\n source={inspectedElement.source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n </React.Suspense>\n )}\n\n {canToggleError && (\n <Toggle\n isChecked={isErrored}\n onChange={toggleErrored}\n title={\n isErrored\n ? 'Clear the forced error'\n : 'Force the selected component into an errored state'\n }>\n <ButtonIcon type=\"error\" />\n </Toggle>\n )}\n {canToggleSuspense && (\n <Toggle\n isChecked={isSuspended}\n onChange={toggleSuspended}\n title={\n isSuspended\n ? 'Unsuspend the selected component'\n : 'Suspend the selected component'\n }>\n <ButtonIcon type=\"suspend\" />\n </Toggle>\n )}\n {store.supportsInspectMatchingDOMElement && (\n <Button\n onClick={highlightElement}\n title=\"Inspect the matching DOM element\">\n <ButtonIcon type=\"view-dom\" />\n </Button>\n )}\n {!hideLogAction && (\n <Button\n onClick={logElement}\n title=\"Log this component data to the console\">\n <ButtonIcon type=\"log-data\" />\n </Button>\n )}\n\n {!hideViewSourceAction && (\n <InspectedElementViewSourceButton\n canViewSource={inspectedElement?.canViewSource}\n source={inspectedElement?.source}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n )}\n </div>\n\n {inspectedElement === null && (\n <div className={styles.Loading}>Loading...</div>\n )}\n\n {inspectedElement !== null && symbolicatedSourcePromise != null && (\n <InspectedElementView\n key={\n inspectedElementID /* Force reset when selected Element changes */\n }\n element={element}\n hookNames={hookNames}\n inspectedElement={inspectedElement}\n parseHookNames={parseHookNames}\n toggleParseHookNames={toggleParseHookNames}\n symbolicatedSourcePromise={symbolicatedSourcePromise}\n />\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\nimport * as React from 'react';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport Button from './Button';\nimport {useModalDismissSignal} from './hooks';\n\nimport styles from './ModalDialog.css';\n\ntype ID = any;\n\ntype DIALOG_ACTION_HIDE = {\n type: 'HIDE',\n id: ID,\n};\ntype DIALOG_ACTION_SHOW = {\n type: 'SHOW',\n canBeDismissed?: boolean,\n content: React$Node,\n id: ID,\n title?: React$Node | null,\n};\n\ntype Action = DIALOG_ACTION_HIDE | DIALOG_ACTION_SHOW;\n\ntype Dispatch = (action: Action) => void;\n\ntype Dialog = {\n canBeDismissed: boolean,\n content: React$Node | null,\n id: ID,\n title: React$Node | null,\n};\n\ntype State = {\n dialogs: Array<Dialog>,\n};\n\ntype ModalDialogContextType = {\n ...State,\n dispatch: Dispatch,\n};\n\nconst ModalDialogContext: ReactContext<ModalDialogContextType> =\n createContext<ModalDialogContextType>(((null: any): ModalDialogContextType));\nModalDialogContext.displayName = 'ModalDialogContext';\n\nfunction dialogReducer(state: State, action: Action) {\n switch (action.type) {\n case 'HIDE':\n return {\n dialogs: state.dialogs.filter(dialog => dialog.id !== action.id),\n };\n case 'SHOW':\n return {\n dialogs: [\n ...state.dialogs,\n {\n canBeDismissed: action.canBeDismissed !== false,\n content: action.content,\n id: action.id,\n title: action.title || null,\n },\n ],\n };\n default:\n throw new Error(`Invalid action \"${action.type}\"`);\n }\n}\n\ntype Props = {\n children: React$Node,\n};\n\nfunction ModalDialogContextController({children}: Props): React.Node {\n const [state, dispatch] = useReducer<State, State, Action>(dialogReducer, {\n dialogs: [],\n });\n\n const value = useMemo<ModalDialogContextType>(\n () => ({\n dialogs: state.dialogs,\n dispatch,\n }),\n [state, dispatch],\n );\n\n return (\n <ModalDialogContext.Provider value={value}>\n {children}\n </ModalDialogContext.Provider>\n );\n}\n\nfunction ModalDialog(_: {}): React.Node {\n const {dialogs, dispatch} = useContext(ModalDialogContext);\n\n if (dialogs.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.Background}>\n {dialogs.map(dialog => (\n <ModalDialogImpl\n key={dialog.id}\n canBeDismissed={dialog.canBeDismissed}\n content={dialog.content}\n dispatch={dispatch}\n id={dialog.id}\n title={dialog.title}\n />\n ))}\n </div>\n );\n}\n\nfunction ModalDialogImpl({\n canBeDismissed,\n content,\n dispatch,\n id,\n title,\n}: {\n canBeDismissed: boolean,\n content: React$Node | null,\n dispatch: Dispatch,\n id: ID,\n title: React$Node | null,\n}) {\n const dismissModal = useCallback(() => {\n if (canBeDismissed) {\n dispatch({type: 'HIDE', id});\n }\n }, [canBeDismissed, dispatch]);\n const dialogRef = useRef<HTMLDivElement | null>(null);\n\n // It's important to trap click events within the dialog,\n // so the dismiss hook will use it for click hit detection.\n // Because multiple tabs may be showing this ModalDialog,\n // the normal `dialog.contains(target)` check would fail on a background tab.\n useModalDismissSignal(dialogRef, dismissModal, false);\n\n // Clicks on the dialog should not bubble.\n // This way we can dismiss by listening to clicks on the background.\n const handleDialogClick = (event: any) => {\n event.stopPropagation();\n\n // It is important that we don't also prevent default,\n // or clicks within the dialog (e.g. on links) won't work.\n };\n\n return (\n <div ref={dialogRef} className={styles.Dialog} onClick={handleDialogClick}>\n {title !== null && <div className={styles.Title}>{title}</div>}\n {content}\n {canBeDismissed && (\n <div className={styles.Buttons}>\n <Button\n autoFocus={true}\n className={styles.Button}\n onClick={dismissModal}>\n Okay\n </Button>\n </div>\n )}\n </div>\n );\n}\n\nexport {ModalDialog, ModalDialogContext, ModalDialogContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback} from 'react';\nimport Icon from './Icon';\n\nimport styles from './TabBar.css';\nimport Tooltip from './Components/reach-ui/tooltip';\n\nimport type {IconType} from './Icon';\n\ntype TabInfo = {\n icon: IconType,\n id: string,\n label: string,\n title?: string,\n};\n\nexport type Props = {\n currentTab: any,\n disabled?: boolean,\n id: string,\n selectTab: (tabID: any) => void,\n tabs: Array<TabInfo | null>,\n type: 'navigation' | 'profiler' | 'settings',\n};\n\nexport default function TabBar({\n currentTab,\n disabled = false,\n id: groupName,\n selectTab,\n tabs,\n type,\n}: Props): React.Node {\n if (!tabs.some(tab => tab !== null && tab.id === currentTab)) {\n const firstTab = ((tabs.find(tab => tab !== null): any): TabInfo);\n selectTab(firstTab.id);\n }\n\n const onChange = useCallback(\n ({currentTarget}: $FlowFixMe) => selectTab(currentTarget.value),\n [selectTab],\n );\n\n const handleKeyDown = useCallback((event: $FlowFixMe) => {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n event.stopPropagation();\n break;\n default:\n break;\n }\n }, []);\n\n let iconSizeClassName;\n let tabLabelClassName;\n let tabSizeClassName;\n switch (type) {\n case 'navigation':\n iconSizeClassName = styles.IconSizeNavigation;\n tabLabelClassName = styles.TabLabelNavigation;\n tabSizeClassName = styles.TabSizeNavigation;\n break;\n case 'profiler':\n iconSizeClassName = styles.IconSizeProfiler;\n tabLabelClassName = styles.TabLabelProfiler;\n tabSizeClassName = styles.TabSizeProfiler;\n break;\n case 'settings':\n iconSizeClassName = styles.IconSizeSettings;\n tabLabelClassName = styles.TabLabelSettings;\n tabSizeClassName = styles.TabSizeSettings;\n break;\n default:\n throw Error(`Unsupported type \"${type}\"`);\n }\n\n return (\n <Fragment>\n {tabs.map(tab => {\n if (tab === null) {\n return <div key=\"VRule\" className={styles.VRule} />;\n }\n\n const {icon, id, label, title} = tab;\n\n let button = (\n <label\n className={[\n tabSizeClassName,\n disabled ? styles.TabDisabled : styles.Tab,\n !disabled && currentTab === id ? styles.TabCurrent : '',\n ].join(' ')}\n data-testname={`TabBarButton-${id}`}\n key={id}\n onKeyDown={handleKeyDown}\n onMouseDown={() => selectTab(id)}>\n <input\n type=\"radio\"\n className={styles.Input}\n checked={currentTab === id}\n disabled={disabled}\n name={groupName}\n value={id}\n onChange={onChange}\n />\n <Icon\n className={`${\n disabled ? styles.IconDisabled : ''\n } ${iconSizeClassName}`}\n type={icon}\n />\n <span className={tabLabelClassName}>{label}</span>\n </label>\n );\n\n if (title) {\n button = (\n <Tooltip key={id} label={title}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n })}\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n use,\n} from 'react';\nimport {\n LOCAL_STORAGE_OPEN_IN_EDITOR_URL,\n LOCAL_STORAGE_OPEN_IN_EDITOR_URL_PRESET,\n} from '../../../constants';\nimport {useLocalStorage, useSubscription} from '../hooks';\nimport {StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport Toggle from '../Toggle';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport {\n ComponentFilterDisplayName,\n ComponentFilterElementType,\n ComponentFilterHOC,\n ComponentFilterLocation,\n ComponentFilterEnvironmentName,\n ElementTypeClass,\n ElementTypeContext,\n ElementTypeFunction,\n ElementTypeForwardRef,\n ElementTypeHostComponent,\n ElementTypeMemo,\n ElementTypeOtherOrUnknown,\n ElementTypeProfiler,\n ElementTypeSuspense,\n} from 'react-devtools-shared/src/frontend/types';\nimport {getDefaultOpenInEditorURL} from 'react-devtools-shared/src/utils';\n\nimport styles from './SettingsShared.css';\n\nimport type {\n BooleanComponentFilter,\n ComponentFilter,\n ComponentFilterType,\n ElementType,\n ElementTypeComponentFilter,\n RegExpComponentFilter,\n EnvironmentNameComponentFilter,\n} from 'react-devtools-shared/src/frontend/types';\n\nconst vscodeFilepath = 'vscode://file/{path}:{line}';\n\nexport default function ComponentsSettings({\n environmentNames,\n}: {\n environmentNames: Promise<Array<string>>,\n}): React.Node {\n const store = useContext(StoreContext);\n const {parseHookNames, setParseHookNames} = useContext(SettingsContext);\n\n const collapseNodesByDefaultSubscription = useMemo(\n () => ({\n getCurrentValue: () => store.collapseNodesByDefault,\n subscribe: (callback: Function) => {\n store.addListener('collapseNodesByDefault', callback);\n return () => store.removeListener('collapseNodesByDefault', callback);\n },\n }),\n [store],\n );\n const collapseNodesByDefault = useSubscription<boolean>(\n collapseNodesByDefaultSubscription,\n );\n\n const updateCollapseNodesByDefault = useCallback(\n ({currentTarget}: $FlowFixMe) => {\n store.collapseNodesByDefault = !currentTarget.checked;\n },\n [store],\n );\n\n const updateParseHookNames = useCallback(\n ({currentTarget}: $FlowFixMe) => {\n setParseHookNames(currentTarget.checked);\n },\n [setParseHookNames],\n );\n\n const [openInEditorURLPreset, setOpenInEditorURLPreset] = useLocalStorage<\n 'vscode' | 'custom',\n >(LOCAL_STORAGE_OPEN_IN_EDITOR_URL_PRESET, 'custom');\n\n const [openInEditorURL, setOpenInEditorURL] = useLocalStorage<string>(\n LOCAL_STORAGE_OPEN_IN_EDITOR_URL,\n getDefaultOpenInEditorURL(),\n );\n\n const [componentFilters, setComponentFilters] = useState<\n Array<ComponentFilter>,\n >(() => [...store.componentFilters]);\n\n const usedEnvironmentNames = use(environmentNames);\n\n const resolvedEnvironmentNames = useMemo(() => {\n const set = new Set(usedEnvironmentNames);\n // If there are other filters already specified but are not currently\n // on the page, we still allow them as options.\n for (let i = 0; i < componentFilters.length; i++) {\n const filter = componentFilters[i];\n if (filter.type === ComponentFilterEnvironmentName) {\n set.add(filter.value);\n }\n }\n // Client is special and is always available as a default.\n if (set.size > 0) {\n // Only show any options at all if there's any other option already\n // used by a filter or if any environments are used by the page.\n // Note that \"Client\" can have been added above which would mean\n // that we should show it as an option regardless if it's the only\n // option.\n set.add('Client');\n }\n return Array.from(set).sort();\n }, [usedEnvironmentNames, componentFilters]);\n\n const addFilter = useCallback(() => {\n setComponentFilters(prevComponentFilters => {\n return [\n ...prevComponentFilters,\n {\n type: ComponentFilterElementType,\n value: ElementTypeHostComponent,\n isEnabled: true,\n },\n ];\n });\n }, []);\n\n const changeFilterType = useCallback(\n (componentFilter: ComponentFilter, type: ComponentFilterType) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n if (type === ComponentFilterElementType) {\n cloned[index] = {\n type: ComponentFilterElementType,\n isEnabled: componentFilter.isEnabled,\n value: ElementTypeHostComponent,\n };\n } else if (type === ComponentFilterDisplayName) {\n cloned[index] = {\n type: ComponentFilterDisplayName,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n value: '',\n };\n } else if (type === ComponentFilterLocation) {\n cloned[index] = {\n type: ComponentFilterLocation,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n value: '',\n };\n } else if (type === ComponentFilterHOC) {\n cloned[index] = {\n type: ComponentFilterHOC,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n };\n } else if (type === ComponentFilterEnvironmentName) {\n cloned[index] = {\n type: ComponentFilterEnvironmentName,\n isEnabled: componentFilter.isEnabled,\n isValid: true,\n value: 'Client',\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const updateFilterValueElementType = useCallback(\n (componentFilter: ComponentFilter, value: ElementType) => {\n if (componentFilter.type !== ComponentFilterElementType) {\n throw Error('Invalid value for element type filter');\n }\n\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n if (componentFilter.type === ComponentFilterElementType) {\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n cloned[index] = {\n ...componentFilter,\n value,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const updateFilterValueRegExp = useCallback(\n (componentFilter: ComponentFilter, value: string) => {\n if (componentFilter.type === ComponentFilterElementType) {\n throw Error('Invalid value for element type filter');\n }\n\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n if (\n componentFilter.type === ComponentFilterDisplayName ||\n componentFilter.type === ComponentFilterLocation\n ) {\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n let isValid = true;\n try {\n new RegExp(value); // eslint-disable-line no-new\n } catch (error) {\n isValid = false;\n }\n cloned[index] = {\n ...componentFilter,\n isValid,\n value,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const updateFilterValueEnvironmentName = useCallback(\n (componentFilter: ComponentFilter, value: string) => {\n if (componentFilter.type !== ComponentFilterEnvironmentName) {\n throw Error('Invalid value for environment name filter');\n }\n\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n if (componentFilter.type === ComponentFilterEnvironmentName) {\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n cloned[index] = {\n ...componentFilter,\n value,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n const removeFilter = useCallback((index: number) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n cloned.splice(index, 1);\n return cloned;\n });\n }, []);\n\n const removeAllFilter = () => {\n setComponentFilters([]);\n };\n\n const toggleFilterIsEnabled = useCallback(\n (componentFilter: ComponentFilter, isEnabled: boolean) => {\n setComponentFilters(prevComponentFilters => {\n const cloned: Array<ComponentFilter> = [...prevComponentFilters];\n const index = prevComponentFilters.indexOf(componentFilter);\n if (index >= 0) {\n if (componentFilter.type === ComponentFilterElementType) {\n cloned[index] = {\n ...((cloned[index]: any): ElementTypeComponentFilter),\n isEnabled,\n };\n } else if (\n componentFilter.type === ComponentFilterDisplayName ||\n componentFilter.type === ComponentFilterLocation\n ) {\n cloned[index] = {\n ...((cloned[index]: any): RegExpComponentFilter),\n isEnabled,\n };\n } else if (componentFilter.type === ComponentFilterHOC) {\n cloned[index] = {\n ...((cloned[index]: any): BooleanComponentFilter),\n isEnabled,\n };\n } else if (componentFilter.type === ComponentFilterEnvironmentName) {\n cloned[index] = {\n ...((cloned[index]: any): EnvironmentNameComponentFilter),\n isEnabled,\n };\n }\n }\n return cloned;\n });\n },\n [],\n );\n\n // Filter updates are expensive to apply (since they impact the entire tree).\n // Only apply them on unmount.\n // The Store will avoid doing any expensive work unless they've changed.\n // We just want to batch the work in the event that they do change.\n const componentFiltersRef = useRef<Array<ComponentFilter>>(componentFilters);\n useEffect(() => {\n componentFiltersRef.current = componentFilters;\n return () => {};\n }, [componentFilters]);\n useEffect(\n () => () => {\n store.componentFilters = [...componentFiltersRef.current];\n },\n [store],\n );\n\n return (\n <div className={styles.Settings}>\n <label className={styles.Setting}>\n <input\n type=\"checkbox\"\n checked={!collapseNodesByDefault}\n onChange={updateCollapseNodesByDefault}\n />{' '}\n Expand component tree by default\n </label>\n\n <label className={styles.Setting}>\n <input\n type=\"checkbox\"\n checked={parseHookNames}\n onChange={updateParseHookNames}\n />{' '}\n Always parse hook names from source{' '}\n <span className={styles.Warning}>(may be slow)</span>\n </label>\n\n <label className={styles.OpenInURLSetting}>\n Open in Editor URL:{' '}\n <select\n className={styles.Select}\n value={openInEditorURLPreset}\n onChange={({currentTarget}) => {\n const selectedValue = currentTarget.value;\n setOpenInEditorURLPreset(selectedValue);\n if (selectedValue === 'vscode') {\n setOpenInEditorURL(vscodeFilepath);\n } else if (selectedValue === 'custom') {\n setOpenInEditorURL('');\n }\n }}>\n <option value=\"vscode\">VS Code</option>\n <option value=\"custom\">Custom</option>\n </select>\n {openInEditorURLPreset === 'custom' && (\n <input\n className={styles.Input}\n type=\"text\"\n placeholder={process.env.EDITOR_URL ? process.env.EDITOR_URL : ''}\n value={openInEditorURL}\n onChange={event => {\n setOpenInEditorURL(event.target.value);\n }}\n />\n )}\n </label>\n\n <div className={styles.Header}>Hide components where...</div>\n\n <table className={styles.Table}>\n <tbody>\n {componentFilters.length === 0 && (\n <tr className={styles.TableRow}>\n <td className={styles.NoFiltersCell}>\n No filters have been added.\n </td>\n </tr>\n )}\n {componentFilters.map((componentFilter, index) => (\n <tr className={styles.TableRow} key={index}>\n <td className={styles.TableCell}>\n <Toggle\n className={\n componentFilter.isValid !== false\n ? ''\n : styles.InvalidRegExp\n }\n isChecked={componentFilter.isEnabled}\n onChange={isEnabled =>\n toggleFilterIsEnabled(componentFilter, isEnabled)\n }\n title={\n componentFilter.isValid === false\n ? 'Filter invalid'\n : componentFilter.isEnabled\n ? 'Filter enabled'\n : 'Filter disabled'\n }>\n <ToggleIcon\n isEnabled={componentFilter.isEnabled}\n isValid={\n componentFilter.isValid == null ||\n componentFilter.isValid === true\n }\n />\n </Toggle>\n </td>\n <td className={styles.TableCell}>\n <select\n className={styles.Select}\n value={componentFilter.type}\n onChange={({currentTarget}) =>\n changeFilterType(\n componentFilter,\n ((parseInt(\n currentTarget.value,\n 10,\n ): any): ComponentFilterType),\n )\n }>\n {/* TODO: currently disabled, need find a new way of doing this\n <option value={ComponentFilterLocation}>location</option>\n */}\n <option value={ComponentFilterDisplayName}>name</option>\n <option value={ComponentFilterElementType}>type</option>\n <option value={ComponentFilterHOC}>hoc</option>\n {resolvedEnvironmentNames.length > 0 && (\n <option value={ComponentFilterEnvironmentName}>\n environment\n </option>\n )}\n </select>\n </td>\n <td className={styles.TableCell}>\n {(componentFilter.type === ComponentFilterElementType ||\n componentFilter.type === ComponentFilterEnvironmentName) &&\n 'equals'}\n {(componentFilter.type === ComponentFilterLocation ||\n componentFilter.type === ComponentFilterDisplayName) &&\n 'matches'}\n </td>\n <td className={styles.TableCell}>\n {componentFilter.type === ComponentFilterElementType && (\n <select\n className={styles.Select}\n value={componentFilter.value}\n onChange={({currentTarget}) =>\n updateFilterValueElementType(\n componentFilter,\n ((parseInt(currentTarget.value, 10): any): ElementType),\n )\n }>\n <option value={ElementTypeClass}>class</option>\n <option value={ElementTypeContext}>context</option>\n <option value={ElementTypeFunction}>function</option>\n <option value={ElementTypeForwardRef}>forward ref</option>\n <option value={ElementTypeHostComponent}>\n {__IS_NATIVE__\n ? 'host components (e.g. &lt;RCTText&gt;)'\n : 'dom nodes (e.g. &lt;div&gt;)'}\n </option>\n <option value={ElementTypeMemo}>memo</option>\n <option value={ElementTypeOtherOrUnknown}>other</option>\n <option value={ElementTypeProfiler}>profiler</option>\n <option value={ElementTypeSuspense}>suspense</option>\n </select>\n )}\n {(componentFilter.type === ComponentFilterLocation ||\n componentFilter.type === ComponentFilterDisplayName) && (\n <input\n className={styles.Input}\n type=\"text\"\n placeholder=\"Regular expression\"\n onChange={({currentTarget}) =>\n updateFilterValueRegExp(\n componentFilter,\n currentTarget.value,\n )\n }\n value={componentFilter.value}\n />\n )}\n {componentFilter.type === ComponentFilterEnvironmentName && (\n <select\n className={styles.Select}\n value={componentFilter.value}\n onChange={({currentTarget}) =>\n updateFilterValueEnvironmentName(\n componentFilter,\n currentTarget.value,\n )\n }>\n {resolvedEnvironmentNames.map(name => (\n <option key={name} value={name}>\n {name}\n </option>\n ))}\n </select>\n )}\n </td>\n <td className={styles.TableCell}>\n <Button\n onClick={() => removeFilter(index)}\n title=\"Delete filter\">\n <ButtonIcon type=\"delete\" />\n </Button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n <Button onClick={addFilter} title=\"Add filter\">\n <ButtonIcon className={styles.ButtonIcon} type=\"add\" />\n Add filter\n </Button>\n {componentFilters.length > 0 && (\n <Button onClick={removeAllFilter} title=\"Delete all filters\">\n <ButtonIcon className={styles.ButtonIcon} type=\"delete\" />\n Delete all filters\n </Button>\n )}\n </div>\n );\n}\n\ntype ToggleIconProps = {\n isEnabled: boolean,\n isValid: boolean,\n};\nfunction ToggleIcon({isEnabled, isValid}: ToggleIconProps) {\n let className;\n if (isValid) {\n className = isEnabled ? styles.ToggleOn : styles.ToggleOff;\n } else {\n className = isEnabled ? styles.ToggleOnInvalid : styles.ToggleOffInvalid;\n }\n return (\n <div className={className}>\n <div\n className={isEnabled ? styles.ToggleInsideOn : styles.ToggleInsideOff}\n />\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {use, useState, useEffect} from 'react';\n\nimport type {DevToolsHookSettings} from 'react-devtools-shared/src/backend/types';\nimport type Store from 'react-devtools-shared/src/devtools/store';\n\nimport styles from './SettingsShared.css';\n\ntype Props = {\n hookSettings: Promise<$ReadOnly<DevToolsHookSettings>>,\n store: Store,\n};\n\nexport default function DebuggingSettings({\n hookSettings,\n store,\n}: Props): React.Node {\n const usedHookSettings = use(hookSettings);\n\n const [appendComponentStack, setAppendComponentStack] = useState(\n usedHookSettings.appendComponentStack,\n );\n const [breakOnConsoleErrors, setBreakOnConsoleErrors] = useState(\n usedHookSettings.breakOnConsoleErrors,\n );\n const [hideConsoleLogsInStrictMode, setHideConsoleLogsInStrictMode] =\n useState(usedHookSettings.hideConsoleLogsInStrictMode);\n const [showInlineWarningsAndErrors, setShowInlineWarningsAndErrors] =\n useState(usedHookSettings.showInlineWarningsAndErrors);\n\n useEffect(() => {\n store.setShouldShowWarningsAndErrors(showInlineWarningsAndErrors);\n }, [showInlineWarningsAndErrors]);\n\n useEffect(() => {\n store.updateHookSettings({\n appendComponentStack,\n breakOnConsoleErrors,\n showInlineWarningsAndErrors,\n hideConsoleLogsInStrictMode,\n });\n }, [\n store,\n appendComponentStack,\n breakOnConsoleErrors,\n showInlineWarningsAndErrors,\n hideConsoleLogsInStrictMode,\n ]);\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={appendComponentStack}\n onChange={({currentTarget}) =>\n setAppendComponentStack(currentTarget.checked)\n }\n />{' '}\n Append component stacks to console warnings and errors.\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={showInlineWarningsAndErrors}\n onChange={({currentTarget}) =>\n setShowInlineWarningsAndErrors(currentTarget.checked)\n }\n />{' '}\n Show inline warnings and errors.\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={breakOnConsoleErrors}\n onChange={({currentTarget}) =>\n setBreakOnConsoleErrors(currentTarget.checked)\n }\n />{' '}\n Break on warnings\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={hideConsoleLogsInStrictMode}\n onChange={({currentTarget}) =>\n setHideConsoleLogsInStrictMode(currentTarget.checked)\n }\n />{' '}\n Hide logs during additional invocations in{' '}\n <a\n className={styles.StrictModeLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://react.dev/reference/react/StrictMode\">\n Strict Mode\n </a>\n </label>\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext, useMemo} from 'react';\nimport {SettingsContext} from './SettingsContext';\nimport {StoreContext} from '../context';\nimport {CHANGE_LOG_URL} from 'react-devtools-shared/src/devtools/constants';\n\nimport styles from './SettingsShared.css';\n\nfunction getChangeLogUrl(version: ?string): string | null {\n if (!version) {\n return null;\n }\n\n // Version numbers are in the format of: <major>.<minor>.<patch>-<sha>\n // e.g. \"4.23.0-f0dd459e0\"\n // GitHub CHANGELOG headers are in the format of: <major>.<minor>.<patch>\n // but the \".\" are stripped from anchor tags, becomming: <major><minor><patch>\n const versionAnchor = version.replace(/^(\\d+)\\.(\\d+)\\.(\\d+).*/, '$1$2$3');\n return `${CHANGE_LOG_URL}#${versionAnchor}`;\n}\n\nexport default function GeneralSettings(_: {}): React.Node {\n const {\n displayDensity,\n setDisplayDensity,\n setTheme,\n setTraceUpdatesEnabled,\n theme,\n traceUpdatesEnabled,\n } = useContext(SettingsContext);\n\n const {backendVersion, supportsTraceUpdates} = useContext(StoreContext);\n const frontendVersion = process.env.DEVTOOLS_VERSION;\n\n const showBackendVersion =\n backendVersion && backendVersion !== frontendVersion;\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <div className={styles.RadioLabel}>Theme</div>\n <select\n className={styles.Select}\n value={theme}\n onChange={({currentTarget}) => setTheme(currentTarget.value)}>\n <option value=\"auto\">Auto</option>\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </select>\n </div>\n\n <div className={styles.Setting}>\n <div className={styles.RadioLabel}>Display density</div>\n <select\n className={styles.Select}\n value={displayDensity}\n onChange={({currentTarget}) =>\n setDisplayDensity(currentTarget.value)\n }>\n <option value=\"compact\">Compact</option>\n <option value=\"comfortable\">Comfortable</option>\n </select>\n </div>\n\n {supportsTraceUpdates && (\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={traceUpdatesEnabled}\n onChange={({currentTarget}) =>\n setTraceUpdatesEnabled(currentTarget.checked)\n }\n />{' '}\n Highlight updates when components render.\n </label>\n </div>\n )}\n\n <div className={styles.ReleaseNotes}>\n {showBackendVersion && (\n <div>\n <ul className={styles.VersionsList}>\n <li>\n <Version\n label=\"DevTools backend version:\"\n version={backendVersion}\n />\n </li>\n <li>\n <Version\n label=\"DevTools frontend version:\"\n version={frontendVersion}\n />\n </li>\n </ul>\n </div>\n )}\n {!showBackendVersion && (\n <Version label=\"DevTools version:\" version={frontendVersion} />\n )}\n </div>\n </div>\n );\n}\n\nfunction Version({label, version}: {label: string, version: ?string}) {\n const changelogLink = useMemo(() => {\n return getChangeLogUrl(version);\n }, [version]);\n\n if (version == null) {\n return null;\n } else {\n return (\n <>\n {label}{' '}\n <a\n className={styles.ReleaseNotesLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={changelogLink}>\n {version}\n </a>\n </>\n );\n }\n}\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {createContext, useCallback, useContext, useMemo, useState} from 'react';\nimport {useLocalStorage, useSubscription} from '../hooks';\nimport {\n TreeDispatcherContext,\n TreeStateContext,\n} from '../Components/TreeContext';\nimport {StoreContext} from '../context';\nimport {logEvent} from 'react-devtools-shared/src/Logger';\n\nimport type {ProfilingDataFrontend} from './types';\n\nexport type TabID = 'flame-chart' | 'ranked-chart' | 'timeline';\n\nexport type Context = {\n // Which tab is selected in the Profiler UI?\n selectedTabID: TabID,\n selectTab(id: TabID): void,\n\n // Store subscription based values.\n // The isProfiling value may be modified by the record button in the Profiler toolbar,\n // or from the backend itself (after a reload-and-profile action).\n // It is synced between the backend and frontend via a Store subscription.\n didRecordCommits: boolean,\n isProcessingData: boolean,\n isProfiling: boolean,\n profilingData: ProfilingDataFrontend | null,\n startProfiling(): void,\n stopProfiling(): void,\n supportsProfiling: boolean,\n\n // Which root should profiling data be shown for?\n // This value should be initialized to either:\n // 1. The selected root in the Components tree (if it has any profiling data) or\n // 2. The first root in the list with profiling data.\n rootID: number | null,\n setRootID: (id: number) => void,\n\n // Controls whether commits are filtered by duration.\n // This value is controlled by a filter toggle UI in the Profiler toolbar.\n // It impacts the commit selector UI as well as the fiber commits bar chart.\n isCommitFilterEnabled: boolean,\n setIsCommitFilterEnabled: (value: boolean) => void,\n minCommitDuration: number,\n setMinCommitDuration: (value: number) => void,\n\n // Which commit is currently selected in the commit selector UI.\n // Note that this is the index of the commit in all commits (non-filtered) that were profiled.\n // This value is controlled by the commit selector UI in the Profiler toolbar.\n // It impacts the flame graph and ranked charts.\n selectedCommitIndex: number | null,\n selectCommitIndex: (value: number | null) => void,\n\n // Which fiber is currently selected in the Ranked or Flamegraph charts?\n selectedFiberID: number | null,\n selectedFiberName: string | null,\n selectFiber: (id: number | null, name: string | null) => void,\n};\n\nconst ProfilerContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nProfilerContext.displayName = 'ProfilerContext';\n\ntype StoreProfilingState = {\n didRecordCommits: boolean,\n isProcessingData: boolean,\n isProfiling: boolean,\n profilingData: ProfilingDataFrontend | null,\n supportsProfiling: boolean,\n};\n\ntype Props = {\n children: React$Node,\n};\n\nfunction ProfilerContextController({children}: Props): React.Node {\n const store = useContext(StoreContext);\n const {inspectedElementID} = useContext(TreeStateContext);\n const dispatch = useContext(TreeDispatcherContext);\n\n const {profilerStore} = store;\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => ({\n didRecordCommits: profilerStore.didRecordCommits,\n isProcessingData: profilerStore.isProcessingData,\n isProfiling: profilerStore.isProfilingBasedOnUserInput,\n profilingData: profilerStore.profilingData,\n supportsProfiling: store.rootSupportsBasicProfiling,\n }),\n subscribe: (callback: Function) => {\n profilerStore.addListener('profilingData', callback);\n profilerStore.addListener('isProcessingData', callback);\n profilerStore.addListener('isProfiling', callback);\n store.addListener('rootSupportsBasicProfiling', callback);\n return () => {\n profilerStore.removeListener('profilingData', callback);\n profilerStore.removeListener('isProcessingData', callback);\n profilerStore.removeListener('isProfiling', callback);\n store.removeListener('rootSupportsBasicProfiling', callback);\n };\n },\n }),\n [profilerStore, store],\n );\n const {\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n supportsProfiling,\n } = useSubscription<StoreProfilingState>(subscription);\n\n const [prevProfilingData, setPrevProfilingData] =\n useState<ProfilingDataFrontend | null>(null);\n const [rootID, setRootID] = useState<number | null>(null);\n const [selectedFiberID, selectFiberID] = useState<number | null>(null);\n const [selectedFiberName, selectFiberName] = useState<string | null>(null);\n\n const selectFiber = useCallback(\n (id: number | null, name: string | null) => {\n selectFiberID(id);\n selectFiberName(name);\n\n // Sync selection to the Components tab for convenience.\n // Keep in mind that profiling data may be from a previous session.\n // If data has been imported, we should skip the selection sync.\n if (\n id !== null &&\n profilingData !== null &&\n profilingData.imported === false\n ) {\n // We should still check to see if this element is still in the store.\n // It may have been removed during profiling.\n if (store.containsElement(id)) {\n dispatch({\n type: 'SELECT_ELEMENT_BY_ID',\n payload: id,\n });\n }\n }\n },\n [dispatch, selectFiberID, selectFiberName, store, profilingData],\n );\n\n const setRootIDAndClearFiber = useCallback(\n (id: number | null) => {\n selectFiber(null, null);\n setRootID(id);\n },\n [setRootID, selectFiber],\n );\n\n if (prevProfilingData !== profilingData) {\n setPrevProfilingData(profilingData);\n\n const dataForRoots =\n profilingData !== null ? profilingData.dataForRoots : null;\n if (dataForRoots != null) {\n const firstRootID = dataForRoots.keys().next().value || null;\n\n if (rootID === null || !dataForRoots.has(rootID)) {\n let selectedElementRootID = null;\n if (inspectedElementID !== null) {\n selectedElementRootID = store.getRootIDForElement(inspectedElementID);\n }\n if (\n selectedElementRootID !== null &&\n dataForRoots.has(selectedElementRootID)\n ) {\n setRootIDAndClearFiber(selectedElementRootID);\n } else {\n setRootIDAndClearFiber(firstRootID);\n }\n }\n }\n }\n\n const [isCommitFilterEnabled, setIsCommitFilterEnabled] =\n useLocalStorage<boolean>('React::DevTools::isCommitFilterEnabled', false);\n const [minCommitDuration, setMinCommitDuration] = useLocalStorage<number>(\n 'minCommitDuration',\n 0,\n );\n\n const [selectedCommitIndex, selectCommitIndex] = useState<number | null>(\n null,\n );\n const [selectedTabID, selectTab] = useLocalStorage<TabID>(\n 'React::DevTools::Profiler::defaultTab',\n 'flame-chart',\n value => {\n logEvent({\n event_name: 'profiler-tab-changed',\n metadata: {\n tabId: value,\n },\n });\n },\n );\n\n const startProfiling = useCallback(() => {\n logEvent({\n event_name: 'profiling-start',\n metadata: {current_tab: selectedTabID},\n });\n store.profilerStore.startProfiling();\n }, [store, selectedTabID]);\n const stopProfiling = useCallback(\n () => store.profilerStore.stopProfiling(),\n [store],\n );\n\n if (isProfiling) {\n if (selectedCommitIndex !== null) {\n selectCommitIndex(null);\n }\n if (selectedFiberID !== null) {\n selectFiberID(null);\n selectFiberName(null);\n }\n }\n\n const value = useMemo(\n () => ({\n selectedTabID,\n selectTab,\n\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n startProfiling,\n stopProfiling,\n supportsProfiling,\n\n rootID,\n setRootID: setRootIDAndClearFiber,\n\n isCommitFilterEnabled,\n setIsCommitFilterEnabled,\n minCommitDuration,\n setMinCommitDuration,\n\n selectedCommitIndex,\n selectCommitIndex,\n\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n }),\n [\n selectedTabID,\n selectTab,\n\n didRecordCommits,\n isProcessingData,\n isProfiling,\n profilingData,\n startProfiling,\n stopProfiling,\n supportsProfiling,\n\n rootID,\n setRootID,\n setRootIDAndClearFiber,\n\n isCommitFilterEnabled,\n setIsCommitFilterEnabled,\n minCommitDuration,\n setMinCommitDuration,\n\n selectedCommitIndex,\n selectCommitIndex,\n\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n ],\n );\n\n return (\n <ProfilerContext.Provider value={value}>\n {children}\n </ProfilerContext.Provider>\n );\n}\n\nexport {ProfilerContext, ProfilerContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo, useRef} from 'react';\nimport {useSubscription} from '../hooks';\nimport {StoreContext} from '../context';\nimport {ProfilerContext} from 'react-devtools-shared/src/devtools/views/Profiler/ProfilerContext';\n\nimport styles from './SettingsShared.css';\n\nexport default function ProfilerSettings(_: {}): React.Node {\n const {\n isCommitFilterEnabled,\n minCommitDuration,\n setIsCommitFilterEnabled,\n setMinCommitDuration,\n } = useContext(ProfilerContext);\n const store = useContext(StoreContext);\n\n const recordChangeDescriptionsSubscription = useMemo(\n () => ({\n getCurrentValue: () => store.recordChangeDescriptions,\n subscribe: (callback: Function) => {\n store.addListener('recordChangeDescriptions', callback);\n return () => store.removeListener('recordChangeDescriptions', callback);\n },\n }),\n [store],\n );\n const recordChangeDescriptions = useSubscription<boolean>(\n recordChangeDescriptionsSubscription,\n );\n\n const updateRecordChangeDescriptions = useCallback(\n ({currentTarget}: $FlowFixMe) => {\n store.recordChangeDescriptions = currentTarget.checked;\n },\n [store],\n );\n const updateMinCommitDuration = useCallback(\n (event: SyntheticEvent<HTMLInputElement>) => {\n const newValue = parseFloat(event.currentTarget.value);\n setMinCommitDuration(\n Number.isNaN(newValue) || newValue <= 0 ? 0 : newValue,\n );\n },\n [setMinCommitDuration],\n );\n const updateIsCommitFilterEnabled = useCallback(\n (event: SyntheticEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n setIsCommitFilterEnabled(checked);\n if (checked) {\n if (minCommitDurationInputRef.current !== null) {\n minCommitDurationInputRef.current.focus();\n }\n }\n },\n [setIsCommitFilterEnabled],\n );\n\n const minCommitDurationInputRef = useRef<HTMLInputElement | null>(null);\n\n return (\n <div className={styles.Settings}>\n <div className={styles.Setting}>\n <label>\n <input\n type=\"checkbox\"\n checked={recordChangeDescriptions}\n onChange={updateRecordChangeDescriptions}\n />{' '}\n Record why each component rendered while profiling.\n </label>\n </div>\n\n <div className={styles.Setting}>\n <label>\n <input\n checked={isCommitFilterEnabled}\n onChange={updateIsCommitFilterEnabled}\n type=\"checkbox\"\n />{' '}\n Hide commits below\n </label>{' '}\n <input\n className={styles.Input}\n onChange={updateMinCommitDuration}\n ref={minCommitDurationInputRef}\n type=\"number\"\n value={minCommitDuration}\n />{' '}\n (ms)\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useEffect, useMemo, useRef} from 'react';\nimport {SettingsModalContext} from './SettingsModalContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport TabBar from '../TabBar';\nimport {StoreContext} from '../context';\nimport {\n useLocalStorage,\n useModalDismissSignal,\n useSubscription,\n} from '../hooks';\nimport ComponentsSettings from './ComponentsSettings';\nimport DebuggingSettings from './DebuggingSettings';\nimport GeneralSettings from './GeneralSettings';\nimport ProfilerSettings from './ProfilerSettings';\n\nimport styles from './SettingsModal.css';\n\nimport type Store from 'react-devtools-shared/src/devtools/store';\n\ntype TabID = 'general' | 'debugging' | 'components' | 'profiler';\n\nexport default function SettingsModal(): React.Node {\n const {isModalShowing, setIsModalShowing} = useContext(SettingsModalContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n // Updating preferences while profiling is in progress could break things (e.g. filtering)\n // Explicitly disallow it for now.\n const isProfilingSubscription = useMemo(\n () => ({\n getCurrentValue: () => profilerStore.isProfilingBasedOnUserInput,\n subscribe: (callback: Function) => {\n profilerStore.addListener('isProfiling', callback);\n return () => profilerStore.removeListener('isProfiling', callback);\n },\n }),\n [profilerStore],\n );\n const isProfiling = useSubscription<boolean>(isProfilingSubscription);\n if (isProfiling && isModalShowing) {\n setIsModalShowing(false);\n }\n\n if (!isModalShowing) {\n return null;\n }\n\n return <SettingsModalImpl store={store} />;\n}\n\ntype ImplProps = {store: Store};\n\nfunction SettingsModalImpl({store}: ImplProps) {\n const {setIsModalShowing, environmentNames, hookSettings} =\n useContext(SettingsModalContext);\n const dismissModal = useCallback(\n () => setIsModalShowing(false),\n [setIsModalShowing],\n );\n\n const [selectedTabID, selectTab] = useLocalStorage<TabID>(\n 'React::DevTools::selectedSettingsTabID',\n 'general',\n );\n\n const modalRef = useRef<HTMLDivElement | null>(null);\n useModalDismissSignal(modalRef, dismissModal);\n\n useEffect(() => {\n if (modalRef.current !== null) {\n modalRef.current.focus();\n }\n }, [modalRef]);\n\n let view = null;\n switch (selectedTabID) {\n case 'components':\n view = <ComponentsSettings environmentNames={environmentNames} />;\n break;\n case 'debugging':\n view = <DebuggingSettings hookSettings={hookSettings} store={store} />;\n break;\n case 'general':\n view = <GeneralSettings />;\n break;\n case 'profiler':\n view = <ProfilerSettings />;\n break;\n default:\n break;\n }\n\n return (\n <div className={styles.Background}>\n <div className={styles.Modal} ref={modalRef}>\n <div className={styles.Tabs}>\n <TabBar\n currentTab={selectedTabID}\n id=\"Settings\"\n selectTab={selectTab}\n tabs={tabs}\n type=\"settings\"\n />\n <div className={styles.Spacer} />\n <Button onClick={dismissModal} title=\"Close settings dialog\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n <div className={styles.Content}>{view}</div>\n </div>\n </div>\n );\n}\n\nconst tabs = [\n {\n id: 'general',\n icon: 'settings',\n label: 'General',\n },\n {\n id: 'debugging',\n icon: 'bug',\n label: 'Debugging',\n },\n {\n id: 'components',\n icon: 'components',\n label: 'Components',\n },\n {\n id: 'profiler',\n icon: 'profiler',\n label: 'Profiler',\n },\n];\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useEffect, useLayoutEffect, useReducer, useRef} from 'react';\nimport Tree from './Tree';\nimport {OwnersListContextController} from './OwnersListContext';\nimport portaledContent from '../portaledContent';\nimport {SettingsModalContextController} from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContext';\nimport {\n localStorageGetItem,\n localStorageSetItem,\n} from 'react-devtools-shared/src/storage';\nimport InspectedElementErrorBoundary from './InspectedElementErrorBoundary';\nimport InspectedElement from './InspectedElement';\nimport {InspectedElementContextController} from './InspectedElementContext';\nimport {ModalDialog} from '../ModalDialog';\nimport SettingsModal from 'react-devtools-shared/src/devtools/views/Settings/SettingsModal';\nimport {NativeStyleContextController} from './NativeStyleEditor/context';\n\nimport styles from './Components.css';\n\ntype Orientation = 'horizontal' | 'vertical';\n\ntype ResizeActionType =\n | 'ACTION_SET_DID_MOUNT'\n | 'ACTION_SET_IS_RESIZING'\n | 'ACTION_SET_HORIZONTAL_PERCENTAGE'\n | 'ACTION_SET_VERTICAL_PERCENTAGE';\n\ntype ResizeAction = {\n type: ResizeActionType,\n payload: any,\n};\n\ntype ResizeState = {\n horizontalPercentage: number,\n isResizing: boolean,\n verticalPercentage: number,\n};\n\nfunction Components(_: {}) {\n const wrapperElementRef = useRef<null | HTMLElement>(null);\n const resizeElementRef = useRef<null | HTMLElement>(null);\n\n const [state, dispatch] = useReducer<ResizeState, any, ResizeAction>(\n resizeReducer,\n null,\n initResizeState,\n );\n\n const {horizontalPercentage, verticalPercentage} = state;\n\n useLayoutEffect(() => {\n const resizeElement = resizeElementRef.current;\n\n setResizeCSSVariable(\n resizeElement,\n 'horizontal',\n horizontalPercentage * 100,\n );\n setResizeCSSVariable(resizeElement, 'vertical', verticalPercentage * 100);\n }, []);\n\n useEffect(() => {\n const timeoutID = setTimeout(() => {\n localStorageSetItem(\n LOCAL_STORAGE_KEY,\n JSON.stringify({\n horizontalPercentage,\n verticalPercentage,\n }),\n );\n }, 500);\n\n return () => clearTimeout(timeoutID);\n }, [horizontalPercentage, verticalPercentage]);\n\n const {isResizing} = state;\n\n const onResizeStart = () =>\n dispatch({type: 'ACTION_SET_IS_RESIZING', payload: true});\n\n let onResize;\n let onResizeEnd;\n if (isResizing) {\n onResizeEnd = () =>\n dispatch({type: 'ACTION_SET_IS_RESIZING', payload: false});\n\n // $FlowFixMe[missing-local-annot]\n onResize = event => {\n const resizeElement = resizeElementRef.current;\n const wrapperElement = wrapperElementRef.current;\n\n if (!isResizing || wrapperElement === null || resizeElement === null) {\n return;\n }\n\n event.preventDefault();\n\n const orientation = getOrientation(wrapperElement);\n\n const {height, width, left, top} = wrapperElement.getBoundingClientRect();\n\n const currentMousePosition =\n orientation === 'horizontal'\n ? event.clientX - left\n : event.clientY - top;\n\n const boundaryMin = MINIMUM_SIZE;\n const boundaryMax =\n orientation === 'horizontal'\n ? width - MINIMUM_SIZE\n : height - MINIMUM_SIZE;\n\n const isMousePositionInBounds =\n currentMousePosition > boundaryMin &&\n currentMousePosition < boundaryMax;\n\n if (isMousePositionInBounds) {\n const resizedElementDimension =\n orientation === 'horizontal' ? width : height;\n const actionType =\n orientation === 'horizontal'\n ? 'ACTION_SET_HORIZONTAL_PERCENTAGE'\n : 'ACTION_SET_VERTICAL_PERCENTAGE';\n const percentage =\n (currentMousePosition / resizedElementDimension) * 100;\n\n setResizeCSSVariable(resizeElement, orientation, percentage);\n\n dispatch({\n type: actionType,\n payload: currentMousePosition / resizedElementDimension,\n });\n }\n };\n }\n\n return (\n <SettingsModalContextController>\n <OwnersListContextController>\n <div\n ref={wrapperElementRef}\n className={styles.Components}\n onMouseMove={onResize}\n onMouseLeave={onResizeEnd}\n onMouseUp={onResizeEnd}>\n <Fragment>\n <div ref={resizeElementRef} className={styles.TreeWrapper}>\n <Tree />\n </div>\n <div className={styles.ResizeBarWrapper}>\n <div onMouseDown={onResizeStart} className={styles.ResizeBar} />\n </div>\n <div className={styles.InspectedElementWrapper}>\n <NativeStyleContextController>\n <InspectedElementErrorBoundary>\n <InspectedElementContextController>\n <InspectedElement />\n </InspectedElementContextController>\n </InspectedElementErrorBoundary>\n </NativeStyleContextController>\n </div>\n <ModalDialog />\n <SettingsModal />\n </Fragment>\n </div>\n </OwnersListContextController>\n </SettingsModalContextController>\n );\n}\n\nconst LOCAL_STORAGE_KEY = 'React::DevTools::createResizeReducer';\nconst VERTICAL_MODE_MAX_WIDTH = 600;\nconst MINIMUM_SIZE = 50;\n\nfunction initResizeState(): ResizeState {\n let horizontalPercentage = 0.65;\n let verticalPercentage = 0.5;\n\n try {\n let data = localStorageGetItem(LOCAL_STORAGE_KEY);\n if (data != null) {\n data = JSON.parse(data);\n horizontalPercentage = data.horizontalPercentage;\n verticalPercentage = data.verticalPercentage;\n }\n } catch (error) {}\n\n return {\n horizontalPercentage,\n isResizing: false,\n verticalPercentage,\n };\n}\n\nfunction resizeReducer(state: ResizeState, action: ResizeAction): ResizeState {\n switch (action.type) {\n case 'ACTION_SET_IS_RESIZING':\n return {\n ...state,\n isResizing: action.payload,\n };\n case 'ACTION_SET_HORIZONTAL_PERCENTAGE':\n return {\n ...state,\n horizontalPercentage: action.payload,\n };\n case 'ACTION_SET_VERTICAL_PERCENTAGE':\n return {\n ...state,\n verticalPercentage: action.payload,\n };\n default:\n return state;\n }\n}\n\nfunction getOrientation(\n wrapperElement: null | HTMLElement,\n): null | Orientation {\n if (wrapperElement != null) {\n const {width} = wrapperElement.getBoundingClientRect();\n return width > VERTICAL_MODE_MAX_WIDTH ? 'horizontal' : 'vertical';\n }\n return null;\n}\n\nfunction setResizeCSSVariable(\n resizeElement: null | HTMLElement,\n orientation: null | Orientation,\n percentage: number,\n): void {\n if (resizeElement !== null && orientation !== null) {\n resizeElement.style.setProperty(\n `--${orientation}-resize-percentage`,\n `${percentage}%`,\n );\n }\n}\n\nexport default (portaledContent(Components): React$ComponentType<{}>);\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 * @flow\n */\n\nimport type {ReactContext, RefObject} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport {StoreContext} from 'react-devtools-shared/src/devtools/views/context';\n\nimport type {\n HorizontalScrollStateChangeCallback,\n TimelineData,\n SearchRegExpStateChangeCallback,\n ViewState,\n ReactEventInfo,\n} from './types';\n\nexport type Context = {\n file: File | null,\n inMemoryTimelineData: Array<TimelineData> | null,\n isTimelineSupported: boolean,\n searchInputContainerRef: RefObject,\n setFile: (file: File | null) => void,\n viewState: ViewState,\n selectEvent: ReactEventInfo => void,\n selectedEvent: ReactEventInfo,\n};\n\nconst TimelineContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nTimelineContext.displayName = 'TimelineContext';\n\ntype Props = {\n children: React$Node,\n};\n\nfunction TimelineContextController({children}: Props): React.Node {\n const searchInputContainerRef = useRef(null);\n const [file, setFile] = useState<string | null>(null);\n\n const store = useContext(StoreContext);\n\n const isTimelineSupported = useSyncExternalStore<boolean>(\n function subscribe(callback) {\n store.addListener('rootSupportsTimelineProfiling', callback);\n return function unsubscribe() {\n store.removeListener('rootSupportsTimelineProfiling', callback);\n };\n },\n function getState() {\n return store.rootSupportsTimelineProfiling;\n },\n );\n\n const inMemoryTimelineData = useSyncExternalStore<Array<TimelineData> | null>(\n function subscribe(callback) {\n store.profilerStore.addListener('isProcessingData', callback);\n store.profilerStore.addListener('profilingData', callback);\n return function unsubscribe() {\n store.profilerStore.removeListener('isProcessingData', callback);\n store.profilerStore.removeListener('profilingData', callback);\n };\n },\n function getState() {\n return store.profilerStore.profilingData?.timelineData || null;\n },\n );\n\n // Recreate view state any time new profiling data is imported.\n const viewState = useMemo<ViewState>(() => {\n const horizontalScrollStateChangeCallbacks: Set<HorizontalScrollStateChangeCallback> =\n new Set();\n const searchRegExpStateChangeCallbacks: Set<SearchRegExpStateChangeCallback> =\n new Set();\n\n const horizontalScrollState = {\n offset: 0,\n length: 0,\n };\n\n const state: ViewState = {\n horizontalScrollState,\n onHorizontalScrollStateChange: callback => {\n horizontalScrollStateChangeCallbacks.add(callback);\n },\n onSearchRegExpStateChange: callback => {\n searchRegExpStateChangeCallbacks.add(callback);\n },\n searchRegExp: null,\n updateHorizontalScrollState: scrollState => {\n if (\n horizontalScrollState.offset === scrollState.offset &&\n horizontalScrollState.length === scrollState.length\n ) {\n return;\n }\n\n horizontalScrollState.offset = scrollState.offset;\n horizontalScrollState.length = scrollState.length;\n\n horizontalScrollStateChangeCallbacks.forEach(callback => {\n callback(scrollState);\n });\n },\n updateSearchRegExpState: (searchRegExp: RegExp | null) => {\n state.searchRegExp = searchRegExp;\n\n searchRegExpStateChangeCallbacks.forEach(callback => {\n callback(searchRegExp);\n });\n },\n viewToMutableViewStateMap: new Map(),\n };\n\n return state;\n }, [file]);\n\n const [selectedEvent, selectEvent] = useState<ReactEventInfo | null>(null);\n\n const value = useMemo(\n () => ({\n file,\n inMemoryTimelineData,\n isTimelineSupported,\n searchInputContainerRef,\n setFile,\n viewState,\n selectEvent,\n selectedEvent,\n }),\n [\n file,\n inMemoryTimelineData,\n isTimelineSupported,\n setFile,\n viewState,\n selectEvent,\n selectedEvent,\n ],\n );\n\n return (\n <TimelineContext.Provider value={value}>\n {children}\n </TimelineContext.Provider>\n );\n}\n\nexport {TimelineContext, TimelineContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\nimport {TimelineContext} from 'react-devtools-timeline/src/TimelineContext';\n\nexport default function ClearProfilingDataButton(): React.Node {\n const store = useContext(StoreContext);\n const {didRecordCommits, isProfiling} = useContext(ProfilerContext);\n const {file, setFile} = useContext(TimelineContext);\n const {profilerStore} = store;\n\n const doesHaveInMemoryData = didRecordCommits;\n const doesHaveUserTimingData = file !== null;\n\n const clear = () => {\n if (doesHaveInMemoryData) {\n profilerStore.clear();\n }\n if (doesHaveUserTimingData) {\n setFile(null);\n }\n };\n\n return (\n <Button\n disabled={\n isProfiling || !(doesHaveInMemoryData || doesHaveUserTimingData)\n }\n onClick={clear}\n title=\"Clear profiling data\">\n <ButtonIcon type=\"clear\" />\n </Button>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './NoCommitData.css';\n\nexport default function NoCommitData(_: {}): React.Node {\n return (\n <div className={styles.NoCommitData}>\n <div className={styles.Header}>\n There is no data matching the current filter criteria.\n </div>\n <div className={styles.FilterMessage}>\n Try adjusting the commit filter in Profiler settings.\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nexport const barWidthThreshold = 2;\nexport const maxBarWidth = 30;\nexport const minBarWidth = 5;\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './ChartNode.css';\n\ntype Props = {\n color: string,\n height: number,\n isDimmed?: boolean,\n label: string,\n onClick: (event: SyntheticMouseEvent<any>) => mixed,\n onDoubleClick?: (event: SyntheticMouseEvent<any>) => mixed,\n onMouseEnter: (event: SyntheticMouseEvent<any>) => mixed,\n onMouseLeave: (event: SyntheticMouseEvent<any>) => mixed,\n placeLabelAboveNode?: boolean,\n textStyle?: Object,\n width: number,\n x: number,\n y: number,\n};\n\nconst minWidthToDisplay = 35;\n\nexport default function ChartNode({\n color,\n height,\n isDimmed = false,\n label,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onDoubleClick,\n textStyle,\n width,\n x,\n y,\n}: Props): React.Node {\n return (\n <g className={styles.Group} transform={`translate(${x},${y})`}>\n <rect\n width={width}\n height={height}\n fill={color}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onDoubleClick={onDoubleClick}\n className={styles.Rect}\n style={{\n opacity: isDimmed ? 0.5 : 1,\n }}\n />\n {width >= minWidthToDisplay && (\n <foreignObject\n width={width}\n height={height}\n className={styles.ForeignObject}\n style={{\n paddingLeft: x < 0 ? -x : 0,\n opacity: isDimmed ? 0.75 : 1,\n display: width < minWidthToDisplay ? 'none' : 'block',\n }}\n y={0}>\n <div className={styles.Div} style={textStyle}>\n {label}\n </div>\n </foreignObject>\n )}\n </g>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, memo, useCallback, useContext} from 'react';\nimport {areEqual} from 'react-window';\nimport {barWidthThreshold} from './constants';\nimport {getGradientColor} from './utils';\nimport ChartNode from './ChartNode';\nimport {SettingsContext} from '../Settings/SettingsContext';\n\nimport type {ChartNode as ChartNodeType} from './FlamegraphChartBuilder';\nimport type {ItemData} from './CommitFlamegraph';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction CommitFlamegraphListItem({data, index, style}: Props): React.Node {\n const {\n chartData,\n onElementMouseEnter,\n onElementMouseLeave,\n scaleX,\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n } = data;\n const {renderPathNodes, maxSelfDuration, rows} = chartData;\n\n const {lineHeight} = useContext(SettingsContext);\n\n const handleClick = useCallback(\n (event: SyntheticMouseEvent<EventTarget>, id: number, name: string) => {\n event.stopPropagation();\n selectFiber(id, name);\n },\n [selectFiber],\n );\n\n const handleMouseEnter = (nodeData: ChartNodeType) => {\n const {id, name} = nodeData;\n onElementMouseEnter({id, name});\n };\n\n const handleMouseLeave = () => {\n onElementMouseLeave();\n };\n\n // List items are absolutely positioned using the CSS \"top\" attribute.\n // The \"left\" value will always be 0.\n // Since height is fixed, and width is based on the node's duration,\n // We can ignore those values as well.\n const top = parseInt(style.top, 10);\n\n const row = rows[index];\n\n const selectedNodeOffset = scaleX(\n selectedChartNode !== null ? selectedChartNode.offset : 0,\n width,\n );\n\n return (\n <Fragment>\n {row.map(chartNode => {\n const {\n didRender,\n id,\n label,\n name,\n offset,\n selfDuration,\n treeBaseDuration,\n } = chartNode;\n\n const nodeOffset = scaleX(offset, width);\n const nodeWidth = scaleX(treeBaseDuration, width);\n\n // Filter out nodes that are too small to see or click.\n // This also helps render large trees faster.\n if (nodeWidth < barWidthThreshold) {\n return null;\n }\n\n // Filter out nodes that are outside of the horizontal window.\n if (\n nodeOffset + nodeWidth < selectedNodeOffset ||\n nodeOffset > selectedNodeOffset + width\n ) {\n return null;\n }\n\n let color = 'url(#didNotRenderPattern)';\n let textColor = 'var(--color-commit-did-not-render-pattern-text)';\n if (didRender) {\n color = getGradientColor(selfDuration / maxSelfDuration);\n textColor = 'var(--color-commit-gradient-text)';\n } else if (renderPathNodes.has(id)) {\n color = 'var(--color-commit-did-not-render-fill)';\n textColor = 'var(--color-commit-did-not-render-fill-text)';\n }\n\n return (\n <ChartNode\n color={color}\n height={lineHeight}\n isDimmed={index < selectedChartNodeIndex}\n key={id}\n label={label}\n onClick={event => handleClick(event, id, name)}\n onMouseEnter={() => handleMouseEnter(chartNode)}\n onMouseLeave={handleMouseLeave}\n textStyle={{color: textColor}}\n width={nodeWidth}\n x={nodeOffset - selectedNodeOffset}\n y={top}\n />\n );\n })}\n </Fragment>\n );\n}\n\nexport default (memo(\n CommitFlamegraphListItem,\n areEqual,\n): React.ComponentType<Props>);\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\n\nimport {ProfilerContext} from './ProfilerContext';\nimport {StoreContext} from '../context';\n\nimport styles from './WhatChanged.css';\n\nfunction hookIndicesToString(indices: Array<number>): string {\n // This is debatable but I think 1-based might ake for a nicer UX.\n const numbers = indices.map(value => value + 1);\n\n switch (numbers.length) {\n case 0:\n return 'No hooks changed';\n case 1:\n return `Hook ${numbers[0]} changed`;\n case 2:\n return `Hooks ${numbers[0]} and ${numbers[1]} changed`;\n default:\n return `Hooks ${numbers.slice(0, numbers.length - 1).join(', ')} and ${\n numbers[numbers.length - 1]\n } changed`;\n }\n}\n\ntype Props = {\n fiberID: number,\n};\n\nexport default function WhatChanged({fiberID}: Props): React.Node {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex} = useContext(ProfilerContext);\n\n // TRICKY\n // Handle edge case where no commit is selected because of a min-duration filter update.\n // If the commit index is null, suspending for data below would throw an error.\n // TODO (ProfilerContext) This check should not be necessary.\n if (selectedCommitIndex === null) {\n return null;\n }\n\n const {changeDescriptions} = profilerStore.getCommitData(\n ((rootID: any): number),\n selectedCommitIndex,\n );\n\n if (changeDescriptions === null) {\n return null;\n }\n\n const changeDescription = changeDescriptions.get(fiberID);\n if (changeDescription == null) {\n return null;\n }\n\n const {context, didHooksChange, hooks, isFirstMount, props, state} =\n changeDescription;\n\n if (isFirstMount) {\n return (\n <div className={styles.Component}>\n <label className={styles.Label}>Why did this render?</label>\n <div className={styles.Item}>\n This is the first time the component rendered.\n </div>\n </div>\n );\n }\n\n const changes = [];\n\n if (context === true) {\n changes.push(\n <div key=\"context\" className={styles.Item}>\n • Context changed\n </div>,\n );\n } else if (\n typeof context === 'object' &&\n context !== null &&\n context.length !== 0\n ) {\n changes.push(\n <div key=\"context\" className={styles.Item}>\n • Context changed:\n {context.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (didHooksChange) {\n if (Array.isArray(hooks)) {\n changes.push(\n <div key=\"hooks\" className={styles.Item}>\n • {hookIndicesToString(hooks)}\n </div>,\n );\n } else {\n changes.push(\n <div key=\"hooks\" className={styles.Item}>\n • Hooks changed\n </div>,\n );\n }\n }\n\n if (props !== null && props.length !== 0) {\n changes.push(\n <div key=\"props\" className={styles.Item}>\n • Props changed:\n {props.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (state !== null && state.length !== 0) {\n changes.push(\n <div key=\"state\" className={styles.Item}>\n • State changed:\n {state.map(key => (\n <span key={key} className={styles.Key}>\n {key}\n </span>\n ))}\n </div>,\n );\n }\n\n if (changes.length === 0) {\n changes.push(\n <div key=\"nothing\" className={styles.Item}>\n The parent component rendered.\n </div>,\n );\n }\n\n return (\n <div>\n <label className={styles.Label}>Why did this render?</label>\n {changes}\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\n\nimport InspectedElementBadges from '../Components/InspectedElementBadges';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration} from './utils';\nimport WhatChanged from './WhatChanged';\nimport {StoreContext} from '../context';\n\nimport styles from './HoveredFiberInfo.css';\n\nimport type {ChartNode} from './FlamegraphChartBuilder';\n\nexport type TooltipFiberData = {\n id: number,\n name: string,\n};\n\nexport type Props = {\n fiberData: ChartNode,\n};\n\nexport default function HoveredFiberInfo({fiberData}: Props): React.Node {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex} = useContext(ProfilerContext);\n\n const {id, name} = fiberData;\n const {profilingCache} = profilerStore;\n\n if (rootID === null || selectedCommitIndex === null) {\n return null;\n }\n\n const commitIndices = profilingCache.getFiberCommits({\n fiberID: id,\n rootID,\n });\n\n const {nodes} = profilingCache.getCommitTree({\n rootID,\n commitIndex: selectedCommitIndex,\n });\n const node = nodes.get(id);\n\n let renderDurationInfo = null;\n let i = 0;\n for (i = 0; i < commitIndices.length; i++) {\n const commitIndex = commitIndices[i];\n if (selectedCommitIndex === commitIndex) {\n const {fiberActualDurations, fiberSelfDurations} =\n profilerStore.getCommitData(((rootID: any): number), commitIndex);\n const actualDuration = fiberActualDurations.get(id) || 0;\n const selfDuration = fiberSelfDurations.get(id) || 0;\n\n renderDurationInfo = (\n <div key={commitIndex} className={styles.CurrentCommit}>\n <strong>Duration:</strong> {formatDuration(selfDuration)}ms of{' '}\n {formatDuration(actualDuration)}ms\n </div>\n );\n\n break;\n }\n }\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>\n <div className={styles.Component}>{name}</div>\n\n {node != null && (\n <div className={styles.BadgesContainer}>\n <InspectedElementBadges\n hocDisplayNames={node.hocDisplayNames}\n compiledWithForget={node.compiledWithForget}\n />\n\n {node.compiledWithForget && (\n <div>\n ✨ This component has been auto-memoized by the React Compiler.\n </div>\n )}\n </div>\n )}\n\n <div className={styles.Content}>\n {renderDurationInfo || <div>Did not client render.</div>}\n\n <WhatChanged fiberID={id} />\n </div>\n </div>\n </Fragment>\n );\n}\n","/** @flow */\n\nimport * as React from 'react';\nimport {useRef} from 'react';\n\nimport styles from './Tooltip.css';\n\nconst initialTooltipState = {height: 0, mouseX: 0, mouseY: 0, width: 0};\n\nexport default function Tooltip({\n children,\n className,\n label,\n style,\n}: any): React.Node {\n const containerRef = useRef(null);\n const tooltipRef = useRef(null);\n\n // update the position of the tooltip based on current mouse position\n const updateTooltipPosition = (event: SyntheticMouseEvent<EventTarget>) => {\n const element = tooltipRef.current;\n if (element != null) {\n // first find the mouse position\n const mousePosition = getMousePosition(containerRef.current, event);\n // use the mouse position to find the position of tooltip\n const {left, top} = getTooltipPosition(element, mousePosition);\n // update tooltip position\n element.style.left = left;\n element.style.top = top;\n }\n };\n\n const onMouseMove = (event: SyntheticMouseEvent<EventTarget>) => {\n updateTooltipPosition(event);\n };\n\n const tooltipClassName = label === null ? styles.hidden : '';\n\n return (\n <div\n className={styles.Container}\n onMouseMove={onMouseMove}\n ref={containerRef}>\n <div\n className={`${styles.Tooltip} ${tooltipClassName} ${className || ''}`}\n ref={tooltipRef}\n style={style}>\n {label}\n </div>\n {children}\n </div>\n );\n}\n\nconst TOOLTIP_OFFSET = 5;\n\n// Method used to find the position of the tooltip based on current mouse position\nfunction getTooltipPosition(\n element: empty,\n mousePosition: {\n height: number,\n mouseX: number,\n mouseY: number,\n width: number,\n },\n) {\n const {height, mouseX, mouseY, width} = mousePosition;\n let top: number | string = 0;\n let left: number | string = 0;\n\n if (mouseY + TOOLTIP_OFFSET + element.offsetHeight >= height) {\n if (mouseY - TOOLTIP_OFFSET - element.offsetHeight > 0) {\n top = `${mouseY - element.offsetHeight - TOOLTIP_OFFSET}px`;\n } else {\n top = '0px';\n }\n } else {\n top = `${mouseY + TOOLTIP_OFFSET}px`;\n }\n\n if (mouseX + TOOLTIP_OFFSET + element.offsetWidth >= width) {\n if (mouseX - TOOLTIP_OFFSET - element.offsetWidth > 0) {\n left = `${mouseX - element.offsetWidth - TOOLTIP_OFFSET}px`;\n } else {\n left = '0px';\n }\n } else {\n left = `${mouseX + TOOLTIP_OFFSET * 2}px`;\n }\n\n return {left, top};\n}\n\n// method used to find the current mouse position inside the container\nfunction getMousePosition(\n relativeContainer: null,\n mouseEvent: SyntheticMouseEvent<EventTarget>,\n) {\n if (relativeContainer !== null) {\n // Position within the nearest position:relative container.\n let targetContainer = relativeContainer;\n while (targetContainer.parentElement != null) {\n if (targetContainer.style.position === 'relative') {\n break;\n } else {\n targetContainer = targetContainer.parentElement;\n }\n }\n\n const {height, left, top, width} = targetContainer.getBoundingClientRect();\n\n const mouseX = mouseEvent.clientX - left;\n const mouseY = mouseEvent.clientY - top;\n\n return {height, mouseX, mouseY, width};\n } else {\n return initialTooltipState;\n }\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {forwardRef, useCallback, useContext, useMemo, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {ProfilerContext} from './ProfilerContext';\nimport NoCommitData from './NoCommitData';\nimport CommitFlamegraphListItem from './CommitFlamegraphListItem';\nimport HoveredFiberInfo from './HoveredFiberInfo';\nimport {scale} from './utils';\nimport {useHighlightHostInstance} from '../hooks';\nimport {StoreContext} from '../context';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport Tooltip from './Tooltip';\n\nimport styles from './CommitFlamegraph.css';\n\nimport type {TooltipFiberData} from './HoveredFiberInfo';\nimport type {ChartData, ChartNode} from './FlamegraphChartBuilder';\nimport type {CommitTree} from './types';\n\nexport type ItemData = {\n chartData: ChartData,\n onElementMouseEnter: (fiberData: TooltipFiberData) => void,\n onElementMouseLeave: () => void,\n scaleX: (value: number, fallbackValue: number) => number,\n selectedChartNode: ChartNode | null,\n selectedChartNodeIndex: number,\n selectFiber: (id: number | null, name: string | null) => void,\n width: number,\n};\n\nexport default function CommitFlamegraphAutoSizer(_: {}): React.Node {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex, selectFiber} =\n useContext(ProfilerContext);\n const {profilingCache} = profilerStore;\n\n const deselectCurrentFiber = useCallback(\n (event: $FlowFixMe) => {\n event.stopPropagation();\n selectFiber(null, null);\n },\n [selectFiber],\n );\n\n let commitTree: CommitTree | null = null;\n let chartData: ChartData | null = null;\n if (selectedCommitIndex !== null) {\n commitTree = profilingCache.getCommitTree({\n commitIndex: selectedCommitIndex,\n rootID: ((rootID: any): number),\n });\n\n chartData = profilingCache.getFlamegraphChartData({\n commitIndex: selectedCommitIndex,\n commitTree,\n rootID: ((rootID: any): number),\n });\n }\n\n if (commitTree != null && chartData != null && chartData.depth > 0) {\n return (\n <div className={styles.Container} onClick={deselectCurrentFiber}>\n <AutoSizer>\n {({height, width}) => (\n // Force Flow types to avoid checking for `null` here because there's no static proof that\n // by the time this render prop function is called, the values of the `let` variables have not changed.\n <CommitFlamegraph\n chartData={((chartData: any): ChartData)}\n commitTree={((commitTree: any): CommitTree)}\n height={height}\n width={width}\n />\n )}\n </AutoSizer>\n </div>\n );\n } else {\n return <NoCommitData />;\n }\n}\n\ntype Props = {\n chartData: ChartData,\n commitTree: CommitTree,\n height: number,\n width: number,\n};\n\nfunction CommitFlamegraph({chartData, commitTree, height, width}: Props) {\n const [hoveredFiberData, setHoveredFiberData] =\n useState<TooltipFiberData | null>(null);\n const {lineHeight} = useContext(SettingsContext);\n const {selectFiber, selectedFiberID} = useContext(ProfilerContext);\n const {highlightHostInstance, clearHighlightHostInstance} =\n useHighlightHostInstance();\n\n const selectedChartNodeIndex = useMemo<number>(() => {\n if (selectedFiberID === null) {\n return 0;\n }\n // The selected node might not be in the tree for this commit,\n // so it's important that we have a fallback plan.\n const depth = chartData.idToDepthMap.get(selectedFiberID);\n return depth !== undefined ? depth - 1 : 0;\n }, [chartData, selectedFiberID]);\n\n const selectedChartNode = useMemo(() => {\n if (selectedFiberID !== null) {\n return (\n chartData.rows[selectedChartNodeIndex].find(\n chartNode => chartNode.id === selectedFiberID,\n ) || null\n );\n }\n return null;\n }, [chartData, selectedFiberID, selectedChartNodeIndex]);\n\n const handleElementMouseEnter = useCallback(\n ({id, name}: $FlowFixMe) => {\n highlightHostInstance(id); // Highlight last hovered element.\n setHoveredFiberData({id, name}); // Set hovered fiber data for tooltip\n },\n [highlightHostInstance],\n );\n\n const handleElementMouseLeave = useCallback(() => {\n clearHighlightHostInstance(); // clear highlighting of element on mouse leave\n setHoveredFiberData(null); // clear hovered fiber data for tooltip\n }, [clearHighlightHostInstance]);\n\n const itemData = useMemo<ItemData>(\n () => ({\n chartData,\n onElementMouseEnter: handleElementMouseEnter,\n onElementMouseLeave: handleElementMouseLeave,\n scaleX: scale(\n 0,\n selectedChartNode !== null\n ? selectedChartNode.treeBaseDuration\n : chartData.baseDuration,\n 0,\n width,\n ),\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n }),\n [\n chartData,\n handleElementMouseEnter,\n handleElementMouseLeave,\n selectedChartNode,\n selectedChartNodeIndex,\n selectFiber,\n width,\n ],\n );\n\n // Tooltip used to show summary of fiber info on hover\n const tooltipLabel = useMemo(\n () =>\n hoveredFiberData !== null ? (\n <HoveredFiberInfo fiberData={hoveredFiberData} />\n ) : null,\n [hoveredFiberData],\n );\n\n return (\n <Tooltip label={tooltipLabel}>\n <FixedSizeList\n height={height}\n innerElementType={InnerElementType}\n itemCount={chartData.depth}\n itemData={itemData}\n itemSize={lineHeight}\n width={width}>\n {CommitFlamegraphListItem}\n </FixedSizeList>\n </Tooltip>\n );\n}\n\nconst InnerElementType = forwardRef(({children, ...rest}, ref) => (\n <svg ref={ref} {...rest}>\n <defs>\n <pattern\n id=\"didNotRenderPattern\"\n patternUnits=\"userSpaceOnUse\"\n width=\"4\"\n height=\"4\">\n <path\n d=\"M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2\"\n className={styles.PatternPath}\n />\n </pattern>\n </defs>\n {children}\n </svg>\n));\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 * @flow\n */\n\nimport * as React from 'react';\nimport {memo, useCallback, useContext} from 'react';\nimport {areEqual} from 'react-window';\nimport {minBarWidth} from './constants';\nimport {getGradientColor} from './utils';\nimport ChartNode from './ChartNode';\nimport {SettingsContext} from '../Settings/SettingsContext';\n\nimport type {ItemData} from './CommitRanked';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n};\n\nfunction CommitRankedListItem({data, index, style}: Props) {\n const {\n chartData,\n onElementMouseEnter,\n onElementMouseLeave,\n scaleX,\n selectedFiberIndex,\n selectFiber,\n width,\n } = data;\n\n const node = chartData.nodes[index];\n\n const {lineHeight} = useContext(SettingsContext);\n\n const handleClick = useCallback(\n (event: $FlowFixMe) => {\n event.stopPropagation();\n const {id, name} = node;\n selectFiber(id, name);\n },\n [node, selectFiber],\n );\n\n const handleMouseEnter = () => {\n const {id, name} = node;\n onElementMouseEnter({id, name});\n };\n\n const handleMouseLeave = () => {\n onElementMouseLeave();\n };\n\n // List items are absolutely positioned using the CSS \"top\" attribute.\n // The \"left\" value will always be 0.\n // Since height is fixed, and width is based on the node's duration,\n // We can ignore those values as well.\n const top = parseInt(style.top, 10);\n\n return (\n <ChartNode\n color={getGradientColor(node.value / chartData.maxValue)}\n height={lineHeight}\n isDimmed={index < selectedFiberIndex}\n key={node.id}\n label={node.label}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n width={Math.max(minBarWidth, scaleX(node.value, width))}\n x={0}\n y={top}\n />\n );\n}\n\nexport default (memo(\n CommitRankedListItem,\n areEqual,\n): React.ComponentType<Props>);\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport {ProfilerContext} from './ProfilerContext';\nimport NoCommitData from './NoCommitData';\nimport CommitRankedListItem from './CommitRankedListItem';\nimport HoveredFiberInfo from './HoveredFiberInfo';\nimport {scale} from './utils';\nimport {StoreContext} from '../context';\nimport {SettingsContext} from '../Settings/SettingsContext';\nimport {useHighlightHostInstance} from '../hooks';\nimport Tooltip from './Tooltip';\n\nimport styles from './CommitRanked.css';\n\nimport type {TooltipFiberData} from './HoveredFiberInfo';\nimport type {ChartData} from './RankedChartBuilder';\nimport type {CommitTree} from './types';\n\nexport type ItemData = {\n chartData: ChartData,\n onElementMouseEnter: (fiberData: TooltipFiberData) => void,\n onElementMouseLeave: () => void,\n scaleX: (value: number, fallbackValue: number) => number,\n selectedFiberID: number | null,\n selectedFiberIndex: number,\n selectFiber: (id: number | null, name: string | null) => void,\n width: number,\n};\n\nexport default function CommitRankedAutoSizer(_: {}): React.Node {\n const {profilerStore} = useContext(StoreContext);\n const {rootID, selectedCommitIndex, selectFiber} =\n useContext(ProfilerContext);\n const {profilingCache} = profilerStore;\n\n const deselectCurrentFiber = useCallback(\n (event: $FlowFixMe) => {\n event.stopPropagation();\n selectFiber(null, null);\n },\n [selectFiber],\n );\n\n let commitTree: CommitTree | null = null;\n let chartData: ChartData | null = null;\n if (selectedCommitIndex !== null) {\n commitTree = profilingCache.getCommitTree({\n commitIndex: selectedCommitIndex,\n rootID: ((rootID: any): number),\n });\n\n chartData = profilingCache.getRankedChartData({\n commitIndex: selectedCommitIndex,\n commitTree,\n rootID: ((rootID: any): number),\n });\n }\n\n if (commitTree != null && chartData != null && chartData.nodes.length > 0) {\n return (\n <div className={styles.Container} onClick={deselectCurrentFiber}>\n <AutoSizer>\n {({height, width}) => (\n <CommitRanked\n chartData={((chartData: any): ChartData)}\n commitTree={((commitTree: any): CommitTree)}\n height={height}\n width={width}\n />\n )}\n </AutoSizer>\n </div>\n );\n } else {\n return <NoCommitData />;\n }\n}\n\ntype Props = {\n chartData: ChartData,\n commitTree: CommitTree,\n height: number,\n width: number,\n};\n\nfunction CommitRanked({chartData, commitTree, height, width}: Props) {\n const [hoveredFiberData, setHoveredFiberData] =\n useState<TooltipFiberData | null>(null);\n const {lineHeight} = useContext(SettingsContext);\n const {selectedFiberID, selectFiber} = useContext(ProfilerContext);\n const {highlightHostInstance, clearHighlightHostInstance} =\n useHighlightHostInstance();\n\n const selectedFiberIndex = useMemo(\n () => getNodeIndex(chartData, selectedFiberID),\n [chartData, selectedFiberID],\n );\n\n const handleElementMouseEnter = useCallback(\n ({id, name}: $FlowFixMe) => {\n highlightHostInstance(id); // Highlight last hovered element.\n setHoveredFiberData({id, name}); // Set hovered fiber data for tooltip\n },\n [highlightHostInstance],\n );\n\n const handleElementMouseLeave = useCallback(() => {\n clearHighlightHostInstance(); // clear highlighting of element on mouse leave\n setHoveredFiberData(null); // clear hovered fiber data for tooltip\n }, [clearHighlightHostInstance]);\n\n const itemData = useMemo<ItemData>(\n () => ({\n chartData,\n onElementMouseEnter: handleElementMouseEnter,\n onElementMouseLeave: handleElementMouseLeave,\n scaleX: scale(0, chartData.nodes[selectedFiberIndex].value, 0, width),\n selectedFiberID,\n selectedFiberIndex,\n selectFiber,\n width,\n }),\n [\n chartData,\n handleElementMouseEnter,\n handleElementMouseLeave,\n selectedFiberID,\n selectedFiberIndex,\n selectFiber,\n width,\n ],\n );\n\n // Tooltip used to show summary of fiber info on hover\n const tooltipLabel = useMemo(\n () =>\n hoveredFiberData !== null ? (\n <HoveredFiberInfo fiberData={hoveredFiberData} />\n ) : null,\n [hoveredFiberData],\n );\n\n return (\n <Tooltip label={tooltipLabel}>\n <FixedSizeList\n height={height}\n innerElementType=\"svg\"\n itemCount={chartData.nodes.length}\n itemData={itemData}\n itemSize={lineHeight}\n width={width}>\n {CommitRankedListItem}\n </FixedSizeList>\n </Tooltip>\n );\n}\n\nconst getNodeIndex = (chartData: ChartData, id: number | null): number => {\n if (id === null) {\n return 0;\n }\n const {nodes} = chartData;\n for (let index = 0; index < nodes.length; index++) {\n if (nodes[index].id === id) {\n return index;\n }\n }\n return 0;\n};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useCallback, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\n\nimport styles from './RootSelector.css';\n\nexport default function RootSelector(_: {}): React.Node {\n const {profilingData, rootID, setRootID} = useContext(ProfilerContext);\n\n const options = [];\n if (profilingData !== null) {\n profilingData.dataForRoots.forEach((dataForRoot, id) => {\n options.push(\n <option key={id} value={id}>\n {dataForRoot.displayName}\n </option>,\n );\n });\n }\n\n const handleChange = useCallback(\n ({currentTarget}: $FlowFixMe) => {\n setRootID(parseInt(currentTarget.value, 10));\n },\n [setRootID],\n );\n\n if (profilingData === null || profilingData.dataForRoots.size <= 1) {\n // Don't take up visual space if there's only one root.\n return null;\n }\n\n return (\n <Fragment>\n <div className={styles.Spacer} />\n <select value={rootID} onChange={handleChange}>\n {options}\n </select>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {ProfilerContext} from './ProfilerContext';\n\nimport styles from './RecordToggle.css';\n\nexport type Props = {\n disabled?: boolean,\n};\n\nexport default function RecordToggle({disabled}: Props): React.Node {\n const {isProfiling, startProfiling, stopProfiling} =\n useContext(ProfilerContext);\n\n let className = styles.InactiveRecordToggle;\n if (disabled) {\n className = styles.DisabledRecordToggle;\n } else if (isProfiling) {\n className = styles.ActiveRecordToggle;\n }\n\n return (\n <Button\n className={className}\n disabled={disabled}\n onClick={isProfiling ? stopProfiling : startProfiling}\n testName=\"ProfilerToggleButton\"\n title={isProfiling ? 'Stop profiling' : 'Start profiling'}>\n <ButtonIcon type=\"record\" />\n </Button>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport RecordToggle from './RecordToggle';\n\nimport styles from './Profiler.css';\n\nexport default function NoProfilingData(): React.Node {\n return (\n <div className={styles.Column}>\n <div className={styles.Header}>No profiling data has been recorded.</div>\n <div className={styles.Row}>\n Click the record button <RecordToggle /> to start recording.\n </div>\n <div className={`${styles.Row} ${styles.LearnMoreRow}`}>\n Click{' '}\n <a\n className={styles.LearnMoreLink}\n href=\"https://fb.me/react-devtools-profiling\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n here\n </a>{' '}\n to learn more about profiling.\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport RecordToggle from './RecordToggle';\n\nimport styles from './Profiler.css';\n\nexport default function RecordingInProgress(): React.Node {\n return (\n <div className={styles.Column}>\n <div className={styles.Header}>Profiling is in progress...</div>\n <div className={styles.Row}>\n Click the record button <RecordToggle /> to stop recording.\n </div>\n </div>\n );\n}\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 * @flow\n */\n\nexport const DPR: number = window.devicePixelRatio || 1;\nexport const LABEL_SIZE = 80;\nexport const MARKER_HEIGHT = 20;\nexport const MARKER_TICK_HEIGHT = 8;\nexport const FONT_SIZE = 10;\nexport const MARKER_TEXT_PADDING = 8;\nexport const COLOR_HOVER_DIM_DELTA = 5;\nexport const TOP_ROW_PADDING = 4;\nexport const NATIVE_EVENT_HEIGHT = 14;\nexport const SUSPENSE_EVENT_HEIGHT = 14;\nexport const PENDING_SUSPENSE_EVENT_SIZE = 8;\nexport const REACT_EVENT_DIAMETER = 6;\nexport const USER_TIMING_MARK_SIZE = 8;\nexport const REACT_MEASURE_HEIGHT = 14;\nexport const BORDER_SIZE = 1 / DPR;\nexport const FLAMECHART_FRAME_HEIGHT = 14;\nexport const TEXT_PADDING = 3;\nexport const SNAPSHOT_SCRUBBER_SIZE = 3;\n\nexport const INTERVAL_TIMES = [\n 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000,\n];\nexport const MIN_INTERVAL_SIZE_PX = 70;\n\n// TODO Replace this with \"export let\" vars\nexport let COLORS: {\n BACKGROUND: string,\n INTERNAL_MODULE_FRAME: string,\n INTERNAL_MODULE_FRAME_HOVER: string,\n INTERNAL_MODULE_FRAME_TEXT: string,\n NATIVE_EVENT: string,\n NATIVE_EVENT_HOVER: string,\n NETWORK_PRIMARY: string,\n NETWORK_PRIMARY_HOVER: string,\n NETWORK_SECONDARY: string,\n NETWORK_SECONDARY_HOVER: string,\n PRIORITY_BACKGROUND: string,\n PRIORITY_BORDER: string,\n PRIORITY_LABEL: string,\n REACT_COMMIT: string,\n REACT_COMMIT_HOVER: string,\n REACT_COMMIT_TEXT: string,\n REACT_IDLE: string,\n REACT_IDLE_HOVER: string,\n REACT_LAYOUT_EFFECTS: string,\n REACT_LAYOUT_EFFECTS_HOVER: string,\n REACT_LAYOUT_EFFECTS_TEXT: string,\n REACT_PASSIVE_EFFECTS: string,\n REACT_PASSIVE_EFFECTS_HOVER: string,\n REACT_PASSIVE_EFFECTS_TEXT: string,\n REACT_RENDER: string,\n REACT_RENDER_HOVER: string,\n REACT_RENDER_TEXT: string,\n REACT_RESIZE_BAR: string,\n REACT_RESIZE_BAR_ACTIVE: string,\n REACT_RESIZE_BAR_BORDER: string,\n REACT_RESIZE_BAR_DOT: string,\n REACT_SCHEDULE: string,\n REACT_SCHEDULE_HOVER: string,\n REACT_SUSPENSE_REJECTED_EVENT: string,\n REACT_SUSPENSE_REJECTED_EVENT_HOVER: string,\n REACT_SUSPENSE_RESOLVED_EVENT: string,\n REACT_SUSPENSE_RESOLVED_EVENT_HOVER: string,\n REACT_SUSPENSE_UNRESOLVED_EVENT: string,\n REACT_SUSPENSE_UNRESOLVED_EVENT_HOVER: string,\n REACT_THROWN_ERROR: string,\n REACT_THROWN_ERROR_HOVER: string,\n REACT_WORK_BORDER: string,\n SCROLL_CARET: string,\n SCRUBBER_BACKGROUND: string,\n SCRUBBER_BORDER: string,\n SEARCH_RESULT_FILL: string,\n TEXT_COLOR: string,\n TEXT_DIM_COLOR: string,\n TIME_MARKER_LABEL: string,\n USER_TIMING: string,\n USER_TIMING_HOVER: string,\n WARNING_BACKGROUND: string,\n WARNING_BACKGROUND_HOVER: string,\n WARNING_TEXT: string,\n WARNING_TEXT_INVERED: string,\n} = {\n BACKGROUND: '',\n INTERNAL_MODULE_FRAME: '',\n INTERNAL_MODULE_FRAME_HOVER: '',\n INTERNAL_MODULE_FRAME_TEXT: '',\n NATIVE_EVENT: '',\n NATIVE_EVENT_HOVER: '',\n NETWORK_PRIMARY: '',\n NETWORK_PRIMARY_HOVER: '',\n NETWORK_SECONDARY: '',\n NETWORK_SECONDARY_HOVER: '',\n PRIORITY_BACKGROUND: '',\n PRIORITY_BORDER: '',\n PRIORITY_LABEL: '',\n USER_TIMING: '',\n USER_TIMING_HOVER: '',\n REACT_IDLE: '',\n REACT_IDLE_HOVER: '',\n REACT_RENDER: '',\n REACT_RENDER_HOVER: '',\n REACT_RENDER_TEXT: '',\n REACT_COMMIT: '',\n REACT_COMMIT_HOVER: '',\n REACT_COMMIT_TEXT: '',\n REACT_LAYOUT_EFFECTS: '',\n REACT_LAYOUT_EFFECTS_HOVER: '',\n REACT_LAYOUT_EFFECTS_TEXT: '',\n REACT_PASSIVE_EFFECTS: '',\n REACT_PASSIVE_EFFECTS_HOVER: '',\n REACT_PASSIVE_EFFECTS_TEXT: '',\n REACT_RESIZE_BAR: '',\n REACT_RESIZE_BAR_ACTIVE: '',\n REACT_RESIZE_BAR_BORDER: '',\n REACT_RESIZE_BAR_DOT: '',\n REACT_SCHEDULE: '',\n REACT_SCHEDULE_HOVER: '',\n REACT_SUSPENSE_REJECTED_EVENT: '',\n REACT_SUSPENSE_REJECTED_EVENT_HOVER: '',\n REACT_SUSPENSE_RESOLVED_EVENT: '',\n REACT_SUSPENSE_RESOLVED_EVENT_HOVER: '',\n REACT_SUSPENSE_UNRESOLVED_EVENT: '',\n REACT_SUSPENSE_UNRESOLVED_EVENT_HOVER: '',\n REACT_THROWN_ERROR: '',\n REACT_THROWN_ERROR_HOVER: '',\n REACT_WORK_BORDER: '',\n SCROLL_CARET: '',\n SCRUBBER_BACKGROUND: '',\n SCRUBBER_BORDER: '',\n SEARCH_RESULT_FILL: '',\n TEXT_COLOR: '',\n TEXT_DIM_COLOR: '',\n TIME_MARKER_LABEL: '',\n WARNING_BACKGROUND: '',\n WARNING_BACKGROUND_HOVER: '',\n WARNING_TEXT: '',\n WARNING_TEXT_INVERED: '',\n};\n\nexport function updateColorsToMatchTheme(element: Element): boolean {\n const computedStyle = getComputedStyle(element);\n\n // Check to see if styles have been initialized...\n if (computedStyle.getPropertyValue('--color-background') == null) {\n return false;\n }\n\n COLORS = {\n BACKGROUND: computedStyle.getPropertyValue('--color-background'),\n INTERNAL_MODULE_FRAME: computedStyle.getPropertyValue(\n '--color-timeline-internal-module',\n ),\n INTERNAL_MODULE_FRAME_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-internal-module-hover',\n ),\n INTERNAL_MODULE_FRAME_TEXT: computedStyle.getPropertyValue(\n '--color-timeline-internal-module-text',\n ),\n NATIVE_EVENT: computedStyle.getPropertyValue(\n '--color-timeline-native-event',\n ),\n NATIVE_EVENT_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-native-event-hover',\n ),\n NETWORK_PRIMARY: computedStyle.getPropertyValue(\n '--color-timeline-network-primary',\n ),\n NETWORK_PRIMARY_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-network-primary-hover',\n ),\n NETWORK_SECONDARY: computedStyle.getPropertyValue(\n '--color-timeline-network-secondary',\n ),\n NETWORK_SECONDARY_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-network-secondary-hover',\n ),\n PRIORITY_BACKGROUND: computedStyle.getPropertyValue(\n '--color-timeline-priority-background',\n ),\n PRIORITY_BORDER: computedStyle.getPropertyValue(\n '--color-timeline-priority-border',\n ),\n PRIORITY_LABEL: computedStyle.getPropertyValue('--color-text'),\n USER_TIMING: computedStyle.getPropertyValue('--color-timeline-user-timing'),\n USER_TIMING_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-user-timing-hover',\n ),\n REACT_IDLE: computedStyle.getPropertyValue('--color-timeline-react-idle'),\n REACT_IDLE_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-idle-hover',\n ),\n REACT_RENDER: computedStyle.getPropertyValue(\n '--color-timeline-react-render',\n ),\n REACT_RENDER_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-render-hover',\n ),\n REACT_RENDER_TEXT: computedStyle.getPropertyValue(\n '--color-timeline-react-render-text',\n ),\n REACT_COMMIT: computedStyle.getPropertyValue(\n '--color-timeline-react-commit',\n ),\n REACT_COMMIT_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-commit-hover',\n ),\n REACT_COMMIT_TEXT: computedStyle.getPropertyValue(\n '--color-timeline-react-commit-text',\n ),\n REACT_LAYOUT_EFFECTS: computedStyle.getPropertyValue(\n '--color-timeline-react-layout-effects',\n ),\n REACT_LAYOUT_EFFECTS_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-layout-effects-hover',\n ),\n REACT_LAYOUT_EFFECTS_TEXT: computedStyle.getPropertyValue(\n '--color-timeline-react-layout-effects-text',\n ),\n REACT_PASSIVE_EFFECTS: computedStyle.getPropertyValue(\n '--color-timeline-react-passive-effects',\n ),\n REACT_PASSIVE_EFFECTS_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-passive-effects-hover',\n ),\n REACT_PASSIVE_EFFECTS_TEXT: computedStyle.getPropertyValue(\n '--color-timeline-react-passive-effects-text',\n ),\n REACT_RESIZE_BAR: computedStyle.getPropertyValue('--color-resize-bar'),\n REACT_RESIZE_BAR_ACTIVE: computedStyle.getPropertyValue(\n '--color-resize-bar-active',\n ),\n REACT_RESIZE_BAR_BORDER: computedStyle.getPropertyValue(\n '--color-resize-bar-border',\n ),\n REACT_RESIZE_BAR_DOT: computedStyle.getPropertyValue(\n '--color-resize-bar-dot',\n ),\n REACT_SCHEDULE: computedStyle.getPropertyValue(\n '--color-timeline-react-schedule',\n ),\n REACT_SCHEDULE_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-schedule-hover',\n ),\n REACT_SUSPENSE_REJECTED_EVENT: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-rejected',\n ),\n REACT_SUSPENSE_REJECTED_EVENT_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-rejected-hover',\n ),\n REACT_SUSPENSE_RESOLVED_EVENT: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-resolved',\n ),\n REACT_SUSPENSE_RESOLVED_EVENT_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-resolved-hover',\n ),\n REACT_SUSPENSE_UNRESOLVED_EVENT: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-unresolved',\n ),\n REACT_SUSPENSE_UNRESOLVED_EVENT_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-unresolved-hover',\n ),\n REACT_THROWN_ERROR: computedStyle.getPropertyValue(\n '--color-timeline-thrown-error',\n ),\n REACT_THROWN_ERROR_HOVER: computedStyle.getPropertyValue(\n '--color-timeline-thrown-error-hover',\n ),\n REACT_WORK_BORDER: computedStyle.getPropertyValue(\n '--color-timeline-react-work-border',\n ),\n SCROLL_CARET: computedStyle.getPropertyValue('--color-scroll-caret'),\n SCRUBBER_BACKGROUND: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-rejected',\n ),\n SEARCH_RESULT_FILL: computedStyle.getPropertyValue(\n '--color-timeline-react-suspense-rejected',\n ),\n SCRUBBER_BORDER: computedStyle.getPropertyValue(\n '--color-timeline-text-color',\n ),\n TEXT_COLOR: computedStyle.getPropertyValue('--color-timeline-text-color'),\n TEXT_DIM_COLOR: computedStyle.getPropertyValue(\n '--color-timeline-text-dim-color',\n ),\n TIME_MARKER_LABEL: computedStyle.getPropertyValue('--color-text'),\n WARNING_BACKGROUND: computedStyle.getPropertyValue(\n '--color-warning-background',\n ),\n WARNING_BACKGROUND_HOVER: computedStyle.getPropertyValue(\n '--color-warning-background-hover',\n ),\n WARNING_TEXT: computedStyle.getPropertyValue('--color-warning-text-color'),\n WARNING_TEXT_INVERED: computedStyle.getPropertyValue(\n '--color-warning-text-color-inverted',\n ),\n };\n\n return true;\n}\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\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 * @flow\n */\n\nexport type Point = $ReadOnly<{x: number, y: number}>;\nexport type Size = $ReadOnly<{width: number, height: number}>;\nexport type IntrinsicSize = {\n ...Size,\n\n // If content is this height or less, hide the scrollbar entirely,\n // so that it doesn't take up vertical space unnecessarily (e.g. for a single row of content).\n hideScrollBarIfLessThanHeight?: number,\n\n // The initial height should be the height of the content, or this, whichever is less.\n maxInitialHeight?: number,\n};\nexport type Rect = $ReadOnly<{origin: Point, size: Size}>;\n\n/**\n * Alternative representation of `Rect`.\n * A tuple of (`top`, `right`, `bottom`, `left`) coordinates.\n */\ntype Box = [number, number, number, number];\n\nexport const zeroPoint: Point = Object.freeze({x: 0, y: 0});\nexport const zeroSize: Size = Object.freeze({width: 0, height: 0});\nexport const zeroRect: Rect = Object.freeze({\n origin: zeroPoint,\n size: zeroSize,\n});\n\nexport function pointEqualToPoint(point1: Point, point2: Point): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n}\n\nexport function sizeEqualToSize(size1: Size, size2: Size): boolean {\n return size1.width === size2.width && size1.height === size2.height;\n}\n\nexport function rectEqualToRect(rect1: Rect, rect2: Rect): boolean {\n return (\n pointEqualToPoint(rect1.origin, rect2.origin) &&\n sizeEqualToSize(rect1.size, rect2.size)\n );\n}\n\nexport function sizeIsValid({width, height}: Size): boolean {\n return width >= 0 && height >= 0;\n}\n\nexport function sizeIsEmpty({width, height}: Size): boolean {\n return width <= 0 || height <= 0;\n}\n\nfunction rectToBox(rect: Rect): Box {\n const top = rect.origin.y;\n const right = rect.origin.x + rect.size.width;\n const bottom = rect.origin.y + rect.size.height;\n const left = rect.origin.x;\n return [top, right, bottom, left];\n}\n\nfunction boxToRect(box: Box): Rect {\n const [top, right, bottom, left] = box;\n return {\n origin: {\n x: left,\n y: top,\n },\n size: {\n width: right - left,\n height: bottom - top,\n },\n };\n}\n\nexport function rectIntersectsRect(rect1: Rect, rect2: Rect): boolean {\n if (\n rect1.size.width === 0 ||\n rect1.size.height === 0 ||\n rect2.size.width === 0 ||\n rect2.size.height === 0\n ) {\n return false;\n }\n\n const [top1, right1, bottom1, left1] = rectToBox(rect1);\n const [top2, right2, bottom2, left2] = rectToBox(rect2);\n return !(\n right1 < left2 ||\n right2 < left1 ||\n bottom1 < top2 ||\n bottom2 < top1\n );\n}\n\n/**\n * Returns the intersection of the 2 rectangles.\n *\n * Prerequisite: `rect1` must intersect with `rect2`.\n */\nexport function intersectionOfRects(rect1: Rect, rect2: Rect): Rect {\n const [top1, right1, bottom1, left1] = rectToBox(rect1);\n const [top2, right2, bottom2, left2] = rectToBox(rect2);\n return boxToRect([\n Math.max(top1, top2),\n Math.min(right1, right2),\n Math.min(bottom1, bottom2),\n Math.max(left1, left2),\n ]);\n}\n\nexport function rectContainsPoint({x, y}: Point, rect: Rect): boolean {\n const [top, right, bottom, left] = rectToBox(rect);\n return left <= x && x <= right && top <= y && y <= bottom;\n}\n\n/**\n * Returns the smallest rectangle that contains all provided rects.\n *\n * @returns Union of `rects`. If `rects` is empty, returns `zeroRect`.\n */\nexport function unionOfRects(...rects: Rect[]): Rect {\n if (rects.length === 0) {\n return zeroRect;\n }\n\n const [firstRect, ...remainingRects] = rects;\n const boxUnion = remainingRects\n .map(rectToBox)\n .reduce((intermediateUnion, nextBox): Box => {\n const [unionTop, unionRight, unionBottom, unionLeft] = intermediateUnion;\n const [nextTop, nextRight, nextBottom, nextLeft] = nextBox;\n return [\n Math.min(unionTop, nextTop),\n Math.max(unionRight, nextRight),\n Math.max(unionBottom, nextBottom),\n Math.min(unionLeft, nextLeft),\n ];\n }, rectToBox(firstRect));\n return boxToRect(boxUnion);\n}\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 * @flow\n */\n\nimport type {Interaction} from './useCanvasInteraction';\nimport type {Size} from './geometry';\n\nimport memoize from 'memoize-one';\n\nimport {View} from './View';\nimport {zeroPoint} from './geometry';\nimport {DPR} from '../content-views/constants';\n\nexport type ViewRefs = {\n activeView: View | null,\n hoveredView: View | null,\n};\n\n// hidpi canvas: https://web.dev/articles/canvas-hidipi\nfunction configureRetinaCanvas(\n canvas: HTMLCanvasElement,\n height: number,\n width: number,\n) {\n canvas.width = width * DPR;\n canvas.height = height * DPR;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n}\n\nconst getCanvasContext = memoize(\n (\n canvas: HTMLCanvasElement,\n height: number,\n width: number,\n scaleCanvas: boolean = true,\n ): CanvasRenderingContext2D => {\n const context = canvas.getContext('2d', {alpha: false});\n if (scaleCanvas) {\n configureRetinaCanvas(canvas, height, width);\n\n // Scale all drawing operations by the dpr, so you don't have to worry about the difference.\n context.scale(DPR, DPR);\n }\n return context;\n },\n);\n\ntype ResetHoveredEventFn = () => void;\n\n/**\n * Represents the canvas surface and a view heirarchy. A surface is also the\n * place where all interactions enter the view heirarchy.\n */\nexport class Surface {\n rootView: ?View;\n\n _context: ?CanvasRenderingContext2D;\n _canvasSize: ?Size;\n\n _resetHoveredEvent: ResetHoveredEventFn;\n\n _viewRefs: ViewRefs = {\n activeView: null,\n hoveredView: null,\n };\n\n constructor(resetHoveredEvent: ResetHoveredEventFn) {\n this._resetHoveredEvent = resetHoveredEvent;\n }\n\n hasActiveView(): boolean {\n return this._viewRefs.activeView !== null;\n }\n\n setCanvas(canvas: HTMLCanvasElement, canvasSize: Size) {\n this._context = getCanvasContext(\n canvas,\n canvasSize.height,\n canvasSize.width,\n );\n this._canvasSize = canvasSize;\n\n if (this.rootView) {\n this.rootView.setNeedsDisplay();\n }\n }\n\n displayIfNeeded() {\n const {rootView, _canvasSize, _context} = this;\n if (!rootView || !_context || !_canvasSize) {\n return;\n }\n rootView.setFrame({\n origin: zeroPoint,\n size: _canvasSize,\n });\n rootView.setVisibleArea({\n origin: zeroPoint,\n size: _canvasSize,\n });\n rootView.displayIfNeeded(_context, this._viewRefs);\n }\n\n getCurrentCursor(): string | null {\n const {activeView, hoveredView} = this._viewRefs;\n if (activeView !== null) {\n return activeView.currentCursor;\n } else if (hoveredView !== null) {\n return hoveredView.currentCursor;\n } else {\n return null;\n }\n }\n\n handleInteraction(interaction: Interaction) {\n const rootView = this.rootView;\n if (rootView != null) {\n const viewRefs = this._viewRefs;\n switch (interaction.type) {\n case 'mousemove':\n case 'wheel-control':\n case 'wheel-meta':\n case 'wheel-plain':\n case 'wheel-shift':\n // Clean out the hovered view before processing this type of interaction.\n const hoveredView = viewRefs.hoveredView;\n viewRefs.hoveredView = null;\n\n rootView.handleInteractionAndPropagateToSubviews(\n interaction,\n viewRefs,\n );\n\n // If a previously hovered view is no longer hovered, update the outer state.\n if (hoveredView !== null && viewRefs.hoveredView === null) {\n this._resetHoveredEvent();\n }\n break;\n default:\n rootView.handleInteractionAndPropagateToSubviews(\n interaction,\n viewRefs,\n );\n break;\n }\n }\n }\n}\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 * @flow\n */\n\nimport type {Rect} from './geometry';\nimport type {View} from './View';\n\nexport type LayoutInfo = {view: View, frame: Rect};\nexport type Layout = LayoutInfo[];\n\n/**\n * A function that takes a list of subviews, currently laid out in\n * `existingLayout`, and lays them out into `containingFrame`.\n */\nexport type Layouter = (\n existingLayout: Layout,\n containingFrame: Rect,\n) => Layout;\n\nfunction viewToLayoutInfo(view: View): LayoutInfo {\n return {view, frame: view.frame};\n}\n\nexport function viewsToLayout(views: View[]): Layout {\n return views.map(viewToLayoutInfo);\n}\n\n/**\n * Applies `layout`'s `frame`s to its corresponding `view`.\n */\nexport function collapseLayoutIntoViews(layout: Layout) {\n layout.forEach(({view, frame}) => view.setFrame(frame));\n}\n\n/**\n * A no-operation layout; does not modify the layout.\n */\nexport const noopLayout: Layouter = layout => layout;\n\n/**\n * Layer views on top of each other. All views' frames will be set to `containerFrame`.\n *\n * Equivalent to composing:\n * - `alignToContainerXLayout`,\n * - `alignToContainerYLayout`,\n * - `containerWidthLayout`, and\n * - `containerHeightLayout`.\n */\nexport const layeredLayout: Layouter = (layout, containerFrame) => {\n return layout.map(layoutInfo => ({...layoutInfo, frame: containerFrame}));\n};\n\n/**\n * Stacks `views` vertically in `frame`.\n * All views in `views` will have their widths set to the frame's width.\n */\nexport const verticallyStackedLayout: Layouter = (layout, containerFrame) => {\n let currentY = containerFrame.origin.y;\n return layout.map(layoutInfo => {\n const desiredSize = layoutInfo.view.desiredSize();\n const height = desiredSize\n ? desiredSize.height\n : containerFrame.origin.y + containerFrame.size.height - currentY;\n const proposedFrame = {\n origin: {x: containerFrame.origin.x, y: currentY},\n size: {width: containerFrame.size.width, height},\n };\n currentY += height;\n return {\n ...layoutInfo,\n frame: proposedFrame,\n };\n });\n};\n\n/**\n * A layouter that aligns all frames' lefts to the container frame's left.\n */\nexport const alignToContainerXLayout: Layouter = (layout, containerFrame) => {\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: {\n x: containerFrame.origin.x,\n y: layoutInfo.frame.origin.y,\n },\n size: layoutInfo.frame.size,\n },\n }));\n};\n\n/**\n * A layouter that aligns all frames' tops to the container frame's top.\n */\nexport const alignToContainerYLayout: Layouter = (layout, containerFrame) => {\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: {\n x: layoutInfo.frame.origin.x,\n y: containerFrame.origin.y,\n },\n size: layoutInfo.frame.size,\n },\n }));\n};\n\n/**\n * A layouter that sets all frames' widths to `containerFrame.size.width`.\n */\nexport const containerWidthLayout: Layouter = (layout, containerFrame) => {\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: layoutInfo.frame.origin,\n size: {\n width: containerFrame.size.width,\n height: layoutInfo.frame.size.height,\n },\n },\n }));\n};\n\n/**\n * A layouter that sets all frames' heights to `containerFrame.size.height`.\n */\nexport const containerHeightLayout: Layouter = (layout, containerFrame) => {\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: layoutInfo.frame.origin,\n size: {\n width: layoutInfo.frame.size.width,\n height: containerFrame.size.height,\n },\n },\n }));\n};\n\n/**\n * A layouter that sets all frames' heights to the desired height of its view.\n * If the view has no desired size, the frame's height is set to 0.\n */\nexport const desiredHeightLayout: Layouter = layout => {\n return layout.map(layoutInfo => {\n const desiredSize = layoutInfo.view.desiredSize();\n const height = desiredSize ? desiredSize.height : 0;\n return {\n ...layoutInfo,\n frame: {\n origin: layoutInfo.frame.origin,\n size: {\n width: layoutInfo.frame.size.width,\n height,\n },\n },\n };\n });\n};\n\n/**\n * A layouter that sets all frames' heights to the height of the tallest frame.\n */\nexport const uniformMaxSubviewHeightLayout: Layouter = layout => {\n const maxHeight = Math.max(\n ...layout.map(layoutInfo => layoutInfo.frame.size.height),\n );\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: layoutInfo.frame.origin,\n size: {\n width: layoutInfo.frame.size.width,\n height: maxHeight,\n },\n },\n }));\n};\n\n/**\n * A layouter that sets heights in this fashion:\n * - If a frame's height >= `containerFrame.size.height`, the frame is left unchanged.\n * - Otherwise, sets the frame's height to `containerFrame.size.height`.\n */\nexport const atLeastContainerHeightLayout: Layouter = (\n layout,\n containerFrame,\n) => {\n return layout.map(layoutInfo => ({\n ...layoutInfo,\n frame: {\n origin: layoutInfo.frame.origin,\n size: {\n width: layoutInfo.frame.size.width,\n height: Math.max(\n containerFrame.size.height,\n layoutInfo.frame.size.height,\n ),\n },\n },\n }));\n};\n\n/**\n * Create a layouter that applies each layouter in `layouters` in sequence.\n */\nexport function createComposedLayout(...layouters: Layouter[]): Layouter {\n if (layouters.length === 0) {\n return noopLayout;\n }\n\n const composedLayout: Layouter = (layout, containerFrame) => {\n return layouters.reduce(\n (intermediateLayout, layouter) =>\n layouter(intermediateLayout, containerFrame),\n layout,\n );\n };\n return composedLayout;\n}\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 * @flow\n */\n\nimport type {Interaction} from './useCanvasInteraction';\nimport type {IntrinsicSize, Rect, Size} from './geometry';\nimport type {Layouter} from './layouter';\nimport type {ViewRefs} from './Surface';\n\nimport {Surface} from './Surface';\nimport {\n rectEqualToRect,\n intersectionOfRects,\n rectIntersectsRect,\n sizeIsEmpty,\n sizeIsValid,\n unionOfRects,\n zeroRect,\n} from './geometry';\nimport {noopLayout, viewsToLayout, collapseLayoutIntoViews} from './layouter';\n\n/**\n * Base view class that can be subclassed to draw custom content or manage\n * subclasses.\n */\nexport class View {\n _backgroundColor: string | null;\n\n currentCursor: string | null = null;\n\n surface: Surface;\n\n frame: Rect;\n visibleArea: Rect;\n\n superview: ?View;\n subviews: View[] = [];\n\n /**\n * An injected function that lays out our subviews.\n * @private\n */\n _layouter: Layouter;\n\n /**\n * Whether this view needs to be drawn.\n *\n * NOTE: Do not set directly! Use `setNeedsDisplay`.\n *\n * @see setNeedsDisplay\n * @private\n */\n _needsDisplay: boolean = true;\n\n /**\n * Whether the hierarchy below this view has subviews that need display.\n *\n * NOTE: Do not set directly! Use `setSubviewsNeedDisplay`.\n *\n * @see setSubviewsNeedDisplay\n * @private\n */\n _subviewsNeedDisplay: boolean = false;\n\n constructor(\n surface: Surface,\n frame: Rect,\n layouter: Layouter = noopLayout,\n visibleArea: Rect = frame,\n backgroundColor?: string | null = null,\n ) {\n this._backgroundColor = backgroundColor || null;\n this.surface = surface;\n this.frame = frame;\n this._layouter = layouter;\n this.visibleArea = visibleArea;\n }\n\n /**\n * Invalidates view's contents.\n *\n * Downward propagating; once called, all subviews of this view should also\n * be invalidated.\n */\n setNeedsDisplay() {\n this._needsDisplay = true;\n if (this.superview) {\n this.superview._setSubviewsNeedDisplay();\n }\n this.subviews.forEach(subview => subview.setNeedsDisplay());\n }\n\n /**\n * Informs superview that it has subviews that need to be drawn.\n *\n * Upward propagating; once called, all superviews of this view should also\n * have `subviewsNeedDisplay` = true.\n *\n * @private\n */\n _setSubviewsNeedDisplay() {\n this._subviewsNeedDisplay = true;\n if (this.superview) {\n this.superview._setSubviewsNeedDisplay();\n }\n }\n\n setFrame(newFrame: Rect) {\n if (!rectEqualToRect(this.frame, newFrame)) {\n this.frame = newFrame;\n if (sizeIsValid(newFrame.size)) {\n this.frame = newFrame;\n } else {\n this.frame = zeroRect;\n }\n this.setNeedsDisplay();\n }\n }\n\n setVisibleArea(newVisibleArea: Rect) {\n if (!rectEqualToRect(this.visibleArea, newVisibleArea)) {\n if (sizeIsValid(newVisibleArea.size)) {\n this.visibleArea = newVisibleArea;\n } else {\n this.visibleArea = zeroRect;\n }\n this.setNeedsDisplay();\n }\n }\n\n /**\n * A size that can be used as a hint by layout functions.\n *\n * Implementations should typically return the intrinsic content size or a\n * size that fits all the view's content.\n *\n * The default implementation returns a size that fits all the view's\n * subviews.\n *\n * Can be overridden by subclasses.\n */\n desiredSize(): Size | IntrinsicSize {\n if (this._needsDisplay) {\n this.layoutSubviews();\n }\n const frames = this.subviews.map(subview => subview.frame);\n return unionOfRects(...frames).size;\n }\n\n /**\n * Appends `view` to the list of this view's `subviews`.\n */\n addSubview(view: View) {\n if (this.subviews.includes(view)) {\n return;\n }\n this.subviews.push(view);\n view.superview = this;\n }\n\n /**\n * Breaks the subview-superview relationship between `view` and this view, if\n * `view` is a subview of this view.\n */\n removeSubview(view: View) {\n const subviewIndex = this.subviews.indexOf(view);\n if (subviewIndex === -1) {\n return;\n }\n view.superview = undefined;\n this.subviews.splice(subviewIndex, 1);\n }\n\n /**\n * Removes all subviews from this view.\n */\n removeAllSubviews() {\n this.subviews.forEach(subview => (subview.superview = undefined));\n this.subviews = [];\n }\n\n /**\n * Executes the display flow if this view needs to be drawn.\n *\n * 1. Lays out subviews with `layoutSubviews`.\n * 2. Draws content with `draw`.\n */\n displayIfNeeded(context: CanvasRenderingContext2D, viewRefs: ViewRefs) {\n if (\n (this._needsDisplay || this._subviewsNeedDisplay) &&\n rectIntersectsRect(this.frame, this.visibleArea) &&\n !sizeIsEmpty(this.visibleArea.size)\n ) {\n this.layoutSubviews();\n if (this._needsDisplay) {\n this._needsDisplay = false;\n }\n if (this._subviewsNeedDisplay) this._subviewsNeedDisplay = false;\n\n // Clip anything drawn by the view to prevent it from overflowing its visible area.\n const visibleArea = this.visibleArea;\n const region = new Path2D();\n region.rect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n context.save();\n context.clip(region);\n context.beginPath();\n\n this.draw(context, viewRefs);\n\n // Stop clipping\n context.restore();\n }\n }\n\n /**\n * Layout self and subviews.\n *\n * Implementations should call `setNeedsDisplay` if a draw is required.\n *\n * The default implementation uses `this.layouter` to lay out subviews.\n *\n * Can be overwritten by subclasses that wish to manually manage their\n * subviews' layout.\n *\n * NOTE: Do not call directly! Use `displayIfNeeded`.\n *\n * @see displayIfNeeded\n */\n layoutSubviews() {\n const {frame, _layouter, subviews, visibleArea} = this;\n const existingLayout = viewsToLayout(subviews);\n const newLayout = _layouter(existingLayout, frame);\n collapseLayoutIntoViews(newLayout);\n\n subviews.forEach((subview, subviewIndex) => {\n if (rectIntersectsRect(visibleArea, subview.frame)) {\n subview.setVisibleArea(intersectionOfRects(visibleArea, subview.frame));\n } else {\n subview.setVisibleArea(zeroRect);\n }\n });\n }\n\n /**\n * Draw the contents of this view in the given canvas `context`.\n *\n * Defaults to drawing this view's `subviews`.\n *\n * To be overwritten by subclasses that wish to draw custom content.\n *\n * NOTE: Do not call directly! Use `displayIfNeeded`.\n *\n * @see displayIfNeeded\n */\n draw(context: CanvasRenderingContext2D, viewRefs: ViewRefs) {\n const {subviews, visibleArea} = this;\n subviews.forEach(subview => {\n if (rectIntersectsRect(visibleArea, subview.visibleArea)) {\n subview.displayIfNeeded(context, viewRefs);\n }\n });\n\n const backgroundColor = this._backgroundColor;\n if (backgroundColor !== null) {\n const desiredSize = this.desiredSize();\n if (visibleArea.size.height > desiredSize.height) {\n context.fillStyle = backgroundColor;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y + desiredSize.height,\n visibleArea.size.width,\n visibleArea.size.height - desiredSize.height,\n );\n }\n }\n }\n\n /**\n * Handle an `interaction`.\n *\n * To be overwritten by subclasses that wish to handle interactions.\n *\n * NOTE: Do not call directly! Use `handleInteractionAndPropagateToSubviews`\n */\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs): ?boolean {}\n\n /**\n * Handle an `interaction` and propagates it to all of this view's\n * `subviews`.\n *\n * NOTE: Should not be overridden! Subclasses should override\n * `handleInteraction` instead.\n *\n * @see handleInteraction\n * @protected\n */\n handleInteractionAndPropagateToSubviews(\n interaction: Interaction,\n viewRefs: ViewRefs,\n ): boolean {\n const {subviews, visibleArea} = this;\n\n if (visibleArea.size.height === 0) {\n return false;\n }\n\n // Pass the interaction to subviews first,\n // so they have the opportunity to claim it before it bubbles.\n //\n // Views are painted first to last,\n // so they should process interactions last to first,\n // so views in front (on top) can claim the interaction first.\n for (let i = subviews.length - 1; i >= 0; i--) {\n const subview = subviews[i];\n if (rectIntersectsRect(visibleArea, subview.visibleArea)) {\n const didSubviewHandle =\n subview.handleInteractionAndPropagateToSubviews(\n interaction,\n viewRefs,\n ) === true;\n if (didSubviewHandle) {\n return true;\n }\n }\n }\n\n const didSelfHandle =\n this.handleInteraction(interaction, viewRefs) === true;\n if (didSelfHandle) {\n return true;\n }\n\n return false;\n }\n}\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 * @flow\n */\n\nimport {View} from './View';\nimport {COLORS} from '../content-views/constants';\n\n/**\n * View that fills its visible area with a CSS color.\n */\nexport class BackgroundColorView extends View {\n draw(context: CanvasRenderingContext2D) {\n const {visibleArea} = this;\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n }\n}\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 * @flow\n */\n\nexport function clamp(min: number, max: number, value: number): number {\n if (Number.isNaN(min) || Number.isNaN(max) || Number.isNaN(value)) {\n throw new Error(\n `Clamp was called with NaN. Args: min: ${min}, max: ${max}, value: ${value}.`,\n );\n }\n return Math.min(max, Math.max(min, value));\n}\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 * @flow\n */\n\nimport {clamp} from './clamp';\n\n/**\n * Single-axis offset and length state.\n *\n * ```\n * contentStart containerStart containerEnd contentEnd\n * |<----------offset| | |\n * |<-------------------length------------------->|\n * ```\n */\nexport type ScrollState = {\n offset: number,\n length: number,\n};\n\nfunction clampOffset(state: ScrollState, containerLength: number): ScrollState {\n return {\n offset: clamp(-(state.length - containerLength), 0, state.offset),\n length: state.length,\n };\n}\n\nfunction clampLength({\n state,\n minContentLength,\n maxContentLength,\n containerLength,\n}: {\n state: ScrollState,\n minContentLength: number,\n maxContentLength: number,\n containerLength: number,\n}): ScrollState {\n return {\n offset: state.offset,\n length: clamp(\n Math.max(minContentLength, containerLength),\n Math.max(containerLength, maxContentLength),\n state.length,\n ),\n };\n}\n\n/**\n * Returns `state` clamped such that:\n * - `length`: you won't be able to zoom in/out such that the content is\n * shorter than the `containerLength`.\n * - `offset`: content remains in `containerLength`.\n */\nexport function clampState({\n state,\n minContentLength,\n maxContentLength,\n containerLength,\n}: {\n state: ScrollState,\n minContentLength: number,\n maxContentLength: number,\n containerLength: number,\n}): ScrollState {\n return clampOffset(\n clampLength({\n state,\n minContentLength,\n maxContentLength,\n containerLength,\n }),\n containerLength,\n );\n}\n\nexport function translateState({\n state,\n delta,\n containerLength,\n}: {\n state: ScrollState,\n delta: number,\n containerLength: number,\n}): ScrollState {\n return clampOffset(\n {\n offset: state.offset + delta,\n length: state.length,\n },\n containerLength,\n );\n}\n\n/**\n * Returns a new clamped `state` zoomed by `multiplier`.\n *\n * The provided fixed point will also remain stationary relative to\n * `containerStart`.\n *\n * ```\n * contentStart containerStart fixedPoint containerEnd\n * |<---------offset-| x |\n * |-fixedPoint-------------------------------->x |\n * |-fixedPointFromContainer->x |\n * |<----------containerLength----------->|\n * ```\n */\nexport function zoomState({\n state,\n multiplier,\n fixedPoint,\n\n minContentLength,\n maxContentLength,\n containerLength,\n}: {\n state: ScrollState,\n multiplier: number,\n fixedPoint: number,\n\n minContentLength: number,\n maxContentLength: number,\n containerLength: number,\n}): ScrollState {\n // Length and offset must be computed separately, so that if the length is\n // clamped the offset will still be correct (unless it gets clamped too).\n\n const zoomedState = clampLength({\n state: {\n offset: state.offset,\n length: state.length * multiplier,\n },\n minContentLength,\n maxContentLength,\n containerLength,\n });\n\n // Adjust offset so that distance between containerStart<->fixedPoint is fixed\n const fixedPointFromContainer = fixedPoint + state.offset;\n const scaledFixedPoint = fixedPoint * (zoomedState.length / state.length);\n const offsetAdjustedState = clampOffset(\n {\n offset: fixedPointFromContainer - scaledFixedPoint,\n length: zoomedState.length,\n },\n containerLength,\n );\n\n return offsetAdjustedState;\n}\n\nexport function moveStateToRange({\n state,\n rangeStart,\n rangeEnd,\n contentLength,\n\n minContentLength,\n maxContentLength,\n containerLength,\n}: {\n state: ScrollState,\n rangeStart: number,\n rangeEnd: number,\n contentLength: number,\n\n minContentLength: number,\n maxContentLength: number,\n containerLength: number,\n}): ScrollState {\n // Length and offset must be computed separately, so that if the length is\n // clamped the offset will still be correct (unless it gets clamped too).\n\n const lengthClampedState = clampLength({\n state: {\n offset: state.offset,\n length: contentLength * (containerLength / (rangeEnd - rangeStart)),\n },\n minContentLength,\n maxContentLength,\n containerLength,\n });\n\n const offsetAdjustedState = clampOffset(\n {\n offset: -rangeStart * (lengthClampedState.length / contentLength),\n length: lengthClampedState.length,\n },\n containerLength,\n );\n\n return offsetAdjustedState;\n}\n\nexport function areScrollStatesEqual(\n state1: ScrollState,\n state2: ScrollState,\n): boolean {\n return state1.offset === state2.offset && state1.length === state2.length;\n}\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 * @flow\n */\n\nexport const MOVE_WHEEL_DELTA_THRESHOLD = 1;\nexport const ZOOM_WHEEL_DELTA_THRESHOLD = 1;\nexport const MIN_ZOOM_LEVEL = 0.25;\nexport const MAX_ZOOM_LEVEL = 1000;\nexport const DEFAULT_ZOOM_LEVEL = 0.25;\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 * @flow\n */\n\nimport type {Size, IntrinsicSize, Rect} from './geometry';\nimport type {\n Interaction,\n MouseDownInteraction,\n MouseMoveInteraction,\n MouseUpInteraction,\n WheelPlainInteraction,\n WheelWithShiftInteraction,\n} from './useCanvasInteraction';\nimport type {ScrollState} from './utils/scrollState';\nimport type {ViewRefs} from './Surface';\nimport type {ViewState} from '../types';\n\nimport {Surface} from './Surface';\nimport {View} from './View';\nimport {rectContainsPoint} from './geometry';\nimport {\n clampState,\n moveStateToRange,\n areScrollStatesEqual,\n translateState,\n zoomState,\n} from './utils/scrollState';\nimport {\n MAX_ZOOM_LEVEL,\n MIN_ZOOM_LEVEL,\n MOVE_WHEEL_DELTA_THRESHOLD,\n} from './constants';\n\nexport class HorizontalPanAndZoomView extends View {\n _contentView: View;\n _intrinsicContentWidth: number;\n _isPanning: boolean = false;\n _viewState: ViewState;\n\n constructor(\n surface: Surface,\n frame: Rect,\n contentView: View,\n intrinsicContentWidth: number,\n viewState: ViewState,\n ) {\n super(surface, frame);\n\n this._contentView = contentView;\n this._intrinsicContentWidth = intrinsicContentWidth;\n this._viewState = viewState;\n\n viewState.onHorizontalScrollStateChange(scrollState => {\n this.zoomToRange(scrollState.offset, scrollState.length);\n });\n\n this.addSubview(contentView);\n }\n\n /**\n * Just sets scroll state.\n * Use `_setStateAndInformCallbacksIfChanged` if this view's callbacks should also be called.\n *\n * @returns Whether state was changed\n * @private\n */\n setScrollState(proposedState: ScrollState) {\n const clampedState = clampState({\n state: proposedState,\n minContentLength: this._intrinsicContentWidth * MIN_ZOOM_LEVEL,\n maxContentLength: this._intrinsicContentWidth * MAX_ZOOM_LEVEL,\n containerLength: this.frame.size.width,\n });\n if (\n !areScrollStatesEqual(clampedState, this._viewState.horizontalScrollState)\n ) {\n this.setNeedsDisplay();\n }\n }\n\n /**\n * Zoom to a specific range of the content specified as a range of the\n * content view's intrinsic content size.\n *\n * Does not inform callbacks of state change since this is a public API.\n */\n zoomToRange(rangeStart: number, rangeEnd: number) {\n const newState = moveStateToRange({\n state: this._viewState.horizontalScrollState,\n rangeStart,\n rangeEnd,\n contentLength: this._intrinsicContentWidth,\n\n minContentLength: this._intrinsicContentWidth * MIN_ZOOM_LEVEL,\n maxContentLength: this._intrinsicContentWidth * MAX_ZOOM_LEVEL,\n containerLength: this.frame.size.width,\n });\n this.setScrollState(newState);\n }\n\n desiredSize(): Size | IntrinsicSize {\n return this._contentView.desiredSize();\n }\n\n layoutSubviews() {\n const {offset, length} = this._viewState.horizontalScrollState;\n const proposedFrame = {\n origin: {\n x: this.frame.origin.x + offset,\n y: this.frame.origin.y,\n },\n size: {\n width: length,\n height: this.frame.size.height,\n },\n };\n this._contentView.setFrame(proposedFrame);\n super.layoutSubviews();\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousedown':\n this._handleMouseDown(interaction, viewRefs);\n break;\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n case 'mouseup':\n this._handleMouseUp(interaction, viewRefs);\n break;\n case 'wheel-plain':\n case 'wheel-shift':\n this._handleWheel(interaction);\n break;\n }\n }\n\n _handleMouseDown(interaction: MouseDownInteraction, viewRefs: ViewRefs) {\n if (rectContainsPoint(interaction.payload.location, this.frame)) {\n this._isPanning = true;\n\n viewRefs.activeView = this;\n\n this.currentCursor = 'grabbing';\n }\n }\n\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const isHovered = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n if (isHovered && viewRefs.hoveredView === null) {\n viewRefs.hoveredView = this;\n }\n\n if (viewRefs.activeView === this) {\n this.currentCursor = 'grabbing';\n } else if (isHovered) {\n this.currentCursor = 'grab';\n }\n\n if (!this._isPanning) {\n return;\n }\n\n // Don't prevent mouse-move events from bubbling if they are vertical drags.\n const {movementX, movementY} = interaction.payload.event;\n if (Math.abs(movementX) < Math.abs(movementY)) {\n return;\n }\n\n const newState = translateState({\n state: this._viewState.horizontalScrollState,\n delta: movementX,\n containerLength: this.frame.size.width,\n });\n this._viewState.updateHorizontalScrollState(newState);\n }\n\n _handleMouseUp(interaction: MouseUpInteraction, viewRefs: ViewRefs) {\n if (this._isPanning) {\n this._isPanning = false;\n }\n\n if (viewRefs.activeView === this) {\n viewRefs.activeView = null;\n }\n }\n\n _handleWheel(interaction: WheelPlainInteraction | WheelWithShiftInteraction) {\n const {\n location,\n delta: {deltaX, deltaY},\n } = interaction.payload;\n\n if (!rectContainsPoint(location, this.frame)) {\n return; // Not scrolling on view\n }\n\n const absDeltaX = Math.abs(deltaX);\n const absDeltaY = Math.abs(deltaY);\n\n // Vertical scrolling zooms in and out (unless the SHIFT modifier is used).\n // Horizontal scrolling pans.\n if (absDeltaY > absDeltaX) {\n if (absDeltaY < MOVE_WHEEL_DELTA_THRESHOLD) {\n return;\n }\n\n if (interaction.type === 'wheel-shift') {\n // Shift modifier is for scrolling, not zooming.\n return;\n }\n\n const newState = zoomState({\n state: this._viewState.horizontalScrollState,\n multiplier: 1 + 0.005 * -deltaY,\n fixedPoint: location.x - this._viewState.horizontalScrollState.offset,\n\n minContentLength: this._intrinsicContentWidth * MIN_ZOOM_LEVEL,\n maxContentLength: this._intrinsicContentWidth * MAX_ZOOM_LEVEL,\n containerLength: this.frame.size.width,\n });\n this._viewState.updateHorizontalScrollState(newState);\n } else {\n if (absDeltaX < MOVE_WHEEL_DELTA_THRESHOLD) {\n return;\n }\n\n const newState = translateState({\n state: this._viewState.horizontalScrollState,\n delta: -deltaX,\n containerLength: this.frame.size.width,\n });\n this._viewState.updateHorizontalScrollState(newState);\n }\n }\n}\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 * @flow\n */\n\nimport type {Size, IntrinsicSize, Rect} from './geometry';\nimport type {\n Interaction,\n MouseDownInteraction,\n MouseMoveInteraction,\n MouseUpInteraction,\n WheelWithShiftInteraction,\n} from './useCanvasInteraction';\nimport type {ScrollState} from './utils/scrollState';\nimport type {ViewRefs} from './Surface';\nimport type {ViewState} from '../types';\n\nimport {Surface} from './Surface';\nimport {View} from './View';\nimport {rectContainsPoint} from './geometry';\nimport {\n clampState,\n areScrollStatesEqual,\n translateState,\n} from './utils/scrollState';\nimport {MOVE_WHEEL_DELTA_THRESHOLD} from './constants';\nimport {COLORS} from '../content-views/constants';\n\nconst CARET_MARGIN = 3;\nconst CARET_WIDTH = 5;\nconst CARET_HEIGHT = 3;\n\ntype OnChangeCallback = (\n scrollState: ScrollState,\n containerLength: number,\n) => void;\n\nexport class VerticalScrollView extends View {\n _contentView: View;\n _isPanning: boolean;\n _mutableViewStateKey: string;\n _onChangeCallback: OnChangeCallback | null;\n _scrollState: ScrollState;\n _viewState: ViewState;\n\n constructor(\n surface: Surface,\n frame: Rect,\n contentView: View,\n viewState: ViewState,\n label: string,\n ) {\n super(surface, frame);\n\n this._contentView = contentView;\n this._isPanning = false;\n this._mutableViewStateKey = label + ':VerticalScrollView';\n this._onChangeCallback = null;\n this._scrollState = {\n offset: 0,\n length: 0,\n };\n this._viewState = viewState;\n\n this.addSubview(contentView);\n\n this._restoreMutableViewState();\n }\n\n setFrame(newFrame: Rect) {\n super.setFrame(newFrame);\n\n // Revalidate scrollState\n this._setScrollState(this._scrollState);\n }\n\n desiredSize(): Size | IntrinsicSize {\n return this._contentView.desiredSize();\n }\n\n draw(context: CanvasRenderingContext2D, viewRefs: ViewRefs) {\n super.draw(context, viewRefs);\n\n // Show carets if there's scroll overflow above or below the viewable area.\n if (this.frame.size.height > CARET_HEIGHT * 2 + CARET_MARGIN * 3) {\n const offset = this._scrollState.offset;\n const desiredSize = this._contentView.desiredSize();\n\n const above = offset;\n const below = this.frame.size.height - desiredSize.height - offset;\n\n if (above < 0 || below < 0) {\n const {visibleArea} = this;\n const {x, y} = visibleArea.origin;\n const {width, height} = visibleArea.size;\n const horizontalCenter = x + width / 2;\n\n const halfWidth = CARET_WIDTH;\n const left = horizontalCenter + halfWidth;\n const right = horizontalCenter - halfWidth;\n\n if (above < 0) {\n const topY = y + CARET_MARGIN;\n\n context.beginPath();\n context.moveTo(horizontalCenter, topY);\n context.lineTo(left, topY + CARET_HEIGHT);\n context.lineTo(right, topY + CARET_HEIGHT);\n context.closePath();\n context.fillStyle = COLORS.SCROLL_CARET;\n context.fill();\n }\n\n if (below < 0) {\n const bottomY = y + height - CARET_MARGIN;\n\n context.beginPath();\n context.moveTo(horizontalCenter, bottomY);\n context.lineTo(left, bottomY - CARET_HEIGHT);\n context.lineTo(right, bottomY - CARET_HEIGHT);\n context.closePath();\n context.fillStyle = COLORS.SCROLL_CARET;\n context.fill();\n }\n }\n }\n }\n\n layoutSubviews() {\n const {offset} = this._scrollState;\n const desiredSize = this._contentView.desiredSize();\n\n const minimumHeight = this.frame.size.height;\n const desiredHeight = desiredSize ? desiredSize.height : 0;\n // Force view to take up at least all remaining vertical space.\n const height = Math.max(desiredHeight, minimumHeight);\n\n const proposedFrame = {\n origin: {\n x: this.frame.origin.x,\n y: this.frame.origin.y + offset,\n },\n size: {\n width: this.frame.size.width,\n height,\n },\n };\n this._contentView.setFrame(proposedFrame);\n super.layoutSubviews();\n }\n\n handleInteraction(interaction: Interaction): ?boolean {\n switch (interaction.type) {\n case 'mousedown':\n return this._handleMouseDown(interaction);\n case 'mousemove':\n return this._handleMouseMove(interaction);\n case 'mouseup':\n return this._handleMouseUp(interaction);\n case 'wheel-shift':\n return this._handleWheelShift(interaction);\n }\n }\n\n onChange(callback: OnChangeCallback) {\n this._onChangeCallback = callback;\n }\n\n scrollBy(deltaY: number): boolean {\n const newState = translateState({\n state: this._scrollState,\n delta: -deltaY,\n containerLength: this.frame.size.height,\n });\n\n // If the state is updated by this wheel scroll,\n // return true to prevent the interaction from bubbling.\n // For instance, this prevents the outermost container from also scrolling.\n return this._setScrollState(newState);\n }\n\n _handleMouseDown(interaction: MouseDownInteraction) {\n if (rectContainsPoint(interaction.payload.location, this.frame)) {\n const frameHeight = this.frame.size.height;\n const contentHeight = this._contentView.desiredSize().height;\n // Don't claim drag operations if the content is not tall enough to be scrollable.\n // This would block any outer scroll views from working.\n if (frameHeight < contentHeight) {\n this._isPanning = true;\n }\n }\n }\n\n _handleMouseMove(interaction: MouseMoveInteraction): void | boolean {\n if (!this._isPanning) {\n return;\n }\n\n // Don't prevent mouse-move events from bubbling if they are horizontal drags.\n const {movementX, movementY} = interaction.payload.event;\n if (Math.abs(movementX) > Math.abs(movementY)) {\n return;\n }\n\n const newState = translateState({\n state: this._scrollState,\n delta: interaction.payload.event.movementY,\n containerLength: this.frame.size.height,\n });\n this._setScrollState(newState);\n\n return true;\n }\n\n _handleMouseUp(interaction: MouseUpInteraction) {\n if (this._isPanning) {\n this._isPanning = false;\n }\n }\n\n _handleWheelShift(interaction: WheelWithShiftInteraction): boolean {\n const {\n location,\n delta: {deltaX, deltaY},\n } = interaction.payload;\n\n if (!rectContainsPoint(location, this.frame)) {\n return false; // Not scrolling on view\n }\n\n const absDeltaX = Math.abs(deltaX);\n const absDeltaY = Math.abs(deltaY);\n if (absDeltaX > absDeltaY) {\n return false; // Scrolling horizontally\n }\n\n if (absDeltaY < MOVE_WHEEL_DELTA_THRESHOLD) {\n return false; // Movement was too small and should be ignored.\n }\n\n return this.scrollBy(deltaY);\n }\n\n _restoreMutableViewState() {\n if (\n this._viewState.viewToMutableViewStateMap.has(this._mutableViewStateKey)\n ) {\n this._scrollState = ((this._viewState.viewToMutableViewStateMap.get(\n this._mutableViewStateKey,\n ): any): ScrollState);\n } else {\n this._viewState.viewToMutableViewStateMap.set(\n this._mutableViewStateKey,\n this._scrollState,\n );\n }\n\n this.setNeedsDisplay();\n }\n\n _setScrollState(proposedState: ScrollState): boolean {\n const contentHeight = this._contentView.frame.size.height;\n const containerHeight = this.frame.size.height;\n\n const clampedState = clampState({\n state: proposedState,\n minContentLength: contentHeight,\n maxContentLength: contentHeight,\n containerLength: containerHeight,\n });\n if (!areScrollStatesEqual(clampedState, this._scrollState)) {\n this._scrollState.offset = clampedState.offset;\n this._scrollState.length = clampedState.length;\n\n this.setNeedsDisplay();\n\n if (this._onChangeCallback !== null) {\n this._onChangeCallback(clampedState, this.frame.size.height);\n }\n\n return true;\n }\n\n // Don't allow wheel events to bubble past this view even if we've scrolled to the edge.\n // It just feels bad to have the scrolling jump unexpectedly from in a container to the outer page.\n // The only exception is when the container fits the content (no scrolling).\n if (contentHeight === containerHeight) {\n return false;\n }\n\n return true;\n }\n}\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 * @flow\n */\n\nimport type {Rect} from '../../view-base';\n\nimport {rectEqualToRect} from '../../view-base';\nimport {COLORS, FONT_SIZE, TEXT_PADDING} from '../constants';\n\nconst cachedTextWidths = new Map<string, number>();\n\nexport function getTextWidth(\n context: CanvasRenderingContext2D,\n text: string,\n): number {\n let measuredWidth = cachedTextWidths.get(text);\n if (measuredWidth == null) {\n measuredWidth = context.measureText(text).width;\n cachedTextWidths.set(text, measuredWidth);\n }\n\n return ((measuredWidth: any): number);\n}\n\nexport function trimText(\n context: CanvasRenderingContext2D,\n text: string,\n width: number,\n): string | null {\n const maxIndex = text.length - 1;\n\n let startIndex = 0;\n let stopIndex = maxIndex;\n\n let longestValidIndex = 0;\n let longestValidText = null;\n\n // Trimming long text could be really slow if we decrease only 1 character at a time.\n // Trimming with more of a binary search approach is faster in the worst cases.\n while (startIndex <= stopIndex) {\n const currentIndex = Math.floor((startIndex + stopIndex) / 2);\n const trimmedText =\n currentIndex === maxIndex ? text : text.slice(0, currentIndex) + '…';\n\n if (getTextWidth(context, trimmedText) <= width) {\n if (longestValidIndex < currentIndex) {\n longestValidIndex = currentIndex;\n longestValidText = trimmedText;\n }\n\n startIndex = currentIndex + 1;\n } else {\n stopIndex = currentIndex - 1;\n }\n }\n\n return longestValidText;\n}\n\ntype TextConfig = {\n fillStyle?: string,\n fontSize?: number,\n textAlign?: 'left' | 'center',\n};\n\nexport function drawText(\n text: string,\n context: CanvasRenderingContext2D,\n fullRect: Rect,\n drawableRect: Rect,\n config?: TextConfig,\n): void {\n const {\n fillStyle = COLORS.TEXT_COLOR,\n fontSize = FONT_SIZE,\n textAlign = 'left',\n } = config || {};\n\n if (fullRect.size.width > TEXT_PADDING * 2) {\n context.textAlign = textAlign;\n context.textBaseline = 'middle';\n context.font = `${fontSize}px sans-serif`;\n\n const {x, y} = fullRect.origin;\n\n const trimmedName = trimText(\n context,\n text,\n fullRect.size.width - TEXT_PADDING * 2 + (x < 0 ? x : 0),\n );\n\n if (trimmedName !== null) {\n context.fillStyle = fillStyle;\n\n // Prevent text from visibly overflowing its container when clipped.\n const textOverflowsViewableArea = !rectEqualToRect(\n drawableRect,\n fullRect,\n );\n if (textOverflowsViewableArea) {\n context.save();\n context.beginPath();\n context.rect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n context.closePath();\n context.clip();\n }\n\n let textX;\n if (textAlign === 'center') {\n textX = x + fullRect.size.width / 2 + TEXT_PADDING - (x < 0 ? x : 0);\n } else {\n textX = x + TEXT_PADDING - (x < 0 ? x : 0);\n }\n\n const textY = y + fullRect.size.height / 2;\n\n context.fillText(trimmedName, textX, textY);\n\n if (textOverflowsViewableArea) {\n context.restore();\n }\n }\n }\n}\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 * @flow\n */\n\nimport type {\n Interaction,\n MouseDownInteraction,\n MouseMoveInteraction,\n MouseUpInteraction,\n} from '../useCanvasInteraction';\nimport type {Rect, Size} from '../geometry';\nimport type {ViewRefs} from '../Surface';\n\nimport {BORDER_SIZE, COLORS} from '../../content-views/constants';\nimport {drawText} from '../../content-views/utils/text';\nimport {Surface} from '../Surface';\nimport {View} from '../View';\nimport {rectContainsPoint} from '../geometry';\nimport {noopLayout} from '../layouter';\n\ntype ResizeBarState = 'normal' | 'hovered' | 'dragging';\n\nconst RESIZE_BAR_DOT_RADIUS = 1;\nconst RESIZE_BAR_DOT_SPACING = 4;\nconst RESIZE_BAR_HEIGHT = 8;\nconst RESIZE_BAR_WITH_LABEL_HEIGHT = 16;\n\nexport class ResizeBarView extends View {\n _interactionState: ResizeBarState = 'normal';\n _label: string;\n\n showLabel: boolean = false;\n\n constructor(surface: Surface, frame: Rect, label: string) {\n super(surface, frame, noopLayout);\n\n this._label = label;\n }\n\n desiredSize(): Size {\n return this.showLabel\n ? {height: RESIZE_BAR_WITH_LABEL_HEIGHT, width: 0}\n : {height: RESIZE_BAR_HEIGHT, width: 0};\n }\n\n draw(context: CanvasRenderingContext2D, viewRefs: ViewRefs) {\n const {frame} = this;\n const {x, y} = frame.origin;\n const {width, height} = frame.size;\n\n const isActive =\n this._interactionState === 'dragging' ||\n (this._interactionState === 'hovered' && viewRefs.activeView === null);\n\n context.fillStyle = isActive\n ? COLORS.REACT_RESIZE_BAR_ACTIVE\n : COLORS.REACT_RESIZE_BAR;\n context.fillRect(x, y, width, height);\n\n context.fillStyle = COLORS.REACT_RESIZE_BAR_BORDER;\n context.fillRect(x, y, width, BORDER_SIZE);\n context.fillRect(x, y + height - BORDER_SIZE, width, BORDER_SIZE);\n\n const horizontalCenter = x + width / 2;\n const verticalCenter = y + height / 2;\n\n if (this.showLabel) {\n // When the resize view is collapsed entirely,\n // rather than showing a resize bar this view displays a label.\n const labelRect: Rect = {\n origin: {\n x: 0,\n y: y + height - RESIZE_BAR_WITH_LABEL_HEIGHT,\n },\n size: {\n width: frame.size.width,\n height: RESIZE_BAR_WITH_LABEL_HEIGHT,\n },\n };\n\n drawText(this._label, context, labelRect, frame, {\n fillStyle: COLORS.REACT_RESIZE_BAR_DOT,\n textAlign: 'center',\n });\n } else {\n // Otherwise draw horizontally centered resize bar dots\n context.beginPath();\n context.fillStyle = COLORS.REACT_RESIZE_BAR_DOT;\n context.arc(\n horizontalCenter,\n verticalCenter,\n RESIZE_BAR_DOT_RADIUS,\n 0,\n 2 * Math.PI,\n );\n context.arc(\n horizontalCenter + RESIZE_BAR_DOT_SPACING,\n verticalCenter,\n RESIZE_BAR_DOT_RADIUS,\n 0,\n 2 * Math.PI,\n );\n context.arc(\n horizontalCenter - RESIZE_BAR_DOT_SPACING,\n verticalCenter,\n RESIZE_BAR_DOT_RADIUS,\n 0,\n 2 * Math.PI,\n );\n context.fill();\n }\n }\n\n _setInteractionState(state: ResizeBarState) {\n if (this._interactionState === state) {\n return;\n }\n this._interactionState = state;\n this.setNeedsDisplay();\n }\n\n _handleMouseDown(interaction: MouseDownInteraction, viewRefs: ViewRefs) {\n const cursorInView = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n if (cursorInView) {\n this._setInteractionState('dragging');\n viewRefs.activeView = this;\n }\n }\n\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const cursorInView = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n\n if (viewRefs.activeView === this) {\n // If we're actively dragging this resize bar,\n // show the cursor even if the pointer isn't hovering over this view.\n this.currentCursor = 'ns-resize';\n } else if (cursorInView) {\n if (this.showLabel) {\n this.currentCursor = 'pointer';\n } else {\n this.currentCursor = 'ns-resize';\n }\n }\n\n if (cursorInView) {\n viewRefs.hoveredView = this;\n }\n\n if (this._interactionState === 'dragging') {\n return;\n }\n this._setInteractionState(cursorInView ? 'hovered' : 'normal');\n }\n\n _handleMouseUp(interaction: MouseUpInteraction, viewRefs: ViewRefs) {\n const cursorInView = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n if (this._interactionState === 'dragging') {\n this._setInteractionState(cursorInView ? 'hovered' : 'normal');\n }\n\n if (viewRefs.activeView === this) {\n viewRefs.activeView = null;\n }\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousedown':\n this._handleMouseDown(interaction, viewRefs);\n break;\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n case 'mouseup':\n this._handleMouseUp(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {\n ClickInteraction,\n DoubleClickInteraction,\n Interaction,\n MouseDownInteraction,\n MouseMoveInteraction,\n MouseUpInteraction,\n} from '../useCanvasInteraction';\nimport type {Rect} from '../geometry';\nimport type {ViewRefs} from '../Surface';\nimport type {ViewState} from '../../types';\n\nimport {ResizeBarView} from './ResizeBarView';\nimport {Surface} from '../Surface';\nimport {View} from '../View';\nimport {rectContainsPoint} from '../geometry';\nimport {noopLayout} from '../layouter';\nimport {clamp} from '../utils/clamp';\n\ntype ResizingState = $ReadOnly<{\n /** Distance between top of resize bar and mouseY */\n cursorOffsetInBarFrame: number,\n /** Mouse's vertical coordinates relative to canvas */\n mouseY: number,\n}>;\n\ntype LayoutState = {\n /** Resize bar's vertical position relative to resize view's frame.origin.y */\n barOffsetY: number,\n};\n\nconst RESIZE_BAR_HEIGHT = 8;\nconst RESIZE_BAR_WITH_LABEL_HEIGHT = 16;\n\nconst HIDDEN_RECT = {\n origin: {x: 0, y: 0},\n size: {width: 0, height: 0},\n};\n\nexport class ResizableView extends View {\n _canvasRef: {current: HTMLCanvasElement | null};\n _layoutState: LayoutState;\n _mutableViewStateKey: string;\n _resizeBar: ResizeBarView;\n _resizingState: ResizingState | null = null;\n _subview: View;\n _viewState: ViewState;\n\n constructor(\n surface: Surface,\n frame: Rect,\n subview: View,\n viewState: ViewState,\n canvasRef: {current: HTMLCanvasElement | null},\n label: string,\n ) {\n super(surface, frame, noopLayout);\n\n this._canvasRef = canvasRef;\n this._layoutState = {barOffsetY: 0};\n this._mutableViewStateKey = label + ':ResizableView';\n this._subview = subview;\n this._resizeBar = new ResizeBarView(surface, frame, label);\n this._viewState = viewState;\n\n this.addSubview(this._subview);\n this.addSubview(this._resizeBar);\n\n this._restoreMutableViewState();\n }\n\n desiredSize(): {+height: number, +width: number} {\n const subviewDesiredSize = this._subview.desiredSize();\n\n if (this._shouldRenderResizeBar()) {\n const resizeBarDesiredSize = this._resizeBar.desiredSize();\n\n return {\n width: this.frame.size.width,\n height: this._layoutState.barOffsetY + resizeBarDesiredSize.height,\n };\n } else {\n return {\n width: this.frame.size.width,\n height: subviewDesiredSize.height,\n };\n }\n }\n\n layoutSubviews() {\n this._updateLayoutState();\n this._updateSubviewFrames();\n\n super.layoutSubviews();\n }\n\n _restoreMutableViewState() {\n if (\n this._viewState.viewToMutableViewStateMap.has(this._mutableViewStateKey)\n ) {\n this._layoutState = ((this._viewState.viewToMutableViewStateMap.get(\n this._mutableViewStateKey,\n ): any): LayoutState);\n\n this._updateLayoutStateAndResizeBar(this._layoutState.barOffsetY);\n } else {\n this._viewState.viewToMutableViewStateMap.set(\n this._mutableViewStateKey,\n this._layoutState,\n );\n\n const subviewDesiredSize = this._subview.desiredSize();\n this._updateLayoutStateAndResizeBar(\n subviewDesiredSize.maxInitialHeight != null\n ? Math.min(\n subviewDesiredSize.maxInitialHeight,\n subviewDesiredSize.height,\n )\n : subviewDesiredSize.height,\n );\n }\n\n this.setNeedsDisplay();\n }\n\n _shouldRenderResizeBar(): boolean {\n const subviewDesiredSize = this._subview.desiredSize();\n return subviewDesiredSize.hideScrollBarIfLessThanHeight != null\n ? subviewDesiredSize.height >\n subviewDesiredSize.hideScrollBarIfLessThanHeight\n : true;\n }\n\n _updateLayoutStateAndResizeBar(barOffsetY: number) {\n if (barOffsetY <= RESIZE_BAR_WITH_LABEL_HEIGHT - RESIZE_BAR_HEIGHT) {\n barOffsetY = 0;\n }\n\n this._layoutState.barOffsetY = barOffsetY;\n\n this._resizeBar.showLabel = barOffsetY === 0;\n }\n\n _updateLayoutState() {\n const {frame, _resizingState} = this;\n\n // Allow bar to travel to bottom of the visible area of this view but no further\n const subviewDesiredSize = this._subview.desiredSize();\n const maxBarOffset = subviewDesiredSize.height;\n\n let proposedBarOffsetY = this._layoutState.barOffsetY;\n // Update bar offset if dragging bar\n if (_resizingState) {\n const {mouseY, cursorOffsetInBarFrame} = _resizingState;\n proposedBarOffsetY = mouseY - frame.origin.y - cursorOffsetInBarFrame;\n }\n\n this._updateLayoutStateAndResizeBar(\n clamp(0, maxBarOffset, proposedBarOffsetY),\n );\n }\n\n _updateSubviewFrames() {\n const {\n frame: {\n origin: {x, y},\n size: {width},\n },\n _layoutState: {barOffsetY},\n } = this;\n\n const resizeBarDesiredSize = this._resizeBar.desiredSize();\n\n if (barOffsetY === 0) {\n this._subview.setFrame(HIDDEN_RECT);\n } else {\n this._subview.setFrame({\n origin: {x, y},\n size: {width, height: barOffsetY},\n });\n }\n\n this._resizeBar.setFrame({\n origin: {x, y: y + barOffsetY},\n size: {width, height: resizeBarDesiredSize.height},\n });\n }\n\n _handleClick(interaction: ClickInteraction): void | boolean {\n if (!this._shouldRenderResizeBar()) {\n return;\n }\n\n const cursorInView = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n if (cursorInView) {\n if (this._layoutState.barOffsetY === 0) {\n // Clicking on the collapsed label should expand.\n const subviewDesiredSize = this._subview.desiredSize();\n this._updateLayoutStateAndResizeBar(subviewDesiredSize.height);\n this.setNeedsDisplay();\n\n return true;\n }\n }\n }\n\n _handleDoubleClick(interaction: DoubleClickInteraction): void | boolean {\n if (!this._shouldRenderResizeBar()) {\n return;\n }\n\n const cursorInView = rectContainsPoint(\n interaction.payload.location,\n this.frame,\n );\n if (cursorInView) {\n if (this._layoutState.barOffsetY > 0) {\n // Double clicking on the expanded view should collapse.\n this._updateLayoutStateAndResizeBar(0);\n this.setNeedsDisplay();\n\n return true;\n }\n }\n }\n\n _handleMouseDown(interaction: MouseDownInteraction): void | boolean {\n const cursorLocation = interaction.payload.location;\n const resizeBarFrame = this._resizeBar.frame;\n if (rectContainsPoint(cursorLocation, resizeBarFrame)) {\n const mouseY = cursorLocation.y;\n this._resizingState = {\n cursorOffsetInBarFrame: mouseY - resizeBarFrame.origin.y,\n mouseY,\n };\n\n return true;\n }\n }\n\n _handleMouseMove(interaction: MouseMoveInteraction): void | boolean {\n const {_resizingState} = this;\n if (_resizingState) {\n this._resizingState = {\n ..._resizingState,\n mouseY: interaction.payload.location.y,\n };\n this.setNeedsDisplay();\n\n return true;\n }\n }\n\n _handleMouseUp(interaction: MouseUpInteraction) {\n if (this._resizingState) {\n this._resizingState = null;\n }\n }\n\n getCursorActiveSubView(interaction: Interaction): View | null {\n const cursorLocation = interaction.payload.location;\n const resizeBarFrame = this._resizeBar.frame;\n if (rectContainsPoint(cursorLocation, resizeBarFrame)) {\n return this;\n } else {\n return null;\n }\n }\n\n handleInteraction(\n interaction: Interaction,\n viewRefs: ViewRefs,\n ): void | boolean {\n switch (interaction.type) {\n case 'click':\n return this._handleClick(interaction);\n case 'double-click':\n return this._handleDoubleClick(interaction);\n case 'mousedown':\n return this._handleMouseDown(interaction);\n case 'mousemove':\n return this._handleMouseMove(interaction);\n case 'mouseup':\n return this._handleMouseUp(interaction);\n }\n }\n}\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 * @flow\n */\n\n// Adapted from: https://github.com/facebookarchive/fixed-data-table/blob/master/src/vendor_upstream/dom/normalizeWheel.js\n\nexport type NormalizedWheelDelta = {\n deltaX: number,\n deltaY: number,\n};\n\n// Reasonable defaults\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * - deltaX -- normalized distance (to pixels) - x plane\n * - deltaY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - delta* is normalizing the desired scroll delta in pixel units.\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the 'wheel' event.\n *\n * Implementation info:\n *\n * The basics of the standard 'wheel' event is that it includes a unit,\n * deltaMode (pixels, lines, pages), and deltaX, deltaY and deltaZ.\n * See: http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n */\nexport function normalizeWheel(event: WheelEvent): NormalizedWheelDelta {\n let deltaX = event.deltaX;\n let deltaY = event.deltaY;\n\n if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // delta in LINE units\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n // delta in PAGE units\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n\n return {deltaX, deltaY};\n}\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 * @flow\n */\n\nimport type {NormalizedWheelDelta} from './utils/normalizeWheel';\nimport type {Point} from './geometry';\n\nimport {useEffect, useRef} from 'react';\nimport {normalizeWheel} from './utils/normalizeWheel';\n\nexport type ClickInteraction = {\n type: 'click',\n payload: {\n event: MouseEvent,\n location: Point,\n },\n};\nexport type DoubleClickInteraction = {\n type: 'double-click',\n payload: {\n event: MouseEvent,\n location: Point,\n },\n};\nexport type MouseDownInteraction = {\n type: 'mousedown',\n payload: {\n event: MouseEvent,\n location: Point,\n },\n};\nexport type MouseMoveInteraction = {\n type: 'mousemove',\n payload: {\n event: MouseEvent,\n location: Point,\n },\n};\nexport type MouseUpInteraction = {\n type: 'mouseup',\n payload: {\n event: MouseEvent,\n location: Point,\n },\n};\nexport type WheelPlainInteraction = {\n type: 'wheel-plain',\n payload: {\n event: WheelEvent,\n location: Point,\n delta: NormalizedWheelDelta,\n },\n};\nexport type WheelWithShiftInteraction = {\n type: 'wheel-shift',\n payload: {\n event: WheelEvent,\n location: Point,\n delta: NormalizedWheelDelta,\n },\n};\nexport type WheelWithControlInteraction = {\n type: 'wheel-control',\n payload: {\n event: WheelEvent,\n location: Point,\n delta: NormalizedWheelDelta,\n },\n};\nexport type WheelWithMetaInteraction = {\n type: 'wheel-meta',\n payload: {\n event: WheelEvent,\n location: Point,\n delta: NormalizedWheelDelta,\n },\n};\n\nexport type Interaction =\n | ClickInteraction\n | DoubleClickInteraction\n | MouseDownInteraction\n | MouseMoveInteraction\n | MouseUpInteraction\n | WheelPlainInteraction\n | WheelWithShiftInteraction\n | WheelWithControlInteraction\n | WheelWithMetaInteraction;\n\nlet canvasBoundingRectCache = null;\nfunction cacheFirstGetCanvasBoundingRect(\n canvas: HTMLCanvasElement,\n): ClientRect {\n if (\n canvasBoundingRectCache &&\n canvas.width === canvasBoundingRectCache.width &&\n canvas.height === canvasBoundingRectCache.height\n ) {\n return canvasBoundingRectCache.rect;\n }\n canvasBoundingRectCache = {\n width: canvas.width,\n height: canvas.height,\n rect: canvas.getBoundingClientRect(),\n };\n return canvasBoundingRectCache.rect;\n}\n\nexport function useCanvasInteraction(\n canvasRef: {current: HTMLCanvasElement | null},\n interactor: (interaction: Interaction) => void,\n) {\n const isMouseDownRef = useRef<boolean>(false);\n const didMouseMoveWhileDownRef = useRef<boolean>(false);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) {\n return;\n }\n\n function localToCanvasCoordinates(localCoordinates: Point): Point {\n // $FlowFixMe[incompatible-call] found when upgrading Flow\n const canvasRect = cacheFirstGetCanvasBoundingRect(canvas);\n return {\n x: localCoordinates.x - canvasRect.left,\n y: localCoordinates.y - canvasRect.top,\n };\n }\n\n const onCanvasClick: MouseEventHandler = event => {\n if (didMouseMoveWhileDownRef.current) {\n return;\n }\n\n interactor({\n type: 'click',\n payload: {\n event,\n location: localToCanvasCoordinates({x: event.x, y: event.y}),\n },\n });\n };\n\n const onCanvasDoubleClick: MouseEventHandler = event => {\n if (didMouseMoveWhileDownRef.current) {\n return;\n }\n\n interactor({\n type: 'double-click',\n payload: {\n event,\n location: localToCanvasCoordinates({x: event.x, y: event.y}),\n },\n });\n };\n\n const onCanvasMouseDown: MouseEventHandler = event => {\n didMouseMoveWhileDownRef.current = false;\n isMouseDownRef.current = true;\n\n interactor({\n type: 'mousedown',\n payload: {\n event,\n location: localToCanvasCoordinates({x: event.x, y: event.y}),\n },\n });\n };\n\n const onDocumentMouseMove: MouseEventHandler = event => {\n if (isMouseDownRef.current) {\n didMouseMoveWhileDownRef.current = true;\n }\n\n interactor({\n type: 'mousemove',\n payload: {\n event,\n location: localToCanvasCoordinates({x: event.x, y: event.y}),\n },\n });\n };\n\n const onDocumentMouseUp: MouseEventHandler = event => {\n isMouseDownRef.current = false;\n\n interactor({\n type: 'mouseup',\n payload: {\n event,\n location: localToCanvasCoordinates({x: event.x, y: event.y}),\n },\n });\n };\n\n const onCanvasWheel: WheelEventHandler = event => {\n event.preventDefault();\n event.stopPropagation();\n\n const location = localToCanvasCoordinates({x: event.x, y: event.y});\n const delta = normalizeWheel(event);\n\n if (event.shiftKey) {\n interactor({\n type: 'wheel-shift',\n payload: {event, location, delta},\n });\n } else if (event.ctrlKey) {\n interactor({\n type: 'wheel-control',\n payload: {event, location, delta},\n });\n } else if (event.metaKey) {\n interactor({\n type: 'wheel-meta',\n payload: {event, location, delta},\n });\n } else {\n interactor({\n type: 'wheel-plain',\n payload: {event, location, delta},\n });\n }\n\n return false;\n };\n\n const ownerDocument = canvas.ownerDocument;\n ownerDocument.addEventListener('mousemove', onDocumentMouseMove);\n ownerDocument.addEventListener('mouseup', onDocumentMouseUp);\n\n canvas.addEventListener('click', onCanvasClick);\n canvas.addEventListener('dblclick', onCanvasDoubleClick);\n canvas.addEventListener('mousedown', onCanvasMouseDown);\n canvas.addEventListener('wheel', onCanvasWheel);\n\n return () => {\n ownerDocument.removeEventListener('mousemove', onDocumentMouseMove);\n ownerDocument.removeEventListener('mouseup', onDocumentMouseUp);\n\n canvas.removeEventListener('click', onCanvasClick);\n canvas.removeEventListener('dblclick', onCanvasDoubleClick);\n canvas.removeEventListener('mousedown', onCanvasMouseDown);\n canvas.removeEventListener('wheel', onCanvasWheel);\n };\n }, [canvasRef, interactor]);\n}\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 * @flow\n */\n\nimport type {Layouter} from '../layouter';\n\n/**\n * Assumes {@param layout} will only contain 2 views.\n */\nexport const withVerticalScrollbarLayout: Layouter = (\n layout,\n containerFrame,\n) => {\n const [contentLayoutInfo, scrollbarLayoutInfo] = layout;\n\n const desiredContentSize = contentLayoutInfo.view.desiredSize();\n const shouldShowScrollbar =\n desiredContentSize.height > containerFrame.size.height;\n const scrollbarWidth = shouldShowScrollbar\n ? scrollbarLayoutInfo.view.desiredSize().width\n : 0;\n\n const laidOutContentLayoutInfo = {\n ...contentLayoutInfo,\n frame: {\n origin: contentLayoutInfo.view.frame.origin,\n size: {\n width: containerFrame.size.width - scrollbarWidth,\n height: containerFrame.size.height,\n },\n },\n };\n const laidOutScrollbarLayoutInfo = {\n ...scrollbarLayoutInfo,\n frame: {\n origin: {\n x:\n laidOutContentLayoutInfo.frame.origin.x +\n laidOutContentLayoutInfo.frame.size.width,\n y: containerFrame.origin.y,\n },\n size: {\n width: scrollbarWidth,\n height: containerFrame.size.height,\n },\n },\n };\n\n return [laidOutContentLayoutInfo, laidOutScrollbarLayoutInfo];\n};\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 * @flow\n */\n\nimport type {Rect} from '../geometry';\nimport type {ScrollState} from '../utils/scrollState';\nimport type {Surface} from '../Surface';\nimport type {ViewState} from '../../types';\n\nimport {VerticalScrollBarView} from './VerticalScrollBarView';\nimport {withVerticalScrollbarLayout} from './withVerticalScrollbarLayout';\nimport {View} from '../View';\nimport {VerticalScrollView} from '../VerticalScrollView';\n\nexport class VerticalScrollOverflowView extends View {\n _contentView: View;\n _isProcessingOnChange: boolean = false;\n _isScrolling: boolean = false;\n _scrollOffset: number = 0;\n _scrollBarView: VerticalScrollBarView;\n _verticalScrollView: VerticalScrollView;\n\n constructor(\n surface: Surface,\n frame: Rect,\n contentView: View,\n viewState: ViewState,\n ) {\n super(surface, frame, withVerticalScrollbarLayout);\n\n this._contentView = contentView;\n this._verticalScrollView = new VerticalScrollView(\n surface,\n frame,\n contentView,\n viewState,\n 'VerticalScrollOverflowView',\n );\n this._verticalScrollView.onChange(this._onVerticalScrollViewChange);\n\n this._scrollBarView = new VerticalScrollBarView(surface, frame, this);\n\n this.addSubview(this._verticalScrollView);\n this.addSubview(this._scrollBarView);\n }\n\n layoutSubviews() {\n super.layoutSubviews();\n\n const contentSize = this._contentView.desiredSize();\n\n // This should be done after calling super.layoutSubviews() calling it\n // before somehow causes _contentView to need display on every mousemove\n // event when the scroll bar is shown.\n this._scrollBarView.setContentHeight(contentSize.height);\n }\n\n setScrollOffset(newScrollOffset: number, maxScrollOffset: number) {\n const deltaY = newScrollOffset - this._scrollOffset;\n\n if (!this._isProcessingOnChange) {\n this._verticalScrollView.scrollBy(-deltaY);\n }\n\n this._scrollOffset = newScrollOffset;\n\n this.setNeedsDisplay();\n }\n\n _onVerticalScrollViewChange: (\n scrollState: ScrollState,\n containerLength: number,\n ) => void = (scrollState: ScrollState, containerLength: number) => {\n const maxOffset = scrollState.length - containerLength;\n if (maxOffset === 0) {\n return;\n }\n\n const percentage = Math.abs(scrollState.offset) / maxOffset;\n const maxScrollThumbY = this._scrollBarView.getMaxScrollThumbY();\n\n this._isProcessingOnChange = true;\n this._scrollBarView.setScrollThumbY(percentage * maxScrollThumbY);\n this._isProcessingOnChange = false;\n };\n}\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 * @flow\n */\n\nimport type {Rect} from '../geometry';\nimport type {Surface, ViewRefs} from '../Surface';\nimport type {\n Interaction,\n ClickInteraction,\n MouseDownInteraction,\n MouseMoveInteraction,\n MouseUpInteraction,\n} from '../useCanvasInteraction';\n\nimport {VerticalScrollOverflowView} from './VerticalScrollOverflowView';\nimport {rectContainsPoint, rectEqualToRect} from '../geometry';\nimport {View} from '../View';\nimport {BORDER_SIZE, COLORS} from '../../content-views/constants';\n\nconst SCROLL_BAR_SIZE = 14;\n\nconst HIDDEN_RECT = {\n origin: {\n x: 0,\n y: 0,\n },\n size: {\n width: 0,\n height: 0,\n },\n};\n\nexport class VerticalScrollBarView extends View {\n _contentHeight: number = 0;\n _isScrolling: boolean = false;\n _scrollBarRect: Rect = HIDDEN_RECT;\n _scrollThumbRect: Rect = HIDDEN_RECT;\n _verticalScrollOverflowView: VerticalScrollOverflowView;\n\n constructor(\n surface: Surface,\n frame: Rect,\n verticalScrollOverflowView: VerticalScrollOverflowView,\n ) {\n super(surface, frame);\n\n this._verticalScrollOverflowView = verticalScrollOverflowView;\n }\n\n desiredSize(): {+height: number, +width: number} {\n return {\n width: SCROLL_BAR_SIZE,\n height: 0, // No desired height\n };\n }\n\n getMaxScrollThumbY(): number {\n const {height} = this.frame.size;\n\n const maxScrollThumbY = height - this._scrollThumbRect.size.height;\n\n return maxScrollThumbY;\n }\n\n setContentHeight(contentHeight: number) {\n this._contentHeight = contentHeight;\n\n const {height, width} = this.frame.size;\n\n const proposedScrollThumbRect = {\n origin: {\n x: this.frame.origin.x,\n y: this._scrollThumbRect.origin.y,\n },\n size: {\n width,\n height: height * (height / contentHeight),\n },\n };\n\n if (!rectEqualToRect(this._scrollThumbRect, proposedScrollThumbRect)) {\n this._scrollThumbRect = proposedScrollThumbRect;\n this.setNeedsDisplay();\n }\n }\n\n setScrollThumbY(value: number) {\n const {height} = this.frame.size;\n\n const maxScrollThumbY = this.getMaxScrollThumbY();\n const newScrollThumbY = Math.max(0, Math.min(maxScrollThumbY, value));\n\n this._scrollThumbRect = {\n ...this._scrollThumbRect,\n origin: {\n x: this.frame.origin.x,\n y: newScrollThumbY,\n },\n };\n\n const maxContentOffset = this._contentHeight - height;\n const contentScrollOffset =\n (newScrollThumbY / maxScrollThumbY) * maxContentOffset * -1;\n\n this._verticalScrollOverflowView.setScrollOffset(\n contentScrollOffset,\n maxScrollThumbY,\n );\n }\n\n draw(context: CanvasRenderingContext2D, viewRefs: ViewRefs) {\n const {x, y} = this.frame.origin;\n const {width, height} = this.frame.size;\n\n // TODO Use real color\n context.fillStyle = COLORS.REACT_RESIZE_BAR;\n context.fillRect(x, y, width, height);\n\n // TODO Use real color\n context.fillStyle = COLORS.SCROLL_CARET;\n context.fillRect(\n this._scrollThumbRect.origin.x,\n this._scrollThumbRect.origin.y,\n this._scrollThumbRect.size.width,\n this._scrollThumbRect.size.height,\n );\n\n // TODO Use real color\n context.fillStyle = COLORS.REACT_RESIZE_BAR_BORDER;\n context.fillRect(x, y, BORDER_SIZE, height);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'click':\n this._handleClick(interaction, viewRefs);\n break;\n case 'mousedown':\n this._handleMouseDown(interaction, viewRefs);\n break;\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n case 'mouseup':\n this._handleMouseUp(interaction, viewRefs);\n break;\n }\n }\n\n _handleClick(interaction: ClickInteraction, viewRefs: ViewRefs) {\n const {location} = interaction.payload;\n if (rectContainsPoint(location, this.frame)) {\n if (rectContainsPoint(location, this._scrollThumbRect)) {\n // Ignore clicks on the track thumb directly.\n return;\n }\n\n const currentScrollThumbY = this._scrollThumbRect.origin.y;\n const y = location.y;\n\n const {height} = this.frame.size;\n\n // Scroll up or down about one viewport worth of content:\n const deltaY = (height / this._contentHeight) * height * 0.8;\n\n this.setScrollThumbY(\n y > currentScrollThumbY\n ? this._scrollThumbRect.origin.y + deltaY\n : this._scrollThumbRect.origin.y - deltaY,\n );\n }\n }\n\n _handleMouseDown(interaction: MouseDownInteraction, viewRefs: ViewRefs) {\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, this._scrollThumbRect)) {\n return;\n }\n viewRefs.activeView = this;\n\n this.currentCursor = 'default';\n\n this._isScrolling = true;\n this.setNeedsDisplay();\n }\n\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {event, location} = interaction.payload;\n if (rectContainsPoint(location, this.frame)) {\n if (viewRefs.hoveredView !== this) {\n viewRefs.hoveredView = this;\n }\n\n this.currentCursor = 'default';\n }\n\n if (viewRefs.activeView === this) {\n this.currentCursor = 'default';\n\n this.setScrollThumbY(this._scrollThumbRect.origin.y + event.movementY);\n }\n }\n\n _handleMouseUp(interaction: MouseUpInteraction, viewRefs: ViewRefs) {\n if (viewRefs.activeView === this) {\n viewRefs.activeView = null;\n }\n\n if (this._isScrolling) {\n this._isScrolling = false;\n this.setNeedsDisplay();\n }\n }\n}\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 * @flow\n */\n\nimport type {Rect} from '../../view-base';\n\nexport function positioningScaleFactor(\n intrinsicWidth: number,\n frame: Rect,\n): number {\n return frame.size.width / intrinsicWidth;\n}\n\nexport function timestampToPosition(\n timestamp: number,\n scaleFactor: number,\n frame: Rect,\n): number {\n return frame.origin.x + timestamp * scaleFactor;\n}\n\nexport function positionToTimestamp(\n position: number,\n scaleFactor: number,\n frame: Rect,\n): number {\n return (position - frame.origin.x) / scaleFactor;\n}\n\nexport function durationToWidth(duration: number, scaleFactor: number): number {\n return duration * scaleFactor;\n}\n\nexport function widthToDuration(width: number, scaleFactor: number): number {\n return width / scaleFactor;\n}\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 * @flow\n */\n\nimport type {SchedulingEvent} from '../types';\n\nimport prettyMilliseconds from 'pretty-ms';\n\nexport function formatTimestamp(ms: number): string {\n return (\n ms.toLocaleString(undefined, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }) + 'ms'\n );\n}\n\nexport function formatDuration(ms: number): string {\n return prettyMilliseconds(ms, {millisecondsDecimalDigits: 1});\n}\n\nexport function trimString(string: string, length: number): string {\n if (string.length > length) {\n return `${string.slice(0, length - 1)}…`;\n }\n return string;\n}\n\nexport function getSchedulingEventLabel(event: SchedulingEvent): string | null {\n switch (event.type) {\n case 'schedule-render':\n return 'render scheduled';\n case 'schedule-state-update':\n return 'state update scheduled';\n case 'schedule-force-update':\n return 'force update scheduled';\n default:\n return null;\n }\n}\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 * @flow\n */\n\nimport type {ReactComponentMeasure, TimelineData, ViewState} from '../types';\nimport type {\n Interaction,\n IntrinsicSize,\n MouseMoveInteraction,\n Rect,\n ViewRefs,\n} from '../view-base';\n\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n} from './utils/positioning';\nimport {drawText} from './utils/text';\nimport {formatDuration} from '../utils/formatting';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {BORDER_SIZE, COLORS, NATIVE_EVENT_HEIGHT} from './constants';\n\nconst ROW_WITH_BORDER_HEIGHT = NATIVE_EVENT_HEIGHT + BORDER_SIZE;\n\nexport class ComponentMeasuresView extends View {\n _cachedSearchMatches: Map<string, boolean>;\n _cachedSearchRegExp: RegExp | null = null;\n _hoveredComponentMeasure: ReactComponentMeasure | null = null;\n _intrinsicSize: IntrinsicSize;\n _profilerData: TimelineData;\n _viewState: ViewState;\n\n onHover: ((event: ReactComponentMeasure | null) => void) | null = null;\n\n constructor(\n surface: Surface,\n frame: Rect,\n profilerData: TimelineData,\n viewState: ViewState,\n ) {\n super(surface, frame);\n\n this._profilerData = profilerData;\n this._viewState = viewState;\n\n this._cachedSearchMatches = new Map();\n this._cachedSearchRegExp = null;\n\n viewState.onSearchRegExpStateChange(() => {\n this.setNeedsDisplay();\n });\n\n this._intrinsicSize = {\n width: profilerData.duration,\n height: ROW_WITH_BORDER_HEIGHT,\n };\n }\n\n desiredSize(): IntrinsicSize {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(hoveredEvent: ReactComponentMeasure | null) {\n if (this._hoveredComponentMeasure === hoveredEvent) {\n return;\n }\n this._hoveredComponentMeasure = hoveredEvent;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `ReactComponentMeasure` as a box/span with text inside of it.\n */\n _drawSingleReactComponentMeasure(\n context: CanvasRenderingContext2D,\n rect: Rect,\n componentMeasure: ReactComponentMeasure,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ): boolean {\n const {frame} = this;\n const {componentName, duration, timestamp, type, warning} =\n componentMeasure;\n\n const xStart = timestampToPosition(timestamp, scaleFactor, frame);\n const xStop = timestampToPosition(timestamp + duration, scaleFactor, frame);\n const componentMeasureRect: Rect = {\n origin: {\n x: xStart,\n y: frame.origin.y,\n },\n size: {width: xStop - xStart, height: NATIVE_EVENT_HEIGHT},\n };\n if (!rectIntersectsRect(componentMeasureRect, rect)) {\n return false; // Not in view\n }\n\n const width = durationToWidth(duration, scaleFactor);\n if (width < 1) {\n return false; // Too small to render at this zoom level\n }\n\n let textFillStyle = ((null: any): string);\n let typeLabel = ((null: any): string);\n\n const drawableRect = intersectionOfRects(componentMeasureRect, rect);\n context.beginPath();\n if (warning !== null) {\n context.fillStyle = showHoverHighlight\n ? COLORS.WARNING_BACKGROUND_HOVER\n : COLORS.WARNING_BACKGROUND;\n } else {\n switch (type) {\n case 'render':\n context.fillStyle = showHoverHighlight\n ? COLORS.REACT_RENDER_HOVER\n : COLORS.REACT_RENDER;\n textFillStyle = COLORS.REACT_RENDER_TEXT;\n typeLabel = 'rendered';\n break;\n case 'layout-effect-mount':\n context.fillStyle = showHoverHighlight\n ? COLORS.REACT_LAYOUT_EFFECTS_HOVER\n : COLORS.REACT_LAYOUT_EFFECTS;\n textFillStyle = COLORS.REACT_LAYOUT_EFFECTS_TEXT;\n typeLabel = 'mounted layout effect';\n break;\n case 'layout-effect-unmount':\n context.fillStyle = showHoverHighlight\n ? COLORS.REACT_LAYOUT_EFFECTS_HOVER\n : COLORS.REACT_LAYOUT_EFFECTS;\n textFillStyle = COLORS.REACT_LAYOUT_EFFECTS_TEXT;\n typeLabel = 'unmounted layout effect';\n break;\n case 'passive-effect-mount':\n context.fillStyle = showHoverHighlight\n ? COLORS.REACT_PASSIVE_EFFECTS_HOVER\n : COLORS.REACT_PASSIVE_EFFECTS;\n textFillStyle = COLORS.REACT_PASSIVE_EFFECTS_TEXT;\n typeLabel = 'mounted passive effect';\n break;\n case 'passive-effect-unmount':\n context.fillStyle = showHoverHighlight\n ? COLORS.REACT_PASSIVE_EFFECTS_HOVER\n : COLORS.REACT_PASSIVE_EFFECTS;\n textFillStyle = COLORS.REACT_PASSIVE_EFFECTS_TEXT;\n typeLabel = 'unmounted passive effect';\n break;\n }\n }\n\n let isMatch = false;\n const cachedSearchRegExp = this._cachedSearchRegExp;\n if (cachedSearchRegExp !== null) {\n const cachedSearchMatches = this._cachedSearchMatches;\n const cachedValue = cachedSearchMatches.get(componentName);\n if (cachedValue != null) {\n isMatch = cachedValue;\n } else {\n isMatch = componentName.match(cachedSearchRegExp) !== null;\n cachedSearchMatches.set(componentName, isMatch);\n }\n }\n\n if (isMatch) {\n context.fillStyle = COLORS.SEARCH_RESULT_FILL;\n }\n\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n const label = `${componentName} ${typeLabel} - ${formatDuration(duration)}`;\n\n drawText(label, context, componentMeasureRect, drawableRect, {\n fillStyle: textFillStyle,\n });\n\n return true;\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {componentMeasures},\n _hoveredComponentMeasure,\n visibleArea,\n } = this;\n\n const searchRegExp = this._viewState.searchRegExp;\n if (this._cachedSearchRegExp !== searchRegExp) {\n this._cachedSearchMatches = new Map();\n this._cachedSearchRegExp = searchRegExp;\n }\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw events\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n let didDrawMeasure = false;\n componentMeasures.forEach(componentMeasure => {\n didDrawMeasure =\n this._drawSingleReactComponentMeasure(\n context,\n visibleArea,\n componentMeasure,\n scaleFactor,\n componentMeasure === _hoveredComponentMeasure,\n ) || didDrawMeasure;\n });\n\n if (!didDrawMeasure) {\n drawText(\n '(zoom or pan to see React components)',\n context,\n visibleArea,\n visibleArea,\n {fillStyle: COLORS.TEXT_DIM_COLOR, textAlign: 'center'},\n );\n }\n\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y + ROW_WITH_BORDER_HEIGHT - BORDER_SIZE,\n visibleArea.size.width,\n BORDER_SIZE,\n );\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, _intrinsicSize, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n\n const componentMeasures = this._profilerData.componentMeasures;\n for (let index = componentMeasures.length - 1; index >= 0; index--) {\n const componentMeasure = componentMeasures[index];\n const {duration, timestamp} = componentMeasure;\n\n if (\n hoverTimestamp >= timestamp &&\n hoverTimestamp <= timestamp + duration\n ) {\n this.currentCursor = 'context-menu';\n viewRefs.hoveredView = this;\n onHover(componentMeasure);\n return;\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {\n FlamechartStackFrame,\n InternalModuleSourceToRanges,\n} from '../../types';\n\nimport {\n CHROME_WEBSTORE_EXTENSION_ID,\n INTERNAL_EXTENSION_ID,\n LOCAL_EXTENSION_ID,\n} from 'react-devtools-shared/src/constants';\n\nexport function isInternalModule(\n internalModuleSourceToRanges: InternalModuleSourceToRanges,\n flamechartStackFrame: FlamechartStackFrame,\n): boolean {\n const {locationColumn, locationLine, scriptUrl} = flamechartStackFrame;\n\n if (scriptUrl == null || locationColumn == null || locationLine == null) {\n // This could indicate a browser-internal API like performance.mark().\n return false;\n }\n\n // Internal modules are only registered if DevTools was running when the profile was captured,\n // but DevTools should also hide its own frames to avoid over-emphasizing them.\n if (\n // Handle webpack-internal:// sources\n scriptUrl.includes('/react-devtools') ||\n scriptUrl.includes('/react_devtools') ||\n // Filter out known extension IDs\n scriptUrl.includes(CHROME_WEBSTORE_EXTENSION_ID) ||\n scriptUrl.includes(INTERNAL_EXTENSION_ID) ||\n scriptUrl.includes(LOCAL_EXTENSION_ID)\n // Unfortunately this won't get everything, like relatively loaded chunks or Web Worker files.\n ) {\n return true;\n }\n\n // Filter out React internal packages.\n const ranges = internalModuleSourceToRanges.get(scriptUrl);\n if (ranges != null) {\n for (let i = 0; i < ranges.length; i++) {\n const [startStackFrame, stopStackFrame] = ranges[i];\n\n const isAfterStart =\n locationLine > startStackFrame.lineNumber ||\n (locationLine === startStackFrame.lineNumber &&\n locationColumn >= startStackFrame.columnNumber);\n const isBeforeStop =\n locationLine < stopStackFrame.lineNumber ||\n (locationLine === stopStackFrame.lineNumber &&\n locationColumn <= stopStackFrame.columnNumber);\n\n if (isAfterStart && isBeforeStop) {\n return true;\n }\n }\n }\n\n return false;\n}\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 * @flow\n */\n\ntype ColorSpace = number | {min: number, max: number, count?: number};\n\n// Docstrings from https://www.w3schools.com/css/css_colors_hsl.asp\ntype HslaColor = $ReadOnly<{\n /** Hue is a degree on the color wheel from 0 to 360. 0 is red, 120 is green, and 240 is blue. */\n h: number,\n /** Saturation is a percentage value, 0% means a shade of gray, and 100% is the full color. */\n s: number,\n /** Lightness is a percentage, 0% is black, 50% is neither light or dark, 100% is white. */\n l: number,\n /** Alpha is a percentage, 0% is fully transparent, and 100 is not transparent at all. */\n a: number,\n}>;\n\nexport function hslaColorToString({h, s, l, a}: HslaColor): string {\n return `hsl(${h}deg ${s}% ${l}% / ${a})`;\n}\n\nexport function dimmedColor(color: HslaColor, dimDelta: number): HslaColor {\n return {\n ...color,\n l: color.l - dimDelta,\n };\n}\n\n// Source: https://source.chromium.org/chromium/chromium/src/+/master:out/Debug/gen/devtools/platform/utilities.js;l=120\nfunction hashCode(string: string): number {\n // Hash algorithm for substrings is described in \"Über die Komplexität der Multiplikation in\n // eingeschränkten Branchingprogrammmodellen\" by Woelfe.\n // http://opendatastructures.org/versions/edition-0.1d/ods-java/node33.html#SECTION00832000000000000000\n const p = (1 << 30) * 4 - 5; // prime: 2^32 - 5\n const z = 0x5033d967; // 32 bits from random.org\n const z2 = 0x59d2f15d; // random odd 32 bit number\n let s = 0;\n let zi = 1;\n for (let i = 0; i < string.length; i++) {\n const xi = string.charCodeAt(i) * z2;\n s = (s + zi * xi) % p;\n zi = (zi * z) % p;\n }\n s = (s + zi * (p - 1)) % p;\n return Math.abs(s | 0);\n}\n\nfunction indexToValueInSpace(index: number, space: ColorSpace): number {\n if (typeof space === 'number') {\n return space;\n }\n const count = space.count || space.max - space.min;\n index %= count;\n return (\n space.min + Math.floor((index / (count - 1)) * (space.max - space.min))\n );\n}\n\n/**\n * Deterministic color generator.\n *\n * Adapted from: https://source.chromium.org/chromium/chromium/src/+/master:out/Debug/gen/devtools/common/Color.js\n */\nexport class ColorGenerator {\n _hueSpace: ColorSpace;\n _satSpace: ColorSpace;\n _lightnessSpace: ColorSpace;\n _alphaSpace: ColorSpace;\n _colors: Map<string, HslaColor>;\n\n constructor(\n hueSpace?: ColorSpace,\n satSpace?: ColorSpace,\n lightnessSpace?: ColorSpace,\n alphaSpace?: ColorSpace,\n ) {\n this._hueSpace = hueSpace || {min: 0, max: 360};\n this._satSpace = satSpace || 67;\n this._lightnessSpace = lightnessSpace || 80;\n this._alphaSpace = alphaSpace || 1;\n this._colors = new Map();\n }\n\n setColorForID(id: string, color: HslaColor) {\n this._colors.set(id, color);\n }\n\n colorForID(id: string): HslaColor {\n const cachedColor = this._colors.get(id);\n if (cachedColor) {\n return cachedColor;\n }\n const color = this._generateColorForID(id);\n this._colors.set(id, color);\n return color;\n }\n\n _generateColorForID(id: string): HslaColor {\n const hash = hashCode(id);\n return {\n h: indexToValueInSpace(hash, this._hueSpace),\n s: indexToValueInSpace(hash >> 8, this._satSpace),\n l: indexToValueInSpace(hash >> 16, this._lightnessSpace),\n a: indexToValueInSpace(hash >> 24, this._alphaSpace),\n };\n }\n}\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 * @flow\n */\n\nimport type {\n Flamechart,\n FlamechartStackFrame,\n FlamechartStackLayer,\n InternalModuleSourceToRanges,\n} from '../types';\nimport type {\n Interaction,\n MouseMoveInteraction,\n Rect,\n Size,\n ViewRefs,\n} from '../view-base';\n\nimport {\n BackgroundColorView,\n Surface,\n View,\n layeredLayout,\n rectContainsPoint,\n intersectionOfRects,\n rectIntersectsRect,\n verticallyStackedLayout,\n} from '../view-base';\nimport {isInternalModule} from './utils/moduleFilters';\nimport {\n durationToWidth,\n positioningScaleFactor,\n timestampToPosition,\n} from './utils/positioning';\nimport {drawText} from './utils/text';\nimport {\n COLORS,\n FLAMECHART_FRAME_HEIGHT,\n COLOR_HOVER_DIM_DELTA,\n BORDER_SIZE,\n} from './constants';\nimport {ColorGenerator, dimmedColor, hslaColorToString} from './utils/colors';\n\n// Source: https://source.chromium.org/chromium/chromium/src/+/master:out/Debug/gen/devtools/timeline/TimelineUIUtils.js;l=2109;drc=fb32e928d79707a693351b806b8710b2f6b7d399\nconst colorGenerator = new ColorGenerator(\n {min: 30, max: 330},\n {min: 50, max: 80, count: 3},\n 85,\n);\ncolorGenerator.setColorForID('', {h: 43.6, s: 45.8, l: 90.6, a: 100});\n\nfunction defaultHslaColorForStackFrame({scriptUrl}: FlamechartStackFrame) {\n return colorGenerator.colorForID(scriptUrl ?? '');\n}\n\nfunction defaultColorForStackFrame(stackFrame: FlamechartStackFrame): string {\n const color = defaultHslaColorForStackFrame(stackFrame);\n return hslaColorToString(color);\n}\n\nfunction hoverColorForStackFrame(stackFrame: FlamechartStackFrame): string {\n const color = dimmedColor(\n defaultHslaColorForStackFrame(stackFrame),\n COLOR_HOVER_DIM_DELTA,\n );\n return hslaColorToString(color);\n}\n\nclass FlamechartStackLayerView extends View {\n /** Layer to display */\n _stackLayer: FlamechartStackLayer;\n\n /** A set of `stackLayer`'s frames, for efficient lookup. */\n _stackFrameSet: Set<FlamechartStackFrame>;\n\n _internalModuleSourceToRanges: InternalModuleSourceToRanges;\n\n _intrinsicSize: Size;\n\n _hoveredStackFrame: FlamechartStackFrame | null = null;\n _onHover: ((node: FlamechartStackFrame | null) => void) | null = null;\n\n constructor(\n surface: Surface,\n frame: Rect,\n stackLayer: FlamechartStackLayer,\n internalModuleSourceToRanges: InternalModuleSourceToRanges,\n duration: number,\n ) {\n super(surface, frame);\n this._stackLayer = stackLayer;\n this._stackFrameSet = new Set(stackLayer);\n this._internalModuleSourceToRanges = internalModuleSourceToRanges;\n this._intrinsicSize = {\n width: duration,\n height: FLAMECHART_FRAME_HEIGHT,\n };\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n setHoveredFlamechartStackFrame(\n hoveredStackFrame: FlamechartStackFrame | null,\n ) {\n if (this._hoveredStackFrame === hoveredStackFrame) {\n return; // We're already hovering over this frame\n }\n\n // Only care about frames displayed by this view.\n const stackFrameToSet =\n hoveredStackFrame && this._stackFrameSet.has(hoveredStackFrame)\n ? hoveredStackFrame\n : null;\n if (this._hoveredStackFrame === stackFrameToSet) {\n return; // Resulting state is unchanged\n }\n this._hoveredStackFrame = stackFrameToSet;\n this.setNeedsDisplay();\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _stackLayer,\n _hoveredStackFrame,\n _intrinsicSize,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.PRIORITY_BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n\n for (let i = 0; i < _stackLayer.length; i++) {\n const stackFrame = _stackLayer[i];\n const {name, timestamp, duration} = stackFrame;\n\n const width = durationToWidth(duration, scaleFactor);\n if (width < 1) {\n continue; // Too small to render at this zoom level\n }\n\n const x = Math.floor(timestampToPosition(timestamp, scaleFactor, frame));\n const nodeRect: Rect = {\n origin: {x, y: frame.origin.y},\n size: {\n width: Math.floor(width - BORDER_SIZE),\n height: Math.floor(FLAMECHART_FRAME_HEIGHT - BORDER_SIZE),\n },\n };\n if (!rectIntersectsRect(nodeRect, visibleArea)) {\n continue; // Not in view\n }\n\n const showHoverHighlight = _hoveredStackFrame === _stackLayer[i];\n\n let textFillStyle;\n if (isInternalModule(this._internalModuleSourceToRanges, stackFrame)) {\n context.fillStyle = showHoverHighlight\n ? COLORS.INTERNAL_MODULE_FRAME_HOVER\n : COLORS.INTERNAL_MODULE_FRAME;\n textFillStyle = COLORS.INTERNAL_MODULE_FRAME_TEXT;\n } else {\n context.fillStyle = showHoverHighlight\n ? hoverColorForStackFrame(stackFrame)\n : defaultColorForStackFrame(stackFrame);\n textFillStyle = COLORS.TEXT_COLOR;\n }\n\n const drawableRect = intersectionOfRects(nodeRect, visibleArea);\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n drawText(name, context, nodeRect, drawableRect, {\n fillStyle: textFillStyle,\n });\n }\n\n // Render bottom border.\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + FLAMECHART_FRAME_HEIGHT - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(borderFrame, visibleArea);\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {_stackLayer, frame, _intrinsicSize, _onHover, visibleArea} = this;\n const {location} = interaction.payload;\n if (!_onHover || !rectContainsPoint(location, visibleArea)) {\n return;\n }\n\n // Find the node being hovered over.\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n let startIndex = 0;\n let stopIndex = _stackLayer.length - 1;\n while (startIndex <= stopIndex) {\n const currentIndex = Math.floor((startIndex + stopIndex) / 2);\n const flamechartStackFrame = _stackLayer[currentIndex];\n const {timestamp, duration} = flamechartStackFrame;\n\n const x = Math.floor(timestampToPosition(timestamp, scaleFactor, frame));\n const width = durationToWidth(duration, scaleFactor);\n\n // Don't show tooltips for nodes that are too small to render at this zoom level.\n if (Math.floor(width - BORDER_SIZE) >= 1) {\n if (x <= location.x && x + width >= location.x) {\n this.currentCursor = 'context-menu';\n viewRefs.hoveredView = this;\n _onHover(flamechartStackFrame);\n return;\n }\n }\n\n if (x > location.x) {\n stopIndex = currentIndex - 1;\n } else {\n startIndex = currentIndex + 1;\n }\n }\n\n _onHover(null);\n }\n\n _didGrab: boolean = false;\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\n\nexport class FlamechartView extends View {\n _flamechartRowViews: FlamechartStackLayerView[] = [];\n\n /** Container view that vertically stacks flamechart rows */\n _verticalStackView: View;\n\n _hoveredStackFrame: FlamechartStackFrame | null = null;\n _onHover: ((node: FlamechartStackFrame | null) => void) | null = null;\n\n constructor(\n surface: Surface,\n frame: Rect,\n flamechart: Flamechart,\n internalModuleSourceToRanges: InternalModuleSourceToRanges,\n duration: number,\n ) {\n super(surface, frame, layeredLayout);\n this.setDataAndUpdateSubviews(\n flamechart,\n internalModuleSourceToRanges,\n duration,\n );\n }\n\n setDataAndUpdateSubviews(\n flamechart: Flamechart,\n internalModuleSourceToRanges: InternalModuleSourceToRanges,\n duration: number,\n ) {\n const {surface, frame, _onHover, _hoveredStackFrame} = this;\n\n // Clear existing rows on data update\n if (this._verticalStackView) {\n this.removeAllSubviews();\n this._flamechartRowViews = [];\n }\n\n this._verticalStackView = new View(surface, frame, verticallyStackedLayout);\n this._flamechartRowViews = flamechart.map(stackLayer => {\n const rowView = new FlamechartStackLayerView(\n surface,\n frame,\n stackLayer,\n internalModuleSourceToRanges,\n duration,\n );\n this._verticalStackView.addSubview(rowView);\n\n // Update states\n rowView._onHover = _onHover;\n rowView.setHoveredFlamechartStackFrame(_hoveredStackFrame);\n return rowView;\n });\n\n // Add a plain background view to prevent gaps from appearing between flamechartRowViews.\n this.addSubview(new BackgroundColorView(surface, frame));\n this.addSubview(this._verticalStackView);\n }\n\n setHoveredFlamechartStackFrame(\n hoveredStackFrame: FlamechartStackFrame | null,\n ) {\n this._hoveredStackFrame = hoveredStackFrame;\n this._flamechartRowViews.forEach(rowView =>\n rowView.setHoveredFlamechartStackFrame(hoveredStackFrame),\n );\n }\n\n setOnHover(onHover: (node: FlamechartStackFrame | null) => void) {\n this._onHover = onHover;\n this._flamechartRowViews.forEach(rowView => (rowView._onHover = onHover));\n }\n\n desiredSize(): {\n height: number,\n hideScrollBarIfLessThanHeight?: number,\n maxInitialHeight?: number,\n width: number,\n } {\n // Ignore the wishes of the background color view\n const intrinsicSize = this._verticalStackView.desiredSize();\n return {\n ...intrinsicSize,\n // Collapsed by default\n maxInitialHeight: 0,\n };\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction) {\n const {_onHover, visibleArea} = this;\n if (!_onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n // Clear out any hovered flamechart stack frame\n _onHover(null);\n }\n }\n\n handleInteraction(interaction: Interaction) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {NativeEvent, TimelineData} from '../types';\nimport type {\n Interaction,\n IntrinsicSize,\n MouseMoveInteraction,\n Rect,\n ViewRefs,\n} from '../view-base';\n\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n} from './utils/positioning';\nimport {drawText} from './utils/text';\nimport {formatDuration} from '../utils/formatting';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {COLORS, NATIVE_EVENT_HEIGHT, BORDER_SIZE} from './constants';\n\nconst ROW_WITH_BORDER_HEIGHT = NATIVE_EVENT_HEIGHT + BORDER_SIZE;\n\nexport class NativeEventsView extends View {\n _depthToNativeEvent: Map<number, NativeEvent[]>;\n _hoveredEvent: NativeEvent | null = null;\n _intrinsicSize: IntrinsicSize;\n _maxDepth: number = 0;\n _profilerData: TimelineData;\n\n onHover: ((event: NativeEvent | null) => void) | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n\n this._profilerData = profilerData;\n\n this._performPreflightComputations();\n }\n\n _performPreflightComputations() {\n this._depthToNativeEvent = new Map();\n\n const {duration, nativeEvents} = this._profilerData;\n\n nativeEvents.forEach(event => {\n const depth = event.depth;\n\n this._maxDepth = Math.max(this._maxDepth, depth);\n\n if (!this._depthToNativeEvent.has(depth)) {\n this._depthToNativeEvent.set(depth, [event]);\n } else {\n // $FlowFixMe[incompatible-use] This is unnecessary.\n this._depthToNativeEvent.get(depth).push(event);\n }\n });\n\n this._intrinsicSize = {\n width: duration,\n height: (this._maxDepth + 1) * ROW_WITH_BORDER_HEIGHT,\n hideScrollBarIfLessThanHeight: ROW_WITH_BORDER_HEIGHT,\n };\n }\n\n desiredSize(): IntrinsicSize {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(hoveredEvent: NativeEvent | null) {\n if (this._hoveredEvent === hoveredEvent) {\n return;\n }\n this._hoveredEvent = hoveredEvent;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `NativeEvent` as a box/span with text inside of it.\n */\n _drawSingleNativeEvent(\n context: CanvasRenderingContext2D,\n rect: Rect,\n event: NativeEvent,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame} = this;\n const {depth, duration, timestamp, type, warning} = event;\n\n baseY += depth * ROW_WITH_BORDER_HEIGHT;\n\n const xStart = timestampToPosition(timestamp, scaleFactor, frame);\n const xStop = timestampToPosition(timestamp + duration, scaleFactor, frame);\n const eventRect: Rect = {\n origin: {\n x: xStart,\n y: baseY,\n },\n size: {width: xStop - xStart, height: NATIVE_EVENT_HEIGHT},\n };\n if (!rectIntersectsRect(eventRect, rect)) {\n return; // Not in view\n }\n\n const width = durationToWidth(duration, scaleFactor);\n if (width < 1) {\n return; // Too small to render at this zoom level\n }\n\n const drawableRect = intersectionOfRects(eventRect, rect);\n context.beginPath();\n if (warning !== null) {\n context.fillStyle = showHoverHighlight\n ? COLORS.WARNING_BACKGROUND_HOVER\n : COLORS.WARNING_BACKGROUND;\n } else {\n context.fillStyle = showHoverHighlight\n ? COLORS.NATIVE_EVENT_HOVER\n : COLORS.NATIVE_EVENT;\n }\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n const label = `${type} - ${formatDuration(duration)}`;\n\n drawText(label, context, eventRect, drawableRect);\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {nativeEvents},\n _hoveredEvent,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.PRIORITY_BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw events\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n nativeEvents.forEach(event => {\n this._drawSingleNativeEvent(\n context,\n visibleArea,\n event,\n frame.origin.y,\n scaleFactor,\n event === _hoveredEvent,\n );\n });\n\n // Render bottom borders.\n for (let i = 0; i <= this._maxDepth; i++) {\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + NATIVE_EVENT_HEIGHT,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(\n borderFrame,\n visibleArea,\n );\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, _intrinsicSize, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n\n const adjustedCanvasMouseY = location.y - frame.origin.y;\n const depth = Math.floor(adjustedCanvasMouseY / ROW_WITH_BORDER_HEIGHT);\n const nativeEventsAtDepth = this._depthToNativeEvent.get(depth);\n\n if (nativeEventsAtDepth) {\n // Find the event being hovered over.\n for (let index = nativeEventsAtDepth.length - 1; index >= 0; index--) {\n const nativeEvent = nativeEventsAtDepth[index];\n const {duration, timestamp} = nativeEvent;\n\n if (\n hoverTimestamp >= timestamp &&\n hoverTimestamp <= timestamp + duration\n ) {\n viewRefs.hoveredView = this;\n onHover(nativeEvent);\n return;\n }\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {NetworkMeasure, TimelineData} from '../types';\nimport type {\n Interaction,\n IntrinsicSize,\n MouseMoveInteraction,\n Rect,\n ViewRefs,\n} from '../view-base';\n\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n} from './utils/positioning';\nimport {drawText} from './utils/text';\nimport {formatDuration} from '../utils/formatting';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {BORDER_SIZE, COLORS, SUSPENSE_EVENT_HEIGHT} from './constants';\n\nconst HEIGHT = SUSPENSE_EVENT_HEIGHT; // TODO Constant name\nconst ROW_WITH_BORDER_HEIGHT = HEIGHT + BORDER_SIZE;\n\nconst BASE_URL_REGEX = /([^:]+:\\/\\/[^\\/]+)/;\n\nexport class NetworkMeasuresView extends View {\n _depthToNetworkMeasure: Map<number, NetworkMeasure[]>;\n _hoveredNetworkMeasure: NetworkMeasure | null = null;\n _intrinsicSize: IntrinsicSize;\n _maxDepth: number = 0;\n _profilerData: TimelineData;\n\n onHover: ((event: NetworkMeasure | null) => void) | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n\n this._profilerData = profilerData;\n\n this._performPreflightComputations();\n }\n\n _performPreflightComputations() {\n this._depthToNetworkMeasure = new Map();\n\n const {duration, networkMeasures} = this._profilerData;\n\n networkMeasures.forEach(event => {\n const depth = event.depth;\n\n this._maxDepth = Math.max(this._maxDepth, depth);\n\n if (!this._depthToNetworkMeasure.has(depth)) {\n this._depthToNetworkMeasure.set(depth, [event]);\n } else {\n // $FlowFixMe[incompatible-use] This is unnecessary.\n this._depthToNetworkMeasure.get(depth).push(event);\n }\n });\n\n this._intrinsicSize = {\n width: duration,\n height: (this._maxDepth + 1) * ROW_WITH_BORDER_HEIGHT,\n // Collapsed by default\n maxInitialHeight: 0,\n };\n }\n\n desiredSize(): IntrinsicSize {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(networkMeasure: NetworkMeasure | null) {\n if (this._hoveredNetworkMeasure === networkMeasure) {\n return;\n }\n this._hoveredNetworkMeasure = networkMeasure;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `NetworkMeasure` as a box/span with text inside of it.\n */\n _drawSingleNetworkMeasure(\n context: CanvasRenderingContext2D,\n networkMeasure: NetworkMeasure,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame, visibleArea} = this;\n const {\n depth,\n finishTimestamp,\n firstReceivedDataTimestamp,\n lastReceivedDataTimestamp,\n receiveResponseTimestamp,\n sendRequestTimestamp,\n url,\n } = networkMeasure;\n\n // Account for requests that did not complete while we were profiling.\n // As well as requests that did not receive data before finish (cached?).\n const duration = this._profilerData.duration;\n const timestampBegin = sendRequestTimestamp;\n const timestampEnd =\n finishTimestamp || lastReceivedDataTimestamp || duration;\n const timestampMiddle =\n receiveResponseTimestamp || firstReceivedDataTimestamp || timestampEnd;\n\n // Convert all timestamps to x coordinates.\n const xStart = timestampToPosition(timestampBegin, scaleFactor, frame);\n const xMiddle = timestampToPosition(timestampMiddle, scaleFactor, frame);\n const xStop = timestampToPosition(timestampEnd, scaleFactor, frame);\n\n const width = durationToWidth(xStop - xStart, scaleFactor);\n if (width < 1) {\n return; // Too small to render at this zoom level\n }\n\n baseY += depth * ROW_WITH_BORDER_HEIGHT;\n\n const outerRect: Rect = {\n origin: {\n x: xStart,\n y: baseY,\n },\n size: {\n width: xStop - xStart,\n height: HEIGHT,\n },\n };\n if (!rectIntersectsRect(outerRect, visibleArea)) {\n return; // Not in view\n }\n\n // Draw the secondary rect first (since it also shows as a thin border around the primary rect).\n let rect = {\n origin: {\n x: xStart,\n y: baseY,\n },\n size: {\n width: xStop - xStart,\n height: HEIGHT,\n },\n };\n if (rectIntersectsRect(rect, visibleArea)) {\n context.beginPath();\n context.fillStyle =\n this._hoveredNetworkMeasure === networkMeasure\n ? COLORS.NETWORK_SECONDARY_HOVER\n : COLORS.NETWORK_SECONDARY;\n context.fillRect(\n rect.origin.x,\n rect.origin.y,\n rect.size.width,\n rect.size.height,\n );\n }\n\n rect = {\n origin: {\n x: xStart + BORDER_SIZE,\n y: baseY + BORDER_SIZE,\n },\n size: {\n width: xMiddle - xStart - BORDER_SIZE,\n height: HEIGHT - BORDER_SIZE * 2,\n },\n };\n if (rectIntersectsRect(rect, visibleArea)) {\n context.beginPath();\n context.fillStyle =\n this._hoveredNetworkMeasure === networkMeasure\n ? COLORS.NETWORK_PRIMARY_HOVER\n : COLORS.NETWORK_PRIMARY;\n context.fillRect(\n rect.origin.x,\n rect.origin.y,\n rect.size.width,\n rect.size.height,\n );\n }\n\n const baseUrl = url.match(BASE_URL_REGEX);\n const displayUrl = baseUrl !== null ? baseUrl[1] : url;\n\n const durationLabel =\n finishTimestamp !== 0\n ? `${formatDuration(finishTimestamp - sendRequestTimestamp)} - `\n : '';\n\n const label = durationLabel + displayUrl;\n\n drawText(label, context, outerRect, visibleArea);\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {networkMeasures},\n _hoveredNetworkMeasure,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.PRIORITY_BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n networkMeasures.forEach(networkMeasure => {\n this._drawSingleNetworkMeasure(\n context,\n networkMeasure,\n frame.origin.y,\n scaleFactor,\n networkMeasure === _hoveredNetworkMeasure,\n );\n });\n\n // Render bottom borders.\n for (let i = 0; i <= this._maxDepth; i++) {\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + (i + 1) * ROW_WITH_BORDER_HEIGHT - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(\n borderFrame,\n visibleArea,\n );\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, _intrinsicSize, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n\n const adjustedCanvasMouseY = location.y - frame.origin.y;\n const depth = Math.floor(adjustedCanvasMouseY / ROW_WITH_BORDER_HEIGHT);\n const networkMeasuresAtDepth = this._depthToNetworkMeasure.get(depth);\n\n const duration = this._profilerData.duration;\n\n if (networkMeasuresAtDepth) {\n // Find the event being hovered over.\n for (let index = networkMeasuresAtDepth.length - 1; index >= 0; index--) {\n const networkMeasure = networkMeasuresAtDepth[index];\n const {\n finishTimestamp,\n lastReceivedDataTimestamp,\n sendRequestTimestamp,\n } = networkMeasure;\n\n const timestampBegin = sendRequestTimestamp;\n const timestampEnd =\n finishTimestamp || lastReceivedDataTimestamp || duration;\n\n if (\n hoverTimestamp >= timestampBegin &&\n hoverTimestamp <= timestampEnd\n ) {\n this.currentCursor = 'context-menu';\n viewRefs.hoveredView = this;\n onHover(networkMeasure);\n return;\n }\n }\n }\n\n if (viewRefs.hoveredView === this) {\n viewRefs.hoveredView = null;\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {ReactLane, ReactMeasure, TimelineData} from '../types';\nimport type {\n Interaction,\n IntrinsicSize,\n MouseMoveInteraction,\n Rect,\n ViewRefs,\n} from '../view-base';\n\nimport {formatDuration} from '../utils/formatting';\nimport {drawText} from './utils/text';\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n} from './utils/positioning';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\n\nimport {COLORS, BORDER_SIZE, REACT_MEASURE_HEIGHT} from './constants';\n\nconst REACT_LANE_HEIGHT = REACT_MEASURE_HEIGHT + BORDER_SIZE;\nconst MAX_ROWS_TO_SHOW_INITIALLY = 5;\n\nexport class ReactMeasuresView extends View {\n _intrinsicSize: IntrinsicSize;\n _lanesToRender: ReactLane[];\n _profilerData: TimelineData;\n _hoveredMeasure: ReactMeasure | null = null;\n\n onHover: ((measure: ReactMeasure | null) => void) | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n this._profilerData = profilerData;\n this._performPreflightComputations();\n }\n\n _performPreflightComputations() {\n this._lanesToRender = [];\n\n // eslint-disable-next-line no-for-of-loops/no-for-of-loops\n for (const [lane, measuresForLane] of this._profilerData\n .laneToReactMeasureMap) {\n // Only show lanes with measures\n if (measuresForLane.length > 0) {\n this._lanesToRender.push(lane);\n }\n }\n\n this._intrinsicSize = {\n width: this._profilerData.duration,\n height: this._lanesToRender.length * REACT_LANE_HEIGHT,\n hideScrollBarIfLessThanHeight: REACT_LANE_HEIGHT,\n maxInitialHeight: MAX_ROWS_TO_SHOW_INITIALLY * REACT_LANE_HEIGHT,\n };\n }\n\n desiredSize(): IntrinsicSize {\n return this._intrinsicSize;\n }\n\n setHoveredMeasure(hoveredMeasure: ReactMeasure | null) {\n if (this._hoveredMeasure === hoveredMeasure) {\n return;\n }\n this._hoveredMeasure = hoveredMeasure;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `ReactMeasure` as a bar in the canvas.\n */\n _drawSingleReactMeasure(\n context: CanvasRenderingContext2D,\n rect: Rect,\n measure: ReactMeasure,\n nextMeasure: ReactMeasure | null,\n baseY: number,\n scaleFactor: number,\n showGroupHighlight: boolean,\n showHoverHighlight: boolean,\n ): void {\n const {frame, visibleArea} = this;\n const {timestamp, type, duration} = measure;\n\n let fillStyle = null;\n let hoveredFillStyle = null;\n let groupSelectedFillStyle = null;\n let textFillStyle = null;\n\n // We could change the max to 0 and just skip over rendering anything that small,\n // but this has the effect of making the chart look very empty when zoomed out.\n // So long as perf is okay- it might be best to err on the side of showing things.\n const width = durationToWidth(duration, scaleFactor);\n if (width <= 0) {\n return; // Too small to render at this zoom level\n }\n\n const x = timestampToPosition(timestamp, scaleFactor, frame);\n const measureRect: Rect = {\n origin: {x, y: baseY},\n size: {width, height: REACT_MEASURE_HEIGHT},\n };\n if (!rectIntersectsRect(measureRect, rect)) {\n return; // Not in view\n }\n\n const drawableRect = intersectionOfRects(measureRect, rect);\n let textRect = measureRect;\n\n switch (type) {\n case 'commit':\n fillStyle = COLORS.REACT_COMMIT;\n hoveredFillStyle = COLORS.REACT_COMMIT_HOVER;\n groupSelectedFillStyle = COLORS.REACT_COMMIT_HOVER;\n textFillStyle = COLORS.REACT_COMMIT_TEXT;\n\n // Commit phase rects are overlapped by layout and passive rects,\n // and it looks bad if text flows underneath/behind these overlayed rects.\n if (nextMeasure != null) {\n // This clipping shouldn't apply for measures that don't overlap though,\n // like passive effects that are processed after a delay,\n // or if there are now layout or passive effects and the next measure is render or idle.\n if (nextMeasure.timestamp < measure.timestamp + measure.duration) {\n textRect = {\n ...measureRect,\n size: {\n width:\n timestampToPosition(\n nextMeasure.timestamp,\n scaleFactor,\n frame,\n ) - x,\n height: REACT_MEASURE_HEIGHT,\n },\n };\n }\n }\n break;\n case 'render-idle':\n // We could render idle time as diagonal hashes.\n // This looks nicer when zoomed in, but not so nice when zoomed out.\n // color = context.createPattern(getIdlePattern(), 'repeat');\n fillStyle = COLORS.REACT_IDLE;\n hoveredFillStyle = COLORS.REACT_IDLE_HOVER;\n groupSelectedFillStyle = COLORS.REACT_IDLE_HOVER;\n break;\n case 'render':\n fillStyle = COLORS.REACT_RENDER;\n hoveredFillStyle = COLORS.REACT_RENDER_HOVER;\n groupSelectedFillStyle = COLORS.REACT_RENDER_HOVER;\n textFillStyle = COLORS.REACT_RENDER_TEXT;\n break;\n case 'layout-effects':\n fillStyle = COLORS.REACT_LAYOUT_EFFECTS;\n hoveredFillStyle = COLORS.REACT_LAYOUT_EFFECTS_HOVER;\n groupSelectedFillStyle = COLORS.REACT_LAYOUT_EFFECTS_HOVER;\n textFillStyle = COLORS.REACT_LAYOUT_EFFECTS_TEXT;\n break;\n case 'passive-effects':\n fillStyle = COLORS.REACT_PASSIVE_EFFECTS;\n hoveredFillStyle = COLORS.REACT_PASSIVE_EFFECTS_HOVER;\n groupSelectedFillStyle = COLORS.REACT_PASSIVE_EFFECTS_HOVER;\n textFillStyle = COLORS.REACT_PASSIVE_EFFECTS_TEXT;\n break;\n default:\n throw new Error(`Unexpected measure type \"${type}\"`);\n }\n\n context.fillStyle = showHoverHighlight\n ? hoveredFillStyle\n : showGroupHighlight\n ? groupSelectedFillStyle\n : fillStyle;\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n if (textFillStyle !== null) {\n drawText(formatDuration(duration), context, textRect, visibleArea, {\n fillStyle: textFillStyle,\n });\n }\n }\n\n draw(context: CanvasRenderingContext2D): void {\n const {frame, _hoveredMeasure, _lanesToRender, _profilerData, visibleArea} =\n this;\n\n context.fillStyle = COLORS.PRIORITY_BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n for (let i = 0; i < _lanesToRender.length; i++) {\n const lane = _lanesToRender[i];\n const baseY = frame.origin.y + i * REACT_LANE_HEIGHT;\n const measuresForLane = _profilerData.laneToReactMeasureMap.get(lane);\n\n if (!measuresForLane) {\n throw new Error(\n 'No measures found for a React lane! This is a bug in this profiler tool. Please file an issue.',\n );\n }\n\n // Render lane labels\n const label = _profilerData.laneToLabelMap.get(lane);\n if (label == null) {\n console.warn(`Could not find label for lane ${lane}.`);\n } else {\n const labelRect = {\n origin: {\n x: visibleArea.origin.x,\n y: baseY,\n },\n size: {\n width: visibleArea.size.width,\n height: REACT_LANE_HEIGHT,\n },\n };\n\n drawText(label, context, labelRect, visibleArea, {\n fillStyle: COLORS.TEXT_DIM_COLOR,\n });\n }\n\n // Draw measures\n for (let j = 0; j < measuresForLane.length; j++) {\n const measure = measuresForLane[j];\n const showHoverHighlight = _hoveredMeasure === measure;\n const showGroupHighlight =\n !!_hoveredMeasure && _hoveredMeasure.batchUID === measure.batchUID;\n\n this._drawSingleReactMeasure(\n context,\n visibleArea,\n measure,\n measuresForLane[j + 1] || null,\n baseY,\n scaleFactor,\n showGroupHighlight,\n showHoverHighlight,\n );\n }\n\n // Render bottom border\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + (i + 1) * REACT_LANE_HEIGHT - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(\n borderFrame,\n visibleArea,\n );\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {\n frame,\n _intrinsicSize,\n _lanesToRender,\n onHover,\n _profilerData,\n visibleArea,\n } = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n // Identify the lane being hovered over\n const adjustedCanvasMouseY = location.y - frame.origin.y;\n const renderedLaneIndex = Math.floor(\n adjustedCanvasMouseY / REACT_LANE_HEIGHT,\n );\n if (renderedLaneIndex < 0 || renderedLaneIndex >= _lanesToRender.length) {\n onHover(null);\n return;\n }\n const lane = _lanesToRender[renderedLaneIndex];\n\n // Find the measure in `lane` being hovered over.\n //\n // Because data ranges may overlap, we want to find the last intersecting item.\n // This will always be the one on \"top\" (the one the user is hovering over).\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n const measures = _profilerData.laneToReactMeasureMap.get(lane);\n if (!measures) {\n onHover(null);\n return;\n }\n\n for (let index = measures.length - 1; index >= 0; index--) {\n const measure = measures[index];\n const {duration, timestamp} = measure;\n\n if (\n hoverTimestamp >= timestamp &&\n hoverTimestamp <= timestamp + duration\n ) {\n this.currentCursor = 'context-menu';\n viewRefs.hoveredView = this;\n onHover(measure);\n return;\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {SchedulingEvent, TimelineData} from '../types';\nimport type {\n ClickInteraction,\n Interaction,\n MouseMoveInteraction,\n Rect,\n Size,\n ViewRefs,\n} from '../view-base';\n\nimport {\n positioningScaleFactor,\n timestampToPosition,\n positionToTimestamp,\n widthToDuration,\n} from './utils/positioning';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {\n COLORS,\n TOP_ROW_PADDING,\n REACT_EVENT_DIAMETER,\n BORDER_SIZE,\n} from './constants';\n\nconst EVENT_ROW_HEIGHT_FIXED =\n TOP_ROW_PADDING + REACT_EVENT_DIAMETER + TOP_ROW_PADDING;\n\nexport class SchedulingEventsView extends View {\n _profilerData: TimelineData;\n _intrinsicSize: Size;\n\n _hoveredEvent: SchedulingEvent | null = null;\n onHover: ((event: SchedulingEvent | null) => void) | null = null;\n onClick:\n | ((event: SchedulingEvent | null, eventIndex: number | null) => void)\n | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n this._profilerData = profilerData;\n\n this._intrinsicSize = {\n width: this._profilerData.duration,\n height: EVENT_ROW_HEIGHT_FIXED,\n };\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(hoveredEvent: SchedulingEvent | null) {\n if (this._hoveredEvent === hoveredEvent) {\n return;\n }\n this._hoveredEvent = hoveredEvent;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `SchedulingEvent` as a circle in the canvas.\n */\n _drawSingleSchedulingEvent(\n context: CanvasRenderingContext2D,\n rect: Rect,\n event: SchedulingEvent,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame} = this;\n const {timestamp, type, warning} = event;\n\n const x = timestampToPosition(timestamp, scaleFactor, frame);\n const radius = REACT_EVENT_DIAMETER / 2;\n const eventRect: Rect = {\n origin: {\n x: x - radius,\n y: baseY,\n },\n size: {width: REACT_EVENT_DIAMETER, height: REACT_EVENT_DIAMETER},\n };\n if (!rectIntersectsRect(eventRect, rect)) {\n return; // Not in view\n }\n\n let fillStyle = null;\n\n if (warning !== null) {\n fillStyle = showHoverHighlight\n ? COLORS.WARNING_BACKGROUND_HOVER\n : COLORS.WARNING_BACKGROUND;\n } else {\n switch (type) {\n case 'schedule-render':\n case 'schedule-state-update':\n case 'schedule-force-update':\n fillStyle = showHoverHighlight\n ? COLORS.REACT_SCHEDULE_HOVER\n : COLORS.REACT_SCHEDULE;\n break;\n default:\n if (__DEV__) {\n console.warn('Unexpected event type \"%s\"', type);\n }\n break;\n }\n }\n\n if (fillStyle !== null) {\n const y = eventRect.origin.y + radius;\n\n context.beginPath();\n context.fillStyle = fillStyle;\n context.arc(x, y, radius, 0, 2 * Math.PI);\n context.fill();\n }\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {schedulingEvents},\n _hoveredEvent,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw events\n const baseY = frame.origin.y + TOP_ROW_PADDING;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n const highlightedEvents: SchedulingEvent[] = [];\n\n schedulingEvents.forEach(event => {\n if (event === _hoveredEvent) {\n highlightedEvents.push(event);\n return;\n }\n this._drawSingleSchedulingEvent(\n context,\n visibleArea,\n event,\n baseY,\n scaleFactor,\n false,\n );\n });\n\n // Draw the highlighted items on top so they stand out.\n // This is helpful if there are multiple (overlapping) items close to each other.\n highlightedEvents.forEach(event => {\n this._drawSingleSchedulingEvent(\n context,\n visibleArea,\n event,\n baseY,\n scaleFactor,\n true,\n );\n });\n\n // Render bottom border.\n // Propose border rect, check if intersects with `rect`, draw intersection.\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + EVENT_ROW_HEIGHT_FIXED - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(borderFrame, visibleArea);\n context.fillStyle = COLORS.REACT_WORK_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const {\n _profilerData: {schedulingEvents},\n } = this;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n const eventTimestampAllowance = widthToDuration(\n REACT_EVENT_DIAMETER / 2,\n scaleFactor,\n );\n\n // Because data ranges may overlap, we want to find the last intersecting item.\n // This will always be the one on \"top\" (the one the user is hovering over).\n for (let index = schedulingEvents.length - 1; index >= 0; index--) {\n const event = schedulingEvents[index];\n const {timestamp} = event;\n\n if (\n timestamp - eventTimestampAllowance <= hoverTimestamp &&\n hoverTimestamp <= timestamp + eventTimestampAllowance\n ) {\n this.currentCursor = 'pointer';\n viewRefs.hoveredView = this;\n onHover(event);\n return;\n }\n }\n\n onHover(null);\n }\n\n /**\n * @private\n */\n _handleClick(interaction: ClickInteraction) {\n const {onClick} = this;\n if (onClick) {\n const {\n _profilerData: {schedulingEvents},\n } = this;\n const eventIndex = schedulingEvents.findIndex(\n event => event === this._hoveredEvent,\n );\n // onHover is going to take care of all the difficult logic here of\n // figuring out which event when they're proximity is close.\n onClick(this._hoveredEvent, eventIndex >= 0 ? eventIndex : null);\n }\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n case 'click':\n this._handleClick(interaction);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {Snapshot, TimelineData} from '../types';\nimport type {\n Interaction,\n Point,\n Rect,\n Size,\n Surface,\n ViewRefs,\n} from '../view-base';\n\nimport {positioningScaleFactor, timestampToPosition} from './utils/positioning';\nimport {\n intersectionOfRects,\n rectContainsPoint,\n rectEqualToRect,\n View,\n} from '../view-base';\nimport {BORDER_SIZE, COLORS, SNAPSHOT_SCRUBBER_SIZE} from './constants';\n\ntype OnHover = (node: Snapshot | null) => void;\n\nexport class SnapshotsView extends View {\n _hoverLocation: Point | null = null;\n _intrinsicSize: Size;\n _profilerData: TimelineData;\n\n onHover: OnHover | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n\n this._intrinsicSize = {\n width: profilerData.duration,\n height: profilerData.snapshotHeight,\n };\n this._profilerData = profilerData;\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n draw(context: CanvasRenderingContext2D) {\n const snapshotHeight = this._profilerData.snapshotHeight;\n const {visibleArea} = this;\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n const y = visibleArea.origin.y;\n\n let x = visibleArea.origin.x;\n\n // Rather than drawing each snapshot where it occurred,\n // draw them at fixed intervals and just show the nearest one.\n while (x < visibleArea.origin.x + visibleArea.size.width) {\n const snapshot = this._findClosestSnapshot(x);\n if (snapshot === null) {\n // This shold never happen.\n break;\n }\n\n const scaledHeight = snapshotHeight;\n const scaledWidth = (snapshot.width * snapshotHeight) / snapshot.height;\n\n const imageRect: Rect = {\n origin: {\n x,\n y,\n },\n size: {width: scaledWidth, height: scaledHeight},\n };\n\n // Lazily create and cache Image objects as we render a snapsho for the first time.\n if (snapshot.image === null) {\n const img = (snapshot.image = new Image());\n img.onload = () => {\n this._drawSnapshotImage(context, snapshot, imageRect);\n };\n img.src = snapshot.imageSource;\n } else {\n this._drawSnapshotImage(context, snapshot, imageRect);\n }\n\n x += scaledWidth + BORDER_SIZE;\n }\n\n const hoverLocation = this._hoverLocation;\n if (hoverLocation !== null) {\n const scrubberWidth = SNAPSHOT_SCRUBBER_SIZE + BORDER_SIZE * 2;\n const scrubberOffset = scrubberWidth / 2;\n\n context.fillStyle = COLORS.SCRUBBER_BORDER;\n context.fillRect(\n hoverLocation.x - scrubberOffset,\n visibleArea.origin.y,\n scrubberWidth,\n visibleArea.size.height,\n );\n\n context.fillStyle = COLORS.SCRUBBER_BACKGROUND;\n context.fillRect(\n hoverLocation.x - scrubberOffset + BORDER_SIZE,\n visibleArea.origin.y,\n SNAPSHOT_SCRUBBER_SIZE,\n visibleArea.size.height,\n );\n }\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n case 'wheel-control':\n case 'wheel-meta':\n case 'wheel-plain':\n case 'wheel-shift':\n this._updateHover(interaction.payload.location, viewRefs);\n break;\n }\n }\n\n _drawSnapshotImage(\n context: CanvasRenderingContext2D,\n snapshot: Snapshot,\n imageRect: Rect,\n ) {\n const visibleArea = this.visibleArea;\n\n // Prevent snapshot from visibly overflowing its container when clipped.\n // View clips by default, but since this view may draw async (on Image load) we re-clip.\n const shouldClip = !rectEqualToRect(imageRect, visibleArea);\n if (shouldClip) {\n const clippedRect = intersectionOfRects(imageRect, visibleArea);\n context.save();\n context.beginPath();\n context.rect(\n clippedRect.origin.x,\n clippedRect.origin.y,\n clippedRect.size.width,\n clippedRect.size.height,\n );\n context.closePath();\n context.clip();\n }\n\n context.fillStyle = COLORS.REACT_RESIZE_BAR_BORDER;\n context.fillRect(\n imageRect.origin.x,\n imageRect.origin.y,\n imageRect.size.width,\n imageRect.size.height,\n );\n\n // $FlowFixMe[incompatible-call] Flow doesn't know about the 9 argument variant of drawImage()\n context.drawImage(\n snapshot.image,\n\n // Image coordinates\n 0,\n 0,\n\n // Native image size\n snapshot.width,\n snapshot.height,\n\n // Canvas coordinates\n imageRect.origin.x + BORDER_SIZE,\n imageRect.origin.y + BORDER_SIZE,\n\n // Scaled image size\n imageRect.size.width - BORDER_SIZE * 2,\n imageRect.size.height - BORDER_SIZE * 2,\n );\n\n if (shouldClip) {\n context.restore();\n }\n }\n\n _findClosestSnapshot(x: number): Snapshot | null {\n const frame = this.frame;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n const snapshots = this._profilerData.snapshots;\n\n let startIndex = 0;\n let stopIndex = snapshots.length - 1;\n while (startIndex <= stopIndex) {\n const currentIndex = Math.floor((startIndex + stopIndex) / 2);\n const snapshot = snapshots[currentIndex];\n const {timestamp} = snapshot;\n\n const snapshotX = Math.floor(\n timestampToPosition(timestamp, scaleFactor, frame),\n );\n\n if (x < snapshotX) {\n stopIndex = currentIndex - 1;\n } else {\n startIndex = currentIndex + 1;\n }\n }\n\n return snapshots[stopIndex] || null;\n }\n\n /**\n * @private\n */\n _updateHover(location: Point, viewRefs: ViewRefs) {\n const {onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n if (!rectContainsPoint(location, visibleArea)) {\n if (this._hoverLocation !== null) {\n this._hoverLocation = null;\n\n this.setNeedsDisplay();\n }\n\n onHover(null);\n return;\n }\n\n const snapshot = this._findClosestSnapshot(location.x);\n if (snapshot !== null) {\n this._hoverLocation = location;\n\n onHover(snapshot);\n } else {\n this._hoverLocation = null;\n\n onHover(null);\n }\n\n // Any time the mouse moves within the boundaries of this view, we need to re-render.\n // This is because we draw a scrubbing bar that shows the location corresponding to the current tooltip.\n this.setNeedsDisplay();\n }\n}\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 * @flow\n */\n\nimport type {SuspenseEvent, TimelineData} from '../types';\nimport type {\n Interaction,\n IntrinsicSize,\n MouseMoveInteraction,\n Rect,\n ViewRefs,\n} from '../view-base';\n\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n widthToDuration,\n} from './utils/positioning';\nimport {drawText} from './utils/text';\nimport {formatDuration} from '../utils/formatting';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {\n BORDER_SIZE,\n COLORS,\n PENDING_SUSPENSE_EVENT_SIZE,\n SUSPENSE_EVENT_HEIGHT,\n} from './constants';\n\nconst ROW_WITH_BORDER_HEIGHT = SUSPENSE_EVENT_HEIGHT + BORDER_SIZE;\nconst MAX_ROWS_TO_SHOW_INITIALLY = 3;\n\nexport class SuspenseEventsView extends View {\n _depthToSuspenseEvent: Map<number, SuspenseEvent[]>;\n _hoveredEvent: SuspenseEvent | null = null;\n _intrinsicSize: IntrinsicSize;\n _maxDepth: number = 0;\n _profilerData: TimelineData;\n\n onHover: ((event: SuspenseEvent | null) => void) | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n\n this._profilerData = profilerData;\n\n this._performPreflightComputations();\n }\n\n _performPreflightComputations() {\n this._depthToSuspenseEvent = new Map();\n\n const {duration, suspenseEvents} = this._profilerData;\n\n suspenseEvents.forEach(event => {\n const depth = event.depth;\n\n this._maxDepth = Math.max(this._maxDepth, depth);\n\n if (!this._depthToSuspenseEvent.has(depth)) {\n this._depthToSuspenseEvent.set(depth, [event]);\n } else {\n // $FlowFixMe[incompatible-use] This is unnecessary.\n this._depthToSuspenseEvent.get(depth).push(event);\n }\n });\n\n this._intrinsicSize = {\n width: duration,\n height: (this._maxDepth + 1) * ROW_WITH_BORDER_HEIGHT,\n hideScrollBarIfLessThanHeight: ROW_WITH_BORDER_HEIGHT,\n maxInitialHeight: ROW_WITH_BORDER_HEIGHT * MAX_ROWS_TO_SHOW_INITIALLY,\n };\n }\n\n desiredSize(): IntrinsicSize {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(hoveredEvent: SuspenseEvent | null) {\n if (this._hoveredEvent === hoveredEvent) {\n return;\n }\n this._hoveredEvent = hoveredEvent;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `SuspenseEvent` as a box/span with text inside of it.\n */\n _drawSingleSuspenseEvent(\n context: CanvasRenderingContext2D,\n rect: Rect,\n event: SuspenseEvent,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame} = this;\n const {\n componentName,\n depth,\n duration,\n phase,\n promiseName,\n resolution,\n timestamp,\n warning,\n } = event;\n\n baseY += depth * ROW_WITH_BORDER_HEIGHT;\n\n let fillStyle = ((null: any): string);\n if (warning !== null) {\n fillStyle = showHoverHighlight\n ? COLORS.WARNING_BACKGROUND_HOVER\n : COLORS.WARNING_BACKGROUND;\n } else {\n switch (resolution) {\n case 'rejected':\n fillStyle = showHoverHighlight\n ? COLORS.REACT_SUSPENSE_REJECTED_EVENT_HOVER\n : COLORS.REACT_SUSPENSE_REJECTED_EVENT;\n break;\n case 'resolved':\n fillStyle = showHoverHighlight\n ? COLORS.REACT_SUSPENSE_RESOLVED_EVENT_HOVER\n : COLORS.REACT_SUSPENSE_RESOLVED_EVENT;\n break;\n case 'unresolved':\n fillStyle = showHoverHighlight\n ? COLORS.REACT_SUSPENSE_UNRESOLVED_EVENT_HOVER\n : COLORS.REACT_SUSPENSE_UNRESOLVED_EVENT;\n break;\n }\n }\n\n const xStart = timestampToPosition(timestamp, scaleFactor, frame);\n\n // Pending suspense events (ones that never resolved) won't have durations.\n // So instead we draw them as diamonds.\n if (duration === null) {\n const size = PENDING_SUSPENSE_EVENT_SIZE;\n const halfSize = size / 2;\n\n baseY += (SUSPENSE_EVENT_HEIGHT - PENDING_SUSPENSE_EVENT_SIZE) / 2;\n\n const y = baseY + halfSize;\n\n const suspenseRect: Rect = {\n origin: {\n x: xStart - halfSize,\n y: baseY,\n },\n size: {width: size, height: size},\n };\n if (!rectIntersectsRect(suspenseRect, rect)) {\n return; // Not in view\n }\n\n context.beginPath();\n context.fillStyle = fillStyle;\n context.moveTo(xStart, y - halfSize);\n context.lineTo(xStart + halfSize, y);\n context.lineTo(xStart, y + halfSize);\n context.lineTo(xStart - halfSize, y);\n context.fill();\n } else {\n const xStop = timestampToPosition(\n timestamp + duration,\n scaleFactor,\n frame,\n );\n const eventRect: Rect = {\n origin: {\n x: xStart,\n y: baseY,\n },\n size: {width: xStop - xStart, height: SUSPENSE_EVENT_HEIGHT},\n };\n if (!rectIntersectsRect(eventRect, rect)) {\n return; // Not in view\n }\n\n const width = durationToWidth(duration, scaleFactor);\n if (width < 1) {\n return; // Too small to render at this zoom level\n }\n\n const drawableRect = intersectionOfRects(eventRect, rect);\n context.beginPath();\n context.fillStyle = fillStyle;\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n let label = 'suspended';\n if (promiseName != null) {\n label = promiseName;\n } else if (componentName != null) {\n label = `${componentName} ${label}`;\n }\n if (phase !== null) {\n label += ` during ${phase}`;\n }\n if (resolution !== 'unresolved') {\n label += ` - ${formatDuration(duration)}`;\n }\n\n drawText(label, context, eventRect, drawableRect);\n }\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {suspenseEvents},\n _hoveredEvent,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.PRIORITY_BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw events\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n suspenseEvents.forEach(event => {\n this._drawSingleSuspenseEvent(\n context,\n visibleArea,\n event,\n frame.origin.y,\n scaleFactor,\n event === _hoveredEvent,\n );\n });\n\n // Render bottom borders.\n for (let i = 0; i <= this._maxDepth; i++) {\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + (i + 1) * ROW_WITH_BORDER_HEIGHT - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(\n borderFrame,\n visibleArea,\n );\n context.fillStyle = COLORS.REACT_WORK_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, _intrinsicSize, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const scaleFactor = positioningScaleFactor(_intrinsicSize.width, frame);\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n\n const adjustedCanvasMouseY = location.y - frame.origin.y;\n const depth = Math.floor(adjustedCanvasMouseY / ROW_WITH_BORDER_HEIGHT);\n const suspenseEventsAtDepth = this._depthToSuspenseEvent.get(depth);\n\n if (suspenseEventsAtDepth) {\n // Find the event being hovered over.\n for (let index = suspenseEventsAtDepth.length - 1; index >= 0; index--) {\n const suspenseEvent = suspenseEventsAtDepth[index];\n const {duration, timestamp} = suspenseEvent;\n\n if (duration === null) {\n const timestampAllowance = widthToDuration(\n PENDING_SUSPENSE_EVENT_SIZE / 2,\n scaleFactor,\n );\n\n if (\n timestamp - timestampAllowance <= hoverTimestamp &&\n hoverTimestamp <= timestamp + timestampAllowance\n ) {\n this.currentCursor = 'context-menu';\n\n viewRefs.hoveredView = this;\n\n onHover(suspenseEvent);\n return;\n }\n } else if (\n hoverTimestamp >= timestamp &&\n hoverTimestamp <= timestamp + duration\n ) {\n this.currentCursor = 'context-menu';\n\n viewRefs.hoveredView = this;\n\n onHover(suspenseEvent);\n return;\n }\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {ThrownError, TimelineData} from '../types';\nimport type {\n Interaction,\n MouseMoveInteraction,\n Rect,\n Size,\n ViewRefs,\n} from '../view-base';\n\nimport {\n positioningScaleFactor,\n timestampToPosition,\n positionToTimestamp,\n widthToDuration,\n} from './utils/positioning';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {\n COLORS,\n TOP_ROW_PADDING,\n REACT_EVENT_DIAMETER,\n BORDER_SIZE,\n} from './constants';\n\nconst EVENT_ROW_HEIGHT_FIXED =\n TOP_ROW_PADDING + REACT_EVENT_DIAMETER + TOP_ROW_PADDING;\n\nexport class ThrownErrorsView extends View {\n _profilerData: TimelineData;\n _intrinsicSize: Size;\n _hoveredEvent: ThrownError | null = null;\n onHover: ((event: ThrownError | null) => void) | null = null;\n\n constructor(surface: Surface, frame: Rect, profilerData: TimelineData) {\n super(surface, frame);\n this._profilerData = profilerData;\n\n this._intrinsicSize = {\n width: this._profilerData.duration,\n height: EVENT_ROW_HEIGHT_FIXED,\n };\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n setHoveredEvent(hoveredEvent: ThrownError | null) {\n if (this._hoveredEvent === hoveredEvent) {\n return;\n }\n this._hoveredEvent = hoveredEvent;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `ThrownError` as a circle in the canvas.\n */\n _drawSingleThrownError(\n context: CanvasRenderingContext2D,\n rect: Rect,\n thrownError: ThrownError,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame} = this;\n const {timestamp} = thrownError;\n\n const x = timestampToPosition(timestamp, scaleFactor, frame);\n const radius = REACT_EVENT_DIAMETER / 2;\n const eventRect: Rect = {\n origin: {\n x: x - radius,\n y: baseY,\n },\n size: {width: REACT_EVENT_DIAMETER, height: REACT_EVENT_DIAMETER},\n };\n if (!rectIntersectsRect(eventRect, rect)) {\n return; // Not in view\n }\n\n const fillStyle = showHoverHighlight\n ? COLORS.REACT_THROWN_ERROR_HOVER\n : COLORS.REACT_THROWN_ERROR;\n\n const y = eventRect.origin.y + radius;\n\n context.beginPath();\n context.fillStyle = fillStyle;\n context.arc(x, y, radius, 0, 2 * Math.PI);\n context.fill();\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {\n frame,\n _profilerData: {thrownErrors},\n _hoveredEvent,\n visibleArea,\n } = this;\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw events\n const baseY = frame.origin.y + TOP_ROW_PADDING;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n const highlightedEvents: ThrownError[] = [];\n\n thrownErrors.forEach(thrownError => {\n if (thrownError === _hoveredEvent) {\n highlightedEvents.push(thrownError);\n return;\n }\n this._drawSingleThrownError(\n context,\n visibleArea,\n thrownError,\n baseY,\n scaleFactor,\n false,\n );\n });\n\n // Draw the highlighted items on top so they stand out.\n // This is helpful if there are multiple (overlapping) items close to each other.\n highlightedEvents.forEach(thrownError => {\n this._drawSingleThrownError(\n context,\n visibleArea,\n thrownError,\n baseY,\n scaleFactor,\n true,\n );\n });\n\n // Render bottom borders.\n // Propose border rect, check if intersects with `rect`, draw intersection.\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + EVENT_ROW_HEIGHT_FIXED - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(borderFrame, visibleArea);\n context.fillStyle = COLORS.REACT_WORK_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const {\n _profilerData: {thrownErrors},\n } = this;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n const eventTimestampAllowance = widthToDuration(\n REACT_EVENT_DIAMETER / 2,\n scaleFactor,\n );\n\n // Because data ranges may overlap, we want to find the last intersecting item.\n // This will always be the one on \"top\" (the one the user is hovering over).\n for (let index = thrownErrors.length - 1; index >= 0; index--) {\n const event = thrownErrors[index];\n const {timestamp} = event;\n\n if (\n timestamp - eventTimestampAllowance <= hoverTimestamp &&\n hoverTimestamp <= timestamp + eventTimestampAllowance\n ) {\n this.currentCursor = 'context-menu';\n viewRefs.hoveredView = this;\n onHover(event);\n return;\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport type {Rect, Size} from '../view-base';\n\nimport {\n durationToWidth,\n positioningScaleFactor,\n positionToTimestamp,\n timestampToPosition,\n} from './utils/positioning';\nimport {\n View,\n Surface,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {\n COLORS,\n INTERVAL_TIMES,\n LABEL_SIZE,\n FONT_SIZE,\n MARKER_HEIGHT,\n MARKER_TEXT_PADDING,\n MARKER_TICK_HEIGHT,\n MIN_INTERVAL_SIZE_PX,\n BORDER_SIZE,\n} from './constants';\n\nconst HEADER_HEIGHT_FIXED = MARKER_HEIGHT + BORDER_SIZE;\nconst LABEL_FIXED_WIDTH = LABEL_SIZE + BORDER_SIZE;\n\nexport class TimeAxisMarkersView extends View {\n _totalDuration: number;\n _intrinsicSize: Size;\n\n constructor(surface: Surface, frame: Rect, totalDuration: number) {\n super(surface, frame);\n this._totalDuration = totalDuration;\n this._intrinsicSize = {\n width: this._totalDuration,\n height: HEADER_HEIGHT_FIXED,\n };\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n // Time mark intervals vary based on the current zoom range and the time it represents.\n // In Chrome, these seem to range from 70-140 pixels wide.\n // Time wise, they represent intervals of e.g. 1s, 500ms, 200ms, 100ms, 50ms, 20ms.\n // Based on zoom, we should determine which amount to actually show.\n _getTimeTickInterval(scaleFactor: number): number {\n for (let i = 0; i < INTERVAL_TIMES.length; i++) {\n const currentInterval = INTERVAL_TIMES[i];\n const intervalWidth = durationToWidth(currentInterval, scaleFactor);\n if (intervalWidth > MIN_INTERVAL_SIZE_PX) {\n return currentInterval;\n }\n }\n return INTERVAL_TIMES[0];\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {frame, _intrinsicSize, visibleArea} = this;\n const clippedFrame = {\n origin: frame.origin,\n size: {\n width: frame.size.width,\n height: _intrinsicSize.height,\n },\n };\n const drawableRect = intersectionOfRects(clippedFrame, visibleArea);\n\n // Clear background\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n drawableRect.origin.x,\n drawableRect.origin.y,\n drawableRect.size.width,\n drawableRect.size.height,\n );\n\n const scaleFactor = positioningScaleFactor(\n _intrinsicSize.width,\n clippedFrame,\n );\n const interval = this._getTimeTickInterval(scaleFactor);\n const firstIntervalTimestamp =\n Math.ceil(\n positionToTimestamp(\n drawableRect.origin.x - LABEL_FIXED_WIDTH,\n scaleFactor,\n clippedFrame,\n ) / interval,\n ) * interval;\n\n for (\n let markerTimestamp = firstIntervalTimestamp;\n true;\n markerTimestamp += interval\n ) {\n if (markerTimestamp <= 0) {\n continue; // Timestamps < are probably a bug; markers at 0 are ugly.\n }\n\n const x = timestampToPosition(markerTimestamp, scaleFactor, clippedFrame);\n if (x > drawableRect.origin.x + drawableRect.size.width) {\n break; // Not in view\n }\n\n const markerLabel = Math.round(markerTimestamp);\n\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n x,\n drawableRect.origin.y + MARKER_HEIGHT - MARKER_TICK_HEIGHT,\n BORDER_SIZE,\n MARKER_TICK_HEIGHT,\n );\n\n context.fillStyle = COLORS.TIME_MARKER_LABEL;\n context.textAlign = 'right';\n context.textBaseline = 'middle';\n context.font = `${FONT_SIZE}px sans-serif`;\n context.fillText(\n `${markerLabel}ms`,\n x - MARKER_TEXT_PADDING,\n MARKER_HEIGHT / 2,\n );\n }\n\n // Render bottom border.\n // Propose border rect, check if intersects with `rect`, draw intersection.\n const borderFrame: Rect = {\n origin: {\n x: clippedFrame.origin.x,\n y: clippedFrame.origin.y + clippedFrame.size.height - BORDER_SIZE,\n },\n size: {\n width: clippedFrame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(borderFrame, visibleArea);\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n}\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 * @flow\n */\n\nimport type {UserTimingMark} from '../types';\nimport type {\n Interaction,\n MouseMoveInteraction,\n Rect,\n Size,\n ViewRefs,\n} from '../view-base';\n\nimport {\n positioningScaleFactor,\n timestampToPosition,\n positionToTimestamp,\n widthToDuration,\n} from './utils/positioning';\nimport {\n View,\n Surface,\n rectContainsPoint,\n rectIntersectsRect,\n intersectionOfRects,\n} from '../view-base';\nimport {\n COLORS,\n TOP_ROW_PADDING,\n USER_TIMING_MARK_SIZE,\n BORDER_SIZE,\n} from './constants';\n\nconst ROW_HEIGHT_FIXED =\n TOP_ROW_PADDING + USER_TIMING_MARK_SIZE + TOP_ROW_PADDING;\n\nexport class UserTimingMarksView extends View {\n _marks: UserTimingMark[];\n _intrinsicSize: Size;\n\n _hoveredMark: UserTimingMark | null = null;\n onHover: ((mark: UserTimingMark | null) => void) | null = null;\n\n constructor(\n surface: Surface,\n frame: Rect,\n marks: UserTimingMark[],\n duration: number,\n ) {\n super(surface, frame);\n this._marks = marks;\n\n this._intrinsicSize = {\n width: duration,\n height: ROW_HEIGHT_FIXED,\n };\n }\n\n desiredSize(): Size {\n return this._intrinsicSize;\n }\n\n setHoveredMark(hoveredMark: UserTimingMark | null) {\n if (this._hoveredMark === hoveredMark) {\n return;\n }\n this._hoveredMark = hoveredMark;\n this.setNeedsDisplay();\n }\n\n /**\n * Draw a single `UserTimingMark` as a circle in the canvas.\n */\n _drawSingleMark(\n context: CanvasRenderingContext2D,\n rect: Rect,\n mark: UserTimingMark,\n baseY: number,\n scaleFactor: number,\n showHoverHighlight: boolean,\n ) {\n const {frame} = this;\n const {timestamp} = mark;\n\n const x = timestampToPosition(timestamp, scaleFactor, frame);\n const size = USER_TIMING_MARK_SIZE;\n const halfSize = size / 2;\n\n const markRect: Rect = {\n origin: {\n x: x - halfSize,\n y: baseY,\n },\n size: {width: size, height: size},\n };\n if (!rectIntersectsRect(markRect, rect)) {\n return; // Not in view\n }\n\n const fillStyle = showHoverHighlight\n ? COLORS.USER_TIMING_HOVER\n : COLORS.USER_TIMING;\n\n if (fillStyle !== null) {\n const y = baseY + halfSize;\n\n context.beginPath();\n context.fillStyle = fillStyle;\n context.moveTo(x, y - halfSize);\n context.lineTo(x + halfSize, y);\n context.lineTo(x, y + halfSize);\n context.lineTo(x - halfSize, y);\n context.fill();\n }\n }\n\n draw(context: CanvasRenderingContext2D) {\n const {frame, _marks, _hoveredMark, visibleArea} = this;\n\n context.fillStyle = COLORS.BACKGROUND;\n context.fillRect(\n visibleArea.origin.x,\n visibleArea.origin.y,\n visibleArea.size.width,\n visibleArea.size.height,\n );\n\n // Draw marks\n const baseY = frame.origin.y + TOP_ROW_PADDING;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n\n _marks.forEach(mark => {\n if (mark === _hoveredMark) {\n return;\n }\n this._drawSingleMark(\n context,\n visibleArea,\n mark,\n baseY,\n scaleFactor,\n false,\n );\n });\n\n // Draw the hovered and/or selected items on top so they stand out.\n // This is helpful if there are multiple (overlapping) items close to each other.\n if (_hoveredMark !== null) {\n this._drawSingleMark(\n context,\n visibleArea,\n _hoveredMark,\n baseY,\n scaleFactor,\n true,\n );\n }\n\n // Render bottom border.\n // Propose border rect, check if intersects with `rect`, draw intersection.\n const borderFrame: Rect = {\n origin: {\n x: frame.origin.x,\n y: frame.origin.y + ROW_HEIGHT_FIXED - BORDER_SIZE,\n },\n size: {\n width: frame.size.width,\n height: BORDER_SIZE,\n },\n };\n if (rectIntersectsRect(borderFrame, visibleArea)) {\n const borderDrawableRect = intersectionOfRects(borderFrame, visibleArea);\n context.fillStyle = COLORS.PRIORITY_BORDER;\n context.fillRect(\n borderDrawableRect.origin.x,\n borderDrawableRect.origin.y,\n borderDrawableRect.size.width,\n borderDrawableRect.size.height,\n );\n }\n }\n\n /**\n * @private\n */\n _handleMouseMove(interaction: MouseMoveInteraction, viewRefs: ViewRefs) {\n const {frame, onHover, visibleArea} = this;\n if (!onHover) {\n return;\n }\n\n const {location} = interaction.payload;\n if (!rectContainsPoint(location, visibleArea)) {\n onHover(null);\n return;\n }\n\n const {_marks} = this;\n const scaleFactor = positioningScaleFactor(\n this._intrinsicSize.width,\n frame,\n );\n const hoverTimestamp = positionToTimestamp(location.x, scaleFactor, frame);\n const timestampAllowance = widthToDuration(\n USER_TIMING_MARK_SIZE / 2,\n scaleFactor,\n );\n\n // Because data ranges may overlap, we want to find the last intersecting item.\n // This will always be the one on \"top\" (the one the user is hovering over).\n for (let index = _marks.length - 1; index >= 0; index--) {\n const mark = _marks[index];\n const {timestamp} = mark;\n\n if (\n timestamp - timestampAllowance <= hoverTimestamp &&\n hoverTimestamp <= timestamp + timestampAllowance\n ) {\n viewRefs.hoveredView = this;\n onHover(mark);\n return;\n }\n }\n\n onHover(null);\n }\n\n handleInteraction(interaction: Interaction, viewRefs: ViewRefs) {\n switch (interaction.type) {\n case 'mousemove':\n this._handleMouseMove(interaction, viewRefs);\n break;\n }\n }\n}\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 * @flow\n */\n\nimport memoize from 'memoize-one';\n\nimport type {\n BatchUID,\n Milliseconds,\n ReactMeasure,\n TimelineData,\n} from '../types';\n\nfunction unmemoizedGetBatchRange(\n batchUID: BatchUID,\n data: TimelineData,\n minStartTime?: number = 0,\n): [Milliseconds, Milliseconds] {\n const measures = data.batchUIDToMeasuresMap.get(batchUID);\n if (measures == null || measures.length === 0) {\n throw Error(`Could not find measures with batch UID \"${batchUID}\"`);\n }\n\n const lastMeasure = ((measures[measures.length - 1]: any): ReactMeasure);\n const stopTime = lastMeasure.timestamp + lastMeasure.duration;\n\n if (stopTime < minStartTime) {\n return [0, 0];\n }\n\n let startTime = minStartTime;\n for (let index = 0; index < measures.length; index++) {\n const measure = measures[index];\n if (measure.timestamp >= minStartTime) {\n startTime = measure.timestamp;\n break;\n }\n }\n\n return [startTime, stopTime];\n}\n\nexport const getBatchRange: (\n batchUID: BatchUID,\n data: TimelineData,\n minStartTime?: number,\n) => [Milliseconds, Milliseconds] = memoize(unmemoizedGetBatchRange);\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 * @flow\n */\n\nimport {useLayoutEffect, useRef} from 'react';\n\nconst TOOLTIP_OFFSET_BOTTOM = 10;\nconst TOOLTIP_OFFSET_TOP = 5;\n\nexport default function useSmartTooltip({\n canvasRef,\n mouseX,\n mouseY,\n}: {\n canvasRef: {current: HTMLCanvasElement | null},\n mouseX: number,\n mouseY: number,\n}): {current: HTMLElement | null} {\n const ref = useRef<HTMLElement | null>(null);\n\n // HACK: Browser extension reports window.innerHeight of 0,\n // so we fallback to using the tooltip target element.\n let height = window.innerHeight;\n let width = window.innerWidth;\n const target = canvasRef.current;\n if (target !== null) {\n const rect = target.getBoundingClientRect();\n height = rect.top + rect.height;\n width = rect.left + rect.width;\n }\n\n useLayoutEffect(() => {\n const element = ref.current;\n if (element !== null) {\n // Let's check the vertical position.\n if (mouseY + TOOLTIP_OFFSET_BOTTOM + element.offsetHeight >= height) {\n // The tooltip doesn't fit below the mouse cursor (which is our\n // default strategy). Therefore we try to position it either above the\n // mouse cursor or finally aligned with the window's top edge.\n if (mouseY - TOOLTIP_OFFSET_TOP - element.offsetHeight > 0) {\n // We position the tooltip above the mouse cursor if it fits there.\n element.style.top = `${\n mouseY - element.offsetHeight - TOOLTIP_OFFSET_TOP\n }px`;\n } else {\n // Otherwise we align the tooltip with the window's top edge.\n element.style.top = '0px';\n }\n } else {\n element.style.top = `${mouseY + TOOLTIP_OFFSET_BOTTOM}px`;\n }\n\n // Now let's check the horizontal position.\n if (mouseX + TOOLTIP_OFFSET_BOTTOM + element.offsetWidth >= width) {\n // The tooltip doesn't fit at the right of the mouse cursor (which is\n // our default strategy). Therefore we try to position it either at the\n // left of the mouse cursor or finally aligned with the window's left\n // edge.\n if (mouseX - TOOLTIP_OFFSET_TOP - element.offsetWidth > 0) {\n // We position the tooltip at the left of the mouse cursor if it fits\n // there.\n element.style.left = `${\n mouseX - element.offsetWidth - TOOLTIP_OFFSET_TOP\n }px`;\n } else {\n // Otherwise, align the tooltip with the window's left edge.\n element.style.left = '0px';\n }\n } else {\n element.style.left = `${mouseX + TOOLTIP_OFFSET_BOTTOM}px`;\n }\n }\n });\n\n return ref;\n}\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 * @flow\n */\n\nimport type {Point} from './view-base';\nimport type {\n FlamechartStackFrame,\n NativeEvent,\n NetworkMeasure,\n ReactComponentMeasure,\n ReactEventInfo,\n ReactMeasure,\n ReactMeasureType,\n SchedulingEvent,\n Snapshot,\n SuspenseEvent,\n ThrownError,\n TimelineData,\n UserTimingMark,\n} from './types';\n\nimport * as React from 'react';\nimport {\n formatDuration,\n formatTimestamp,\n trimString,\n getSchedulingEventLabel,\n} from './utils/formatting';\nimport {getBatchRange} from './utils/getBatchRange';\nimport useSmartTooltip from './utils/useSmartTooltip';\nimport styles from './EventTooltip.css';\n\nconst MAX_TOOLTIP_TEXT_LENGTH = 60;\n\ntype Props = {\n canvasRef: {current: HTMLCanvasElement | null},\n data: TimelineData,\n height: number,\n hoveredEvent: ReactEventInfo | null,\n origin: Point,\n width: number,\n};\n\nfunction getReactMeasureLabel(type: ReactMeasureType): string | null {\n switch (type) {\n case 'commit':\n return 'react commit';\n case 'render-idle':\n return 'react idle';\n case 'render':\n return 'react render';\n case 'layout-effects':\n return 'react layout effects';\n case 'passive-effects':\n return 'react passive effects';\n default:\n return null;\n }\n}\n\nexport default function EventTooltip({\n canvasRef,\n data,\n height,\n hoveredEvent,\n origin,\n width,\n}: Props): React.Node {\n const ref = useSmartTooltip({\n canvasRef,\n mouseX: origin.x,\n mouseY: origin.y,\n });\n\n if (hoveredEvent === null) {\n return null;\n }\n\n const {\n componentMeasure,\n flamechartStackFrame,\n measure,\n nativeEvent,\n networkMeasure,\n schedulingEvent,\n snapshot,\n suspenseEvent,\n thrownError,\n userTimingMark,\n } = hoveredEvent;\n\n let content = null;\n if (componentMeasure !== null) {\n content = (\n <TooltipReactComponentMeasure componentMeasure={componentMeasure} />\n );\n } else if (nativeEvent !== null) {\n content = <TooltipNativeEvent nativeEvent={nativeEvent} />;\n } else if (networkMeasure !== null) {\n content = <TooltipNetworkMeasure networkMeasure={networkMeasure} />;\n } else if (schedulingEvent !== null) {\n content = (\n <TooltipSchedulingEvent data={data} schedulingEvent={schedulingEvent} />\n );\n } else if (snapshot !== null) {\n content = (\n <TooltipSnapshot height={height} snapshot={snapshot} width={width} />\n );\n } else if (suspenseEvent !== null) {\n content = <TooltipSuspenseEvent suspenseEvent={suspenseEvent} />;\n } else if (measure !== null) {\n content = <TooltipReactMeasure data={data} measure={measure} />;\n } else if (flamechartStackFrame !== null) {\n content = <TooltipFlamechartNode stackFrame={flamechartStackFrame} />;\n } else if (userTimingMark !== null) {\n content = <TooltipUserTimingMark mark={userTimingMark} />;\n } else if (thrownError !== null) {\n content = <TooltipThrownError thrownError={thrownError} />;\n }\n\n if (content !== null) {\n return (\n <div className={styles.Tooltip} ref={ref}>\n {content}\n </div>\n );\n } else {\n return null;\n }\n}\n\nconst TooltipReactComponentMeasure = ({\n componentMeasure,\n}: {\n componentMeasure: ReactComponentMeasure,\n}) => {\n const {componentName, duration, timestamp, type, warning} = componentMeasure;\n\n let label = componentName;\n switch (type) {\n case 'render':\n label += ' rendered';\n break;\n case 'layout-effect-mount':\n label += ' mounted layout effect';\n break;\n case 'layout-effect-unmount':\n label += ' unmounted layout effect';\n break;\n case 'passive-effect-mount':\n label += ' mounted passive effect';\n break;\n case 'passive-effect-unmount':\n label += ' unmounted passive effect';\n break;\n }\n\n return (\n <>\n <div className={styles.TooltipSection}>\n {trimString(label, 768)}\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n <div className={styles.DetailsGridLabel}>Duration:</div>\n <div>{formatDuration(duration)}</div>\n </div>\n </div>\n {warning !== null && (\n <div className={styles.TooltipWarningSection}>\n <div className={styles.WarningText}>{warning}</div>\n </div>\n )}\n </>\n );\n};\n\nconst TooltipFlamechartNode = ({\n stackFrame,\n}: {\n stackFrame: FlamechartStackFrame,\n}) => {\n const {name, timestamp, duration, locationLine, locationColumn} = stackFrame;\n return (\n <div className={styles.TooltipSection}>\n <span className={styles.FlamechartStackFrameName}>{name}</span>\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n <div className={styles.DetailsGridLabel}>Duration:</div>\n <div>{formatDuration(duration)}</div>\n {(locationLine !== undefined || locationColumn !== undefined) && (\n <>\n <div className={styles.DetailsGridLabel}>Location:</div>\n <div>\n line {locationLine}, column {locationColumn}\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n\nconst TooltipNativeEvent = ({nativeEvent}: {nativeEvent: NativeEvent}) => {\n const {duration, timestamp, type, warning} = nativeEvent;\n\n return (\n <>\n <div className={styles.TooltipSection}>\n <span className={styles.NativeEventName}>{trimString(type, 768)}</span>\n event\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n <div className={styles.DetailsGridLabel}>Duration:</div>\n <div>{formatDuration(duration)}</div>\n </div>\n </div>\n {warning !== null && (\n <div className={styles.TooltipWarningSection}>\n <div className={styles.WarningText}>{warning}</div>\n </div>\n )}\n </>\n );\n};\n\nconst TooltipNetworkMeasure = ({\n networkMeasure,\n}: {\n networkMeasure: NetworkMeasure,\n}) => {\n const {\n finishTimestamp,\n lastReceivedDataTimestamp,\n priority,\n sendRequestTimestamp,\n url,\n } = networkMeasure;\n\n let urlToDisplay = url;\n if (urlToDisplay.length > MAX_TOOLTIP_TEXT_LENGTH) {\n const half = Math.floor(MAX_TOOLTIP_TEXT_LENGTH / 2);\n urlToDisplay = url.slice(0, half) + '…' + url.slice(url.length - half);\n }\n\n const timestampBegin = sendRequestTimestamp;\n const timestampEnd = finishTimestamp || lastReceivedDataTimestamp;\n const duration =\n timestampEnd > 0\n ? formatDuration(finishTimestamp - timestampBegin)\n : '(incomplete)';\n\n return (\n <div className={styles.SingleLineTextSection}>\n {duration} <span className={styles.DimText}>{priority}</span>{' '}\n {urlToDisplay}\n </div>\n );\n};\n\nconst TooltipSchedulingEvent = ({\n data,\n schedulingEvent,\n}: {\n data: TimelineData,\n schedulingEvent: SchedulingEvent,\n}) => {\n const label = getSchedulingEventLabel(schedulingEvent);\n if (!label) {\n if (__DEV__) {\n console.warn(\n 'Unexpected schedulingEvent type \"%s\"',\n schedulingEvent.type,\n );\n }\n return null;\n }\n\n let laneLabels = null;\n let lanes = null;\n switch (schedulingEvent.type) {\n case 'schedule-render':\n case 'schedule-state-update':\n case 'schedule-force-update':\n lanes = schedulingEvent.lanes;\n laneLabels = lanes.map(\n lane => ((data.laneToLabelMap.get(lane): any): string),\n );\n break;\n }\n\n const {componentName, timestamp, warning} = schedulingEvent;\n\n return (\n <>\n <div className={styles.TooltipSection}>\n {componentName && (\n <span className={styles.ComponentName}>\n {trimString(componentName, 100)}\n </span>\n )}\n {label}\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n {laneLabels !== null && lanes !== null && (\n <>\n <div className={styles.DetailsGridLabel}>Lanes:</div>\n <div>\n {laneLabels.join(', ')} ({lanes.join(', ')})\n </div>\n </>\n )}\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n </div>\n </div>\n {warning !== null && (\n <div className={styles.TooltipWarningSection}>\n <div className={styles.WarningText}>{warning}</div>\n </div>\n )}\n </>\n );\n};\n\nconst TooltipSnapshot = ({\n height,\n snapshot,\n width,\n}: {\n height: number,\n snapshot: Snapshot,\n width: number,\n}) => {\n const aspectRatio = snapshot.width / snapshot.height;\n\n // Zoomed in view should not be any bigger than the DevTools viewport.\n let safeWidth = snapshot.width;\n let safeHeight = snapshot.height;\n if (safeWidth > width) {\n safeWidth = width;\n safeHeight = safeWidth / aspectRatio;\n }\n if (safeHeight > height) {\n safeHeight = height;\n safeWidth = safeHeight * aspectRatio;\n }\n\n return (\n <img\n className={styles.Image}\n src={snapshot.imageSource}\n style={{height: safeHeight, width: safeWidth}}\n />\n );\n};\n\nconst TooltipSuspenseEvent = ({\n suspenseEvent,\n}: {\n suspenseEvent: SuspenseEvent,\n}) => {\n const {\n componentName,\n duration,\n phase,\n promiseName,\n resolution,\n timestamp,\n warning,\n } = suspenseEvent;\n\n let label = 'suspended';\n if (phase !== null) {\n label += ` during ${phase}`;\n }\n\n return (\n <>\n <div className={styles.TooltipSection}>\n {componentName && (\n <span className={styles.ComponentName}>\n {trimString(componentName, 100)}\n </span>\n )}\n {label}\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n {promiseName !== null && (\n <>\n <div className={styles.DetailsGridLabel}>Resource:</div>\n <div className={styles.DetailsGridLongValue}>{promiseName}</div>\n </>\n )}\n <div className={styles.DetailsGridLabel}>Status:</div>\n <div>{resolution}</div>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n {duration !== null && (\n <>\n <div className={styles.DetailsGridLabel}>Duration:</div>\n <div>{formatDuration(duration)}</div>\n </>\n )}\n </div>\n </div>\n {warning !== null && (\n <div className={styles.TooltipWarningSection}>\n <div className={styles.WarningText}>{warning}</div>\n </div>\n )}\n </>\n );\n};\n\nconst TooltipReactMeasure = ({\n data,\n measure,\n}: {\n data: TimelineData,\n measure: ReactMeasure,\n}) => {\n const label = getReactMeasureLabel(measure.type);\n if (!label) {\n if (__DEV__) {\n console.warn('Unexpected measure type \"%s\"', measure.type);\n }\n return null;\n }\n\n const {batchUID, duration, timestamp, lanes} = measure;\n const [startTime, stopTime] = getBatchRange(batchUID, data);\n\n const laneLabels = lanes.map(\n lane => ((data.laneToLabelMap.get(lane): any): string),\n );\n\n return (\n <div className={styles.TooltipSection}>\n <span className={styles.ReactMeasureLabel}>{label}</span>\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n {measure.type !== 'render-idle' && (\n <>\n <div className={styles.DetailsGridLabel}>Duration:</div>\n <div>{formatDuration(duration)}</div>\n </>\n )}\n <div className={styles.DetailsGridLabel}>Batch duration:</div>\n <div>{formatDuration(stopTime - startTime)}</div>\n <div className={styles.DetailsGridLabel}>\n Lane{lanes.length === 1 ? '' : 's'}:\n </div>\n <div>\n {laneLabels.length > 0\n ? `${laneLabels.join(', ')} (${lanes.join(', ')})`\n : lanes.join(', ')}\n </div>\n </div>\n </div>\n );\n};\n\nconst TooltipUserTimingMark = ({mark}: {mark: UserTimingMark}) => {\n const {name, timestamp} = mark;\n return (\n <div className={styles.TooltipSection}>\n <span className={styles.UserTimingLabel}>{name}</span>\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n </div>\n </div>\n );\n};\n\nconst TooltipThrownError = ({thrownError}: {thrownError: ThrownError}) => {\n const {componentName, message, phase, timestamp} = thrownError;\n const label = `threw an error during ${phase}`;\n return (\n <div className={styles.TooltipSection}>\n {componentName && (\n <span className={styles.ComponentName}>\n {trimString(componentName, 100)}\n </span>\n )}\n <span className={styles.UserTimingLabel}>{label}</span>\n <div className={styles.Divider} />\n <div className={styles.DetailsGrid}>\n <div className={styles.DetailsGridLabel}>Timestamp:</div>\n <div>{formatTimestamp(timestamp)}</div>\n {message !== '' && (\n <>\n <div className={styles.DetailsGridLabel}>Error:</div>\n <div>{message}</div>\n </>\n )}\n </div>\n </div>\n );\n};\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 * @flow\n */\n\nimport type {ReactContext} from 'shared/ReactTypes';\n\nimport * as React from 'react';\nimport {createContext, useMemo, useReducer} from 'react';\n\nimport type {ReactComponentMeasure, TimelineData, ViewState} from './types';\n\ntype State = {\n profilerData: TimelineData,\n searchIndex: number,\n searchRegExp: RegExp | null,\n searchResults: Array<ReactComponentMeasure>,\n searchText: string,\n};\n\ntype ACTION_GO_TO_NEXT_SEARCH_RESULT = {\n type: 'GO_TO_NEXT_SEARCH_RESULT',\n};\ntype ACTION_GO_TO_PREVIOUS_SEARCH_RESULT = {\n type: 'GO_TO_PREVIOUS_SEARCH_RESULT',\n};\ntype ACTION_SET_SEARCH_TEXT = {\n type: 'SET_SEARCH_TEXT',\n payload: string,\n};\n\ntype Action =\n | ACTION_GO_TO_NEXT_SEARCH_RESULT\n | ACTION_GO_TO_PREVIOUS_SEARCH_RESULT\n | ACTION_SET_SEARCH_TEXT;\n\ntype Dispatch = (action: Action) => void;\n\nconst EMPTY_ARRAY: Array<ReactComponentMeasure> = [];\n\nfunction reducer(state: State, action: Action): State {\n let {searchIndex, searchRegExp, searchResults, searchText} = state;\n\n switch (action.type) {\n case 'GO_TO_NEXT_SEARCH_RESULT':\n if (searchResults.length > 0) {\n if (searchIndex === -1 || searchIndex + 1 === searchResults.length) {\n searchIndex = 0;\n } else {\n searchIndex++;\n }\n }\n break;\n case 'GO_TO_PREVIOUS_SEARCH_RESULT':\n if (searchResults.length > 0) {\n if (searchIndex === -1 || searchIndex === 0) {\n searchIndex = searchResults.length - 1;\n } else {\n searchIndex--;\n }\n }\n break;\n case 'SET_SEARCH_TEXT':\n searchText = action.payload;\n searchRegExp = null;\n searchResults = [];\n\n if (searchText !== '') {\n const safeSearchText = searchText.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n '\\\\$&',\n );\n searchRegExp = new RegExp(`^${safeSearchText}`, 'i');\n\n // If something is zoomed in on already, and the new search still contains it,\n // don't change the selection (even if overall search results set changes).\n let prevSelectedMeasure = null;\n if (searchIndex >= 0 && searchResults.length > searchIndex) {\n prevSelectedMeasure = searchResults[searchIndex];\n }\n\n const componentMeasures = state.profilerData.componentMeasures;\n\n let prevSelectedMeasureIndex = -1;\n\n for (let i = 0; i < componentMeasures.length; i++) {\n const componentMeasure = componentMeasures[i];\n if (componentMeasure.componentName.match(searchRegExp)) {\n searchResults.push(componentMeasure);\n\n if (componentMeasure === prevSelectedMeasure) {\n prevSelectedMeasureIndex = searchResults.length - 1;\n }\n }\n }\n\n searchIndex =\n prevSelectedMeasureIndex >= 0 ? prevSelectedMeasureIndex : 0;\n }\n break;\n }\n\n return {\n profilerData: state.profilerData,\n searchIndex,\n searchRegExp,\n searchResults,\n searchText,\n };\n}\n\nexport type Context = {\n profilerData: TimelineData,\n\n // Search state\n dispatch: Dispatch,\n searchIndex: number,\n searchRegExp: null,\n searchResults: Array<ReactComponentMeasure>,\n searchText: string,\n};\n\nconst TimelineSearchContext: ReactContext<Context> = createContext<Context>(\n ((null: any): Context),\n);\nTimelineSearchContext.displayName = 'TimelineSearchContext';\n\ntype Props = {\n children: React$Node,\n profilerData: TimelineData,\n viewState: ViewState,\n};\n\nfunction TimelineSearchContextController({\n children,\n profilerData,\n viewState,\n}: Props): React.Node {\n const [state, dispatch] = useReducer<State, State, Action>(reducer, {\n profilerData,\n searchIndex: -1,\n searchRegExp: null,\n searchResults: EMPTY_ARRAY,\n searchText: '',\n });\n\n const value = useMemo(\n () => ({\n ...state,\n dispatch,\n }),\n [state],\n );\n\n return (\n <TimelineSearchContext.Provider value={value}>\n {children}\n </TimelineSearchContext.Provider>\n );\n}\n\nexport {TimelineSearchContext, TimelineSearchContextController};\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useMemo} from 'react';\nimport {copy} from 'clipboard-js';\nimport prettyMilliseconds from 'pretty-ms';\n\nimport ContextMenuContainer from 'react-devtools-shared/src/devtools/ContextMenu/ContextMenuContainer';\n\nimport {getBatchRange} from './utils/getBatchRange';\nimport {moveStateToRange} from './view-base/utils/scrollState';\nimport {MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL} from './view-base/constants';\n\nimport type {\n ContextMenuItem,\n ContextMenuRef,\n} from 'react-devtools-shared/src/devtools/ContextMenu/types';\nimport type {\n ReactEventInfo,\n ReactMeasure,\n TimelineData,\n ViewState,\n} from './types';\n\nfunction zoomToBatch(\n data: TimelineData,\n measure: ReactMeasure,\n viewState: ViewState,\n width: number,\n) {\n const {batchUID} = measure;\n const [rangeStart, rangeEnd] = getBatchRange(batchUID, data);\n\n // Convert from time range to ScrollState\n const scrollState = moveStateToRange({\n state: viewState.horizontalScrollState,\n rangeStart,\n rangeEnd,\n contentLength: data.duration,\n\n minContentLength: data.duration * MIN_ZOOM_LEVEL,\n maxContentLength: data.duration * MAX_ZOOM_LEVEL,\n containerLength: width,\n });\n\n viewState.updateHorizontalScrollState(scrollState);\n}\n\nfunction copySummary(data: TimelineData, measure: ReactMeasure) {\n const {batchUID, duration, timestamp, type} = measure;\n\n const [startTime, stopTime] = getBatchRange(batchUID, data);\n\n copy(\n JSON.stringify({\n type,\n timestamp: prettyMilliseconds(timestamp),\n duration: prettyMilliseconds(duration),\n batchDuration: prettyMilliseconds(stopTime - startTime),\n }),\n );\n}\n\ntype Props = {\n canvasRef: {current: HTMLCanvasElement | null},\n hoveredEvent: ReactEventInfo | null,\n timelineData: TimelineData,\n viewState: ViewState,\n canvasWidth: number,\n closedMenuStub: React.Node,\n ref: ContextMenuRef,\n};\n\nexport default function CanvasPageContextMenu({\n canvasRef,\n timelineData,\n hoveredEvent,\n viewState,\n canvasWidth,\n closedMenuStub,\n ref,\n}: Props): React.Node {\n const menuItems = useMemo<ContextMenuItem[]>(() => {\n if (hoveredEvent == null) {\n return [];\n }\n\n const {\n componentMeasure,\n flamechartStackFrame,\n measure,\n networkMeasure,\n schedulingEvent,\n suspenseEvent,\n } = hoveredEvent;\n const items: ContextMenuItem[] = [];\n\n if (componentMeasure != null) {\n items.push({\n onClick: () => copy(componentMeasure.componentName),\n content: 'Copy component name',\n });\n }\n\n if (networkMeasure != null) {\n items.push({\n onClick: () => copy(networkMeasure.url),\n content: 'Copy URL',\n });\n }\n\n if (schedulingEvent != null) {\n items.push({\n onClick: () => copy(schedulingEvent.componentName),\n content: 'Copy component name',\n });\n }\n\n if (suspenseEvent != null) {\n items.push({\n onClick: () => copy(suspenseEvent.componentName),\n content: 'Copy component name',\n });\n }\n\n if (measure != null) {\n items.push(\n {\n onClick: () =>\n zoomToBatch(timelineData, measure, viewState, canvasWidth),\n content: 'Zoom to batch',\n },\n {\n onClick: () => copySummary(timelineData, measure),\n content: 'Copy summary',\n },\n );\n }\n\n if (flamechartStackFrame != null) {\n items.push(\n {\n onClick: () => copy(flamechartStackFrame.scriptUrl),\n content: 'Copy file path',\n },\n {\n onClick: () =>\n copy(\n `line ${flamechartStackFrame.locationLine ?? ''}, column ${\n flamechartStackFrame.locationColumn ?? ''\n }`,\n ),\n content: 'Copy location',\n },\n );\n }\n\n return items;\n }, [hoveredEvent, viewState, canvasWidth]);\n\n return (\n <ContextMenuContainer\n anchorElementRef={canvasRef}\n items={menuItems}\n closedMenuStub={closedMenuStub}\n ref={ref}\n />\n );\n}\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 * @flow\n */\n\nimport type {Interaction, Point} from './view-base';\nimport type {ReactEventInfo, TimelineData, ViewState} from './types';\n\nimport * as React from 'react';\nimport {\n Fragment,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useCallback,\n} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport {\n HorizontalPanAndZoomView,\n ResizableView,\n VerticalScrollOverflowView,\n Surface,\n VerticalScrollView,\n View,\n useCanvasInteraction,\n verticallyStackedLayout,\n zeroPoint,\n} from './view-base';\nimport {\n ComponentMeasuresView,\n FlamechartView,\n NativeEventsView,\n NetworkMeasuresView,\n ReactMeasuresView,\n SchedulingEventsView,\n SnapshotsView,\n SuspenseEventsView,\n ThrownErrorsView,\n TimeAxisMarkersView,\n UserTimingMarksView,\n} from './content-views';\nimport {COLORS} from './content-views/constants';\nimport {clampState, moveStateToRange} from './view-base/utils/scrollState';\nimport EventTooltip from './EventTooltip';\nimport {MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL} from './view-base/constants';\nimport {TimelineSearchContext} from './TimelineSearchContext';\nimport {TimelineContext} from './TimelineContext';\nimport CanvasPageContextMenu from './CanvasPageContextMenu';\n\nimport type {ContextMenuRef} from 'react-devtools-shared/src/devtools/ContextMenu/types';\n\nimport styles from './CanvasPage.css';\n\ntype Props = {\n profilerData: TimelineData,\n viewState: ViewState,\n};\n\nfunction CanvasPage({profilerData, viewState}: Props): React.Node {\n return (\n <div\n className={styles.CanvasPage}\n style={{backgroundColor: COLORS.BACKGROUND}}>\n <AutoSizer>\n {({height, width}: {height: number, width: number}) => (\n <AutoSizedCanvas\n data={profilerData}\n height={height}\n viewState={viewState}\n width={width}\n />\n )}\n </AutoSizer>\n </div>\n );\n}\n\nconst EMPTY_CONTEXT_INFO: ReactEventInfo = {\n componentMeasure: null,\n flamechartStackFrame: null,\n measure: null,\n nativeEvent: null,\n networkMeasure: null,\n schedulingEvent: null,\n snapshot: null,\n suspenseEvent: null,\n thrownError: null,\n userTimingMark: null,\n};\n\ntype AutoSizedCanvasProps = {\n data: TimelineData,\n height: number,\n viewState: ViewState,\n width: number,\n};\n\nfunction AutoSizedCanvas({\n data,\n height,\n viewState,\n width,\n}: AutoSizedCanvasProps) {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n\n const [mouseLocation, setMouseLocation] = useState<Point>(zeroPoint); // DOM coordinates\n const [hoveredEvent, setHoveredEvent] = useState<ReactEventInfo | null>(null);\n const [lastHoveredEvent, setLastHoveredEvent] =\n useState<ReactEventInfo | null>(null);\n\n const contextMenuRef: ContextMenuRef = useRef(null);\n\n const resetHoveredEvent = useCallback(\n () => setHoveredEvent(EMPTY_CONTEXT_INFO),\n [],\n );\n const updateHoveredEvent = useCallback(\n (event: ReactEventInfo) => {\n setHoveredEvent(event);\n\n // If menu is already open, don't update the hovered event data\n // So the same set of menu items is preserved until the current context menu is closed\n if (contextMenuRef.current?.isShown()) {\n return;\n }\n\n const {\n componentMeasure,\n flamechartStackFrame,\n measure,\n networkMeasure,\n schedulingEvent,\n suspenseEvent,\n } = event;\n\n // We have to keep track of last non-empty hovered event, since this will be the input for context menu items\n // We can't just pass hoveredEvent to ContextMenuContainer,\n // since it will be reset each time user moves mouse away from event object on the canvas\n if (\n componentMeasure != null ||\n flamechartStackFrame != null ||\n measure != null ||\n networkMeasure != null ||\n schedulingEvent != null ||\n suspenseEvent != null\n ) {\n setLastHoveredEvent(event);\n }\n },\n [contextMenuRef],\n );\n\n const {searchIndex, searchRegExp, searchResults} = useContext(\n TimelineSearchContext,\n );\n\n // This effect searches timeline data and scrolls to the next match wen search criteria change.\n useLayoutEffect(() => {\n viewState.updateSearchRegExpState(searchRegExp);\n\n const componentMeasureSearchResult =\n searchResults.length > 0 ? searchResults[searchIndex] : null;\n if (componentMeasureSearchResult != null) {\n const scrollState = moveStateToRange({\n state: viewState.horizontalScrollState,\n rangeStart: componentMeasureSearchResult.timestamp,\n rangeEnd:\n componentMeasureSearchResult.timestamp +\n componentMeasureSearchResult.duration,\n contentLength: data.duration,\n minContentLength: data.duration * MIN_ZOOM_LEVEL,\n maxContentLength: data.duration * MAX_ZOOM_LEVEL,\n containerLength: width,\n });\n\n viewState.updateHorizontalScrollState(scrollState);\n }\n\n surfaceRef.current.displayIfNeeded();\n }, [searchIndex, searchRegExp, searchResults, viewState]);\n\n const surfaceRef = useRef(new Surface(resetHoveredEvent));\n const userTimingMarksViewRef = useRef<null | UserTimingMarksView>(null);\n const nativeEventsViewRef = useRef<null | NativeEventsView>(null);\n const schedulingEventsViewRef = useRef<null | SchedulingEventsView>(null);\n const suspenseEventsViewRef = useRef<null | SuspenseEventsView>(null);\n const componentMeasuresViewRef = useRef<null | ComponentMeasuresView>(null);\n const reactMeasuresViewRef = useRef<null | ReactMeasuresView>(null);\n const flamechartViewRef = useRef<null | FlamechartView>(null);\n const networkMeasuresViewRef = useRef<null | NetworkMeasuresView>(null);\n const snapshotsViewRef = useRef<null | SnapshotsView>(null);\n const thrownErrorsViewRef = useRef<null | ThrownErrorsView>(null);\n\n useLayoutEffect(() => {\n const surface = surfaceRef.current;\n const defaultFrame = {origin: zeroPoint, size: {width, height}};\n\n // Auto hide context menu when panning.\n viewState.onHorizontalScrollStateChange(scrollState => {\n contextMenuRef.current?.hide();\n });\n\n // Initialize horizontal view state\n viewState.updateHorizontalScrollState(\n clampState({\n state: viewState.horizontalScrollState,\n minContentLength: data.duration * MIN_ZOOM_LEVEL,\n maxContentLength: data.duration * MAX_ZOOM_LEVEL,\n containerLength: defaultFrame.size.width,\n }),\n );\n\n function createViewHelper(\n view: View,\n label: string,\n shouldScrollVertically: boolean = false,\n shouldResizeVertically: boolean = false,\n ): View {\n let verticalScrollView = null;\n if (shouldScrollVertically) {\n verticalScrollView = new VerticalScrollView(\n surface,\n defaultFrame,\n view,\n viewState,\n label,\n );\n }\n\n const horizontalPanAndZoomView = new HorizontalPanAndZoomView(\n surface,\n defaultFrame,\n verticalScrollView !== null ? verticalScrollView : view,\n data.duration,\n viewState,\n );\n\n let resizableView = null;\n if (shouldResizeVertically) {\n resizableView = new ResizableView(\n surface,\n defaultFrame,\n horizontalPanAndZoomView,\n viewState,\n canvasRef,\n label,\n );\n }\n\n return resizableView || horizontalPanAndZoomView;\n }\n\n const axisMarkersView = new TimeAxisMarkersView(\n surface,\n defaultFrame,\n data.duration,\n );\n const axisMarkersViewWrapper = createViewHelper(axisMarkersView, 'time');\n\n let userTimingMarksViewWrapper = null;\n if (data.otherUserTimingMarks.length > 0) {\n const userTimingMarksView = new UserTimingMarksView(\n surface,\n defaultFrame,\n data.otherUserTimingMarks,\n data.duration,\n );\n userTimingMarksViewRef.current = userTimingMarksView;\n userTimingMarksViewWrapper = createViewHelper(\n userTimingMarksView,\n 'user timing api',\n );\n }\n\n let nativeEventsViewWrapper = null;\n if (data.nativeEvents.length > 0) {\n const nativeEventsView = new NativeEventsView(\n surface,\n defaultFrame,\n data,\n );\n nativeEventsViewRef.current = nativeEventsView;\n nativeEventsViewWrapper = createViewHelper(\n nativeEventsView,\n 'events',\n true,\n true,\n );\n }\n\n let thrownErrorsViewWrapper = null;\n if (data.thrownErrors.length > 0) {\n const thrownErrorsView = new ThrownErrorsView(\n surface,\n defaultFrame,\n data,\n );\n thrownErrorsViewRef.current = thrownErrorsView;\n thrownErrorsViewWrapper = createViewHelper(\n thrownErrorsView,\n 'thrown errors',\n );\n }\n\n let schedulingEventsViewWrapper = null;\n if (data.schedulingEvents.length > 0) {\n const schedulingEventsView = new SchedulingEventsView(\n surface,\n defaultFrame,\n data,\n );\n schedulingEventsViewRef.current = schedulingEventsView;\n schedulingEventsViewWrapper = createViewHelper(\n schedulingEventsView,\n 'react updates',\n );\n }\n\n let suspenseEventsViewWrapper = null;\n if (data.suspenseEvents.length > 0) {\n const suspenseEventsView = new SuspenseEventsView(\n surface,\n defaultFrame,\n data,\n );\n suspenseEventsViewRef.current = suspenseEventsView;\n suspenseEventsViewWrapper = createViewHelper(\n suspenseEventsView,\n 'suspense',\n true,\n true,\n );\n }\n\n const reactMeasuresView = new ReactMeasuresView(\n surface,\n defaultFrame,\n data,\n );\n reactMeasuresViewRef.current = reactMeasuresView;\n const reactMeasuresViewWrapper = createViewHelper(\n reactMeasuresView,\n 'react scheduling',\n true,\n true,\n );\n\n let componentMeasuresViewWrapper = null;\n if (data.componentMeasures.length > 0) {\n const componentMeasuresView = new ComponentMeasuresView(\n surface,\n defaultFrame,\n data,\n viewState,\n );\n componentMeasuresViewRef.current = componentMeasuresView;\n componentMeasuresViewWrapper = createViewHelper(\n componentMeasuresView,\n 'react components',\n );\n }\n\n let snapshotsViewWrapper = null;\n if (data.snapshots.length > 0) {\n const snapshotsView = new SnapshotsView(surface, defaultFrame, data);\n snapshotsViewRef.current = snapshotsView;\n snapshotsViewWrapper = createViewHelper(\n snapshotsView,\n 'snapshots',\n true,\n true,\n );\n }\n\n let networkMeasuresViewWrapper = null;\n if (data.snapshots.length > 0) {\n const networkMeasuresView = new NetworkMeasuresView(\n surface,\n defaultFrame,\n data,\n );\n networkMeasuresViewRef.current = networkMeasuresView;\n networkMeasuresViewWrapper = createViewHelper(\n networkMeasuresView,\n 'network',\n true,\n true,\n );\n }\n\n let flamechartViewWrapper = null;\n if (data.flamechart.length > 0) {\n const flamechartView = new FlamechartView(\n surface,\n defaultFrame,\n data.flamechart,\n data.internalModuleSourceToRanges,\n data.duration,\n );\n flamechartViewRef.current = flamechartView;\n flamechartViewWrapper = createViewHelper(\n flamechartView,\n 'flamechart',\n true,\n true,\n );\n }\n\n // Root view contains all of the sub views defined above.\n // The order we add them below determines their vertical position.\n const rootView = new View(\n surface,\n defaultFrame,\n verticallyStackedLayout,\n defaultFrame,\n COLORS.BACKGROUND,\n );\n rootView.addSubview(axisMarkersViewWrapper);\n if (userTimingMarksViewWrapper !== null) {\n rootView.addSubview(userTimingMarksViewWrapper);\n }\n if (nativeEventsViewWrapper !== null) {\n rootView.addSubview(nativeEventsViewWrapper);\n }\n if (schedulingEventsViewWrapper !== null) {\n rootView.addSubview(schedulingEventsViewWrapper);\n }\n if (thrownErrorsViewWrapper !== null) {\n rootView.addSubview(thrownErrorsViewWrapper);\n }\n if (suspenseEventsViewWrapper !== null) {\n rootView.addSubview(suspenseEventsViewWrapper);\n }\n if (reactMeasuresViewWrapper !== null) {\n rootView.addSubview(reactMeasuresViewWrapper);\n }\n if (componentMeasuresViewWrapper !== null) {\n rootView.addSubview(componentMeasuresViewWrapper);\n }\n if (snapshotsViewWrapper !== null) {\n rootView.addSubview(snapshotsViewWrapper);\n }\n if (networkMeasuresViewWrapper !== null) {\n rootView.addSubview(networkMeasuresViewWrapper);\n }\n if (flamechartViewWrapper !== null) {\n rootView.addSubview(flamechartViewWrapper);\n }\n\n const verticalScrollOverflowView = new VerticalScrollOverflowView(\n surface,\n defaultFrame,\n rootView,\n viewState,\n );\n\n surfaceRef.current.rootView = verticalScrollOverflowView;\n }, [data]);\n\n useLayoutEffect(() => {\n if (canvasRef.current) {\n surfaceRef.current.setCanvas(canvasRef.current, {width, height});\n }\n }, [width, height]);\n\n const interactor = useCallback((interaction: Interaction) => {\n const canvas = canvasRef.current;\n if (canvas === null) {\n return;\n }\n\n const surface = surfaceRef.current;\n surface.handleInteraction(interaction);\n\n // Flush any display work that got queued up as part of the previous interaction.\n // Typically there should be no work, but certain interactions may need a second pass.\n // For example, the ResizableView may collapse/expand its contents,\n // which requires a second layout pass for an ancestor VerticalScrollOverflowView.\n //\n // TODO It would be nice to remove this call for performance reasons.\n // To do that, we'll need to address the UX bug with VerticalScrollOverflowView.\n // For more info see: https://github.com/facebook/react/pull/22005#issuecomment-896953399\n surface.displayIfNeeded();\n\n canvas.style.cursor = surface.getCurrentCursor() || 'default';\n\n // Defer drawing to canvas until React's commit phase, to avoid drawing\n // twice and to ensure that both the canvas and DOM elements managed by\n // React are in sync.\n setMouseLocation({\n x: interaction.payload.event.x,\n y: interaction.payload.event.y,\n });\n }, []);\n\n useCanvasInteraction(canvasRef, interactor);\n\n const {selectEvent} = useContext(TimelineContext);\n\n useEffect(() => {\n const {current: userTimingMarksView} = userTimingMarksViewRef;\n if (userTimingMarksView) {\n userTimingMarksView.onHover = userTimingMark => {\n if (!hoveredEvent || hoveredEvent.userTimingMark !== userTimingMark) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n userTimingMark,\n });\n }\n };\n }\n\n const {current: nativeEventsView} = nativeEventsViewRef;\n if (nativeEventsView) {\n nativeEventsView.onHover = nativeEvent => {\n if (!hoveredEvent || hoveredEvent.nativeEvent !== nativeEvent) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n nativeEvent,\n });\n }\n };\n }\n\n const {current: schedulingEventsView} = schedulingEventsViewRef;\n if (schedulingEventsView) {\n schedulingEventsView.onHover = schedulingEvent => {\n if (!hoveredEvent || hoveredEvent.schedulingEvent !== schedulingEvent) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n schedulingEvent,\n });\n }\n };\n schedulingEventsView.onClick = schedulingEvent => {\n selectEvent({\n ...EMPTY_CONTEXT_INFO,\n schedulingEvent,\n });\n };\n }\n\n const {current: suspenseEventsView} = suspenseEventsViewRef;\n if (suspenseEventsView) {\n suspenseEventsView.onHover = suspenseEvent => {\n if (!hoveredEvent || hoveredEvent.suspenseEvent !== suspenseEvent) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n suspenseEvent,\n });\n }\n };\n }\n\n const {current: reactMeasuresView} = reactMeasuresViewRef;\n if (reactMeasuresView) {\n reactMeasuresView.onHover = measure => {\n if (!hoveredEvent || hoveredEvent.measure !== measure) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n measure,\n });\n }\n };\n }\n\n const {current: componentMeasuresView} = componentMeasuresViewRef;\n if (componentMeasuresView) {\n componentMeasuresView.onHover = componentMeasure => {\n if (\n !hoveredEvent ||\n hoveredEvent.componentMeasure !== componentMeasure\n ) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n componentMeasure,\n });\n }\n };\n }\n\n const {current: snapshotsView} = snapshotsViewRef;\n if (snapshotsView) {\n snapshotsView.onHover = snapshot => {\n if (!hoveredEvent || hoveredEvent.snapshot !== snapshot) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n snapshot,\n });\n }\n };\n }\n\n const {current: flamechartView} = flamechartViewRef;\n if (flamechartView) {\n flamechartView.setOnHover(flamechartStackFrame => {\n if (\n !hoveredEvent ||\n hoveredEvent.flamechartStackFrame !== flamechartStackFrame\n ) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n flamechartStackFrame,\n });\n }\n });\n }\n\n const {current: networkMeasuresView} = networkMeasuresViewRef;\n if (networkMeasuresView) {\n networkMeasuresView.onHover = networkMeasure => {\n if (!hoveredEvent || hoveredEvent.networkMeasure !== networkMeasure) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n networkMeasure,\n });\n }\n };\n }\n\n const {current: thrownErrorsView} = thrownErrorsViewRef;\n if (thrownErrorsView) {\n thrownErrorsView.onHover = thrownError => {\n if (!hoveredEvent || hoveredEvent.thrownError !== thrownError) {\n updateHoveredEvent({\n ...EMPTY_CONTEXT_INFO,\n thrownError,\n });\n }\n };\n }\n }, [\n hoveredEvent,\n data, // Attach onHover callbacks when views are re-created on data change\n ]);\n\n useLayoutEffect(() => {\n const userTimingMarksView = userTimingMarksViewRef.current;\n if (userTimingMarksView) {\n userTimingMarksView.setHoveredMark(\n hoveredEvent ? hoveredEvent.userTimingMark : null,\n );\n }\n\n const nativeEventsView = nativeEventsViewRef.current;\n if (nativeEventsView) {\n nativeEventsView.setHoveredEvent(\n hoveredEvent ? hoveredEvent.nativeEvent : null,\n );\n }\n\n const schedulingEventsView = schedulingEventsViewRef.current;\n if (schedulingEventsView) {\n schedulingEventsView.setHoveredEvent(\n hoveredEvent ? hoveredEvent.schedulingEvent : null,\n );\n }\n\n const suspenseEventsView = suspenseEventsViewRef.current;\n if (suspenseEventsView) {\n suspenseEventsView.setHoveredEvent(\n hoveredEvent ? hoveredEvent.suspenseEvent : null,\n );\n }\n\n const reactMeasuresView = reactMeasuresViewRef.current;\n if (reactMeasuresView) {\n reactMeasuresView.setHoveredMeasure(\n hoveredEvent ? hoveredEvent.measure : null,\n );\n }\n\n const flamechartView = flamechartViewRef.current;\n if (flamechartView) {\n flamechartView.setHoveredFlamechartStackFrame(\n hoveredEvent ? hoveredEvent.flamechartStackFrame : null,\n );\n }\n\n const networkMeasuresView = networkMeasuresViewRef.current;\n if (networkMeasuresView) {\n networkMeasuresView.setHoveredEvent(\n hoveredEvent ? hoveredEvent.networkMeasure : null,\n );\n }\n }, [hoveredEvent]);\n\n // Draw to canvas in React's commit phase\n useLayoutEffect(() => {\n surfaceRef.current.displayIfNeeded();\n });\n\n return (\n <Fragment>\n <canvas ref={canvasRef} height={height} width={width} />\n\n <CanvasPageContextMenu\n canvasRef={canvasRef}\n hoveredEvent={lastHoveredEvent}\n timelineData={data}\n viewState={viewState}\n canvasWidth={width}\n closedMenuStub={\n !surfaceRef.current.hasActiveView() ? (\n <EventTooltip\n canvasRef={canvasRef}\n data={data}\n height={height}\n hoveredEvent={hoveredEvent}\n origin={mouseLocation}\n width={width}\n />\n ) : null\n }\n ref={contextMenuRef}\n />\n </Fragment>\n );\n}\n\nexport default CanvasPage;\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 * @flow\n */\n\nexport {\n COMFORTABLE_LINE_HEIGHT,\n COMPACT_LINE_HEIGHT,\n} from 'react-devtools-shared/src/devtools/constants.js';\n\nexport const REACT_TOTAL_NUM_LANES = 31;\n\n// Increment this number any time a backwards breaking change is made to the profiler metadata.\nexport const SCHEDULING_PROFILER_VERSION = 1;\n\nexport const SNAPSHOT_MAX_HEIGHT = 60;\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 * @flow\n */\n\n/**\n * An error thrown when an invalid profile could not be processed.\n */\nexport default class InvalidProfileError extends Error {}\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 * @flow\n */\n\nimport {\n importFromChromeTimeline,\n Flamechart as SpeedscopeFlamechart,\n} from '@elg/speedscope';\nimport type {TimelineEvent} from '@elg/speedscope';\nimport type {\n ErrorStackFrame,\n BatchUID,\n Flamechart,\n Milliseconds,\n NativeEvent,\n NetworkMeasure,\n Phase,\n ReactLane,\n ReactComponentMeasure,\n ReactComponentMeasureType,\n ReactMeasure,\n ReactMeasureType,\n TimelineData,\n SchedulingEvent,\n SuspenseEvent,\n} from '../types';\nimport {\n REACT_TOTAL_NUM_LANES,\n SCHEDULING_PROFILER_VERSION,\n SNAPSHOT_MAX_HEIGHT,\n} from '../constants';\nimport InvalidProfileError from './InvalidProfileError';\nimport {getBatchRange} from '../utils/getBatchRange';\nimport ErrorStackParser from 'error-stack-parser';\n\ntype MeasureStackElement = {\n type: ReactMeasureType,\n depth: number,\n measure: ReactMeasure,\n startTime: Milliseconds,\n stopTime?: Milliseconds,\n};\n\ntype ProcessorState = {\n asyncProcessingPromises: Promise<any>[],\n batchUID: BatchUID,\n currentReactComponentMeasure: ReactComponentMeasure | null,\n internalModuleCurrentStackFrame: ErrorStackFrame | null,\n internalModuleStackStringSet: Set<string>,\n measureStack: MeasureStackElement[],\n nativeEventStack: NativeEvent[],\n nextRenderShouldGenerateNewBatchID: boolean,\n potentialLongEvents: Array<[NativeEvent, BatchUID]>,\n potentialLongNestedUpdate: SchedulingEvent | null,\n potentialLongNestedUpdates: Array<[SchedulingEvent, BatchUID]>,\n potentialSuspenseEventsOutsideOfTransition: Array<\n [SuspenseEvent, ReactLane[]],\n >,\n requestIdToNetworkMeasureMap: Map<string, NetworkMeasure>,\n uidCounter: BatchUID,\n unresolvedSuspenseEvents: Map<string, SuspenseEvent>,\n};\n\nconst NATIVE_EVENT_DURATION_THRESHOLD = 20;\nconst NESTED_UPDATE_DURATION_THRESHOLD = 20;\n\nconst WARNING_STRINGS = {\n LONG_EVENT_HANDLER:\n 'An event handler scheduled a big update with React. Consider using the Transition API to defer some of this work.',\n NESTED_UPDATE:\n 'A big nested update was scheduled during layout. ' +\n 'Nested updates require React to re-render synchronously before the browser can paint. ' +\n 'Consider delaying this update by moving it to a passive effect (useEffect).',\n SUSPEND_DURING_UPDATE:\n 'A component suspended during an update which caused a fallback to be shown. ' +\n \"Consider using the Transition API to avoid hiding components after they've been mounted.\",\n};\n\n// Exported for tests\nexport function getLanesFromTransportDecimalBitmask(\n laneBitmaskString: string,\n): ReactLane[] {\n const laneBitmask = parseInt(laneBitmaskString, 10);\n\n // As negative numbers are stored in two's complement format, our bitmask\n // checks will be thrown off by them.\n if (laneBitmask < 0) {\n return [];\n }\n\n const lanes = [];\n let powersOfTwo = 0;\n while (powersOfTwo <= REACT_TOTAL_NUM_LANES) {\n if ((1 << powersOfTwo) & laneBitmask) {\n lanes.push(powersOfTwo);\n }\n powersOfTwo++;\n }\n return lanes;\n}\n\nfunction updateLaneToLabelMap(\n profilerData: TimelineData,\n laneLabelTuplesString: string,\n): void {\n // These marks appear multiple times in the data;\n // We only need to extact them once.\n if (profilerData.laneToLabelMap.size === 0) {\n const laneLabelTuples = laneLabelTuplesString.split(',');\n for (let laneIndex = 0; laneIndex < laneLabelTuples.length; laneIndex++) {\n // The numeric lane value (e.g. 64) isn't important.\n // The profiler parses and stores the lane's position within the bitmap,\n // (e.g. lane 1 is index 0, lane 16 is index 4).\n profilerData.laneToLabelMap.set(laneIndex, laneLabelTuples[laneIndex]);\n }\n }\n}\n\nlet profilerVersion = null;\n\nfunction getLastType(stack: $PropertyType<ProcessorState, 'measureStack'>) {\n if (stack.length > 0) {\n const {type} = stack[stack.length - 1];\n return type;\n }\n return null;\n}\n\nfunction getDepth(stack: $PropertyType<ProcessorState, 'measureStack'>) {\n if (stack.length > 0) {\n const {depth, type} = stack[stack.length - 1];\n return type === 'render-idle' ? depth : depth + 1;\n }\n return 0;\n}\n\nfunction markWorkStarted(\n type: ReactMeasureType,\n startTime: Milliseconds,\n lanes: ReactLane[],\n currentProfilerData: TimelineData,\n state: ProcessorState,\n) {\n const {batchUID, measureStack} = state;\n const depth = getDepth(measureStack);\n\n const measure: ReactMeasure = {\n type,\n batchUID,\n depth,\n lanes,\n timestamp: startTime,\n duration: 0,\n };\n\n state.measureStack.push({depth, measure, startTime, type});\n\n // This array is pre-initialized when the batchUID is generated.\n const measures = currentProfilerData.batchUIDToMeasuresMap.get(batchUID);\n if (measures != null) {\n measures.push(measure);\n } else {\n currentProfilerData.batchUIDToMeasuresMap.set(state.batchUID, [measure]);\n }\n\n // This array is pre-initialized before processing starts.\n lanes.forEach(lane => {\n ((currentProfilerData.laneToReactMeasureMap.get(\n lane,\n ): any): ReactMeasure[]).push(measure);\n });\n}\n\nfunction markWorkCompleted(\n type: ReactMeasureType,\n stopTime: Milliseconds,\n currentProfilerData: TimelineData,\n stack: $PropertyType<ProcessorState, 'measureStack'>,\n) {\n if (stack.length === 0) {\n console.error(\n 'Unexpected type \"%s\" completed at %sms while stack is empty.',\n type,\n stopTime,\n );\n // Ignore work \"completion\" user timing mark that doesn't complete anything\n return;\n }\n\n const last = stack[stack.length - 1];\n if (last.type !== type) {\n console.error(\n 'Unexpected type \"%s\" completed at %sms before \"%s\" completed.',\n type,\n stopTime,\n last.type,\n );\n }\n\n // $FlowFixMe[incompatible-use]\n const {measure, startTime} = stack.pop();\n if (!measure) {\n console.error('Could not find matching measure for type \"%s\".', type);\n }\n\n // $FlowFixMe[cannot-write] This property should not be writable outside of this function.\n measure.duration = stopTime - startTime;\n}\n\nfunction throwIfIncomplete(\n type: ReactMeasureType,\n stack: $PropertyType<ProcessorState, 'measureStack'>,\n) {\n const lastIndex = stack.length - 1;\n if (lastIndex >= 0) {\n const last = stack[lastIndex];\n if (last.stopTime === undefined && last.type === type) {\n throw new InvalidProfileError(\n `Unexpected type \"${type}\" started before \"${last.type}\" completed.`,\n );\n }\n }\n}\n\nfunction processEventDispatch(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const data = event.args.data;\n const type = data.type;\n\n if (type.startsWith('react-')) {\n const stackTrace = data.stackTrace;\n if (stackTrace) {\n const topFrame = stackTrace[stackTrace.length - 1];\n if (topFrame.url.includes('/react-dom.')) {\n // Filter out fake React events dispatched by invokeGuardedCallbackDev.\n return;\n }\n }\n }\n\n // Reduce noise from events like DOMActivate, load/unload, etc. which are usually not relevant\n if (\n type === 'blur' ||\n type === 'click' ||\n type === 'input' ||\n type.startsWith('focus') ||\n type.startsWith('key') ||\n type.startsWith('mouse') ||\n type.startsWith('pointer')\n ) {\n const duration = event.dur / 1000;\n\n let depth = 0;\n\n while (state.nativeEventStack.length > 0) {\n const prevNativeEvent =\n state.nativeEventStack[state.nativeEventStack.length - 1];\n const prevStopTime = prevNativeEvent.timestamp + prevNativeEvent.duration;\n\n if (timestamp < prevStopTime) {\n depth = prevNativeEvent.depth + 1;\n break;\n } else {\n state.nativeEventStack.pop();\n }\n }\n\n const nativeEvent = {\n depth,\n duration,\n timestamp,\n type,\n warning: null,\n };\n\n profilerData.nativeEvents.push(nativeEvent);\n\n // Keep track of curent event in case future ones overlap.\n // We separate them into different vertical lanes in this case.\n state.nativeEventStack.push(nativeEvent);\n }\n}\n\nfunction processResourceFinish(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const requestId = event.args.data.requestId;\n const networkMeasure = state.requestIdToNetworkMeasureMap.get(requestId);\n if (networkMeasure != null) {\n networkMeasure.finishTimestamp = timestamp;\n if (networkMeasure.firstReceivedDataTimestamp === 0) {\n networkMeasure.firstReceivedDataTimestamp = timestamp;\n }\n if (networkMeasure.lastReceivedDataTimestamp === 0) {\n networkMeasure.lastReceivedDataTimestamp = timestamp;\n }\n\n // Clean up now that the resource is done.\n state.requestIdToNetworkMeasureMap.delete(event.args.data.requestId);\n }\n}\n\nfunction processResourceReceivedData(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const requestId = event.args.data.requestId;\n const networkMeasure = state.requestIdToNetworkMeasureMap.get(requestId);\n if (networkMeasure != null) {\n if (networkMeasure.firstReceivedDataTimestamp === 0) {\n networkMeasure.firstReceivedDataTimestamp = timestamp;\n }\n networkMeasure.lastReceivedDataTimestamp = timestamp;\n networkMeasure.finishTimestamp = timestamp;\n }\n}\n\nfunction processResourceReceiveResponse(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const requestId = event.args.data.requestId;\n const networkMeasure = state.requestIdToNetworkMeasureMap.get(requestId);\n if (networkMeasure != null) {\n networkMeasure.receiveResponseTimestamp = timestamp;\n }\n}\n\nfunction processScreenshot(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const encodedSnapshot = event.args.snapshot; // Base 64 encoded\n\n const snapshot = {\n height: 0,\n image: null,\n imageSource: `data:image/png;base64,${encodedSnapshot}`,\n timestamp,\n width: 0,\n };\n\n // Delay processing until we've extracted snapshot dimensions.\n let resolveFn = ((null: any): Function);\n state.asyncProcessingPromises.push(\n new Promise(resolve => {\n resolveFn = resolve;\n }),\n );\n\n // Parse the Base64 image data to determine native size.\n // This will be used later to scale for display within the thumbnail strip.\n fetch(snapshot.imageSource)\n .then(response => response.blob())\n .then(blob => {\n // $FlowFixMe[cannot-resolve-name] createImageBitmap\n createImageBitmap(blob).then(bitmap => {\n snapshot.height = bitmap.height;\n snapshot.width = bitmap.width;\n\n resolveFn();\n });\n });\n\n profilerData.snapshots.push(snapshot);\n}\n\nfunction processResourceSendRequest(\n event: TimelineEvent,\n timestamp: Milliseconds,\n profilerData: TimelineData,\n state: ProcessorState,\n) {\n const data = event.args.data;\n const requestId = data.requestId;\n\n const availableDepths = new Array<boolean>(\n state.requestIdToNetworkMeasureMap.size + 1,\n ).fill(true);\n state.requestIdToNetworkMeasureMap.forEach(({depth}) => {\n availableDepths[depth] = false;\n });\n\n let depth = 0;\n for (let i = 0; i < availableDepths.length; i++) {\n if (availableDepths[i]) {\n depth = i;\n break;\n }\n }\n\n const networkMeasure: NetworkMeasure = {\n depth,\n finishTimestamp: 0,\n firstReceivedDataTimestamp: 0,\n lastReceivedDataTimestamp: 0,\n requestId,\n requestMethod: data.requestMethod,\n priority: data.priority,\n sendRequestTimestamp: timestamp,\n receiveResponseTimestamp: 0,\n url: data.url,\n };\n\n state.requestIdToNetworkMeasureMap.set(requestId, networkMeasure);\n\n profilerData.networkMeasures.push(networkMeasure);\n networkMeasure.sendRequestTimestamp = timestamp;\n}\n\nfunction processTimelineEvent(\n event: TimelineEvent,\n /** Finalized profiler data up to `event`. May be mutated. */\n currentProfilerData: TimelineData,\n /** Intermediate processor state. May be mutated. */\n state: ProcessorState,\n) {\n const {cat, name, ts, ph} = event;\n\n const startTime = (ts - currentProfilerData.startTime) / 1000;\n\n switch (cat) {\n case 'disabled-by-default-devtools.screenshot':\n processScreenshot(event, startTime, currentProfilerData, state);\n break;\n case 'devtools.timeline':\n switch (name) {\n case 'EventDispatch':\n processEventDispatch(event, startTime, currentProfilerData, state);\n break;\n case 'ResourceFinish':\n processResourceFinish(event, startTime, currentProfilerData, state);\n break;\n case 'ResourceReceivedData':\n processResourceReceivedData(\n event,\n startTime,\n currentProfilerData,\n state,\n );\n break;\n case 'ResourceReceiveResponse':\n processResourceReceiveResponse(\n event,\n startTime,\n currentProfilerData,\n state,\n );\n break;\n case 'ResourceSendRequest':\n processResourceSendRequest(\n event,\n startTime,\n currentProfilerData,\n state,\n );\n break;\n }\n break;\n case 'blink.user_timing':\n if (name.startsWith('--react-version-')) {\n const [reactVersion] = name.slice(16).split('-');\n currentProfilerData.reactVersion = reactVersion;\n } else if (name.startsWith('--profiler-version-')) {\n const [versionString] = name.slice(19).split('-');\n profilerVersion = parseInt(versionString, 10);\n if (profilerVersion !== SCHEDULING_PROFILER_VERSION) {\n throw new InvalidProfileError(\n `This version of profiling data (${versionString}) is not supported by the current profiler.`,\n );\n }\n } else if (name.startsWith('--react-lane-labels-')) {\n const [laneLabelTuplesString] = name.slice(20).split('-');\n updateLaneToLabelMap(currentProfilerData, laneLabelTuplesString);\n } else if (name.startsWith('--component-')) {\n processReactComponentMeasure(\n name,\n startTime,\n currentProfilerData,\n state,\n );\n } else if (name.startsWith('--schedule-render-')) {\n const [laneBitmaskString] = name.slice(18).split('-');\n\n currentProfilerData.schedulingEvents.push({\n type: 'schedule-render',\n lanes: getLanesFromTransportDecimalBitmask(laneBitmaskString),\n timestamp: startTime,\n warning: null,\n });\n } else if (name.startsWith('--schedule-forced-update-')) {\n const [laneBitmaskString, componentName] = name.slice(25).split('-');\n\n const forceUpdateEvent = {\n type: 'schedule-force-update',\n lanes: getLanesFromTransportDecimalBitmask(laneBitmaskString),\n componentName,\n timestamp: startTime,\n warning: null,\n };\n\n // If this is a nested update, make a note of it.\n // Once we're done processing events, we'll check to see if it was a long update and warn about it.\n if (state.measureStack.find(({type}) => type === 'commit')) {\n state.potentialLongNestedUpdate = forceUpdateEvent;\n }\n\n currentProfilerData.schedulingEvents.push(forceUpdateEvent);\n } else if (name.startsWith('--schedule-state-update-')) {\n const [laneBitmaskString, componentName] = name.slice(24).split('-');\n\n const stateUpdateEvent = {\n type: 'schedule-state-update',\n lanes: getLanesFromTransportDecimalBitmask(laneBitmaskString),\n componentName,\n timestamp: startTime,\n warning: null,\n };\n\n // If this is a nested update, make a note of it.\n // Once we're done processing events, we'll check to see if it was a long update and warn about it.\n if (state.measureStack.find(({type}) => type === 'commit')) {\n state.potentialLongNestedUpdate = stateUpdateEvent;\n }\n\n currentProfilerData.schedulingEvents.push(stateUpdateEvent);\n } else if (name.startsWith('--error-')) {\n const [componentName, phase, message] = name.slice(8).split('-');\n\n currentProfilerData.thrownErrors.push({\n componentName,\n message,\n phase: ((phase: any): Phase),\n timestamp: startTime,\n type: 'thrown-error',\n });\n } else if (name.startsWith('--suspense-suspend-')) {\n const [id, componentName, phase, laneBitmaskString, promiseName] = name\n .slice(19)\n .split('-');\n const lanes = getLanesFromTransportDecimalBitmask(laneBitmaskString);\n\n const availableDepths = new Array<boolean>(\n state.unresolvedSuspenseEvents.size + 1,\n ).fill(true);\n state.unresolvedSuspenseEvents.forEach(({depth}) => {\n availableDepths[depth] = false;\n });\n\n let depth = 0;\n for (let i = 0; i < availableDepths.length; i++) {\n if (availableDepths[i]) {\n depth = i;\n break;\n }\n }\n\n // TODO (timeline) Maybe we should calculate depth in post,\n // so unresolved Suspense requests don't take up space.\n // We can't know if they'll be resolved or not at this point.\n // We'll just give them a default (fake) duration width.\n\n const suspenseEvent = {\n componentName,\n depth,\n duration: null,\n id,\n phase: ((phase: any): Phase),\n promiseName: promiseName || null,\n resolution: 'unresolved',\n timestamp: startTime,\n type: 'suspense',\n warning: null,\n };\n\n if (phase === 'update') {\n // If a component suspended during an update, we should verify that it was during a transition.\n // We need the lane metadata to verify this though.\n // Since that data is only logged during commit, we may not have it yet.\n // Store these events for post-processing then.\n state.potentialSuspenseEventsOutsideOfTransition.push([\n suspenseEvent,\n lanes,\n ]);\n }\n\n currentProfilerData.suspenseEvents.push(suspenseEvent);\n state.unresolvedSuspenseEvents.set(id, suspenseEvent);\n } else if (name.startsWith('--suspense-resolved-')) {\n const [id] = name.slice(20).split('-');\n const suspenseEvent = state.unresolvedSuspenseEvents.get(id);\n if (suspenseEvent != null) {\n state.unresolvedSuspenseEvents.delete(id);\n\n suspenseEvent.duration = startTime - suspenseEvent.timestamp;\n suspenseEvent.resolution = 'resolved';\n }\n } else if (name.startsWith('--suspense-rejected-')) {\n const [id] = name.slice(20).split('-');\n const suspenseEvent = state.unresolvedSuspenseEvents.get(id);\n if (suspenseEvent != null) {\n state.unresolvedSuspenseEvents.delete(id);\n\n suspenseEvent.duration = startTime - suspenseEvent.timestamp;\n suspenseEvent.resolution = 'rejected';\n }\n } else if (name.startsWith('--render-start-')) {\n if (state.nextRenderShouldGenerateNewBatchID) {\n state.nextRenderShouldGenerateNewBatchID = false;\n state.batchUID = ((state.uidCounter++: any): BatchUID);\n }\n\n // If this render is the result of a nested update, make a note of it.\n // Once we're done processing events, we'll check to see if it was a long update and warn about it.\n if (state.potentialLongNestedUpdate !== null) {\n state.potentialLongNestedUpdates.push([\n state.potentialLongNestedUpdate,\n state.batchUID,\n ]);\n state.potentialLongNestedUpdate = null;\n }\n\n const [laneBitmaskString] = name.slice(15).split('-');\n\n throwIfIncomplete('render', state.measureStack);\n if (getLastType(state.measureStack) !== 'render-idle') {\n markWorkStarted(\n 'render-idle',\n startTime,\n getLanesFromTransportDecimalBitmask(laneBitmaskString),\n currentProfilerData,\n state,\n );\n }\n markWorkStarted(\n 'render',\n startTime,\n getLanesFromTransportDecimalBitmask(laneBitmaskString),\n currentProfilerData,\n state,\n );\n\n for (let i = 0; i < state.nativeEventStack.length; i++) {\n const nativeEvent = state.nativeEventStack[i];\n const stopTime = nativeEvent.timestamp + nativeEvent.duration;\n\n // If React work was scheduled during an event handler, and the event had a long duration,\n // it might be because the React render was long and stretched the event.\n // It might also be that the React work was short and that something else stretched the event.\n // Make a note of this event for now and we'll examine the batch of React render work later.\n // (We can't know until we're done processing the React update anyway.)\n if (stopTime > startTime) {\n state.potentialLongEvents.push([nativeEvent, state.batchUID]);\n }\n }\n } else if (\n name.startsWith('--render-stop') ||\n name.startsWith('--render-yield')\n ) {\n markWorkCompleted(\n 'render',\n startTime,\n currentProfilerData,\n state.measureStack,\n );\n } else if (name.startsWith('--commit-start-')) {\n state.nextRenderShouldGenerateNewBatchID = true;\n const [laneBitmaskString] = name.slice(15).split('-');\n\n markWorkStarted(\n 'commit',\n startTime,\n getLanesFromTransportDecimalBitmask(laneBitmaskString),\n currentProfilerData,\n state,\n );\n } else if (name.startsWith('--commit-stop')) {\n markWorkCompleted(\n 'commit',\n startTime,\n currentProfilerData,\n state.measureStack,\n );\n markWorkCompleted(\n 'render-idle',\n startTime,\n currentProfilerData,\n state.measureStack,\n );\n } else if (name.startsWith('--layout-effects-start-')) {\n const [laneBitmaskString] = name.slice(23).split('-');\n\n markWorkStarted(\n 'layout-effects',\n startTime,\n getLanesFromTransportDecimalBitmask(laneBitmaskString),\n currentProfilerData,\n state,\n );\n } else if (name.startsWith('--layout-effects-stop')) {\n markWorkCompleted(\n 'layout-effects',\n startTime,\n currentProfilerData,\n state.measureStack,\n );\n } else if (name.startsWith('--passive-effects-start-')) {\n const [laneBitmaskString] = name.slice(24).split('-');\n\n markWorkStarted(\n 'passive-effects',\n startTime,\n getLanesFromTransportDecimalBitmask(laneBitmaskString),\n currentProfilerData,\n state,\n );\n } else if (name.startsWith('--passive-effects-stop')) {\n markWorkCompleted(\n 'passive-effects',\n startTime,\n currentProfilerData,\n state.measureStack,\n );\n } else if (name.startsWith('--react-internal-module-start-')) {\n const stackFrameStart = name.slice(30);\n\n if (!state.internalModuleStackStringSet.has(stackFrameStart)) {\n state.internalModuleStackStringSet.add(stackFrameStart);\n\n const parsedStackFrameStart = parseStackFrame(stackFrameStart);\n\n state.internalModuleCurrentStackFrame = parsedStackFrameStart;\n }\n } else if (name.startsWith('--react-internal-module-stop-')) {\n const stackFrameStop = name.slice(29);\n\n if (!state.internalModuleStackStringSet.has(stackFrameStop)) {\n state.internalModuleStackStringSet.add(stackFrameStop);\n\n const parsedStackFrameStop = parseStackFrame(stackFrameStop);\n\n if (\n parsedStackFrameStop !== null &&\n state.internalModuleCurrentStackFrame !== null\n ) {\n const parsedStackFrameStart = state.internalModuleCurrentStackFrame;\n\n state.internalModuleCurrentStackFrame = null;\n\n const range = [parsedStackFrameStart, parsedStackFrameStop];\n const ranges = currentProfilerData.internalModuleSourceToRanges.get(\n parsedStackFrameStart.fileName,\n );\n if (ranges == null) {\n currentProfilerData.internalModuleSourceToRanges.set(\n parsedStackFrameStart.fileName,\n [range],\n );\n } else {\n ranges.push(range);\n }\n }\n }\n } else if (ph === 'R' || ph === 'n') {\n // User Timing mark\n currentProfilerData.otherUserTimingMarks.push({\n name,\n timestamp: startTime,\n });\n } else if (ph === 'b') {\n // TODO: Begin user timing measure\n } else if (ph === 'e') {\n // TODO: End user timing measure\n } else if (ph === 'i' || ph === 'I') {\n // Instant events.\n // Note that the capital \"I\" is a deprecated value that exists in Chrome Canary traces.\n } else {\n throw new InvalidProfileError(\n `Unrecognized event ${JSON.stringify(\n event,\n )}! This is likely a bug in this profiler tool.`,\n );\n }\n break;\n }\n}\n\nfunction assertNoOverlappingComponentMeasure(state: ProcessorState) {\n if (state.currentReactComponentMeasure !== null) {\n console.error(\n 'Component measure started while another measure in progress:',\n state.currentReactComponentMeasure,\n );\n }\n}\n\nfunction assertCurrentComponentMeasureType(\n state: ProcessorState,\n type: ReactComponentMeasureType,\n): void {\n if (state.currentReactComponentMeasure === null) {\n console.error(\n `Component measure type \"${type}\" stopped while no measure was in progress`,\n );\n } else if (state.currentReactComponentMeasure.type !== type) {\n console.error(\n `Component measure type \"${type}\" stopped while type ${state.currentReactComponentMeasure.type} in progress`,\n );\n }\n}\n\nfunction processReactComponentMeasure(\n name: string,\n startTime: Milliseconds,\n currentProfilerData: TimelineData,\n state: ProcessorState,\n): void {\n if (name.startsWith('--component-render-start-')) {\n const [componentName] = name.slice(25).split('-');\n\n assertNoOverlappingComponentMeasure(state);\n\n state.currentReactComponentMeasure = {\n componentName,\n timestamp: startTime,\n duration: 0,\n type: 'render',\n warning: null,\n };\n } else if (name === '--component-render-stop') {\n assertCurrentComponentMeasureType(state, 'render');\n\n if (state.currentReactComponentMeasure !== null) {\n const componentMeasure = state.currentReactComponentMeasure;\n componentMeasure.duration = startTime - componentMeasure.timestamp;\n\n state.currentReactComponentMeasure = null;\n\n currentProfilerData.componentMeasures.push(componentMeasure);\n }\n } else if (name.startsWith('--component-layout-effect-mount-start-')) {\n const [componentName] = name.slice(38).split('-');\n\n assertNoOverlappingComponentMeasure(state);\n\n state.currentReactComponentMeasure = {\n componentName,\n timestamp: startTime,\n duration: 0,\n type: 'layout-effect-mount',\n warning: null,\n };\n } else if (name === '--component-layout-effect-mount-stop') {\n assertCurrentComponentMeasureType(state, 'layout-effect-mount');\n\n if (state.currentReactComponentMeasure !== null) {\n const componentMeasure = state.currentReactComponentMeasure;\n componentMeasure.duration = startTime - componentMeasure.timestamp;\n\n state.currentReactComponentMeasure = null;\n\n currentProfilerData.componentMeasures.push(componentMeasure);\n }\n } else if (name.startsWith('--component-layout-effect-unmount-start-')) {\n const [componentName] = name.slice(40).split('-');\n\n assertNoOverlappingComponentMeasure(state);\n\n state.currentReactComponentMeasure = {\n componentName,\n timestamp: startTime,\n duration: 0,\n type: 'layout-effect-unmount',\n warning: null,\n };\n } else if (name === '--component-layout-effect-unmount-stop') {\n assertCurrentComponentMeasureType(state, 'layout-effect-unmount');\n\n if (state.currentReactComponentMeasure !== null) {\n const componentMeasure = state.currentReactComponentMeasure;\n componentMeasure.duration = startTime - componentMeasure.timestamp;\n\n state.currentReactComponentMeasure = null;\n\n currentProfilerData.componentMeasures.push(componentMeasure);\n }\n } else if (name.startsWith('--component-passive-effect-mount-start-')) {\n const [componentName] = name.slice(39).split('-');\n\n assertNoOverlappingComponentMeasure(state);\n\n state.currentReactComponentMeasure = {\n componentName,\n timestamp: startTime,\n duration: 0,\n type: 'passive-effect-mount',\n warning: null,\n };\n } else if (name === '--component-passive-effect-mount-stop') {\n assertCurrentComponentMeasureType(state, 'passive-effect-mount');\n\n if (state.currentReactComponentMeasure !== null) {\n const componentMeasure = state.currentReactComponentMeasure;\n componentMeasure.duration = startTime - componentMeasure.timestamp;\n\n state.currentReactComponentMeasure = null;\n\n currentProfilerData.componentMeasures.push(componentMeasure);\n }\n } else if (name.startsWith('--component-passive-effect-unmount-start-')) {\n const [componentName] = name.slice(41).split('-');\n\n assertNoOverlappingComponentMeasure(state);\n\n state.currentReactComponentMeasure = {\n componentName,\n timestamp: startTime,\n duration: 0,\n type: 'passive-effect-unmount',\n warning: null,\n };\n } else if (name === '--component-passive-effect-unmount-stop') {\n assertCurrentComponentMeasureType(state, 'passive-effect-unmount');\n\n if (state.currentReactComponentMeasure !== null) {\n const componentMeasure = state.currentReactComponentMeasure;\n componentMeasure.duration = startTime - componentMeasure.timestamp;\n\n state.currentReactComponentMeasure = null;\n\n currentProfilerData.componentMeasures.push(componentMeasure);\n }\n }\n}\n\nfunction preprocessFlamechart(rawData: TimelineEvent[]): Flamechart {\n let parsedData;\n try {\n parsedData = importFromChromeTimeline(rawData, 'react-devtools');\n } catch (error) {\n // Assume any Speedscope errors are caused by bad profiles\n const errorToRethrow = new InvalidProfileError(error.message);\n errorToRethrow.stack = error.stack;\n throw errorToRethrow;\n }\n\n const profile = parsedData.profiles[0]; // TODO: Choose the main CPU thread only\n\n const speedscopeFlamechart = new SpeedscopeFlamechart({\n // $FlowFixMe[method-unbinding]\n getTotalWeight: profile.getTotalWeight.bind(profile),\n // $FlowFixMe[method-unbinding]\n forEachCall: profile.forEachCall.bind(profile),\n // $FlowFixMe[method-unbinding]\n formatValue: profile.formatValue.bind(profile),\n getColorBucketForFrame: () => 0,\n });\n\n const flamechart: Flamechart = speedscopeFlamechart.getLayers().map(layer =>\n layer.map(\n ({\n start,\n end,\n node: {\n frame: {name, file, line, col},\n },\n }) => ({\n name,\n timestamp: start / 1000,\n duration: (end - start) / 1000,\n scriptUrl: file,\n locationLine: line,\n locationColumn: col,\n }),\n ),\n );\n\n return flamechart;\n}\n\nfunction parseStackFrame(stackFrame: string): ErrorStackFrame | null {\n const error = new Error();\n error.stack = stackFrame;\n\n const frames = ErrorStackParser.parse(error);\n\n return frames.length === 1 ? frames[0] : null;\n}\n\nexport default async function preprocessData(\n timeline: TimelineEvent[],\n): Promise<TimelineData> {\n const flamechart = preprocessFlamechart(timeline);\n\n const laneToReactMeasureMap: Map<ReactLane, Array<ReactMeasure>> = new Map();\n for (let lane: ReactLane = 0; lane < REACT_TOTAL_NUM_LANES; lane++) {\n laneToReactMeasureMap.set(lane, []);\n }\n\n const profilerData: TimelineData = {\n batchUIDToMeasuresMap: new Map(),\n componentMeasures: [],\n duration: 0,\n flamechart,\n internalModuleSourceToRanges: new Map(),\n laneToLabelMap: new Map(),\n laneToReactMeasureMap,\n nativeEvents: [],\n networkMeasures: [],\n otherUserTimingMarks: [],\n reactVersion: null,\n schedulingEvents: [],\n snapshots: [],\n snapshotHeight: 0,\n startTime: 0,\n suspenseEvents: [],\n thrownErrors: [],\n };\n\n // Sort `timeline`. JSON Array Format trace events need not be ordered. See:\n // https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.f2f0yd51wi15\n timeline = timeline.filter(Boolean).sort((a, b) => (a.ts > b.ts ? 1 : -1));\n\n // Events displayed in flamechart have timestamps relative to the profile\n // event's startTime. Source: https://github.com/v8/v8/blob/44bd8fd7/src/inspector/js_protocol.json#L1486\n //\n // We'll thus expect there to be a 'Profile' event; if there is not one, we\n // can deduce that there are no flame chart events. As we expect React\n // scheduling profiling user timing marks to be recorded together with browser\n // flame chart events, we can futher deduce that the data is invalid and we\n // don't bother finding React events.\n const indexOfProfileEvent = timeline.findIndex(\n event => event.name === 'Profile',\n );\n if (indexOfProfileEvent === -1) {\n return profilerData;\n }\n\n // Use Profile event's `startTime` as the start time to align with flame chart.\n // TODO: Remove assumption that there'll only be 1 'Profile' event. If this\n // assumption does not hold, the chart may start at the wrong time.\n profilerData.startTime = timeline[indexOfProfileEvent].args.data.startTime;\n profilerData.duration =\n (timeline[timeline.length - 1].ts - profilerData.startTime) / 1000;\n\n const state: ProcessorState = {\n asyncProcessingPromises: [],\n batchUID: 0,\n currentReactComponentMeasure: null,\n internalModuleCurrentStackFrame: null,\n internalModuleStackStringSet: new Set(),\n measureStack: [],\n nativeEventStack: [],\n nextRenderShouldGenerateNewBatchID: true,\n potentialLongEvents: [],\n potentialLongNestedUpdate: null,\n potentialLongNestedUpdates: [],\n potentialSuspenseEventsOutsideOfTransition: [],\n requestIdToNetworkMeasureMap: new Map(),\n uidCounter: 0,\n unresolvedSuspenseEvents: new Map(),\n };\n\n timeline.forEach(event => processTimelineEvent(event, profilerData, state));\n\n if (profilerVersion === null) {\n if (\n profilerData.schedulingEvents.length === 0 &&\n profilerData.batchUIDToMeasuresMap.size === 0\n ) {\n // No profiler version could indicate data was logged using an older build of React,\n // before an explicitly profiler version was included in the logging data.\n // But it could also indicate that the website was either not using React, or using a production build.\n // The easiest way to check for this case is to see if the data contains any scheduled updates or render work.\n throw new InvalidProfileError(\n 'No React marks were found in the provided profile.' +\n ' Please provide profiling data from an React application running in development or profiling mode.',\n );\n }\n\n throw new InvalidProfileError(\n `This version of profiling data is not supported by the current profiler.`,\n );\n }\n\n // Validate that all events and measures are complete\n const {measureStack} = state;\n if (measureStack.length > 0) {\n console.error('Incomplete events or measures', measureStack);\n }\n\n // Check for warnings.\n state.potentialLongEvents.forEach(([nativeEvent, batchUID]) => {\n // See how long the subsequent batch of React work was.\n // Ignore any work that was already started.\n const [startTime, stopTime] = getBatchRange(\n batchUID,\n profilerData,\n nativeEvent.timestamp,\n );\n if (stopTime - startTime > NATIVE_EVENT_DURATION_THRESHOLD) {\n nativeEvent.warning = WARNING_STRINGS.LONG_EVENT_HANDLER;\n }\n });\n state.potentialLongNestedUpdates.forEach(([schedulingEvent, batchUID]) => {\n // See how long the subsequent batch of React work was.\n const [startTime, stopTime] = getBatchRange(batchUID, profilerData);\n if (stopTime - startTime > NESTED_UPDATE_DURATION_THRESHOLD) {\n // Don't warn about transition updates scheduled during the commit phase.\n // e.g. useTransition, useDeferredValue\n // These are allowed to be long-running.\n if (\n !schedulingEvent.lanes.some(\n lane => profilerData.laneToLabelMap.get(lane) === 'Transition',\n )\n ) {\n // FIXME: This warning doesn't account for \"nested updates\" that are\n // spawned by useDeferredValue. Disabling temporarily until we figure\n // out the right way to handle this.\n // schedulingEvent.warning = WARNING_STRINGS.NESTED_UPDATE;\n }\n }\n });\n state.potentialSuspenseEventsOutsideOfTransition.forEach(\n ([suspenseEvent, lanes]) => {\n // HACK This is a bit gross but the numeric lane value might change between render versions.\n if (\n !lanes.some(\n lane => profilerData.laneToLabelMap.get(lane) === 'Transition',\n )\n ) {\n suspenseEvent.warning = WARNING_STRINGS.SUSPEND_DURING_UPDATE;\n }\n },\n );\n\n // Wait for any async processing to complete before returning.\n // Since processing is done in a worker, async work must complete before data is serialized and returned.\n await Promise.all(state.asyncProcessingPromises);\n\n // Now that all images have been loaded, let's figure out the display size we're going to use for our thumbnails:\n // both the ones rendered to the canvas and the ones shown on hover.\n if (profilerData.snapshots.length > 0) {\n // NOTE We assume a static window size here, which is not necessarily true but should be for most cases.\n // Regardless, Chrome also sets a single size/ratio and stick with it- so we'll do the same.\n const snapshot = profilerData.snapshots[0];\n\n profilerData.snapshotHeight = Math.min(\n snapshot.height,\n SNAPSHOT_MAX_HEIGHT,\n );\n }\n\n return profilerData;\n}\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 * @flow\n */\n\nimport nullthrows from 'nullthrows';\nimport InvalidProfileError from './InvalidProfileError';\n\nexport const readInputData = (file: File): Promise<string> => {\n if (!file.name.endsWith('.json')) {\n throw new InvalidProfileError(\n 'Invalid file type. Only JSON performance profiles are supported',\n );\n }\n\n const fileReader = new FileReader();\n\n return new Promise((resolve, reject) => {\n fileReader.onload = () => {\n const result = nullthrows(fileReader.result);\n if (typeof result === 'string') {\n resolve(result);\n }\n reject(new InvalidProfileError('Input file was not read as a string'));\n };\n\n fileReader.onerror = () => reject(fileReader.error);\n\n fileReader.readAsText(file);\n });\n};\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 * @flow\n */\n\nimport 'regenerator-runtime/runtime';\n\nimport type {TimelineEvent} from '@elg/speedscope';\nimport type {ImportWorkerOutputData} from './index';\n\nimport preprocessData from './preprocessData';\nimport {readInputData} from './readInputData';\nimport InvalidProfileError from './InvalidProfileError';\n\nexport async function importFile(file: File): Promise<ImportWorkerOutputData> {\n try {\n const readFile = await readInputData(file);\n const events: TimelineEvent[] = JSON.parse(readFile);\n if (events.length === 0) {\n throw new InvalidProfileError('No profiling data found in file.');\n }\n\n const processedData = await preprocessData(events);\n\n return {\n status: 'SUCCESS',\n processedData,\n };\n } catch (error) {\n if (error instanceof InvalidProfileError) {\n return {\n status: 'INVALID_PROFILE_ERROR',\n error,\n };\n } else {\n return {\n status: 'UNEXPECTED_ERROR',\n error,\n };\n }\n }\n}\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 * @flow\n */\n\n// This file uses workerize to load ./importFile.worker as a webworker and instanciates it,\n// exposing flow typed functions that can be used on other files.\n\nimport * as importFileModule from './importFile';\nimport WorkerizedImportFile from './importFile.worker';\n\nimport type {TimelineData} from '../types';\n\ntype ImportFileModule = typeof importFileModule;\n\nconst workerizedImportFile: ImportFileModule = window.Worker\n ? WorkerizedImportFile()\n : importFileModule;\n\nexport type ImportWorkerOutputData =\n | {status: 'SUCCESS', processedData: TimelineData}\n | {status: 'INVALID_PROFILE_ERROR', error: Error}\n | {status: 'UNEXPECTED_ERROR', error: Error};\n\nexport type importFileFunction = (file: File) => ImportWorkerOutputData;\n\nexport const importFile = (file: File): Promise<ImportWorkerOutputData> =>\n workerizedImportFile.importFile(file);\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 * @flow\n */\n\nimport type {Wakeable} from 'shared/ReactTypes';\nimport type {TimelineData} from './types';\n\nimport {importFile as importFileWorker} from './import-worker';\n\nconst Pending = 0;\nconst Resolved = 1;\nconst Rejected = 2;\n\ntype PendingRecord = {\n status: 0,\n value: Wakeable,\n};\n\ntype ResolvedRecord<T> = {\n status: 1,\n value: T,\n};\n\ntype RejectedRecord = {\n status: 2,\n value: Error,\n};\n\ntype Record<T> = PendingRecord | ResolvedRecord<T> | RejectedRecord;\n\n// This is intentionally a module-level Map, rather than a React-managed one.\n// Otherwise, refreshing the inspected element cache would also clear this cache.\n// Profiler file contents are static anyway.\nconst fileNameToProfilerDataMap: Map<string, Record<TimelineData>> = new Map();\n\nfunction readRecord<T>(record: Record<T>): ResolvedRecord<T> | RejectedRecord {\n if (record.status === Resolved) {\n // This is just a type refinement.\n return record;\n } else if (record.status === Rejected) {\n // This is just a type refinement.\n return record;\n } else {\n throw record.value;\n }\n}\n\nexport function importFile(file: File): TimelineData | Error {\n const fileName = file.name;\n let record = fileNameToProfilerDataMap.get(fileName);\n\n if (!record) {\n const callbacks = new Set<() => mixed>();\n const wakeable: Wakeable = {\n then(callback: () => mixed) {\n callbacks.add(callback);\n },\n\n // Optional property used by Timeline:\n displayName: `Importing file \"${fileName}\"`,\n };\n\n const wake = () => {\n // This assumes they won't throw.\n callbacks.forEach(callback => callback());\n callbacks.clear();\n };\n\n const newRecord: Record<TimelineData> = (record = {\n status: Pending,\n value: wakeable,\n });\n\n importFileWorker(file).then(data => {\n switch (data.status) {\n case 'SUCCESS':\n const resolvedRecord =\n ((newRecord: any): ResolvedRecord<TimelineData>);\n resolvedRecord.status = Resolved;\n resolvedRecord.value = data.processedData;\n break;\n case 'INVALID_PROFILE_ERROR':\n case 'UNEXPECTED_ERROR':\n const thrownRecord = ((newRecord: any): RejectedRecord);\n thrownRecord.status = Rejected;\n thrownRecord.value = data.error;\n break;\n }\n\n wake();\n });\n\n fileNameToProfilerDataMap.set(fileName, record);\n }\n\n const response = readRecord(record).value;\n return response;\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {createPortal} from 'react-dom';\nimport SearchInput from 'react-devtools-shared/src/devtools/views/SearchInput';\nimport {TimelineContext} from './TimelineContext';\nimport {TimelineSearchContext} from './TimelineSearchContext';\n\ntype Props = {};\n\nexport default function TimelineSearchInput(props: Props): React.Node {\n const {searchInputContainerRef} = useContext(TimelineContext);\n const {dispatch, searchIndex, searchResults, searchText} = useContext(\n TimelineSearchContext,\n );\n\n if (searchInputContainerRef.current === null) {\n return null;\n }\n\n const search = (text: string) =>\n dispatch({type: 'SET_SEARCH_TEXT', payload: text});\n const goToNextResult = () => dispatch({type: 'GO_TO_NEXT_SEARCH_RESULT'});\n const goToPreviousResult = () =>\n dispatch({type: 'GO_TO_PREVIOUS_SEARCH_RESULT'});\n\n return createPortal(\n <SearchInput\n goToNextResult={goToNextResult}\n goToPreviousResult={goToPreviousResult}\n placeholder=\"Search components by name\"\n search={search}\n searchIndex={searchIndex}\n searchResultsCount={searchResults.length}\n searchText={searchText}\n />,\n searchInputContainerRef.current,\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {isInternalFacebookBuild} from 'react-devtools-feature-flags';\n\nimport styles from './TimelineNotSupported.css';\n\nexport default function TimelineNotSupported(): React.Node {\n return (\n <div className={styles.Column}>\n <div className={styles.Header}>Timeline profiling not supported.</div>\n <p className={styles.Paragraph}>\n <span>\n Timeline profiler requires a development or profiling build of{' '}\n <code className={styles.Code}>react-dom@^18</code>.\n </span>\n </p>\n <div className={styles.LearnMoreRow}>\n Click{' '}\n <a\n className={styles.Link}\n href=\"https://fb.me/react-devtools-profiling\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n here\n </a>{' '}\n to learn more about profiling.\n </div>\n\n {isInternalFacebookBuild && (\n <div className={styles.MetaGKRow}>\n <strong>Meta only</strong>: Enable the{' '}\n <a\n className={styles.Link}\n href=\"https://fburl.com/react-devtools-scheduling-profiler-gk\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n react_enable_scheduling_profiler GK\n </a>\n .\n </div>\n )}\n </div>\n );\n}\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 * @flow\n */\n\nimport type {ViewState} from './types';\n\nimport * as React from 'react';\nimport {\n Suspense,\n useContext,\n useDeferredValue,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport {SettingsContext} from 'react-devtools-shared/src/devtools/views/Settings/SettingsContext';\nimport {ProfilerContext} from 'react-devtools-shared/src/devtools/views/Profiler/ProfilerContext';\nimport NoProfilingData from 'react-devtools-shared/src/devtools/views/Profiler/NoProfilingData';\nimport RecordingInProgress from 'react-devtools-shared/src/devtools/views/Profiler/RecordingInProgress';\nimport {updateColorsToMatchTheme} from './content-views/constants';\nimport {TimelineContext} from './TimelineContext';\nimport CanvasPage from './CanvasPage';\nimport {importFile} from './timelineCache';\nimport TimelineSearchInput from './TimelineSearchInput';\nimport TimelineNotSupported from './TimelineNotSupported';\nimport {TimelineSearchContextController} from './TimelineSearchContext';\n\nimport styles from './Timeline.css';\n\nexport function Timeline(_: {}): React.Node {\n const {file, inMemoryTimelineData, isTimelineSupported, setFile, viewState} =\n useContext(TimelineContext);\n const {didRecordCommits, isProfiling} = useContext(ProfilerContext);\n\n const ref = useRef(null);\n\n // HACK: Canvas rendering uses an imperative API,\n // but DevTools colors are stored in CSS variables (see root.css and SettingsContext).\n // When the theme changes, we need to trigger update the imperative colors and re-draw the Canvas.\n const {theme} = useContext(SettingsContext);\n // HACK: SettingsContext also uses a useLayoutEffect to update styles;\n // make sure the theme context in SettingsContext updates before this code.\n const deferredTheme = useDeferredValue(theme);\n // HACK: Schedule a re-render of the Canvas once colors have been updated.\n // The easiest way to guarangee this happens is to recreate the inner Canvas component.\n const [key, setKey] = useState<string>(theme);\n useLayoutEffect(() => {\n const pollForTheme = () => {\n if (updateColorsToMatchTheme(((ref.current: any): HTMLDivElement))) {\n clearInterval(intervalID);\n setKey(deferredTheme);\n }\n };\n\n const intervalID = setInterval(pollForTheme, 50);\n\n return () => {\n clearInterval(intervalID);\n };\n }, [deferredTheme]);\n\n let content = null;\n if (isProfiling) {\n content = <RecordingInProgress />;\n } else if (inMemoryTimelineData && inMemoryTimelineData.length > 0) {\n // TODO (timeline) Support multiple renderers.\n const timelineData = inMemoryTimelineData[0];\n\n content = (\n <TimelineSearchContextController\n profilerData={timelineData}\n viewState={viewState}>\n <TimelineSearchInput />\n <CanvasPage profilerData={timelineData} viewState={viewState} />\n </TimelineSearchContextController>\n );\n } else if (file) {\n content = (\n <Suspense fallback={<ProcessingData />}>\n <FileLoader\n file={file}\n key={key}\n onFileSelect={setFile}\n viewState={viewState}\n />\n </Suspense>\n );\n } else if (didRecordCommits) {\n content = <NoTimelineData />;\n } else if (isTimelineSupported) {\n content = <NoProfilingData />;\n } else {\n content = <TimelineNotSupported />;\n }\n\n return (\n <div className={styles.Content} ref={ref}>\n {content}\n </div>\n );\n}\n\nconst ProcessingData = () => (\n <div className={styles.EmptyStateContainer}>\n <div className={styles.Header}>Processing data...</div>\n <div className={styles.Row}>This should only take a minute.</div>\n </div>\n);\n\n// $FlowFixMe[missing-local-annot]\nconst CouldNotLoadProfile = ({error, onFileSelect}) => (\n <div className={styles.EmptyStateContainer}>\n <div className={styles.Header}>Could not load profile</div>\n {error.message && (\n <div className={styles.Row}>\n <div className={styles.ErrorMessage}>{error.message}</div>\n </div>\n )}\n <div className={styles.Row}>\n Try importing another Chrome performance profile.\n </div>\n </div>\n);\n\nconst NoTimelineData = () => (\n <div className={styles.EmptyStateContainer}>\n <div className={styles.Row}>\n This current profile does not contain timeline data.\n </div>\n </div>\n);\n\nconst FileLoader = ({\n file,\n onFileSelect,\n viewState,\n}: {\n file: File | null,\n onFileSelect: (file: File) => void,\n viewState: ViewState,\n}) => {\n if (file === null) {\n return null;\n }\n\n const dataOrError = importFile(file);\n if (dataOrError instanceof Error) {\n return (\n <CouldNotLoadProfile error={dataOrError} onFileSelect={onFileSelect} />\n );\n }\n\n return (\n <TimelineSearchContextController\n profilerData={dataOrError}\n viewState={viewState}>\n <TimelineSearchInput />\n <CanvasPage profilerData={dataOrError} viewState={viewState} />\n </TimelineSearchContextController>\n );\n};\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 * @flow\n */\n\nimport type {SchedulingEvent} from 'react-devtools-timeline/src/types';\n\nimport * as React from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport ViewElementSourceContext from '../Components/ViewElementSourceContext';\nimport {useContext} from 'react';\nimport {TimelineContext} from 'react-devtools-timeline/src/TimelineContext';\nimport {\n formatTimestamp,\n getSchedulingEventLabel,\n} from 'react-devtools-timeline/src/utils/formatting';\nimport {stackToComponentSources} from 'react-devtools-shared/src/devtools/utils';\nimport {copy} from 'clipboard-js';\n\nimport styles from './SidebarEventInfo.css';\n\nexport type Props = {};\n\ntype SchedulingEventProps = {\n eventInfo: SchedulingEvent,\n};\n\nfunction SchedulingEventInfo({eventInfo}: SchedulingEventProps) {\n const {canViewElementSourceFunction, viewElementSourceFunction} = useContext(\n ViewElementSourceContext,\n );\n const {componentName, timestamp} = eventInfo;\n const componentStack = eventInfo.componentStack || null;\n\n return (\n <>\n <div className={styles.Toolbar}>\n {componentName} {getSchedulingEventLabel(eventInfo)}\n </div>\n <div className={styles.Content} tabIndex={0}>\n <ul className={styles.List}>\n <li className={styles.ListItem}>\n <label className={styles.Label}>Timestamp</label>:{' '}\n <span className={styles.Value}>{formatTimestamp(timestamp)}</span>\n </li>\n {componentStack && (\n <li className={styles.ListItem}>\n <div className={styles.Row}>\n <label className={styles.Label}>Rendered by</label>\n <Button\n onClick={() => copy(componentStack)}\n title=\"Copy component stack to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </div>\n <ul className={styles.List}>\n {stackToComponentSources(componentStack).map(\n ([displayName, stack], index) => {\n if (stack == null) {\n return (\n <li key={index}>\n <Button\n className={styles.UnclickableSource}\n disabled={true}>\n {displayName}\n </Button>\n </li>\n );\n }\n\n // TODO: We should support symbolication here as well, but\n // symbolicating the whole stack can be expensive\n const [sourceURL, line, column] = stack;\n const source = {sourceURL, line, column};\n const canViewSource =\n canViewElementSourceFunction == null ||\n canViewElementSourceFunction(source, null);\n\n const viewSource =\n !canViewSource || viewElementSourceFunction == null\n ? () => null\n : () => viewElementSourceFunction(source, null);\n\n return (\n <li key={index}>\n <Button\n className={\n canViewSource\n ? styles.ClickableSource\n : styles.UnclickableSource\n }\n disabled={!canViewSource}\n onClick={viewSource}>\n {displayName}\n </Button>\n </li>\n );\n },\n )}\n </ul>\n </li>\n )}\n </ul>\n </div>\n </>\n );\n}\n\nexport default function SidebarEventInfo(_: Props): React.Node {\n const {selectedEvent} = useContext(TimelineContext);\n // (TODO) Refactor in next PR so this supports multiple types of events\n if (selectedEvent && selectedEvent.schedulingEvent) {\n return <SchedulingEventInfo eventInfo={selectedEvent.schedulingEvent} />;\n }\n\n return null;\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {useCallback, useContext, useMemo} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {BridgeContext, StoreContext} from '../context';\nimport {useSubscription} from '../hooks';\n\ntype SubscriptionData = {\n recordChangeDescriptions: boolean,\n supportsReloadAndProfile: boolean,\n};\n\nexport default function ReloadAndProfileButton({\n disabled,\n}: {\n disabled: boolean,\n}): React.Node {\n const bridge = useContext(BridgeContext);\n const store = useContext(StoreContext);\n\n const subscription = useMemo(\n () => ({\n getCurrentValue: () => ({\n recordChangeDescriptions: store.recordChangeDescriptions,\n supportsReloadAndProfile: store.supportsReloadAndProfile,\n }),\n subscribe: (callback: Function) => {\n store.addListener('recordChangeDescriptions', callback);\n store.addListener('supportsReloadAndProfile', callback);\n return () => {\n store.removeListener('recordChangeDescriptions', callback);\n store.removeListener('supportsReloadAndProfile', callback);\n };\n },\n }),\n [store],\n );\n const {recordChangeDescriptions, supportsReloadAndProfile} =\n useSubscription<SubscriptionData>(subscription);\n\n const reloadAndProfile = useCallback(() => {\n // TODO If we want to support reload-and-profile for e.g. React Native,\n // we might need to also start profiling here before reloading the app (since DevTools itself isn't reloaded).\n // We'd probably want to do this before reloading though, to avoid sending a message on a disconnected port in the browser.\n // For now, let's just skip doing it entirely to avoid paying snapshot costs for data we don't need.\n // startProfiling();\n\n bridge.send('reloadAndProfile', {\n recordChangeDescriptions,\n recordTimeline: store.supportsTimeline,\n });\n }, [bridge, recordChangeDescriptions, store]);\n\n if (!supportsReloadAndProfile) {\n return null;\n }\n\n return (\n <Button\n disabled={disabled}\n onClick={reloadAndProfile}\n title=\"Reload and start profiling\">\n <ButtonIcon type=\"reload\" />\n </Button>\n );\n}\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 * @flow\n */\n\n// $FlowFixMe[method-unbinding]\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport default hasOwnProperty;\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useCallback, useRef} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport {ModalDialogContext} from '../ModalDialog';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {StoreContext} from '../context';\nimport {\n prepareProfilingDataExport,\n prepareProfilingDataFrontendFromExport,\n} from './utils';\nimport {downloadFile} from '../utils';\nimport {TimelineContext} from 'react-devtools-timeline/src/TimelineContext';\nimport isArray from 'shared/isArray';\nimport hasOwnProperty from 'shared/hasOwnProperty';\n\nimport styles from './ProfilingImportExportButtons.css';\n\nimport type {ProfilingDataExport} from './types';\n\nexport default function ProfilingImportExportButtons(): React.Node {\n const {isProfiling, profilingData, rootID} = useContext(ProfilerContext);\n const {setFile} = useContext(TimelineContext);\n const store = useContext(StoreContext);\n const {profilerStore} = store;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const downloadRef = useRef<HTMLAnchorElement | null>(null);\n\n const {dispatch: modalDialogDispatch} = useContext(ModalDialogContext);\n\n const doesHaveInMemoryData = profilerStore.didRecordCommits;\n\n const downloadData = useCallback(() => {\n if (rootID === null) {\n return;\n }\n\n const anchorElement = downloadRef.current;\n\n if (profilingData !== null && anchorElement !== null) {\n const profilingDataExport = prepareProfilingDataExport(profilingData);\n const date = new Date();\n const dateString = date\n .toLocaleDateString(undefined, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n })\n .replace(/\\//g, '-');\n const timeString = date\n .toLocaleTimeString(undefined, {\n hour12: false,\n })\n .replace(/:/g, '-');\n downloadFile(\n anchorElement,\n `profiling-data.${dateString}.${timeString}.json`,\n JSON.stringify(profilingDataExport, null, 2),\n );\n }\n }, [rootID, profilingData]);\n\n const clickInputElement = useCallback(() => {\n if (inputRef.current !== null) {\n inputRef.current.click();\n }\n }, []);\n\n // TODO (profiling) We should probably use a transition for this and suspend while loading the file.\n // Local files load so fast it's probably not very noticeable though.\n const handleChange = () => {\n const input = inputRef.current;\n if (input !== null && input.files.length > 0) {\n const file = input.files[0];\n\n // TODO (profiling) Handle fileReader errors.\n const fileReader = new FileReader();\n fileReader.addEventListener('load', () => {\n const raw = ((fileReader.result: any): string);\n const json = JSON.parse(raw);\n\n if (!isArray(json) && hasOwnProperty.call(json, 'version')) {\n // This looks like React profiling data.\n // But first, clear any User Timing marks; we should only have one type open at a time.\n setFile(null);\n\n try {\n const profilingDataExport = ((json: any): ProfilingDataExport);\n profilerStore.profilingData =\n prepareProfilingDataFrontendFromExport(profilingDataExport);\n } catch (error) {\n modalDialogDispatch({\n id: 'ProfilingImportExportButtons',\n type: 'SHOW',\n title: 'Import failed',\n content: (\n <Fragment>\n <div>The profiling data you selected cannot be imported.</div>\n {error !== null && (\n <div className={styles.ErrorMessage}>{error.message}</div>\n )}\n </Fragment>\n ),\n });\n }\n } else {\n // Otherwise let's assume this is Trace Event data and pass it to the Timeline preprocessor.\n // But first, clear React profiling data; we should only have one type open at a time.\n profilerStore.clear();\n\n // TODO (timeline) We shouldn't need to re-open the File but we'll need to refactor to avoid this.\n setFile(file);\n }\n });\n fileReader.readAsText(file);\n }\n };\n\n return (\n <Fragment>\n <div className={styles.VRule} />\n <input\n ref={inputRef}\n className={styles.Input}\n type=\"file\"\n accept=\".json\"\n onChange={handleChange}\n tabIndex={-1}\n />\n <a ref={downloadRef} className={styles.Input} />\n <Button\n disabled={isProfiling}\n onClick={clickInputElement}\n title=\"Load profile...\">\n <ButtonIcon type=\"import\" />\n </Button>\n <Button\n disabled={isProfiling || !doesHaveInMemoryData}\n onClick={downloadData}\n title=\"Save profile...\">\n <ButtonIcon type=\"export\" />\n </Button>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {memo} from 'react';\nimport {areEqual} from 'react-window';\nimport {getGradientColor} from './utils';\n\nimport styles from './SnapshotCommitListItem.css';\n\nimport type {ItemData} from './SnapshotCommitList';\n\ntype Props = {\n data: ItemData,\n index: number,\n style: Object,\n ...\n};\n\nfunction SnapshotCommitListItem({data: itemData, index, style}: Props) {\n const {\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectCommitIndex,\n setHoveredCommitIndex,\n startCommitDrag,\n totalDurations,\n } = itemData;\n\n index = filteredCommitIndices[index];\n\n const totalDuration = totalDurations[index];\n\n // Use natural cbrt for bar height.\n // This prevents one (or a few) outliers from squishing the majority of other commits.\n // So rather than e.g. _█_ we get something more like e.g. ▄█_\n const heightScale =\n Math.min(\n 1,\n Math.max(0, Math.cbrt(totalDuration) / Math.cbrt(maxDuration)),\n ) || 0;\n\n // Use a linear scale for color.\n // This gives some visual contrast between cheaper and more expensive commits\n // and somewhat compensates for the cbrt scale height.\n const colorScale = Math.min(1, Math.max(0, totalDuration / maxDuration)) || 0;\n\n const isSelected = selectedCommitIndex === index;\n\n // Leave a 1px gap between snapshots\n const width = parseFloat(style.width) - 1;\n\n const handleMouseDown = ({buttons, target}: any) => {\n if (buttons === 1) {\n selectCommitIndex(index);\n startCommitDrag({\n commitIndex: index,\n left: target.getBoundingClientRect().left,\n sizeIncrement: parseFloat(style.width),\n });\n }\n };\n\n let backgroundColor;\n if (!isSelected && totalDuration > 0) {\n backgroundColor = getGradientColor(colorScale);\n }\n\n return (\n <div\n className={styles.Outer}\n onMouseDown={handleMouseDown}\n onMouseEnter={() => setHoveredCommitIndex(index)}\n style={{\n ...style,\n width,\n borderBottom: isSelected\n ? '3px solid var(--color-tab-selected-border)'\n : undefined,\n }}>\n <div\n className={isSelected ? styles.InnerSelected : styles.Inner}\n style={{\n height: `${Math.round(heightScale * 100)}%`,\n backgroundColor,\n }}\n />\n </div>\n );\n}\n\nexport default (memo(\n SnapshotCommitListItem,\n areEqual,\n): React.ComponentType<Props>);\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 * @flow\n */\n\nimport type {CommitDataFrontend} from './types';\n\nimport * as React from 'react';\nimport {useEffect, useMemo, useRef, useState} from 'react';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport {FixedSizeList} from 'react-window';\nimport SnapshotCommitListItem from './SnapshotCommitListItem';\nimport {minBarWidth} from './constants';\nimport {formatDuration, formatTime} from './utils';\nimport Tooltip from './Tooltip';\n\nimport styles from './SnapshotCommitList.css';\n\nexport type ItemData = {\n commitTimes: Array<number>,\n filteredCommitIndices: Array<number>,\n maxDuration: number,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n setHoveredCommitIndex: (index: number) => void,\n startCommitDrag: (newDragState: DragState) => void,\n totalDurations: Array<number>,\n};\n\ntype Props = {\n commitData: $ReadOnlyArray<CommitDataFrontend>,\n commitTimes: Array<number>,\n filteredCommitIndices: Array<number>,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n totalDurations: Array<number>,\n};\n\nexport default function SnapshotCommitList({\n commitData,\n commitTimes,\n filteredCommitIndices,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n totalDurations,\n}: Props): React.Node {\n return (\n <AutoSizer>\n {({height, width}) => (\n <List\n commitData={commitData}\n commitTimes={commitTimes}\n height={height}\n filteredCommitIndices={filteredCommitIndices}\n selectedCommitIndex={selectedCommitIndex}\n selectedFilteredCommitIndex={selectedFilteredCommitIndex}\n selectCommitIndex={selectCommitIndex}\n totalDurations={totalDurations}\n width={width}\n />\n )}\n </AutoSizer>\n );\n}\n\ntype ListProps = {\n commitData: $ReadOnlyArray<CommitDataFrontend>,\n commitTimes: Array<number>,\n height: number,\n filteredCommitIndices: Array<number>,\n selectedCommitIndex: number | null,\n selectedFilteredCommitIndex: number | null,\n selectCommitIndex: (index: number) => void,\n totalDurations: Array<number>,\n width: number,\n};\n\ntype DragState = {\n commitIndex: number,\n left: number,\n sizeIncrement: number,\n};\n\nfunction List({\n commitData,\n selectedCommitIndex,\n commitTimes,\n height,\n filteredCommitIndices,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n totalDurations,\n width,\n}: ListProps) {\n // $FlowFixMe[incompatible-use]\n const listRef = useRef<FixedSizeList<ItemData> | null>(null);\n const divRef = useRef<HTMLDivElement | null>(null);\n const prevCommitIndexRef = useRef<number | null>(null);\n\n // Make sure a newly selected snapshot is fully visible within the list.\n useEffect(() => {\n if (selectedFilteredCommitIndex !== prevCommitIndexRef.current) {\n prevCommitIndexRef.current = selectedFilteredCommitIndex;\n if (selectedFilteredCommitIndex !== null && listRef.current !== null) {\n listRef.current.scrollToItem(selectedFilteredCommitIndex);\n }\n }\n }, [listRef, selectedFilteredCommitIndex]);\n\n const itemSize = useMemo(\n () => Math.max(minBarWidth, width / filteredCommitIndices.length),\n [filteredCommitIndices, width],\n );\n const maxDuration = useMemo(\n () => totalDurations.reduce((max, duration) => Math.max(max, duration), 0),\n [totalDurations],\n );\n\n const maxCommitIndex = filteredCommitIndices.length - 1;\n\n const [dragState, setDragState] = useState<DragState | null>(null);\n\n const handleDragCommit = ({buttons, pageX}: any) => {\n if (buttons === 0) {\n setDragState(null);\n return;\n }\n\n if (dragState !== null) {\n const {commitIndex, left, sizeIncrement} = dragState;\n\n let newCommitIndex = commitIndex;\n let newCommitLeft = left;\n\n if (pageX < newCommitLeft) {\n while (pageX < newCommitLeft) {\n newCommitLeft -= sizeIncrement;\n newCommitIndex -= 1;\n }\n } else {\n let newCommitRectRight = newCommitLeft + sizeIncrement;\n while (pageX > newCommitRectRight) {\n newCommitRectRight += sizeIncrement;\n newCommitIndex += 1;\n }\n }\n\n if (newCommitIndex < 0) {\n newCommitIndex = 0;\n } else if (newCommitIndex > maxCommitIndex) {\n newCommitIndex = maxCommitIndex;\n }\n\n selectCommitIndex(newCommitIndex);\n }\n };\n\n useEffect(() => {\n if (dragState === null) {\n return;\n }\n\n const element = divRef.current;\n if (element !== null) {\n const ownerDocument = element.ownerDocument;\n ownerDocument.addEventListener('mousemove', handleDragCommit);\n return () => {\n ownerDocument.removeEventListener('mousemove', handleDragCommit);\n };\n }\n }, [dragState]);\n\n const [hoveredCommitIndex, setHoveredCommitIndex] = useState<number | null>(\n null,\n );\n\n // Pass required contextual data down to the ListItem renderer.\n const itemData = useMemo<ItemData>(\n () => ({\n commitTimes,\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n setHoveredCommitIndex,\n startCommitDrag: setDragState,\n totalDurations,\n }),\n [\n commitTimes,\n filteredCommitIndices,\n maxDuration,\n selectedCommitIndex,\n selectedFilteredCommitIndex,\n selectCommitIndex,\n setHoveredCommitIndex,\n totalDurations,\n ],\n );\n\n let tooltipLabel = null;\n if (hoveredCommitIndex !== null) {\n const {\n duration,\n effectDuration,\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n } = commitData[hoveredCommitIndex];\n\n // Only some React versions include commit durations.\n // Show a richer tooltip only for builds that have that info.\n if (\n effectDuration !== null ||\n passiveEffectDuration !== null ||\n priorityLevel !== null\n ) {\n tooltipLabel = (\n <ul className={styles.TooltipList}>\n {priorityLevel !== null && (\n <li className={styles.TooltipListItem}>\n <label className={styles.TooltipLabel}>Priority</label>\n <span className={styles.TooltipValue}>{priorityLevel}</span>\n </li>\n )}\n <li className={styles.TooltipListItem}>\n <label className={styles.TooltipLabel}>Committed at</label>\n <span className={styles.TooltipValue}>\n {formatTime(timestamp)}s\n </span>\n </li>\n <li className={styles.TooltipListItem}>\n <div className={styles.DurationsWrapper}>\n <label className={styles.TooltipLabel}>Durations</label>\n <ul className={styles.DurationsList}>\n <li className={styles.DurationsListItem}>\n <label className={styles.DurationsLabel}>Render</label>\n <span className={styles.DurationsValue}>\n {formatDuration(duration)}ms\n </span>\n </li>\n {effectDuration !== null && (\n <li className={styles.DurationsListItem}>\n <label className={styles.DurationsLabel}>\n Layout effects\n </label>\n <span className={styles.DurationsValue}>\n {formatDuration(effectDuration)}ms\n </span>\n </li>\n )}\n {passiveEffectDuration !== null && (\n <li className={styles.DurationsListItem}>\n <label className={styles.DurationsLabel}>\n Passive effects\n </label>\n <span className={styles.DurationsValue}>\n {formatDuration(passiveEffectDuration)}ms\n </span>\n </li>\n )}\n </ul>\n </div>\n </li>\n </ul>\n );\n } else {\n tooltipLabel = `${formatDuration(duration)}ms at ${formatTime(\n timestamp,\n )}s`;\n }\n }\n\n return (\n <Tooltip className={styles.Tooltip} label={tooltipLabel}>\n <div\n ref={divRef}\n style={{height, width}}\n onMouseLeave={() => setHoveredCommitIndex(null)}>\n <FixedSizeList\n className={styles.List}\n layout=\"horizontal\"\n height={height}\n itemCount={filteredCommitIndices.length}\n itemData={itemData}\n itemSize={itemSize}\n ref={(listRef: any) /* Flow bug? */}\n width={width}>\n {SnapshotCommitListItem}\n </FixedSizeList>\n </div>\n </Tooltip>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useMemo} from 'react';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport {ProfilerContext} from './ProfilerContext';\nimport SnapshotCommitList from './SnapshotCommitList';\nimport {maxBarWidth} from './constants';\nimport {StoreContext} from '../context';\n\nimport styles from './SnapshotSelector.css';\n\nexport type Props = {};\n\nexport default function SnapshotSelector(_: Props): React.Node {\n const {\n isCommitFilterEnabled,\n minCommitDuration,\n rootID,\n selectedCommitIndex,\n selectCommitIndex,\n } = useContext(ProfilerContext);\n\n const {profilerStore} = useContext(StoreContext);\n const {commitData} = profilerStore.getDataForRoot(((rootID: any): number));\n\n const totalDurations: Array<number> = [];\n const commitTimes: Array<number> = [];\n commitData.forEach(commitDatum => {\n totalDurations.push(\n commitDatum.duration +\n (commitDatum.effectDuration || 0) +\n (commitDatum.passiveEffectDuration || 0),\n );\n commitTimes.push(commitDatum.timestamp);\n });\n\n const filteredCommitIndices = useMemo(\n () =>\n commitData.reduce((reduced: $FlowFixMe, commitDatum, index) => {\n if (\n !isCommitFilterEnabled ||\n commitDatum.duration >= minCommitDuration\n ) {\n reduced.push(index);\n }\n return reduced;\n }, []),\n [commitData, isCommitFilterEnabled, minCommitDuration],\n );\n\n const numFilteredCommits = filteredCommitIndices.length;\n\n // Map the (unfiltered) selected commit index to an index within the filtered data.\n const selectedFilteredCommitIndex = useMemo(() => {\n if (selectedCommitIndex !== null) {\n for (let i = 0; i < filteredCommitIndices.length; i++) {\n if (filteredCommitIndices[i] === selectedCommitIndex) {\n return i;\n }\n }\n }\n return null;\n }, [filteredCommitIndices, selectedCommitIndex]);\n\n // TODO (ProfilerContext) This should be managed by the context controller (reducer).\n // It doesn't currently know about the filtered commits though (since it doesn't suspend).\n // Maybe this component should pass filteredCommitIndices up?\n if (selectedFilteredCommitIndex === null) {\n if (numFilteredCommits > 0) {\n selectCommitIndex(0);\n } else {\n selectCommitIndex(null);\n }\n } else if (selectedFilteredCommitIndex >= numFilteredCommits) {\n selectCommitIndex(numFilteredCommits === 0 ? null : numFilteredCommits - 1);\n }\n\n let label = null;\n if (numFilteredCommits > 0) {\n // $FlowFixMe[missing-local-annot]\n const handleCommitInputChange = event => {\n const value = parseInt(event.currentTarget.value, 10);\n if (!isNaN(value)) {\n const filteredIndex = Math.min(\n Math.max(value - 1, 0),\n\n // Snashots are shown to the user as 1-based\n // but the indices within the profiler data array ar 0-based.\n numFilteredCommits - 1,\n );\n selectCommitIndex(filteredCommitIndices[filteredIndex]);\n }\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleClick = event => {\n event.currentTarget.select();\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleKeyDown = event => {\n switch (event.key) {\n case 'ArrowDown':\n viewPrevCommit();\n event.stopPropagation();\n break;\n case 'ArrowUp':\n viewNextCommit();\n event.stopPropagation();\n break;\n default:\n break;\n }\n };\n\n const input = (\n <input\n className={styles.Input}\n data-testname=\"SnapshotSelector-Input\"\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n value={\n // $FlowFixMe[unsafe-addition] addition with possible null/undefined value\n selectedFilteredCommitIndex + 1\n }\n size={`${numFilteredCommits}`.length}\n onChange={handleCommitInputChange}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n />\n );\n\n label = (\n <Fragment>\n {input} / {numFilteredCommits}\n </Fragment>\n );\n }\n\n const viewNextCommit = () => {\n let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) + 1;\n if (nextCommitIndex === filteredCommitIndices.length) {\n nextCommitIndex = 0;\n }\n selectCommitIndex(filteredCommitIndices[nextCommitIndex]);\n };\n const viewPrevCommit = () => {\n let nextCommitIndex = ((selectedFilteredCommitIndex: any): number) - 1;\n if (nextCommitIndex < 0) {\n nextCommitIndex = filteredCommitIndices.length - 1;\n }\n selectCommitIndex(filteredCommitIndices[nextCommitIndex]);\n };\n\n // $FlowFixMe[missing-local-annot]\n const handleKeyDown = event => {\n switch (event.key) {\n case 'ArrowLeft':\n viewPrevCommit();\n event.stopPropagation();\n break;\n case 'ArrowRight':\n viewNextCommit();\n event.stopPropagation();\n break;\n default:\n break;\n }\n };\n\n if (commitData.length === 0) {\n return null;\n }\n\n return (\n <Fragment>\n <span\n className={styles.IndexLabel}\n data-testname=\"SnapshotSelector-Label\">\n {label}\n </span>\n <Button\n className={styles.Button}\n data-testname=\"SnapshotSelector-PreviousButton\"\n disabled={numFilteredCommits === 0}\n onClick={viewPrevCommit}\n title=\"Select previous commit\">\n <ButtonIcon type=\"previous\" />\n </Button>\n <div\n className={styles.Commits}\n onKeyDown={handleKeyDown}\n style={{\n flex: numFilteredCommits > 0 ? '1 1 auto' : '0 0 auto',\n maxWidth:\n numFilteredCommits > 0\n ? numFilteredCommits * maxBarWidth\n : undefined,\n }}\n tabIndex={0}>\n {numFilteredCommits > 0 && (\n <SnapshotCommitList\n commitData={commitData}\n commitTimes={commitTimes}\n filteredCommitIndices={filteredCommitIndices}\n selectedCommitIndex={selectedCommitIndex}\n selectedFilteredCommitIndex={selectedFilteredCommitIndex}\n selectCommitIndex={selectCommitIndex}\n totalDurations={totalDurations}\n />\n )}\n {numFilteredCommits === 0 && (\n <div className={styles.NoCommits}>No commits</div>\n )}\n </div>\n <Button\n className={styles.Button}\n data-testname=\"SnapshotSelector-NextButton\"\n disabled={numFilteredCommits === 0}\n onClick={viewNextCommit}\n title=\"Select next commit\">\n <ButtonIcon type=\"next\" />\n </Button>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport type {CommitTree} from './types';\nimport type {SerializedElement} from 'react-devtools-shared/src/frontend/types';\n\nimport * as React from 'react';\nimport {useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport styles from './Updaters.css';\nimport {ElementTypeRoot} from '../../../frontend/types';\n\nexport type Props = {\n commitTree: CommitTree,\n updaters: Array<SerializedElement>,\n};\n\nexport default function Updaters({commitTree, updaters}: Props): React.Node {\n const {selectFiber} = useContext(ProfilerContext);\n\n const children =\n updaters.length > 0 ? (\n updaters.map((serializedElement: SerializedElement): React$Node => {\n const {displayName, id, key, type} = serializedElement;\n const isVisibleInTree =\n commitTree.nodes.has(id) && type !== ElementTypeRoot;\n if (isVisibleInTree) {\n return (\n <button\n key={id}\n className={styles.Updater}\n onClick={() => selectFiber(id, displayName)}>\n {displayName} {key ? `key=\"${key}\"` : ''}\n </button>\n );\n } else {\n return (\n <div key={id} className={styles.UnmountedUpdater}>\n {displayName} {key ? `key=\"${key}\"` : ''}\n </div>\n );\n }\n })\n ) : (\n <div key=\"none\" className={styles.NoUpdaters}>\n (unknown)\n </div>\n );\n\n return <div className={styles.Updaters}>{children}</div>;\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ProfilerContext} from './ProfilerContext';\nimport Updaters from './Updaters';\nimport {formatDuration, formatTime} from './utils';\nimport {StoreContext} from '../context';\nimport {getCommitTree} from './CommitTreeBuilder';\n\nimport styles from './SidebarCommitInfo.css';\n\nexport type Props = {};\n\nexport default function SidebarCommitInfo(_: Props): React.Node {\n const {selectedCommitIndex, rootID} = useContext(ProfilerContext);\n\n const {profilerStore} = useContext(StoreContext);\n\n if (rootID === null || selectedCommitIndex === null) {\n return <div className={styles.NothingSelected}>Nothing selected</div>;\n }\n\n const {\n duration,\n effectDuration,\n passiveEffectDuration,\n priorityLevel,\n timestamp,\n updaters,\n } = profilerStore.getCommitData(rootID, selectedCommitIndex);\n\n const hasCommitPhaseDurations =\n effectDuration !== null || passiveEffectDuration !== null;\n\n const commitTree =\n updaters !== null\n ? getCommitTree({\n commitIndex: selectedCommitIndex,\n profilerStore,\n rootID,\n })\n : null;\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>Commit information</div>\n <div className={styles.Content}>\n <ul className={styles.List}>\n {priorityLevel !== null && (\n <li className={styles.ListItem}>\n <label className={styles.Label}>Priority</label>:{' '}\n <span className={styles.Value}>{priorityLevel}</span>\n </li>\n )}\n <li className={styles.ListItem}>\n <label className={styles.Label}>Committed at</label>:{' '}\n <span className={styles.Value}>{formatTime(timestamp)}s</span>\n </li>\n\n {!hasCommitPhaseDurations && (\n <li className={styles.ListItem}>\n <label className={styles.Label}>Render duration</label>:{' '}\n <span className={styles.Value}>{formatDuration(duration)}ms</span>\n </li>\n )}\n\n {hasCommitPhaseDurations && (\n <li className={styles.ListItem}>\n <label className={styles.Label}>Durations</label>\n <ul className={styles.DurationsList}>\n <li className={styles.DurationsListItem}>\n <label className={styles.Label}>Render</label>:{' '}\n <span className={styles.Value}>\n {formatDuration(duration)}ms\n </span>\n </li>\n {effectDuration !== null && (\n <li className={styles.DurationsListItem}>\n <label className={styles.Label}>Layout effects</label>:{' '}\n <span className={styles.Value}>\n {formatDuration(effectDuration)}ms\n </span>\n </li>\n )}\n {passiveEffectDuration !== null && (\n <li className={styles.DurationsListItem}>\n <label className={styles.Label}>Passive effects</label>:{' '}\n <span className={styles.Value}>\n {formatDuration(passiveEffectDuration)}ms\n </span>\n </li>\n )}\n </ul>\n </li>\n )}\n\n {updaters !== null && commitTree !== null && (\n <li className={styles.ListItem}>\n <label className={styles.Label}>What caused this update</label>?\n <Updaters commitTree={commitTree} updaters={updaters} />\n </li>\n )}\n </ul>\n </div>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './Profiler.css';\n\nexport default function ProcessingData(): React.Node {\n return (\n <div className={styles.Column}>\n <div className={styles.Header}>Processing data...</div>\n <div className={styles.Row}>This should only take a minute.</div>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './Profiler.css';\n\nexport default function ProfilingNotSupported(): React.Node {\n return (\n <div className={styles.Column}>\n <div className={styles.Header}>Profiling not supported.</div>\n <p className={styles.Paragraph}>\n Profiling support requires either a development or profiling build of\n React v16.5+.\n </p>\n <p className={styles.Paragraph}>\n Learn more at{' '}\n <a\n className={styles.Link}\n href=\"https://fb.me/react-devtools-profiling\"\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n reactjs.org/link/profiling\n </a>\n .\n </p>\n </div>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect, useRef} from 'react';\n\nimport WhatChanged from './WhatChanged';\nimport {ProfilerContext} from './ProfilerContext';\nimport {formatDuration, formatTime} from './utils';\nimport {StoreContext} from '../context';\nimport Button from '../Button';\nimport ButtonIcon from '../ButtonIcon';\nimport InspectedElementBadges from '../Components/InspectedElementBadges';\n\nimport styles from './SidebarSelectedFiberInfo.css';\n\nexport default function SidebarSelectedFiberInfo(): React.Node {\n const {profilerStore} = useContext(StoreContext);\n const {\n rootID,\n selectCommitIndex,\n selectedCommitIndex,\n selectedFiberID,\n selectedFiberName,\n selectFiber,\n } = useContext(ProfilerContext);\n const {profilingCache} = profilerStore;\n const selectedListItemRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const selectedElement = selectedListItemRef.current;\n if (\n selectedElement !== null &&\n // $FlowFixMe[method-unbinding]\n typeof selectedElement.scrollIntoView === 'function'\n ) {\n selectedElement.scrollIntoView({block: 'nearest', inline: 'nearest'});\n }\n }, [selectedCommitIndex]);\n\n if (\n selectedFiberID === null ||\n rootID === null ||\n selectedCommitIndex === null\n ) {\n return null;\n }\n\n const commitIndices = profilingCache.getFiberCommits({\n fiberID: selectedFiberID,\n rootID: rootID,\n });\n\n const {nodes} = profilingCache.getCommitTree({\n rootID,\n commitIndex: selectedCommitIndex,\n });\n const node = nodes.get(selectedFiberID);\n\n // $FlowFixMe[missing-local-annot]\n const handleKeyDown = event => {\n switch (event.key) {\n case 'ArrowUp':\n if (selectedCommitIndex !== null) {\n const prevIndex = commitIndices.indexOf(selectedCommitIndex);\n const nextIndex =\n prevIndex > 0 ? prevIndex - 1 : commitIndices.length - 1;\n selectCommitIndex(commitIndices[nextIndex]);\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (selectedCommitIndex !== null) {\n const prevIndex = commitIndices.indexOf(selectedCommitIndex);\n const nextIndex =\n prevIndex < commitIndices.length - 1 ? prevIndex + 1 : 0;\n selectCommitIndex(commitIndices[nextIndex]);\n }\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n const listItems = [];\n let i = 0;\n for (i = 0; i < commitIndices.length; i++) {\n const commitIndex = commitIndices[i];\n\n const {duration, timestamp} = profilerStore.getCommitData(\n ((rootID: any): number),\n commitIndex,\n );\n\n listItems.push(\n <button\n key={commitIndex}\n ref={selectedCommitIndex === commitIndex ? selectedListItemRef : null}\n className={\n selectedCommitIndex === commitIndex\n ? styles.CurrentCommit\n : styles.Commit\n }\n onClick={() => selectCommitIndex(commitIndex)}>\n {formatTime(timestamp)}s for {formatDuration(duration)}ms\n </button>,\n );\n }\n\n return (\n <Fragment>\n <div className={styles.Toolbar}>\n <div className={styles.Component}>\n {selectedFiberName || 'Selected component'}\n </div>\n\n <Button\n onClick={() => selectFiber(null, null)}\n title=\"Back to commit view\">\n <ButtonIcon type=\"close\" />\n </Button>\n </div>\n <div className={styles.Content} onKeyDown={handleKeyDown} tabIndex={0}>\n {node != null && (\n <InspectedElementBadges\n hocDisplayNames={node.hocDisplayNames}\n compiledWithForget={node.compiledWithForget}\n />\n )}\n <WhatChanged fiberID={((selectedFiberID: any): number)} />\n {listItems.length > 0 && (\n <div>\n <label className={styles.Label}>Rendered at: </label>\n {listItems}\n </div>\n )}\n {listItems.length === 0 && (\n <div>Did not render on the client during this profiling session.</div>\n )}\n </div>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext} from 'react';\nimport {ModalDialog} from '../ModalDialog';\nimport {ProfilerContext} from './ProfilerContext';\nimport TabBar from '../TabBar';\nimport ClearProfilingDataButton from './ClearProfilingDataButton';\nimport CommitFlamegraph from './CommitFlamegraph';\nimport CommitRanked from './CommitRanked';\nimport RootSelector from './RootSelector';\nimport {Timeline} from 'react-devtools-timeline/src/Timeline';\nimport SidebarEventInfo from './SidebarEventInfo';\nimport RecordToggle from './RecordToggle';\nimport ReloadAndProfileButton from './ReloadAndProfileButton';\nimport ProfilingImportExportButtons from './ProfilingImportExportButtons';\nimport SnapshotSelector from './SnapshotSelector';\nimport SidebarCommitInfo from './SidebarCommitInfo';\nimport NoProfilingData from './NoProfilingData';\nimport RecordingInProgress from './RecordingInProgress';\nimport ProcessingData from './ProcessingData';\nimport ProfilingNotSupported from './ProfilingNotSupported';\nimport SidebarSelectedFiberInfo from './SidebarSelectedFiberInfo';\nimport SettingsModal from 'react-devtools-shared/src/devtools/views/Settings/SettingsModal';\nimport SettingsModalContextToggle from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContextToggle';\nimport {SettingsModalContextController} from 'react-devtools-shared/src/devtools/views/Settings/SettingsModalContext';\nimport portaledContent from '../portaledContent';\nimport {StoreContext} from '../context';\nimport {TimelineContext} from 'react-devtools-timeline/src/TimelineContext';\n\nimport styles from './Profiler.css';\n\nfunction Profiler(_: {}) {\n const {\n didRecordCommits,\n isProcessingData,\n isProfiling,\n selectedCommitIndex,\n selectedFiberID,\n selectedTabID,\n selectTab,\n supportsProfiling,\n } = useContext(ProfilerContext);\n\n const {file: timelineTraceEventData, searchInputContainerRef} =\n useContext(TimelineContext);\n\n const {supportsTimeline} = useContext(StoreContext);\n\n const isLegacyProfilerSelected = selectedTabID !== 'timeline';\n\n let view = null;\n if (didRecordCommits || selectedTabID === 'timeline') {\n switch (selectedTabID) {\n case 'flame-chart':\n view = <CommitFlamegraph />;\n break;\n case 'ranked-chart':\n view = <CommitRanked />;\n break;\n case 'timeline':\n view = <Timeline />;\n break;\n default:\n break;\n }\n } else if (isProfiling) {\n view = <RecordingInProgress />;\n } else if (isProcessingData) {\n view = <ProcessingData />;\n } else if (timelineTraceEventData) {\n view = <OnlyTimelineData />;\n } else if (supportsProfiling) {\n view = <NoProfilingData />;\n } else {\n view = <ProfilingNotSupported />;\n }\n\n let sidebar = null;\n if (!isProfiling && !isProcessingData && didRecordCommits) {\n switch (selectedTabID) {\n case 'flame-chart':\n case 'ranked-chart':\n // TRICKY\n // Handle edge case where no commit is selected because of a min-duration filter update.\n // In that case, the selected commit index would be null.\n // We could still show a sidebar for the previously selected fiber,\n // but it would be an odd user experience.\n // TODO (ProfilerContext) This check should not be necessary.\n if (selectedCommitIndex !== null) {\n if (selectedFiberID !== null) {\n sidebar = <SidebarSelectedFiberInfo />;\n } else {\n sidebar = <SidebarCommitInfo />;\n }\n }\n break;\n case 'timeline':\n sidebar = <SidebarEventInfo />;\n break;\n default:\n break;\n }\n }\n\n return (\n <SettingsModalContextController>\n <div className={styles.Profiler}>\n <div className={styles.LeftColumn}>\n <div className={styles.Toolbar}>\n <RecordToggle disabled={!supportsProfiling} />\n <ReloadAndProfileButton disabled={!supportsProfiling} />\n <ClearProfilingDataButton />\n <ProfilingImportExportButtons />\n <div className={styles.VRule} />\n <TabBar\n currentTab={selectedTabID}\n id=\"Profiler\"\n selectTab={selectTab}\n tabs={supportsTimeline ? tabsWithTimeline : tabs}\n type=\"profiler\"\n />\n <RootSelector />\n <div className={styles.Spacer} />\n {!isLegacyProfilerSelected && (\n <div\n ref={searchInputContainerRef}\n className={styles.TimelineSearchInputContainer}\n />\n )}\n <SettingsModalContextToggle />\n {isLegacyProfilerSelected && didRecordCommits && (\n <Fragment>\n <div className={styles.VRule} />\n <SnapshotSelector />\n </Fragment>\n )}\n </div>\n <div className={styles.Content}>\n {view}\n <ModalDialog />\n </div>\n </div>\n <div className={styles.RightColumn}>{sidebar}</div>\n <SettingsModal />\n </div>\n </SettingsModalContextController>\n );\n}\n\nconst OnlyTimelineData = () => (\n <div className={styles.Column}>\n <div className={styles.Header}>Timeline only</div>\n <div className={styles.Row}>\n The current profile contains only Timeline data.\n </div>\n </div>\n);\n\nconst tabs = [\n {\n id: 'flame-chart',\n icon: 'flame-chart',\n label: 'Flamegraph',\n title: 'Flamegraph chart',\n },\n {\n id: 'ranked-chart',\n icon: 'ranked-chart',\n label: 'Ranked',\n title: 'Ranked chart',\n },\n];\n\nconst tabsWithTimeline = [\n ...tabs,\n null, // Divider/separator\n {\n id: 'timeline',\n icon: 'timeline',\n label: 'Timeline',\n title: 'Timeline',\n },\n];\n\nexport default (portaledContent(Profiler): React.ComponentType<{}>);\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 * @flow\n */\n\nimport * as React from 'react';\n\nimport styles from './ReactLogo.css';\n\ntype Props = {\n className?: string,\n};\n\nexport default function ReactLogo({className}: Props): React.Node {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${styles.ReactLogo} ${className || ''}`}\n viewBox=\"-11.5 -10.23174 23 20.46348\">\n <circle cx=\"0\" cy=\"0\" r=\"2.05\" fill=\"currentColor\" />\n <g stroke=\"currentColor\" strokeWidth=\"1\" fill=\"none\">\n <ellipse rx=\"11\" ry=\"4.2\" />\n <ellipse rx=\"11\" ry=\"4.2\" transform=\"rotate(60)\" />\n <ellipse rx=\"11\" ry=\"4.2\" transform=\"rotate(120)\" />\n </g>\n </svg>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect} from 'react';\nimport {ModalDialogContext} from './ModalDialog';\nimport {StoreContext} from './context';\nimport {currentBridgeProtocol} from 'react-devtools-shared/src/bridge';\nimport Button from './Button';\nimport ButtonIcon from './ButtonIcon';\nimport {copy} from 'clipboard-js';\nimport styles from './UnsupportedBridgeProtocolDialog.css';\n\nimport type {BridgeProtocol} from 'react-devtools-shared/src/bridge';\n\nconst DEVTOOLS_VERSION = process.env.DEVTOOLS_VERSION;\nconst INSTRUCTIONS_FB_URL =\n 'https://fb.me/devtools-unsupported-bridge-protocol';\nconst MODAL_DIALOG_ID = 'UnsupportedBridgeProtocolDialog';\n\nexport default function UnsupportedBridgeProtocolDialog(_: {}): null {\n const {dialogs, dispatch} = useContext(ModalDialogContext);\n const store = useContext(StoreContext);\n\n const isVisible = !!dialogs.find(dialog => dialog.id === MODAL_DIALOG_ID);\n\n useEffect(() => {\n const updateDialog = () => {\n if (!isVisible) {\n if (store.unsupportedBridgeProtocolDetected) {\n dispatch({\n canBeDismissed: false,\n id: MODAL_DIALOG_ID,\n type: 'SHOW',\n content: (\n <DialogContent unsupportedBridgeProtocol={store.bridgeProtocol} />\n ),\n });\n }\n } else {\n if (!store.unsupportedBridgeProtocolDetected) {\n dispatch({\n type: 'HIDE',\n id: MODAL_DIALOG_ID,\n });\n }\n }\n };\n\n updateDialog();\n\n store.addListener('unsupportedBridgeProtocolDetected', updateDialog);\n return () => {\n store.removeListener('unsupportedBridgeProtocolDetected', updateDialog);\n };\n }, [isVisible, store]);\n\n return null;\n}\n\nfunction DialogContent({\n unsupportedBridgeProtocol,\n}: {\n unsupportedBridgeProtocol: BridgeProtocol,\n}) {\n const {version, minNpmVersion, maxNpmVersion} = unsupportedBridgeProtocol;\n\n let instructions;\n if (maxNpmVersion === null) {\n const upgradeInstructions = `npm i -g react-devtools@^${minNpmVersion}`;\n instructions = (\n <>\n <p className={styles.Paragraph}>\n To fix this, upgrade the DevTools NPM package:\n </p>\n <pre className={styles.NpmCommand}>\n {upgradeInstructions}\n <Button\n onClick={() => copy(upgradeInstructions)}\n title=\"Copy upgrade command to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </pre>\n </>\n );\n } else {\n const downgradeInstructions = `npm i -g react-devtools@${maxNpmVersion}`;\n instructions = (\n <>\n <p className={styles.Paragraph}>\n To fix this, downgrade the DevTools NPM package:\n </p>\n <pre className={styles.NpmCommand}>\n {downgradeInstructions}\n <Button\n onClick={() => copy(downgradeInstructions)}\n title=\"Copy downgrade command to clipboard\">\n <ButtonIcon type=\"copy\" />\n </Button>\n </pre>\n </>\n );\n }\n\n return (\n <Fragment>\n <div className={styles.Column}>\n <div className={styles.Title}>Unsupported DevTools backend version</div>\n <p className={styles.Paragraph}>\n You are running <code>react-devtools</code> version{' '}\n <span className={styles.Version}>{DEVTOOLS_VERSION}</span>.\n </p>\n <p className={styles.Paragraph}>\n This requires bridge protocol{' '}\n <span className={styles.Version}>\n version {currentBridgeProtocol.version}\n </span>\n . However the current backend version uses bridge protocol{' '}\n <span className={styles.Version}>version {version}</span>.\n </p>\n {instructions}\n <p className={styles.Paragraph}>\n Or{' '}\n <a className={styles.Link} href={INSTRUCTIONS_FB_URL} target=\"_blank\">\n click here\n </a>{' '}\n for more information.\n </p>\n </div>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect, useState} from 'react';\nimport {ModalDialogContext} from './ModalDialog';\nimport {StoreContext} from './context';\nimport {UNSUPPORTED_VERSION_URL} from '../constants';\n\nimport styles from './UnsupportedVersionDialog.css';\n\ntype DAILOG_STATE = 'dialog-not-shown' | 'show-dialog' | 'dialog-shown';\n\nexport default function UnsupportedVersionDialog(_: {}): null {\n const {dispatch} = useContext(ModalDialogContext);\n const store = useContext(StoreContext);\n const [state, setState] = useState<DAILOG_STATE>('dialog-not-shown');\n\n useEffect(() => {\n if (state === 'dialog-not-shown') {\n const showDialog = () => {\n setState('show-dialog');\n dispatch({\n canBeDismissed: true,\n id: 'UnsupportedVersionDialog',\n type: 'SHOW',\n content: <DialogContent />,\n });\n };\n\n if (store.unsupportedRendererVersionDetected) {\n showDialog();\n } else {\n store.addListener('unsupportedRendererVersionDetected', showDialog);\n return () => {\n store.removeListener(\n 'unsupportedRendererVersionDetected',\n showDialog,\n );\n };\n }\n }\n }, [state, store]);\n\n return null;\n}\n\nfunction DialogContent(_: {}) {\n return (\n <Fragment>\n <div className={styles.Row}>\n <div>\n <div className={styles.Title}>Unsupported React version detected</div>\n <p>\n This version of React DevTools supports React DOM v15+ and React\n Native v61+.\n </p>\n <p>\n In order to use DevTools with an older version of React, you'll need\n to{' '}\n <a\n className={styles.ReleaseNotesLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={UNSUPPORTED_VERSION_URL}>\n install an older version of the extension\n </a>\n .\n </p>\n </div>\n </div>\n </Fragment>\n );\n}\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 * @flow\n */\n\nimport * as React from 'react';\nimport {Fragment, useContext, useEffect} from 'react';\nimport {BridgeContext} from './context';\nimport {ModalDialogContext} from './ModalDialog';\n\nimport styles from './WarnIfLegacyBackendDetected.css';\n\nexport default function WarnIfLegacyBackendDetected(_: {}): null {\n const bridge = useContext(BridgeContext);\n const {dispatch} = useContext(ModalDialogContext);\n\n // Detect pairing with legacy v3 backend.\n // We do this by listening to a message that it broadcasts but the v4 backend doesn't.\n // In this case the frontend should show upgrade instructions.\n useEffect(() => {\n // Wall.listen returns a cleanup function\n let unlisten: $FlowFixMe = bridge.wall.listen(message => {\n switch (message.type) {\n case 'call':\n case 'event':\n case 'many-events':\n // Any of these types indicate the v3 backend.\n dispatch({\n canBeDismissed: false,\n id: 'WarnIfLegacyBackendDetected',\n type: 'SHOW',\n title: 'DevTools v4 is incompatible with this version of React',\n content: <InvalidBackendDetected />,\n });\n\n // Once we've identified the backend version, it's safe to unsubscribe.\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n break;\n default:\n break;\n }\n\n switch (message.event) {\n case 'isBackendStorageAPISupported':\n case 'isNativeStyleEditorSupported':\n case 'operations':\n case 'overrideComponentFilters':\n // Any of these is sufficient to indicate a v4 backend.\n // Once we've identified the backend version, it's safe to unsubscribe.\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n break;\n default:\n break;\n }\n });\n\n return () => {\n if (typeof unlisten === 'function') {\n unlisten();\n unlisten = null;\n }\n };\n }, [bridge, dispatch]);\n\n return null;\n}\n\nfunction InvalidBackendDetected(_: {}) {\n return (\n <Fragment>\n <p>Either upgrade React or install React DevTools v3:</p>\n <code className={styles.Command}>npm install -d react-devtools@^3</code>\n </Fragment>\n );\n}\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 * @flow\n */\n\n// Reach styles need to come before any component styles.\n// This makes overriding the styles simpler.\nimport '@reach/menu-button/styles.css';\nimport '@reach/tooltip/styles.css';\n\nimport * as React from 'react';\nimport {useCallback, useEffect, useLayoutEffect, useMemo, useRef} from 'react';\nimport Store from '../store';\nimport {\n BridgeContext,\n ContextMenuContext,\n StoreContext,\n OptionsContext,\n} from './context';\nimport Components from './Components/Components';\nimport Profiler from './Profiler/Profiler';\nimport TabBar from './TabBar';\nimport {SettingsContextController} from './Settings/SettingsContext';\nimport {TreeContextController} from './Components/TreeContext';\nimport ViewElementSourceContext from './Components/ViewElementSourceContext';\nimport FetchFileWithCachingContext from './Components/FetchFileWithCachingContext';\nimport HookNamesModuleLoaderContext from 'react-devtools-shared/src/devtools/views/Components/HookNamesModuleLoaderContext';\nimport {ProfilerContextController} from './Profiler/ProfilerContext';\nimport {TimelineContextController} from 'react-devtools-timeline/src/TimelineContext';\nimport {ModalDialogContextController} from './ModalDialog';\nimport ReactLogo from './ReactLogo';\nimport UnsupportedBridgeProtocolDialog from './UnsupportedBridgeProtocolDialog';\nimport UnsupportedVersionDialog from './UnsupportedVersionDialog';\nimport WarnIfLegacyBackendDetected from './WarnIfLegacyBackendDetected';\nimport {useLocalStorage} from './hooks';\nimport ThemeProvider from './ThemeProvider';\nimport {LOCAL_STORAGE_DEFAULT_TAB_KEY} from '../../constants';\nimport {logEvent} from '../../Logger';\n\nimport styles from './DevTools.css';\n\nimport './root.css';\n\nimport type {FetchFileWithCaching} from './Components/FetchFileWithCachingContext';\nimport type {HookNamesModuleLoaderFunction} from 'react-devtools-shared/src/devtools/views/Components/HookNamesModuleLoaderContext';\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {BrowserTheme} from 'react-devtools-shared/src/frontend/types';\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\nexport type TabID = 'components' | 'profiler';\n\nexport type ViewElementSource = (\n source: Source,\n symbolicatedSource: Source | null,\n) => void;\nexport type ViewAttributeSource = (\n id: number,\n path: Array<string | number>,\n) => void;\nexport type CanViewElementSource = (\n source: Source,\n symbolicatedSource: Source | null,\n) => boolean;\n\nexport type Props = {\n bridge: FrontendBridge,\n browserTheme?: BrowserTheme,\n canViewElementSourceFunction?: ?CanViewElementSource,\n defaultTab?: TabID,\n enabledInspectedElementContextMenu?: boolean,\n showTabBar?: boolean,\n store: Store,\n warnIfLegacyBackendDetected?: boolean,\n warnIfUnsupportedVersionDetected?: boolean,\n viewAttributeSourceFunction?: ?ViewAttributeSource,\n viewElementSourceFunction?: ?ViewElementSource,\n readOnly?: boolean,\n hideSettings?: boolean,\n hideToggleErrorAction?: boolean,\n hideToggleSuspenseAction?: boolean,\n hideLogAction?: boolean,\n hideViewSourceAction?: boolean,\n\n // This property is used only by the web extension target.\n // The built-in tab UI is hidden in that case, in favor of the browser's own panel tabs.\n // This is done to save space within the app.\n // Because of this, the extension needs to be able to change which tab is active/rendered.\n overrideTab?: TabID,\n\n // To avoid potential multi-root trickiness, the web extension uses portals to render tabs.\n // The root <DevTools> app is rendered in the top-level extension window,\n // but individual tabs (e.g. Components, Profiling) can be rendered into portals within their browser panels.\n componentsPortalContainer?: Element,\n profilerPortalContainer?: Element,\n\n // Loads and parses source maps for function components\n // and extracts hook \"names\" based on the variables the hook return values get assigned to.\n // Not every DevTools build can load source maps, so this property is optional.\n fetchFileWithCaching?: ?FetchFileWithCaching,\n // TODO (Webpack 5) Hopefully we can remove this prop after the Webpack 5 migration.\n hookNamesModuleLoaderFunction?: ?HookNamesModuleLoaderFunction,\n};\n\nconst componentsTab = {\n id: ('components': TabID),\n icon: 'components',\n label: 'Components',\n title: 'React Components',\n};\nconst profilerTab = {\n id: ('profiler': TabID),\n icon: 'profiler',\n label: 'Profiler',\n title: 'React Profiler',\n};\n\nconst tabs = [componentsTab, profilerTab];\n\nexport default function DevTools({\n bridge,\n browserTheme = 'light',\n canViewElementSourceFunction,\n componentsPortalContainer,\n defaultTab = 'components',\n enabledInspectedElementContextMenu = false,\n fetchFileWithCaching,\n hookNamesModuleLoaderFunction,\n overrideTab,\n profilerPortalContainer,\n showTabBar = false,\n store,\n warnIfLegacyBackendDetected = false,\n warnIfUnsupportedVersionDetected = false,\n viewAttributeSourceFunction,\n viewElementSourceFunction,\n readOnly,\n hideSettings,\n hideToggleErrorAction,\n hideToggleSuspenseAction,\n hideLogAction,\n hideViewSourceAction,\n}: Props): React.Node {\n const [currentTab, setTab] = useLocalStorage<TabID>(\n LOCAL_STORAGE_DEFAULT_TAB_KEY,\n defaultTab,\n );\n\n let tab = currentTab;\n\n if (overrideTab != null) {\n tab = overrideTab;\n }\n\n const selectTab = useCallback(\n (tabId: TabID) => {\n // We show the TabBar when DevTools is NOT rendered as a browser extension.\n // In this case, we want to capture when people select tabs with the TabBar.\n // When DevTools is rendered as an extension, we capture this event when\n // the browser devtools panel changes.\n if (showTabBar === true) {\n if (tabId === 'components') {\n logEvent({event_name: 'selected-components-tab'});\n } else {\n logEvent({event_name: 'selected-profiler-tab'});\n }\n }\n setTab(tabId);\n },\n [setTab, showTabBar],\n );\n\n const options = useMemo(\n () => ({\n readOnly: readOnly || false,\n hideSettings: hideSettings || false,\n hideToggleErrorAction: hideToggleErrorAction || false,\n hideToggleSuspenseAction: hideToggleSuspenseAction || false,\n hideLogAction: hideLogAction || false,\n hideViewSourceAction: hideViewSourceAction || false,\n }),\n [\n readOnly,\n hideSettings,\n hideToggleErrorAction,\n hideToggleSuspenseAction,\n hideLogAction,\n hideViewSourceAction,\n ],\n );\n\n const viewElementSource = useMemo(\n () => ({\n canViewElementSourceFunction: canViewElementSourceFunction || null,\n viewElementSourceFunction: viewElementSourceFunction || null,\n }),\n [canViewElementSourceFunction, viewElementSourceFunction],\n );\n\n const contextMenu = useMemo(\n () => ({\n isEnabledForInspectedElement: enabledInspectedElementContextMenu,\n viewAttributeSourceFunction: viewAttributeSourceFunction || null,\n }),\n [enabledInspectedElementContextMenu, viewAttributeSourceFunction],\n );\n\n const devToolsRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!showTabBar) {\n return;\n }\n\n const div = devToolsRef.current;\n if (div === null) {\n return;\n }\n\n const ownerWindow = div.ownerDocument.defaultView;\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.ctrlKey || event.metaKey) {\n switch (event.key) {\n case '1':\n selectTab(tabs[0].id);\n event.preventDefault();\n event.stopPropagation();\n break;\n case '2':\n selectTab(tabs[1].id);\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n };\n ownerWindow.addEventListener('keydown', handleKeyDown);\n return () => {\n ownerWindow.removeEventListener('keydown', handleKeyDown);\n };\n }, [showTabBar]);\n\n useLayoutEffect(() => {\n return () => {\n try {\n // Shut the Bridge down synchronously (during unmount).\n bridge.shutdown();\n } catch (error) {\n // Attempting to use a disconnected port.\n }\n };\n }, [bridge]);\n\n useEffect(() => {\n logEvent({event_name: 'loaded-dev-tools'});\n }, []);\n\n return (\n <BridgeContext.Provider value={bridge}>\n <StoreContext.Provider value={store}>\n <OptionsContext.Provider value={options}>\n <ContextMenuContext.Provider value={contextMenu}>\n <ModalDialogContextController>\n <SettingsContextController\n browserTheme={browserTheme}\n componentsPortalContainer={componentsPortalContainer}\n profilerPortalContainer={profilerPortalContainer}>\n <ViewElementSourceContext.Provider value={viewElementSource}>\n <HookNamesModuleLoaderContext.Provider\n value={hookNamesModuleLoaderFunction || null}>\n <FetchFileWithCachingContext.Provider\n value={fetchFileWithCaching || null}>\n <TreeContextController>\n <ProfilerContextController>\n <TimelineContextController>\n <ThemeProvider>\n <div\n className={styles.DevTools}\n ref={devToolsRef}\n data-react-devtools-portal-root={true}>\n {showTabBar && (\n <div className={styles.TabBar}>\n <ReactLogo />\n <span className={styles.DevToolsVersion}>\n {process.env.DEVTOOLS_VERSION}\n </span>\n <div className={styles.Spacer} />\n <TabBar\n currentTab={tab}\n id=\"DevTools\"\n selectTab={selectTab}\n tabs={tabs}\n type=\"navigation\"\n />\n </div>\n )}\n <div\n className={styles.TabContent}\n hidden={tab !== 'components'}>\n <Components\n portalContainer={componentsPortalContainer}\n />\n </div>\n <div\n className={styles.TabContent}\n hidden={tab !== 'profiler'}>\n <Profiler\n portalContainer={profilerPortalContainer}\n />\n </div>\n </div>\n </ThemeProvider>\n </TimelineContextController>\n </ProfilerContextController>\n </TreeContextController>\n </FetchFileWithCachingContext.Provider>\n </HookNamesModuleLoaderContext.Provider>\n </ViewElementSourceContext.Provider>\n </SettingsContextController>\n <UnsupportedBridgeProtocolDialog />\n {warnIfLegacyBackendDetected && <WarnIfLegacyBackendDetected />}\n {warnIfUnsupportedVersionDetected && <UnsupportedVersionDialog />}\n </ModalDialogContextController>\n </ContextMenuContext.Provider>\n </OptionsContext.Provider>\n </StoreContext.Provider>\n </BridgeContext.Provider>\n );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"child_process\");","/**\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 * @flow\n */\n\nimport {existsSync} from 'fs';\nimport {basename, join, isAbsolute} from 'path';\nimport {execSync, spawn} from 'child_process';\nimport {parse} from 'shell-quote';\n\nfunction isTerminalEditor(editor: string): boolean {\n switch (editor) {\n case 'vim':\n case 'emacs':\n case 'nano':\n return true;\n default:\n return false;\n }\n}\n\n// Map from full process name to binary that starts the process\n// We can't just re-use full process name, because it will spawn a new instance\n// of the app every time\nconst COMMON_EDITORS = {\n '/Applications/Atom.app/Contents/MacOS/Atom': 'atom',\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta':\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',\n '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2':\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',\n};\n\nfunction getArgumentsForLineNumber(\n editor: string,\n filePath: string,\n lineNumber: number,\n): Array<string> {\n switch (basename(editor)) {\n case 'vim':\n case 'mvim':\n return [filePath, '+' + lineNumber];\n case 'atom':\n case 'Atom':\n case 'Atom Beta':\n case 'subl':\n case 'sublime':\n case 'wstorm':\n case 'appcode':\n case 'charm':\n case 'idea':\n return [filePath + ':' + lineNumber];\n case 'joe':\n case 'emacs':\n case 'emacsclient':\n return ['+' + lineNumber, filePath];\n case 'rmate':\n case 'mate':\n case 'mine':\n return ['--line', lineNumber + '', filePath];\n case 'code':\n return ['-g', filePath + ':' + lineNumber];\n default:\n // For all others, drop the lineNumber until we have\n // a mapping above, since providing the lineNumber incorrectly\n // can result in errors or confusing behavior.\n return [filePath];\n }\n}\n\nfunction guessEditor(): Array<string> {\n // Explicit config always wins\n if (process.env.REACT_EDITOR) {\n return parse(process.env.REACT_EDITOR);\n }\n\n // Using `ps x` on OSX we can find out which editor is currently running.\n // Potentially we could use similar technique for Windows and Linux\n if (process.platform === 'darwin') {\n try {\n const output = execSync('ps x').toString();\n const processNames = Object.keys(COMMON_EDITORS);\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i];\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS[processName]];\n }\n }\n } catch (error) {\n // Ignore...\n }\n }\n\n // Last resort, use old-school env vars\n if (process.env.VISUAL) {\n return [process.env.VISUAL];\n } else if (process.env.EDITOR) {\n return [process.env.EDITOR];\n }\n\n return [];\n}\n\nlet childProcess = null;\n\nexport function getValidFilePath(\n maybeRelativePath: string,\n absoluteProjectRoots: Array<string>,\n): string | null {\n // We use relative paths at Facebook with deterministic builds.\n // This is why our internal tooling calls React DevTools with absoluteProjectRoots.\n // If the filename is absolute then we don't need to care about this.\n if (isAbsolute(maybeRelativePath)) {\n if (existsSync(maybeRelativePath)) {\n return maybeRelativePath;\n }\n } else {\n for (let i = 0; i < absoluteProjectRoots.length; i++) {\n const projectRoot = absoluteProjectRoots[i];\n const joinedPath = join(projectRoot, maybeRelativePath);\n if (existsSync(joinedPath)) {\n return joinedPath;\n }\n }\n }\n\n return null;\n}\n\nexport function doesFilePathExist(\n maybeRelativePath: string,\n absoluteProjectRoots: Array<string>,\n): boolean {\n return getValidFilePath(maybeRelativePath, absoluteProjectRoots) !== null;\n}\n\nexport function launchEditor(\n maybeRelativePath: string,\n lineNumber: number,\n absoluteProjectRoots: Array<string>,\n) {\n const filePath = getValidFilePath(maybeRelativePath, absoluteProjectRoots);\n if (filePath === null) {\n return;\n }\n\n // Sanitize lineNumber to prevent malicious use on win32\n // via: https://github.com/nodejs/node/blob/c3bb4b1aa5e907d489619fb43d233c3336bfc03d/lib/child_process.js#L333\n if (lineNumber && isNaN(lineNumber)) {\n return;\n }\n\n const [editor, ...destructuredArgs] = guessEditor();\n if (!editor) {\n return;\n }\n\n let args = destructuredArgs;\n\n if (lineNumber) {\n args = args.concat(getArgumentsForLineNumber(editor, filePath, lineNumber));\n } else {\n args.push(filePath);\n }\n\n if (childProcess && isTerminalEditor(editor)) {\n // There's an existing editor process already and it's attached\n // to the terminal, so go kill it. Otherwise two separate editor\n // instances attach to the stdin/stdout which gets confusing.\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n childProcess.kill('SIGKILL');\n }\n\n if (process.platform === 'win32') {\n // On Windows, launch the editor in a shell because spawn can only\n // launch .exe files.\n childProcess = spawn('cmd.exe', ['/C', editor].concat(args), {\n stdio: 'inherit',\n });\n } else {\n childProcess = spawn(editor, args, {stdio: 'inherit'});\n }\n childProcess.on('error', function () {});\n // $FlowFixMe[incompatible-use] found when upgrading Flow\n childProcess.on('exit', function () {\n childProcess = null;\n });\n}\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 * @flow\n */\n\nimport {createElement} from 'react';\nimport {flushSync} from 'react-dom';\nimport {createRoot} from 'react-dom/client';\nimport Bridge from 'react-devtools-shared/src/bridge';\nimport Store from 'react-devtools-shared/src/devtools/store';\nimport {getSavedComponentFilters} from 'react-devtools-shared/src/utils';\nimport {registerDevToolsEventLogger} from 'react-devtools-shared/src/registerDevToolsEventLogger';\nimport {Server} from 'ws';\nimport {join} from 'path';\nimport {readFileSync} from 'fs';\nimport DevTools from 'react-devtools-shared/src/devtools/views/DevTools';\nimport {doesFilePathExist, launchEditor} from './editor';\nimport {\n __DEBUG__,\n LOCAL_STORAGE_DEFAULT_TAB_KEY,\n} from 'react-devtools-shared/src/constants';\nimport {localStorageSetItem} from 'react-devtools-shared/src/storage';\n\nimport type {FrontendBridge} from 'react-devtools-shared/src/bridge';\nimport type {Source} from 'react-devtools-shared/src/shared/types';\n\nexport type StatusTypes = 'server-connected' | 'devtools-connected' | 'error';\nexport type StatusListener = (message: string, status: StatusTypes) => void;\nexport type OnDisconnectedCallback = () => void;\n\nlet node: HTMLElement = ((null: any): HTMLElement);\nlet nodeWaitingToConnectHTML: string = '';\nlet projectRoots: Array<string> = [];\nlet statusListener: StatusListener = (\n message: string,\n status?: StatusTypes,\n) => {};\nlet disconnectedCallback: OnDisconnectedCallback = () => {};\n\n// TODO (Webpack 5) Hopefully we can remove this prop after the Webpack 5 migration.\nfunction hookNamesModuleLoaderFunction() {\n return import(\n /* webpackChunkName: 'parseHookNames' */ 'react-devtools-shared/src/hooks/parseHookNames'\n );\n}\n\nfunction setContentDOMNode(value: HTMLElement): typeof DevtoolsUI {\n node = value;\n\n // Save so we can restore the exact waiting message between sessions.\n nodeWaitingToConnectHTML = node.innerHTML;\n\n return DevtoolsUI;\n}\n\nfunction setProjectRoots(value: Array<string>) {\n projectRoots = value;\n}\n\nfunction setStatusListener(value: StatusListener): typeof DevtoolsUI {\n statusListener = value;\n return DevtoolsUI;\n}\n\nfunction setDisconnectedCallback(\n value: OnDisconnectedCallback,\n): typeof DevtoolsUI {\n disconnectedCallback = value;\n return DevtoolsUI;\n}\n\nlet bridge: FrontendBridge | null = null;\nlet store: Store | null = null;\nlet root = null;\n\nconst log = (...args: Array<mixed>) => console.log('[React DevTools]', ...args);\nlog.warn = (...args: Array<mixed>) => console.warn('[React DevTools]', ...args);\nlog.error = (...args: Array<mixed>) =>\n console.error('[React DevTools]', ...args);\n\nfunction debug(methodName: string, ...args: Array<mixed>) {\n if (__DEBUG__) {\n console.log(\n `%c[core/standalone] %c${methodName}`,\n 'color: teal; font-weight: bold;',\n 'font-weight: bold;',\n ...args,\n );\n }\n}\n\nfunction safeUnmount() {\n flushSync(() => {\n if (root !== null) {\n root.unmount();\n root = null;\n }\n });\n}\n\nfunction reload() {\n safeUnmount();\n\n node.innerHTML = '';\n\n setTimeout(() => {\n root = createRoot(node);\n root.render(\n createElement(DevTools, {\n bridge: ((bridge: any): FrontendBridge),\n canViewElementSourceFunction,\n hookNamesModuleLoaderFunction,\n showTabBar: true,\n store: ((store: any): Store),\n warnIfLegacyBackendDetected: true,\n viewElementSourceFunction,\n fetchFileWithCaching,\n }),\n );\n }, 100);\n}\n\nconst resourceCache: Map<string, string> = new Map();\n\n// As a potential improvement, this should be done from the backend of RDT.\n// Browser extension is doing this via exchanging messages\n// between devtools_page and dedicated content script for it, see `fetchFileWithCaching.js`.\nasync function fetchFileWithCaching(url: string) {\n if (resourceCache.has(url)) {\n return Promise.resolve(resourceCache.get(url));\n }\n\n return fetch(url)\n .then(data => data.text())\n .then(content => {\n resourceCache.set(url, content);\n\n return content;\n });\n}\n\nfunction canViewElementSourceFunction(\n _source: Source,\n symbolicatedSource: Source | null,\n): boolean {\n if (symbolicatedSource == null) {\n return false;\n }\n\n return doesFilePathExist(symbolicatedSource.sourceURL, projectRoots);\n}\n\nfunction viewElementSourceFunction(\n _source: Source,\n symbolicatedSource: Source | null,\n): void {\n if (symbolicatedSource == null) {\n return;\n }\n\n launchEditor(\n symbolicatedSource.sourceURL,\n symbolicatedSource.line,\n projectRoots,\n );\n}\n\nfunction onDisconnected() {\n safeUnmount();\n\n node.innerHTML = nodeWaitingToConnectHTML;\n\n disconnectedCallback();\n}\n\nfunction onError({code, message}: $FlowFixMe) {\n safeUnmount();\n\n if (code === 'EADDRINUSE') {\n node.innerHTML = `\n <div class=\"box\">\n <div class=\"box-header\">\n Another instance of DevTools is running.\n </div>\n <div class=\"box-content\">\n Only one copy of DevTools can be used at a time.\n </div>\n </div>\n `;\n } else {\n node.innerHTML = `\n <div class=\"box\">\n <div class=\"box-header\">\n Unknown error\n </div>\n <div class=\"box-content\">\n ${message}\n </div>\n </div>\n `;\n }\n}\n\nfunction openProfiler() {\n // Mocked up bridge and store to allow the DevTools to be rendered\n bridge = new Bridge({listen: () => {}, send: () => {}});\n store = new Store(bridge, {});\n\n // Ensure the Profiler tab is shown initially.\n localStorageSetItem(\n LOCAL_STORAGE_DEFAULT_TAB_KEY,\n JSON.stringify('profiler'),\n );\n\n reload();\n}\n\nfunction initialize(socket: WebSocket) {\n const listeners = [];\n socket.onmessage = event => {\n let data;\n try {\n if (typeof event.data === 'string') {\n data = JSON.parse(event.data);\n\n if (__DEBUG__) {\n debug('WebSocket.onmessage', data);\n }\n } else {\n throw Error();\n }\n } catch (e) {\n log.error('Failed to parse JSON', event.data);\n return;\n }\n listeners.forEach(fn => {\n try {\n fn(data);\n } catch (error) {\n log.error('Error calling listener', data);\n throw error;\n }\n });\n };\n\n bridge = new Bridge({\n listen(fn) {\n listeners.push(fn);\n return () => {\n const index = listeners.indexOf(fn);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n };\n },\n send(event: string, payload: any, transferable?: Array<any>) {\n if (socket.readyState === socket.OPEN) {\n socket.send(JSON.stringify({event, payload}));\n }\n },\n });\n ((bridge: any): FrontendBridge).addListener('shutdown', () => {\n socket.close();\n });\n\n // $FlowFixMe[incompatible-call] found when upgrading Flow\n store = new Store(bridge, {\n checkBridgeProtocolCompatibility: true,\n supportsTraceUpdates: true,\n supportsClickToInspect: true,\n });\n\n log('Connected');\n statusListener('DevTools initialized.', 'devtools-connected');\n reload();\n}\n\nlet startServerTimeoutID: TimeoutID | null = null;\n\nfunction connectToSocket(socket: WebSocket): {close(): void} {\n socket.onerror = err => {\n onDisconnected();\n log.error('Error with websocket connection', err);\n };\n socket.onclose = () => {\n onDisconnected();\n log('Connection to RN closed');\n };\n initialize(socket);\n\n return {\n close: function () {\n onDisconnected();\n },\n };\n}\n\ntype ServerOptions = {\n key?: string,\n cert?: string,\n};\n\ntype LoggerOptions = {\n surface?: ?string,\n};\n\nfunction startServer(\n port: number = 8097,\n host: string = 'localhost',\n httpsOptions?: ServerOptions,\n loggerOptions?: LoggerOptions,\n): {close(): void} {\n registerDevToolsEventLogger(loggerOptions?.surface ?? 'standalone');\n\n const useHttps = !!httpsOptions;\n const httpServer = useHttps\n ? require('https').createServer(httpsOptions)\n : require('http').createServer();\n const server = new Server({server: httpServer, maxPayload: 1e9});\n let connected: WebSocket | null = null;\n server.on('connection', (socket: WebSocket) => {\n if (connected !== null) {\n connected.close();\n log.warn(\n 'Only one connection allowed at a time.',\n 'Closing the previous connection',\n );\n }\n connected = socket;\n socket.onerror = error => {\n connected = null;\n onDisconnected();\n log.error('Error with websocket connection', error);\n };\n socket.onclose = () => {\n connected = null;\n onDisconnected();\n log('Connection to RN closed');\n };\n initialize(socket);\n });\n\n server.on('error', (event: $FlowFixMe) => {\n onError(event);\n log.error('Failed to start the DevTools server', event);\n startServerTimeoutID = setTimeout(() => startServer(port), 1000);\n });\n\n httpServer.on('request', (request: $FlowFixMe, response: $FlowFixMe) => {\n // Serve a file that immediately sets up the connection.\n const backendFile = readFileSync(join(__dirname, 'backend.js'));\n\n // The renderer interface doesn't read saved component filters directly,\n // because they are generally stored in localStorage within the context of the extension.\n // Because of this it relies on the extension to pass filters, so include them wth the response here.\n // This will ensure that saved filters are shared across different web pages.\n const savedPreferencesString = `\n window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = ${JSON.stringify(\n getSavedComponentFilters(),\n )};`;\n\n response.end(\n savedPreferencesString +\n '\\n;' +\n backendFile.toString() +\n '\\n;' +\n 'ReactDevToolsBackend.initialize();' +\n '\\n' +\n `ReactDevToolsBackend.connectToDevTools({port: ${port}, host: '${host}', useHttps: ${\n useHttps ? 'true' : 'false'\n }});\n `,\n );\n });\n\n httpServer.on('error', (event: $FlowFixMe) => {\n onError(event);\n statusListener('Failed to start the server.', 'error');\n startServerTimeoutID = setTimeout(() => startServer(port), 1000);\n });\n\n httpServer.listen(port, () => {\n statusListener(\n 'The server is listening on the port ' + port + '.',\n 'server-connected',\n );\n });\n\n return {\n close: function () {\n connected = null;\n onDisconnected();\n if (startServerTimeoutID !== null) {\n clearTimeout(startServerTimeoutID);\n }\n server.close();\n httpServer.close();\n },\n };\n}\n\nconst DevtoolsUI = {\n connectToSocket,\n setContentDOMNode,\n setProjectRoots,\n setStatusListener,\n setDisconnectedCallback,\n startServer,\n openProfiler,\n};\n\nexport default DevtoolsUI;\n"],"names":["leafPrototypes","getProto","installedChunks","Scheduler","require","React","ReactDOM","formatProdErrorMessage","code","url","arguments","length","encodeURIComponent","i","getNearestMountedFiber","fiber","node","nearestMounted","alternate","return","flags","tag","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","Error","findCurrentHostFiberImpl","child","sibling","assign","Object","REACT_LEGACY_ELEMENT_TYPE","Symbol","for","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","REACT_LEGACY_HIDDEN_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_POSTPONE_TYPE","REACT_VIEW_TRANSITION_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","getIteratorFn","maybeIterable","ASYNC_ITERATOR","asyncIterator","REACT_CLIENT_REFERENCE","getComponentNameFromType","type","$$typeof","displayName","name","_context","innerType","render","_payload","_init","x","isArrayImpl","Array","isArray","ReactSharedInternals","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","ReactDOMSharedInternals","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","sharedNotPendingObject","pending","data","method","action","valueStack","index","createCursor","defaultValue","current","pop","cursor","push","value","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","nodeType","documentElement","namespaceURI","getOwnHostContext","parentNode","tagName","getChildHostContextProd","popHostContainer","pushHostContext","context","JSCompiler_inline_result","popHostContext","HostTransitionContext","_currentValue","hasOwnProperty","prototype","scheduleCallback$3","unstable_scheduleCallback","cancelCallback$1","unstable_cancelCallback","shouldYield","unstable_shouldYield","requestPaint","unstable_requestPaint","now","unstable_now","getCurrentPriorityLevel","unstable_getCurrentPriorityLevel","ImmediatePriority","unstable_ImmediatePriority","UserBlockingPriority","unstable_UserBlockingPriority","NormalPriority$1","unstable_NormalPriority","LowPriority","unstable_LowPriority","IdlePriority","unstable_IdlePriority","log$1","log","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","err","clz32","Math","LN2","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","currentTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","p","window","event","getEventPriority","randomKey","random","toString","slice","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","Map","hoistableScripts","markNodeAsHoistable","allNativeEvents","Set","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","add","prefix","suffix","VALID_ATTRIBUTE_NAME_REGEX","RegExp","illegalAttributeNameCache","validatedAttributeNameCache","viewTransitionMutationContext","setValueForAttribute","attributeName","call","test","removeAttribute","prefix$8","toLowerCase","setAttribute","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","describeBuiltInComponentFrame","match","stack","trim","indexOf","reentry","describeNativeComponentFrame","fn","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","defineProperty","set","Reflect","control","x$9","x$10","catch","sample","namePropDescriptor","getOwnPropertyDescriptor","configurable","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","split","controlLines","includes","frame","replace","describeFiber","getStackByFiberInDevAndProd","workInProgress","info","message","getToStringValue","isCheckable","elem","nodeName","track","_valueTracker","valueField","descriptor","constructor","currentValue","get","this","enumerable","getValue","setValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","checked","getActiveElement","doc","document","activeElement","body","e","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","charCodeAt","updateInput","element","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","options","selected","defaultSelected","disabled","updateTextarea","initTextarea","children","textContent","setTextContent","text","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","style","styleName","isCustomProperty","setProperty","cssFloat","has","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","target","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","props","a","querySelectorAll","otherNode","form","otherProps","isInsideEventHandler","batchedUpdates$1","b","flushSyncWork$1","getListener","canUseDOM","createElement","passiveBrowserEventsSupported","addEventListener","removeEventListener","startText","fallbackText","getData","start","end","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","propName","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","SyntheticEvent","UIEventInterface","view","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","clipboardData","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","SyntheticKeyboardEvent","key","String","fromCharCode","location","repeat","locale","which","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","color","date","datetime","email","month","number","password","range","search","tel","time","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$285","isSupported$jscomp$inline_423","element$jscomp$inline_424","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","y","shallowEqual","objA","objB","keysA","keys","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","contains","compareDocumentPosition","getActiveElementDeep","containerInfo","defaultView","HTMLIFrameElement","contentWindow","href","hasSelectionCapabilities","contentEditable","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","CapturedStacks","WeakMap","createCapturedValueAtFiber","source","existing","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","update","next","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","parent","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","list","nextFiber","firstContext","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","memoizedProps","pendingProps","checkIfContextChanged","currentDependencies","memoizedValue","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","status","hasForceUpdate","initializeUpdateQueue","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","cloneUpdateQueue","createUpdate","payload","callback","enqueueUpdate","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","instance","workInProgressRootSkippedLanes","callCallback","commitCallbacks","AbortControllerLocal","AbortController","signal","aborted","listener","abort","forEach","scheduleCallback$2","NormalPriority","CacheContext","Consumer","Provider","_currentValue2","_threadCount","createCache","controller","refCount","releaseCache","cache","applyDerivedStateFromProps","ctor","getDerivedStateFromProps","nextProps","classComponentUpdater","enqueueSetState","_reactInternals","requestUpdateLane","scheduleUpdateOnFiber","enqueueReplaceState","enqueueForceUpdate","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","isPureReactComponent","callComponentWillReceiveProps","state","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","Component","baseProps","defaultProps","propName$28","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","getTreeId","overflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","then","isThenableResolved","thenable","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","reason","workInProgressRoot","shellSuspendCounter","fulfilledValue","fulfilledThenable","error","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","prevOnStartTransitionFinish","S","entangledListeners","requestTransitionLane","resolve","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter$1","thenableState$1","globalClientIdCounter$1","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","H","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","lastEffect","events","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useState","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","use","usable","useMemoCache","size","map","array","basicStateReducer","updateReducer","reducer","updateReducerImpl","lastRenderedReducer","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$33","revertLane","hasEagerState","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","bind","pushSimpleEffect","destroy","resource","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","mountStateImpl","initialState","initialStateInitializer","updateOptimisticImpl","passthrough","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","isTransition","T","runActionStateAction","prevState","prevTransition","currentTransition","onStartTransitionFinish","handleActionReturnValue","onActionError","error$39","nextState","onActionSuccess","notifyActionListeners","last","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","nextHydratableInstance","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","rootOrSingletonContext","getNextHydratable","throwOnHydrationMismatch","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionStateActionEffect","rerenderActionState","create","deps","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","updateEvent","ref","componentUpdateQueue","useEffectEventImpl","nextImpl","impl","apply","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","concat","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","initialValue","requestDeferredLane","updateDeferredValueImpl","prevValue","startTransition","pendingState","finishedState","previousPriority","result","thenableWithOverride","dispatchSetStateInternal","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","seedKey","seedValue","provider","root$42","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useInsertionEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useSyncExternalStore","useId","useFormState","useActionState","useOptimistic","useCacheRefresh","useEffectEvent","initialArg","init","identifierPrefix","treeId","booleanOrThenable","thenableIndexCounter","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","join","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","createWorkInProgress","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","createFiberFromText","mode","updateElement","elementType","updateFragment","createFiberFromTypeAndProps","updatePortal","portal","implementation","createFiberFromPortal","fragment","createFiberFromFragment","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenIterator","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","step","done","delete","reconcileChildFibersImpl","reconcileChildrenArray","newChildrenIterable","reconcileChildrenAsyncIteratable","firstChildFiber","createFiberImplClass","reconcileChildFibers","mountChildFibers","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","isSuspenseInstanceFallback","revealOrder","reportGlobalError","reportError","ErrorEvent","dispatchEvent","process","emit","console","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$75","setTimeout","logCaughtError","boundary","onCaughtError","errorBoundary","e$76","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","markSuspenseBoundaryShouldCapture","suspenseBoundary","rootRenderLanes","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","shouldConstruct","compare","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","nextIsDetached","_pendingVisibility","markRef","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","replayFunctionComponent","updateClassComponent","contextType","updater","refs","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","resetHydrationState","SUSPENDED_MARKER","treeContext","retryLane","hydrationErrors","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","JSCompiler_temp","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","c","id","hydrationParentFiber","fallback","mountSuspenseFallbackChildren","unstable_expectedLoadTime","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","mountWorkInProgressOffscreenFiber","dataset","digest","dgst","queueHydrationError","renderDidSuspendDelayIfPossible","subtreeFlags","primaryChildren","fallbackChildren","offscreenProps","createFiberFromOffscreen","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","getAttribute","rel","crossOrigin","title","src","canHydrateInstance","shouldSetTextContent","canHydrateTextInstance","pooledCacheLanes","trackAppearingViewTransition","autoName","globalClientIdCounter","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","getViewTransitionName","createViewTransitionInstance","safelyDetachRef","error$115","commitHostMount","autoFocus","focus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$207","propKey$223","propKey$228","propKey$233","setPropOnCustomElement","propKey$238","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertBefore","appendChild","_reactRootContainer","onclick","noop$1","insertOrAppendPlacementNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","shouldStartViewTransition","viewTransitionContextChanged","viewTransitionCancelableChildren","commitBeforeMutationEffects_complete","isViewTransitionEligible$jscomp$0","isViewTransitionEligible","resolvedPrevProps","__reactInternalSnapshotBeforeUpdate","clearContainerSparingly","getViewTransitionClassName","className","layout","viewTransitionHostInstanceIdx","applyViewTransitionToHostInstances","collectMeasurements","stopAtNestedViewTransitions","inViewport","measurement","measureInstance","viewTransitionName","viewTransitionClass","restoreViewTransitionOnHostInstances","restoreViewTransitionName","commitAppearingPairViewTransitions","placement","paired","share","commitEnterViewTransitions","enter","scheduleViewTransitionEvent","onEnter","commitDeletedPairViewTransitions","deletion","appearingViewTransitions","pair","onShare","commitExitViewTransitions","exit","onExit","commitNestedViewTransitions","changedParent","restorePairedViewTransitions","restoreEnterViewTransitions","restoreExitViewTransitions","restoreNestedViewTransitions","cancelViewTransitionHostInstances","currentViewTransition","oldName","measureViewTransitionHostInstances","parentViewTransition","previousMeasurements","previousMeasurement","nextMeasurement","clip","rect","newRect","abs","measureNestedViewTransitions","onLayout","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$114","commitSuspenseHydrationCallbacks","readyState","_reactRetry","registerSuspenseInstanceRetry","retryDehydratedSuspenseBoundary","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","count","removeChild","prevHostParent","prevHostParentIsContainer","attributes","removeAttributeNode","prevHostParentIsContainer$122","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","_retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","getElementsByTagName","head","querySelector","getHydratableHoistableCache","splice","content","property","httpEquiv","charSet","mountHoistable","acquireResource","nextNode","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","_current","recursivelyTraverseDisappearLayoutEffects","display","retryQueue","parent$jscomp$0","parent$116","parent$118","reset","recursivelyTraverseAfterMutationEffects","commitAfterMutationEffectsOnFiber","animate","opacity","pointerEvents","duration","fill","updateClassName","layoutClassName","onUpdate","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendedState","media","matchMedia","matches","loading","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","Promise","reject","onload","onerror","stylesheets","preload","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","FiberNode","isReactComponent","resetWorkInProgress","owner","fiberTag","hostContext","itemProp","precedence","onLoad","onError","async","isHostHoistableType","elements","primaryChildInstance","_pendingMarkers","_transitions","detach","attach","pendingChildren","HydrationMismatchException","prepareToHydrateHostInstance","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","popToNextHostParent","popHydrationState","shouldClear","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","getClassNameByType","classByType","activeTypes","pendingTransitionTypes","default","defaultClass","eventClass","markUpdate","preloadResourceAndSuspendIfNeeded","preloadResource","scheduleRetryEffect","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$135","bubbleProperties","completedWork","didBailout","newChildLanes","child$136","trackReappearingViewTransitions","completeWork","pendingContext","createElementNS","innerHTML","createTextNode","cache$149","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressAppearingViewTransitions","workInProgressRootDidIncludeRecursiveRenderUpdate","Infinity","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","pendingViewTransitionEvents","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrentByScheduler","thrownValue$170","handleThrow","A","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","noop","__reactViewTransition","finished","insertSuspendedStylesheets","commit","stylesheetTimer","clearTimeout","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$4","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$2","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$168","performUnitOfWork","suspendedReason","currentSourceFiber","resetSuspendedComponent","attachPingListener","markerInstances","cause","throwException","unwindUnitOfWork","skipSiblings","flushPendingEffects","finishedLanes","remainingLanes","previouslyPendingLanes","index$5","hiddenUpdatesForLane","markRootFinished","V","callbackNode","callbackPriority","flushPassiveEffects","eventsEnabled","_enabled","selection","rangeCount","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","focusedElem","selectionRange","commitBeforeMutationEffects","rootContainer","transitionTypes","mutationCallback","layoutCallback","afterMutationCallback","spawnedWorkCallback","passiveCallback","startViewTransition","ownerWindow","navigation","previousFontLoadingStatus","fonts","clientHeight","race","ready","allSettled","types","flushMutationEffects","flushLayoutEffects","flushAfterMutationEffects","flushSpawnedWork","rootMutationHasEffect","curFocusedElem","priorFocusedElem","priorSelectionRange","min","win","start$jscomp$0","end$jscomp$0","extend","startMarker","endMarker","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","rootHasLayoutEffect","passiveSubtreeMask","releaseRootPooledCache","onCommitFiberRoot","onRecoverableError","recoverableError","wasDelayedCommit","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleMicrotask","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$176","performSyncWorkOnRoot","currentPopstateTransitionEvent","prev","scheduleTaskForRootDuringMicrotask","index$3","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","FormData","i$jscomp$inline_1552","eventName$jscomp$inline_1553","toUpperCase","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","container","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","unshift","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","isNaN","endsWith","hasSrc","hasSrcSet","propValue$190","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","depth","getBoundingClientRect","getComputedStyle","position","clipPath","filter","mask","borderRadius","bottom","right","innerHeight","innerWidth","ViewTransitionPseudoElement","pseudo","_scope","_selector","group","imagePair","old","new","targetInstance","previousSibling","rootContainerInstance","keyframes","getAnimations","scope","selector","animations","subtree","effect","preconnectsSet","getRootNode","previousDispatcher","d","f","previousWasRendering","wasRendering","r","formInst","D","preconnectAs","C","L","as","globalDocument","preloadSelector","imageSrcSet","imageSizes","getScriptKey","getScriptSelectorFromKey","m","X","scripts","adoptPreloadPropsForScript","link","insertStylesheet","M","limitedEscapedHref","currentProps","currentResource","preloadProps","styles$246","resource$247","integrity","hrefLang","referrerPolicy","rawProps","styleProps","instance$252","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","updateContainerImpl","parentComponent","getContextForSubtree","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","shift","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1799","version","findDOMNode","componentOrElement","parentA","parentB","didFindChild","child$0","findCurrentFiberUsingSlowPath","internals$jscomp$inline_2330","bundleType","rendererPackageName","currentDispatcherRef","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","hook$jscomp$inline_2331","isDisabled","supportsFiber","inject","exports","createRoot","isStrictMode","unstable_strictMode","unstable_transitionCallbacks","initialChildren","hydrationCallbacks","transitionCallbacks","createFiberRoot","Internals","getCrossOriginStringAs","input","createPortal","createPortal$1","flushSync","previousTransition","previousUpdatePriority","preconnect","prefetchDNS","preinit","fetchPriority","nonce","preinitModule","preloadModule","requestFormReset","unstable_batchedUpdates","permalink","useFormStatus","checkDCE","module","object","typeOf","ReactNoopUpdateQueue","isMounted","emptyObject","ComponentDummy","PureComponent","partialState","forceUpdate","pureComponentPrototype","ReactElement","self","isValidElement","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","nextNamePrefix","resolveThenable","mapChildren","func","lazyInitializer","_status","_result","moduleObject","Children","forEachFunc","forEachContext","n","toArray","only","Fragment","Profiler","StrictMode","Suspense","__COMPILER_RUNTIME","__proto__","act","captureOwnerStack","cloneElement","config","childArray","createContext","childrenLength","createRef","experimental_useEffectEvent","experimental_useOptimistic","experimental_useResourceEffect","forwardRef","lazy","memo","unstable_Activity","unstable_SuspenseList","unstable_ViewTransition","unstable_addTransitionType","unstable_getCacheForType","unstable_postpone","unstable_useCacheRefresh","Context","heap","parentIndex","peek","first","halfLength","leftIndex","rightIndex","diff","sortIndex","performance","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","localSetTimeout","localClearTimeout","localSetImmediate","setImmediate","advanceTimers","timer","startTime","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","priorityLevel","continuationCallback","MessageChannel","channel","port","port2","port1","onmessage","postMessage","ms","unstable_Profiling","task","unstable_forceFrameRate","fps","floor","unstable_next","eventHandler","unstable_runWithPriority","delay","timeout","unstable_wrapCallback","parentPriorityLevel","importFromOldV8CPUProfile","importFromChromeCPUProfile","importFromChromeTimeline","isChromeTimeline","profile_1","utils_1","value_formatters_1","v8cpuFormatter_1","rawProfile","find","fileName","cpuProfileByID","pidTidById","threadNameByPidTid","sortBy","ts","pidTid","pid","tid","args","cpuProfile","endTime","samples","timeDeltas","chunk","warn","profiles","indexToView","itForEach","profileId","threadName","profile","setName","callFrameToFrameInfo","frameInfoForCallFrame","callFrame","getOrInsert","functionName","file","line","lineNumber","col","columnNumber","shouldIgnoreFunction","shouldPlaceOnTopOfPreviousStack","chromeProfile","CallTreeProfileBuilder","nodeById","childId","sampleTimes","elapsed","lastValidElapsed","lastNodeId","NaN","nodeId","prevStack","stackTop","lca","lastOf","leaveFrame","toOpen","reverse","enterFrame","setValueFormatter","TimeFormatter","build","chromeTreeToNodes","treeToArray","visit","scriptId","hitCount","timestamps","timestamp","cppfilt","demangleCpp","startsWith","undefined","Function","Flamechart","math_1","layers","totalWeight","minFrameWidth","getTotalWeight","forEachCall","assert","layerIndex","isFinite","getLayers","getColorBucketForFrame","getMinFrameWidth","formatValue","v","getClampedViewportWidth","viewportWidth","maxWidth","maxZoom","pow","minWidth","clamp","getClampedConfigSpaceViewportRect","configSpaceViewportRect","renderInverted","configSpaceSize","Vec2","withX","origin","max","zero","minus","plus","Rect","minVal","maxVal","AffineTransform","withY","other","times","scalar","timesPointwise","dividedByPointwise","dot","equals","approxEquals","epsilon","length2","sqrt","static","flatten","unit","m00","m01","m02","m10","m11","m12","withScale","s","scaledBy","getScale","withTranslation","t","getTranslation","translatedBy","from","to","timesScalar","det","adj","inverted","transformVector","inverseTransformVector","inv","transformPosition","inverseTransformPosition","transformRect","inverseTransformRect","isEmpty","topLeft","topRight","bottomRight","bottomLeft","withOrigin","withSize","closestPointTo","distanceFrom","hasIntersectionWith","intersectWith","area","empty","NDC","__createBinding","o","k","k2","__setModuleDefault","__importStar","mod","__esModule","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","StackListProfileBuilder","Profile","CallTreeNode","Frame","HasWeights","demangleCppModule","selfWeight","getSelfWeight","addToTotalWeight","delta","addToSelfWeight","overwriteWeightWith","super","frozen","isRoot","isFrozen","freeze","frames","KeyedSet","appendOrderCalltreeRoot","groupedCalltreeRoot","weights","valueFormatter","RawValueFormatter","totalNonIdleWeight","getAppendOrderCalltreeRoot","getGroupedCalltreeRoot","format","getWeightUnit","getName","getTotalNonIdleWeight","reduce","sortGroupedCallTree","sort","forEachCallGrouped","openFrame","closeFrame","childTime","sampleIndex","forEachFrame","getProfileWithRecursionFlattened","builder","framesInStack","flattenedProfile","getInvertedProfileForCallersOf","focalFrameInfo","focalFrame","appendSampleWithWeight","ret","getProfileForCalleesOf","findCalls","focalFrameNode","recordSubtree","demangle","remapNames","pendingSample","_appendSample","weight","useAppendOrder","frameInfo","appendSampleWithTimestamp","centralTimestamp","endTimestamp","startTimestamp","appendOrderStack","groupedOrderStack","addWeightsToFrames","addWeightsToNodes","_enterFrame","prevTop","frameCount","_leaveFrame","leavingStackTop","decodeBase64","lazyStatic","memoizeByReference","memoizeByShallowEquality","objectsHaveShallowEquality","binarySearch","triangle","fract","formatPercent","zeroPad","itReduce","itMap","getOrThrow","getOrElse","keyA","keyB","values","cb","it","accum","percent","formattedPercent","toFixed","lo","hi","targetRangeSize","mid","base64lookupTable","alphabet","charAt","encoded","lookupTable","quartetCount","byteCount","bytes","Uint8Array","enc1","enc2","enc3","enc4","sextet1","sextet2","sextet3","sextet4","substring","ByteFormatter","toLocaleString","multiplier","formatUnsigned","minutes","seconds","__exportStar","_resolve","_dataType","_intercept","clipboard","copy","_data","_bogusSelection","cleanup","setData","Node","XMLSerializer","serializeToString","triggerCopy","tryBogusSelect","execCommand","sel","queryCommandEnabled","isCollapsed","selectNodeContents","bogusSelect","paste","dataType","ClipboardEvent","TypeError","_state","_value","_deferreds","j","onFulfilled","onRejected","g","h","immediateFn","all","strData","definition","useSourceMap","item","sourceMap","cssMapping","btoa","sourceMapping","unescape","JSON","stringify","sourceURLs","sources","sourceRoot","cssWithMappingToString","modules","mediaQuery","alreadyImportedModules","factory","define","StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","parts","exec","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","len","argsRaw","functionCall","string","URI_REGEX","_rfc3986Parse","schemeAndAuthority","path","hasQueryPart","queryWithoutQuestionMark","fragmentWithHash","toNormalUrl","urlToNormalize","parsedUrl","isJscSafeUrl","toJscSafeUrl","urlToConvert","LRUCache","makeSymbol","util","Yallist","MAX","env","_nodeLRUCacheForceNoSymbol","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","naiveLength","lc","stale","maxAge","dispose","noDisposeOnSet","forEachStep","thisp","hit","isStale","del","doUse","unshiftNode","walker","removeNode","Entry","mL","allowStale","mA","lC","rforEach","dump","dumpLru","inspect","opts","str","extras","didFirst","val","load","arr","l","expiresAt","prune","nullthrows","framesToPop","milliseconds","roundTowardsZero","ceil","days","hours","microseconds","nanoseconds","parseMilliseconds","Number","colonNotation","compact","formatSubMilliseconds","separateMilliseconds","verbose","secondsDecimalDigits","millisecondsDecimalDigits","long","short","valueString","wholeDigits","minLength","word","parsed","trunc","millisecondsAndBelow","roundedMiliseconds","round","millisecondsString","parseFloat","secondsFixed","decimalDigits","flooredInterimValue","floorDecimals","secondsString","keepDecimalsOnWholeSeconds","unitCount","separator","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","browser","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","npm_package_name","npm_lifecycle_script","TEST_PSEUDOMAP","PseudoMap","clear","kv","same","_index","res","writable","entries","CONTROL","META","BAREWORD","TOKEN","mapped","chunker","Boolean","commented","op","BS","escape","quote","esc","out","isGlob","parseEnvVar","comment","pattern","varend","varname","pre","substr","arg","acc","xs","_capitalize","_getter","booleanProps","numericProps","stringProps","obj","getArgs","setArgs","getEvalOrigin","evalOrigin","setEvalOrigin","getFileName","getLineNumber","getColumnNumber","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","lastIndexOf","locationString","css","baseUrl","protocol","host","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","candidateSelectors","candidateSelector","Element","msMatchesSelector","webkitMatchesSelector","tabbable","el","candidate","candidateTabindex","regularTabbables","orderedTabbables","candidates","includeContainer","isNodeMatchingSelectorTabbable","getTabindex","documentOrder","tabIndex","sortOrderedTabbables","isNodeMatchingSelectorFocusable","isInput","isRadio","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isHiddenInput","offsetParent","visibility","isTabbable","isFocusable","focusableCandidateSelector","tabindexAttr","parseInt","isContentEditable","worker","methods","evt","params","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","sliceReverse","WebSocket","createWebSocketStream","Server","Receiver","Sender","EMPTY_BUFFER","totalLength","Buffer","allocUnsafe","buf","_mask","output","_unmask","buffer","toArrayBuffer","byteLength","byteOffset","toBuffer","readOnly","isBuffer","ArrayBuffer","isView","bufferUtil","bu","BufferUtil","unmask","BINARY_TYPES","GUID","kStatusCode","kWebSocket","alloc","NOOP","Event","MessageEvent","CloseEvent","wasClean","_closeFrameReceived","_closeFrameSent","OpenEvent","EventTarget","onMessage","onClose","onOpen","_listener","tokenChars","dest","extensions","extension","configurations","header","offers","extensionName","paramName","mustUnescape","isEscaping","inQuotes","SyntaxError","token","kDone","kRun","concurrency","jobs","job","zlib","Limiter","TRAILER","kPerMessageDeflate","kTotalLength","kCallback","kBuffers","kError","zlibLimiter","deflateOnData","inflateOnData","_maxPayload","RangeError","inflateOnError","_inflate","isServer","maxPayload","_options","_threshold","threshold","_isServer","_deflate","concurrencyLimit","offer","serverNoContextTakeover","server_no_context_takeover","clientNoContextTakeover","client_no_context_takeover","serverMaxWindowBits","server_max_window_bits","clientMaxWindowBits","client_max_window_bits","accept","normalizeParams","acceptAsServer","acceptAsClient","close","accepted","response","num","isInteger","decompress","fin","_decompress","compress","_compress","endpoint","windowBits","Z_DEFAULT_WINDOWBITS","createInflateRaw","zlibInflateOptions","write","flush","_readableState","endEmitted","createDeflateRaw","zlibDeflateOptions","Z_SYNC_FLUSH","Writable","PerMessageDeflate","isValidStatusCode","isValidUTF8","ErrorCtor","statusCode","errorCode","captureStackTrace","binaryType","_binaryType","_extensions","_bufferedBytes","_buffers","_compressed","_payloadLength","_fragmented","_masked","_fin","_opcode","_totalPayloadLength","_messageLength","_fragments","_loop","_write","encoding","startLoop","consume","dst","getInfo","getPayloadLength16","getPayloadLength64","getMask","compressed","haveLength","readUInt16BE","readUInt32BE","controlMessage","dataMessage","er","messageLength","fragments","randomFillSync","applyMask","socket","_socket","_firstFragment","_deflating","_queue","merge","payloadLength","opcode","rsv1","writeUInt16BE","writeUInt32BE","enqueue","doClose","sendFrame","ping","doPing","pong","doPong","send","perMessageDeflate","binary","_","destroyed","dequeue","cork","uncork","Duplex","emitClose","stream","duplexOnEnd","_writableState","duplexOnError","listenerCount","ws","resumeOnReceiverDrain","terminateOnDestroy","receiverOnDrain","resume","CONNECTING","_receiver","duplex","autoDestroy","objectMode","writableObjectMode","msg","pause","_destroy","CLOSED","called","terminate","_final","_read","OPEN","CLOSING","needDrain","_isValidUTF8","Validation","EventEmitter","http","createHash","keyRegex","server","socketOnError","abortHandshake","headers","STATUS_CODES","Connection","handleProtocols","clientTracking","verifyClient","noServer","backlog","_server","createServer","req","writeHead","listen","emitConnection","_removeListeners","addListeners","listening","upgrade","handleUpgrade","clients","address","client","shouldHandle","secure","authorized","encrypted","verified","completeUpgrade","readable","_protocol","setSocket","https","net","tls","randomBytes","Readable","URL","readyStates","protocolVersions","protocols","_closeCode","_closeMessage","_closeTimer","_readyState","_sender","_bufferedAmount","_redirects","initAsClient","bufferedAmount","onclose","onopen","_url","receiver","receiverOnConclude","receiverOnError","receiverOnMessage","receiverOnPing","receiverOnPong","setNoDelay","socketOnClose","socketOnData","socketOnEnd","_req","errorEmitted","sendAfterClose","websocket","protocolVersion","followRedirects","maxRedirects","createConnection","socketPath","hostname","isUnixSocket","emitErrorAndClose","isSecure","defaultPort","tlsConnect","netConnect","Upgrade","handshakeTimeout","Origin","username","auth","_originalUnixSocket","_originalSecure","_originalHostOrSocketPath","isSameHost","authorization","cookie","addr","serverProt","protList","protError","secWebSocketExtensions","extensionNames","connect","servername","isIP","setHeader","receiverOnFinish","read","logFunctions","logEvent","enableLogger","registerEventLogger","logFunction","supportsUserTiming","mark","clearMarks","supportsPerformanceNow","markName","measure","withAsyncPerfMeasurements","onComplete","__PERFORMANCE_PROFILE__","withSyncPerfMeasurements","withCallbackPerfMeasurements","enableStyleXFeatures","isInternalFacebookBuild","CHROME_WEBSTORE_EXTENSION_ID","INTERNAL_EXTENSION_ID","LOCAL_EXTENSION_ID","__DEBUG__","TREE_OPERATION_ADD","TREE_OPERATION_REMOVE","TREE_OPERATION_REORDER_CHILDREN","TREE_OPERATION_UPDATE_TREE_BASE_DURATION","TREE_OPERATION_UPDATE_ERRORS_OR_WARNINGS","TREE_OPERATION_REMOVE_ROOT","TREE_OPERATION_SET_SUBTREE_MODE","PROFILING_FLAG_BASIC_SUPPORT","PROFILING_FLAG_TIMELINE_SUPPORT","LOCAL_STORAGE_DEFAULT_TAB_KEY","LOCAL_STORAGE_COMPONENT_FILTER_PREFERENCES_KEY","LOCAL_STORAGE_OPEN_IN_EDITOR_URL","LOCAL_STORAGE_OPEN_IN_EDITOR_URL_PRESET","LOCAL_STORAGE_PARSE_HOOK_NAMES_KEY","LOCAL_STORAGE_BROWSER_THEME","LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY","PROFILER_EXPORT_VERSION","TIMEOUT","Pending","Resolved","Rejected","hasAlreadyLoadedHookNames","record","loadHookNames","hooksTree","loadHookNamesFunction","fetchFileWithCaching","groupCollapsed","groupEnd","timeoutID","resolvedHookNames","wake","handleLoadComplete","durationMs","event_name","event_status","duration_ms","inspected_element_display_name","inspected_element_number_of_hooks","newRecord","hookNames","resolvedRecord","notFoundRecord","thrownRecord","timedoutRecord","readRecord","getHookSourceLocationKey","clearHookNamesCache","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","setPrototypeOf","awrap","iter","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","locals","transform","stylesInDom","isOldIE","atob","getTarget","getElement","styleTarget","contentDocument","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","domStyle","addStyle","listToStyles","newStyles","base","part","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","insertAt","removeStyleElement","idx","createStyleElement","attrs","addAttrs","remove","styleIndex","applyToSingletonTag","createObjectURL","revokeObjectURL","Blob","createLinkElement","updateLink","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","replacement","styleSheet","cssText","cssNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","addMethods","w","Worker","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","ns","def","getOwnPropertyNames","chunkId","promises","u","prop","nc","moreModules","chunkIds","ids","installChunk","listenersMap","didThrow","caughtError","clonedListeners","BRIDGE_PROTOCOL","minNpmVersion","maxNpmVersion","currentBridgeProtocol","wall","_messageQueue","_wall","_scheduledFlush","wasForwarded","_wallUnlisten","overrideValueAtPath","_isShutdown","devtoolsJestTestScheduler","_flush","shutdown","wallUnlisten","ElementTypeClass","ElementTypeContext","ElementTypeFunction","ElementTypeForwardRef","ElementTypeHostComponent","ElementTypeMemo","ElementTypeOtherOrUnknown","ElementTypeProfiler","ElementTypeRoot","ElementTypeSuspense","ElementTypeVirtual","ComponentFilterElementType","ComponentFilterDisplayName","ComponentFilterLocation","ComponentFilterHOC","ComponentFilterEnvironmentName","enableRenderableContext","REACT_TRACING_MARKER_TYPE","localStorageGetItem","localStorage","getItem","localStorageSetItem","setItem","meta","inspectable","inspected","preview_long","preview_short","readonly","unserializable","cleaned","getInObject","replaced","upgradeUnserializable","destination","defineProperties","cachedDisplayNames","alphaSortKeys","utfDecodeStringWithRanges","fromCodePoint","getSavedComponentFilters","raw","filterOutLocationComponentFilters","isEnabled","setSavedComponentFilters","componentFilters","parseElementDisplayNameFromBackend","formattedDisplayName","hocDisplayNames","compiledWithForget","displayNameWithoutForgetWrapper","shallowDiffers","attribute","reduced","attr","getDisplayNameForReactElement","$$typeofType","typeOfWithLegacyElementSymbol","fallbackName","nameFromCache","getDisplayName","LRU","MAX_PREVIEW_STRING_LENGTH","truncateForDisplay","formatDataForPreview","showFormattedValue","HTMLElement","toStringValue","isPlainObject","getDataType","formatted","shortName","entryOrEntries","currentKeys","getOwnPropertySymbols","descriptors","getOwnPropertyDescriptors","getAllEnumerableKeys","objectPrototype","backendToFrontendSerializedElementMapper","unicode","Space_Separator","ID_Start","ID_Continue","parseState","pos","column","lexState","doubleQuote","sign","internalize","holder","reviver","lex","lexStates","codePointAt","newToken","invalidChar","multiLineComment","multiLineCommentAsterisk","singleLineComment","literal","identifierNameStartEscape","unicodeEscape","invalidIdentifier","identifierName","identifierNameEscape","decimalInteger","decimalPointLeading","decimalPoint","decimalFraction","decimalExponent","decimalExponentSign","decimalExponentInteger","hexadecimal","hexadecimalInteger","hexEscape","formatChar","separatorChar","beforePropertyName","afterPropertyName","beforePropertyValue","afterPropertyValue","beforeArrayValue","afterArrayValue","parseStates","invalidEOF","syntaxError","replacements","hexString","JSON5","replacer","space","propertyList","replacerFunc","indent","gap","serializeProperty","toJSON5","toJSON","valueOf","quoteString","stepback","final","partial","propertyString","properties","serializeArray","member","serializeKey","serializeObject","quotes","product","quoteChar","firstChar","printElement","includeWeight","hocs","sanitizeForParse","smartParse","smartStringify","STACK_DELIMETER","STACK_SOURCE_LOCATION","commitGradient","getGradientColor","maxIndex","formatDuration","formatTime","scale","minValue","maxValue","minRange","maxRange","fallbackValue","debug","methodName","rootToCommitTreeMap","getCommitTree","commitIndex","profilerStore","rootID","commitTrees","profilingData","dataForRoot","dataForRoots","operations","commitTree","recursivelyInitializeTree","updateTree","__printTree","parentID","snapshots","treeBaseDuration","initialTreeBaseDurations","childID","getClonedNode","clonedNode","stringTable","stringTableSize","stringTableEnd","nextLength","nextString","operation","removeLength","removeIndex","numChildren","numErrors","numWarnings","cachedChartData","ProfilingCache","_profilerStore","fiberID","cachedFiberCommits","_fiberCommits","fiberCommits","getDataForRoot","commitData","commitDatum","fiberActualDurations","getCommitData","fiberSelfDurations","chartDataKey","idToDepthMap","renderPathNodes","rows","maxDepth","maxSelfDuration","walkTree","rightOffset","currentDepth","actualDuration","selfDuration","didRender","maybeKey","maybeBadge","maybeForgetBadge","label","chartNode","baseDuration","currentID","chartData","getFlamegraphChartData","chartNodes","getRankedChartData","invalidate","ProfilerStore","bridge","store","defaultIsProfiling","elementID","profilingSnapshots","_store","getElementByID","snapshotNode","_takeProfilingSnapshotRecursive","_isBackendProfiling","profilingOperations","_inProgressOperationsByRootID","_initialRendererIDs","_initialSnapshotsByRootID","_rendererIDsThatReportedProfilingData","dataBackend","_rendererQueue","_dataBackends","_dataFrontend","dataBackends","operationsByRootID","snapshotsByRootID","timelineDataArray","timelineData","batchUIDToMeasuresKeyValueArray","internalModuleSourceToRanges","laneToLabelKeyValueArray","laneToReactMeasureKeyValueArray","rest","batchUIDToMeasuresMap","laneToLabelMap","laneToReactMeasureMap","convertedCommitData","commitDataBackend","changeDescriptions","effectDuration","updaters","imported","prepareProfilingDataFrontendFromBackendAndStore","_bridge","onBridgeOperations","onBridgeProfilingData","onProfilingStatus","onBridgeShutdown","isProfiling","rootIDToRendererID","roots","_isProfilingBasedOnUserInput","error_message","error_stack","error_component_stack","_cache","didRecordCommits","isProcessingData","isProfilingBasedOnUserInput","profilingCache","startProfiling","recordChangeDescriptions","recordTimeline","supportsTimeline","stopProfiling","UnsupportedBridgeOperationError","LOCAL_STORAGE_COLLAPSE_ROOTS_BY_DEFAULT_KEY","LOCAL_STORAGE_RECORD_CHANGE_DESCRIPTIONS_KEY","Store","parentElement","weightDelta","isInsideCollapsedSubTree","_idToElement","_weightAcrossRoots","isSupported","validAttributes","_isNativeStyleEditorSupported","_nativeStyleEditorValidAttributes","haveRootsChanged","haveErrorsOrWarningsChanged","addedElementIDs","removedElementIDs","_throwAndEmitError","isStrictModeCompliant","supportsBasicProfiling","supportsStrictMode","hasOwnerMetadata","_bridgeProtocol","_roots","_rootIDToRendererID","_rootIDToCapabilities","isStrictModeNonCompliant","ownerID","displayNameWithoutHOCs","_collapseNodesByDefault","_adjustParentTreeWeight","_ownersMap","_errorsAndWarnings","recursivelyDeleteElements","_recursivelyUpdateSubtree","errorCount","warningCount","_revision","_cachedErrorAndWarningTuples","componentWithErrorCount","componentWithWarningCount","_cachedComponentWithErrorCount","_cachedComponentWithWarningCount","prevRootSupportsProfiling","_rootSupportsBasicProfiling","prevRootSupportsTimelineProfiling","_rootSupportsTimelineProfiling","_hasOwnerMetadata","snapshotLines","rootWeight","printSelectedMarker","inspectedElementIndex","printErrorsAndWarnings","getErrorAndWarningCountForElementID","ownerFlatTree","printedSelectedMarker","printedElement","printedErrorsAndWarnings","errorsAndWarnings","maybeWeightLabel","getElementAtIndex","numElements","assertExpectedRootMapSizes","printStore","_componentFilters","onBridgeOverrideComponentFilters","onBackendReloadAndProfileSupported","onBridgeNativeStyleEditorSupported","onBridgeUnsupportedRendererVersion","onBridgeBackendVersion","onBridgeProtocol","onSaveToClipboard","onHostInstanceSelected","_onBridgeProtocolTimeoutID","isReloadAndProfileSupported","_isReloadAndProfileBackendSupported","_unsupportedRendererVersionDetected","backendVersion","_backendVersion","bridgeProtocol","_shouldCheckBridgeProtocolCompatibility","onBridgeProtocolTimeout","elementId","_lastSelectedHostInstanceElementId","_hookSettings","settings","setShouldShowWarningsAndErrors","showInlineWarningsAndErrors","_recordChangeDescriptions","supportsInspectMatchingDOMElement","supportsClickToInspect","supportsReloadAndProfile","supportsTraceUpdates","checkBridgeProtocolCompatibility","_supportsInspectMatchingDOMElement","_supportsClickToInspect","_isReloadAndProfileFrontendSupported","_supportsTimeline","_supportsTraceUpdates","onHookSettings","onBackendInitialized","assertMapSizeMatchesRootCount","mapName","expectedSize","collapseNodesByDefault","prevEnabledComponentFilters","nextEnabledComponentFilters","haveEnabledFiltersChanged","_shouldShowWarningsAndErrors","displayingErrorsAndWarningsEnabled","nativeStyleEditorValidAttributes","revision","rootSupportsBasicProfiling","rootSupportsTimelineProfiling","supportsNativeStyleEditor","unsupportedBridgeProtocolDetected","_unsupportedBridgeProtocolDetected","unsupportedRendererVersionDetected","lastSelectedHostInstanceElementId","containsElement","currentElement","currentWeight","childWeight","getElementIDAtIndex","getElementsWithErrorsAndWarnings","errorAndWarningTuples","getIndexOfElementID","low","high","previousID","getOwnersListForElement","unsortedIDs","depthMap","idA","idB","innerElement","getRendererIDForElement","getRootIDForElement","toggleIsCollapsed","didMutate","oldWeight","weightAcrossRoots","previousStatus","currentLoggingIFrame","currentSessionId","missedEvents","BridgeContext","StoreContext","ContextMenuContext","isEnabledForInspectedElement","viewAttributeSourceFunction","OptionsContext","hideSettings","hideToggleErrorAction","hideToggleSuspenseAction","hideLogAction","hideViewSourceAction","windowObject","global","cancelFrame","requestFrame","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","animationFrameID","AutoSizer","defaultHeight","scaledHeight","scaledWidth","defaultWidth","_autoSizer","_detectElementResize","_parentNode","_resizeObserver","_timeoutId","_onResize","disableHeight","disableWidth","onResize","paddingLeft","paddingRight","paddingTop","paddingBottom","offsetHeight","offsetWidth","_setRef","autoSizer","ResizeObserverInstance","ResizeObserver","observe","animationKeyframes","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollWidth","scrollHeight","__resizeLast__","__resizeRAF__","__resizeListeners__","keyframeprefix","domPrefixes","startEvents","pfx","elm","addResizeListener","elementStyle","getElementById","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","createDetectElementResize","disconnect","outerStyle","childParams","bailoutOnChildren","_extends","_assertThisInitialized","ReferenceError","_setPrototypeOf","safeIsNaN","areInputsEqual","newInputs","lastInputs","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","_objectWithoutPropertiesLoose","excluded","sourceKeys","getScrollbarSize","recalculate","div","cachedRTLResult","getRTLOffsetType","outerDiv","innerDiv","innerStyle","defaultItemKey","createListComponent","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","scrollUpdateWasRequested","memoizeOne","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","direction","itemSize","itemStyleCache","isHorizontal","isRtl","offsetHorizontal","clientWidth","outerRef","subClass","superClass","validateSharedProps","scrollTo","scrollToItem","align","itemCount","scrollbarSize","initialScrollOffset","innerRef","innerElementType","innerTagName","itemData","itemKey","outerElementType","outerTagName","useIsScrolling","startIndex","stopIndex","items","_getItemStyle","estimatedTotalSize","WebkitOverflowScrolling","willChange","_callPropsCallbacks","_getRangeToRender","overscanCount","overscanBackward","overscanForward","FixedSizeList","lastItemOffset","maxOffset","minOffset","middleOffset","numVisibleItems","areEqual","prevStyle","prevRest","nextStyle","nextRest","alphaSortEntries","entryA","entryB","createRegExp","isLetter","matchAnyCase","escaped","escapeStringRegExp","restRegex","getMetaValueLabel","sanitize","serializeDataForCopy","cloned","downloadUrl","TreeStateContext","TreeDispatcherContext","reduceSearchState","searchIndex","searchResults","searchText","inspectedElementID","prevSearchIndex","prevSearchText","numPrevSearchResults","didRequestSearch","regExp","newElementIndex","foundMatch","resultID","recursivelySearchTree","findIndex","innerIndex","getNearestResultIndex","newSearchIndex","TreeContextController","defaultOwnerID","defaultInspectedElementID","defaultInspectedElementIndex","initialRevision","ownerSubtreeLeafElementID","lookupIDForIndex","removedIDs","inspectedElement","firstChildID","firstChildIndex","selectedElement","selectedChildIndex","nextChildID","leafElement","ownerIndex","elementIndicesWithErrorsOrWarnings","prevEntry","flatIndex","nextEntry","reduceTreeState","prevInspectedElementIndex","reduceOwnersState","prevInspectedElementID","handleStoreMutated","some","Icon","pathData","PATH_ARROW","PATH_BUG","PATH_CODE","PATH_COMPONENTS","PATH_COPY","PATH_ERROR","PATH_FACEBOOK","PATH_FLAME_CHART","PATH_PROFILER","PATH_RANKED_CHART","PATH_SCHEDULING_PROFILER","PATH_SEARCH","PATH_SETTINGS","PATH_STORE_AS_GLOBAL_VARIABLE","PATH_STRICT_MODE_NON_COMPLIANT","PATH_WARNING","xmlns","viewBox","CHANGE_LOG_URL","UNSUPPORTED_VERSION_URL","REACT_DEVTOOLS_WORKPLACE_URL","THEME_STYLES","light","dark","comfortable","COMFORTABLE_LINE_HEIGHT","COMPACT_LINE_HEIGHT","useEditableValueReducer","editableValue","externalValue","hasPendingChanges","isValid","parsedValue","newParsedValue","isNewValueValid","useLocalStorage","onValueSet","getValueFromLocalStorage","storedValue","setStoredValue","valueToStore","onStorage","newValue","useModalDismissSignal","modalRef","dismissCallback","dismissOnClickOutside","handleRootNodeKeyDown","handleRootNodeClick","modalRootNode","modalDOMElement","useSubscription","getCurrentValue","didUnsubscribe","checkForUpdates","unsubscribe","useHighlightHostInstance","highlightHostInstance","hideAfterTimeout","openBuiltinElementsPanel","scrollIntoView","clearHighlightHostInstance","SettingsContext","useLocalStorageWithLog","metadata","SettingsContextController","browserTheme","componentsPortalContainer","profilerPortalContainer","displayDensity","setDisplayDensity","theme","setTheme","parseHookNames","setParseHookNames","traceUpdatesEnabled","setTraceUpdatesEnabled","documentElements","updateDisplayDensity","updateThemeVariables","lineHeight","fontSize","getPropertyValue","scrollbarColor","ButtonIcon","PATH_ADD","PATH_CANCEL","PATH_CLEAR","PATH_CLOSE","PATH_COLLAPSED","PATH_DELETE","PATH_DOWN","PATH_EDITOR","PATH_EXPANDED","PATH_EXPORT","PATH_FILTER","PATH_IMPORT","PATH_LOG_DATA","PATH_MORE","PATH_NEXT","PATH_PARSE_HOOK_NAMES","PATH_PREVIOUS","PATH_RECORD","PATH_RELOAD","PATH_SAVE","PATH_SUSPEND","PATH_UNDO","PATH_UP","PATH_VIEW_DOM","PATH_VIEW_SOURCE","points","Badge","isSearchResult","isCurrentResult","useIsomorphicLayoutEffect","serverHandoffComplete","genId","idFromProps","initialId","_React$useState","setId","getOwnerDocument","makeId","_len","_key","isFunction","_arrayLikeToArray","arr2","assignRef","useComposedRefs","_step","_iterator","allowArrayLike","minLen","_unsupportedIterableToArray","_createForOfIteratorHelperLoose","composeEventHandlers","theirHandler","ourHandler","useForceUpdate","Portal","_ref","_ref$type","mountNode","portalNode","_excluded","VisuallyHidden","_ref$as","Comp","_ref$style","border","margin","padding","whiteSpace","wordWrap","observedNodes","changedStates","rafId","wasEmpty","hasRectChanged","unobserve","useRect","nodeRef","observeOrOptions","deprecated_onChange","onChange","_observeOrOptions$obs","setElement","initialRectIsSet","initialRefIsSet","_React$useState2","setRect","onChangeRef","observer","observeRect","_on","_on2","_on3","_on4","_on5","_states","TooltipStates","TooltipEvents","_excluded2","_excluded3","_excluded4","restTimeout","leavingVisibleTimer","chart","Idle","states","clearContextId","MouseEnter","Focused","Focus","Visible","Rest","leave","MouseMove","MouseLeave","MouseDown","Dismissed","Blur","LeavingVisible","SelectWithKeyboard","GlobalMouseMove","TimeComplete","subscriptions","Tooltip","_ref2","forwardedRef","DEPRECATED_ariaLabel","ariaLabel","DEBUG_STYLE","_useTooltip","_temp","idProp","onPointerEnter","onPointerMove","onPointerLeave","onPointerDown","onMouseEnter","onMouseMove","onMouseLeave","onMouseDown","onFocus","onBlur","onKeyDown","isTooltipVisible","isVisible","setIsVisible","ownRef","triggerRect","wrapMouseEvent","wrapPointerEventHandler","handleMouseEnter","handleMouseMove","handleMouseLeave","handleMouseDown","_ref5","closest","useDisabledTriggerOnSafari","__REACH_DISABLE_TOOLTIPS","useTooltip","trigger","tooltip","TooltipPopup","_ref3","TooltipContent","_ref4","realAriaLabel","_ref4$as","_ref4$position","positionTooltip","hasAriaLabel","tooltipRect","role","getStyles","_ownerDocument$docume","_ownerDocument$docume2","_getDocumentDimension","windowWidth","windowHeight","collisions","directionUp","pageXOffset","pageYOffset","_transition","stateDef","changed","nextStateValue","nextDef","useThemeStyles","tooltipStyles","Toggle","isChecked","testName","defaultClassName","handleClick","toggle","ForgetBadge","innerView","indexable","IndexableElementBadges","isHovered","setIsHovered","isNavigatingWithKeyboard","onElementMouseEnter","treeFocused","isSelected","errorsAndWarningsSubscription","showStrictModeBadge","onDoubleClick","ExpandCollapseToggle","swallowDoubleClick","InspectHostNodesToggle","isInspecting","setIsInspecting","handleChange","onStopInspectingHost","Button","ElementBadges","ReactCurrentDispatcher","resourceConfigs","getEntriesForResource","entriesForResource","useWeakMap","accessResult","fetch","newResult","resolvedResult","rejectedResult","createResource","hashInput","OwnersListContext","inProgressRequests","request","promise","resolveFn","OwnersListContextController","onOwnersList","ownersList","owners","Popover","PopoverImpl","targetRef","_ref$position","positionDefault","_ref$unstable_observa","unstable_observableRefs","popoverRef","popoverRect","hidden","targetRect","triggerRef","handleKeyDown","elementAfterTrigger","getElementAfterTrigger","shiftTabbedFromElementAfterTrigger","focusLastTabbableInPopover","shiftTabbedOutOfPopover","_triggerRef$current","focusTriggerRef","shiftTabbedToBrowserChrome","disableTabbablesInPopover","focusFirstPopoverTabbable","tabbedOutOfPopover","focusTabbableAfterTrigger","tabbedToBrowserChrome","targetIndex","restoreTabIndexTuplés","enableTabbablesInPopover","useSimulateTabNavigationForReactTree","_getCollisions","offsetLeft","offsetBottom","directionRight","directionLeft","directionDown","getCollisions","isDirectionUp","getTopPosition","createNamedContext","createDescendantContext","descendants","registerDescendant","unregisterDescendant","DescendantProvider","Ctx","explicitIndex","newItems","DOCUMENT_POSITION_PRECEDING","newItem","isRightClick","usePrevious","_excluded5","_excluded7","CLEAR_SELECTION_INDEX","CLICK_MENU_ITEM","CLOSE_MENU","OPEN_MENU_AT_INDEX","OPEN_MENU_CLEARED","SEARCH_FOR_ITEM","SELECT_ITEM_AT_INDEX","SET_BUTTON_ID","DropdownDescendantContext","DropdownContext","triggerId","isExpanded","typeaheadQuery","selectionIndex","DropdownProvider","dropdownRef","_useDescendantsInit","setDescendants","_id","dropdownId","_React$useReducer","triggerClickedRef","selectCallbacks","readyToSelect","mouseDownStartPosRef","isOpen","useItemId","_action$payload$dropd","useDropdownContext","useDropdownDescendants","ctx","_excluded8","isFragment","MenuButton","_ref2$as","_useDropdownTrigger","_useDropdownContext","_useDropdownContext$s","firstNonDisabledIndex","controls","useDropdownTrigger","_useDropdownTrigger$d","MenuItemImpl","_ref3$as","_useDropdownItem","indexProp","_ref4$isLink","isLink","onDragStart","onMouseUp","onSelect","valueTextProp","valueText","_useDropdownContext2","_useDropdownContext2$","setValueText","setValueTextFromDOM","mouseEventStarted","_useStatefulRefValue","_useState","refValue","useStatefulRefValue","handleRefSet","descendant","_React$useContext","useDescendant","select","click","useDropdownItem","MenuItem","MenuItems","_ref5$as","_useDropdownItems","_ref6","_useDropdownContext3","_useDropdownContext3$","found","_item$element","_item$element$dataset","_item$element$dataset2","valuetext","findItemFromTypeahead","prevItemsLength","prevSelected","prevSelectionIndex","query","currentIndex","_options$key","_options$orientation","orientation","_options$rotate","rotate","_options$rtl","rtl","selectableDescendants","selectableIndex","getNextOption","getPreviousOption","nextOrPrev","prevOrNext","prevOrFirst","getFirstOption","nextOrLast","getLastOption","useDescendantKeyDown","activeDescendant","useDropdownItems","_useDropdownItems$dat","MenuList","_ref7","_ref7$portal","MenuPopover","_ref8","_ref8$as","_useDropdownPopover","_ref8$portal","_useDropdownContext4","useDropdownPopover","_useDropdownPopover$d","sharedProps","dialogReducer","selectedIndex","OwnerStack","treeDispatch","isInStore","selectOwner","elementsTotalWidth","setElementsTotalWidth","elementsBarRef","isOverflowing","containerRef","totalChildWidth","setIsOverflowing","handleResize","useIsOverflowing","selectedOwner","totalWidth","computedStyle","marginLeft","marginRight","ElementsDropdown","BackToOwnerButton","ElementView","menuItems","SearchInput","goToNextResult","goToPreviousResult","placeholder","searchResultsCount","inputRef","onKeyPress","ComponentSearchInput","SettingsModalContext","fetchEnvironmentNames","onEnvironmentNames","names","fetchHookSettings","getHookSettings","SettingsModalContextController","setIsModalShowing","setContext","isModalShowing","environmentNames","hookSettings","currentContext","SettingsModalContextToggle","showFilterModal","SelectedTreeHighlight","TreeFocusedContext","subscription","lastChildID","TimeoutError","ElementPollingCancellationError","storeAsGlobalCount","TIMEOUT_DELAY","requestCounter","hydrateHelper","dehydratedData","cleanedPath","unserializablePath","DEFAULT_INDENTATION_SIZE","calculateInitialScrollOffset","elementHeight","Tree","setIsNavigatingWithKeyboard","setTreeFocused","componentsPanelVisible","onPanelShown","onPanelHidden","useExtensionComponentsPanelVisibility","treeRef","focusTargetRef","listRef","handleStopInspectingHost","didSelectNode","handleBlur","handleFocus","handleKeyPress","searchRef","didSelectNewSearchResult","handleElementMouseEnter","handlePreviousErrorOrWarningClick","handleNextErrorOrWarningClick","errorsOrWarningsSubscription","errors","warnings","zeroElementsNotice","Loading","clearErrorsAndWarningsAPI","InnerElementType","cachedChildWidths","indentationSizeRef","prevListWidthRef","prevOwnerIDRef","divRef","listWidth","maxIndentationSize","childWidth","cachedChildWidth","remainingWidth","updateIndentationSizeVar","UnsupportedBridgeOperationView","callStack","errorMessage","ErrorView","dismissError","LoadingAnimation","stroke","cx","cy","dur","repeatCount","begin","SearchingGitHubIssues","GITHUB_ISSUES_API","searchGitHubIssuesURL","API_TIMEOUT","createMap","UpdateExistingIssue","gitHubIssue","LABELS","TEMPLATE","ReportNewIssue","bugURL","gitHubAPISearch","WorkplaceGroup","SuspendingErrorView","maybeItem","normalizeErrorMessage","json","html_url","searchGitHubIssues","findGitHubIssue","GitHubUI","TimeoutView","CaughtErrorView","UserError","UnknownHookError","InitialState","canDismiss","hasError","isUnsupportedBridgeOperationError","isTimeout","isUserError","isUnknownHookError","ErrorBoundary","onBeforeDismissCallback","_logError","_onStoreError","canDismissProp","canDismissState","_dismissError","ThemeProvider","themeStyle","portaledContent","portalContainer","inspectedElementCache","inspectElement","shouldListenToPauseEvents","forceFullData","requestID","timeoutMessage","onInspectedElement","onShutdown","onDisconnect","responseID","getPromiseForRequestID","inspectElementAPI","errorType","inspectedElementBackend","canEditFunctionProps","canEditFunctionPropsDeletePaths","canEditFunctionPropsRenamePaths","canEditHooks","canEditHooksAndDeletePaths","canEditHooksAndRenamePaths","canToggleError","isErrored","canToggleSuspense","canViewSource","hasLegacyContext","hooks","plugins","rendererVersion","rootType","sourceURL","convertInspectedElementBackendToFrontend","hydratedPathData","isMatch","setInObject","fillInPath","checkForUpdate","refresh","inspectElementMutableSource","responseType","createCacheSeed","InspectedElementErrorBoundaryWrapper","handleDsmiss","clearCacheBecauseOfError","InspectedElementBadges","hocDisplayName","AutoSizeInput","EditableName","allowEmpty","allowWhiteSpace","overrideName","editableName","setEditableName","setIsValid","basePath","EditableValue","overrideValue","useEditableValue","applyChanges","isBool","autoComplete","parseHookPathForEdit","NewArrayValue","hookID","setKey","isInvalid","setIsInvalid","oldPath","newPath","newIsInvalid","NewKeyValue","newPropKey","setNewPropKey","newPropName","setNewPropName","setIsOpen","prevIsOpen","moduleLoaderFunctionToModuleMap","FetchFileWithCachingContext","HookNamesModuleLoaderContext","InspectedElementContext","InspectedElementContextController","parseHookNamesByDefault","hookNamesModuleLoader","alreadyLoadedHookNames","bridgeIsAlive","setBridgeIsAliveStatus","elementHasChanged","purgeCachedMetadataRef","rejectedRecord","hookNamesModule","moduleLoaderFunction","loadModule","purgeCachedMetadata","toggleParseHookNames","inspectPaths","fastRefreshScheduled","poll","updateStatus","finally","shouldContinuePolling","startElementUpdatesPolling","PROTOCOLS_SUPPORTED_AS_LINKS_IN_KEY_VALUE","ContextMenuItem","hide","onTouchEnd","ContextMenu","anchorElementRef","anchor","menu","hideUnlessContains","repositionToFit","ContextMenuContainer","closedMenuStub","shouldShow","setShouldShow","setPosition","handleAnchorContextMenu","containerTop","containerLeft","useContextMenu","isShown","KeyValueContextMenuContainer","attributeSourceCanBeInspected","canBeCopiedToClipboard","isContextMenuEnabledForInspectedElement","storeAsGlobalAPI","copyInspectedElementPathAPI","KeyValue","alphaSort","canDeletePaths","canEditValues","canRenamePaths","canRenamePathsAtDepth","isDirectChildOfAnArray","hookName","pathRoot","readOnlyGlobalFlag","fullPath","contextMenuTriggerRef","isInspectable","isReadOnlyBasedOnMetadata","isInspectPathsPending","startInspectPathsTransition","toggleIsOpen","isSimpleType","pathIsFunction","deletePath","pathToDelete","renderedName","canRenameTheCurrentPath","DeleteToggle","displayValue","shouldDisplayValueAsLink","protocolPrefix","hasChildren","innerValue","keyValue","InspectedElementContextTree","isReadOnly","InspectedElementErrorsAndWarningsTree","isErrorsTransitionPending","startClearErrorsTransition","isWarningsTransitionPending","startClearWarningsTransition","badgeClassName","clearMessages","clearErrorsForElementAPI","isTransitionPending","messageClassName","clearWarningsForElementAPI","actions","sharedStyles","ErrorOrWarningView","InspectedElementHooksTree","parseHookNamesOptimistic","setParseHookNamesOptimistic","hookParsingFailed","toggleTitle","isStateEditable","subHooks","serializeHooksForCopy","InnerHooksTreeView","HookView","isCustomHook","isComplexDisplayValue","hookSource","hookDisplayName","subHooksView","InspectedElementPropsTree","InspectedElementStateTree","isHostComponent","InspectedElementStyleXPlugin","styleXPlugin","stylex","resolvedStyles","InspectedElementSuspenseToggle","isSuspended","forceFallback","NativeStyleContext","NativeStyleContextController","getStyleAndLayout","currentStyleAndLayout","setCurrentStyleAndLayout","onStyleAndLayout","styleAndLayout","sendRequest","LayoutViewer","StyleEditor","changeAttribute","newName","changeValue","Row","NewRow","newAttributeRef","attributePlaceholder","oldAttribute","newAttribute","valuePlaceholder","localAttribute","setLocalAttribute","localValue","setLocalValue","isAttributeValid","setIsAttributeValid","isValueValid","setIsValueValid","Field","onReset","onSubmit","parsedLocalValue","NativeStyleEditorWrapper","NativeStyleEditor","maybeStyleAndLayout","CopySourceButton","symbolicatedSourcePromise","symbolicatedSource","handleCopy","FormattedSourceString","formatSourceForDisplay","sanitizedSourceURL","BEFORE_SLASH_RE","nameOnly","pathBeforeSlash","InspectedElementView","rendererLabel","showOwnersList","showRenderedBy","OwnerView","charToInteger","chars","segmentify","segment","SourceMapConsumer","sourceMapJSON","sections","lastOffset","section","offsetLine","offsetColumn","generatedLine","generatedColumn","sourceMapConsumer","originalPositionFor","targetColumnNumber","currentLine","currentColumn","IndexedSourceMapConsumer","decodedMappings","mappings","decoded","integer","hasContinuationBit","shouldNegate","decode","lineMappings","nearestEntry","sourceIndex","sourceContent","sourcesContent","BasicSourceMapConsumer","symbolicationCache","SOURCE_MAP_ANNOTATION_PREFIX","editorURL","shouldDisableButton","__IS_INTERNAL_VERSION__","endOfSourceMapURLPattern","endOfSourceMapURLIndex","lineNumberAsString","checkConditions","open","ViewElementSourceContext","ActualSourceButton","canViewElementSourceFunction","viewElementSourceFunction","buttonIsEnabled","viewSource","InspectedElementWrapper","cachedPromise","resourceLines","resourceLine","sourceMapAnnotationStartIndex","sourceMapAt","sourceMapURL","possiblyURL","symbolicateSource","symbolicateSourceWithCache","highlightElement","logElement","getOpenInEditorURL","toggleErrored","forceError","toggleSuspended","strictModeBadge","ModalDialogContext","dialogs","dialog","canBeDismissed","ModalDialogContextController","ModalDialog","ModalDialogImpl","dismissModal","dialogRef","TabBar","currentTab","groupName","selectTab","tabs","tab","firstTab","iconSizeClassName","tabLabelClassName","tabSizeClassName","icon","vscodeFilepath","ComponentsSettings","updateCollapseNodesByDefault","updateParseHookNames","openInEditorURLPreset","setOpenInEditorURLPreset","openInEditorURL","setOpenInEditorURL","setComponentFilters","usedEnvironmentNames","resolvedEnvironmentNames","addFilter","prevComponentFilters","changeFilterType","componentFilter","updateFilterValueElementType","updateFilterValueRegExp","updateFilterValueEnvironmentName","removeFilter","toggleFilterIsEnabled","componentFiltersRef","selectedValue","ToggleIcon","DebuggingSettings","usedHookSettings","appendComponentStack","setAppendComponentStack","breakOnConsoleErrors","setBreakOnConsoleErrors","hideConsoleLogsInStrictMode","setHideConsoleLogsInStrictMode","setShowInlineWarningsAndErrors","updateHookSettings","GeneralSettings","frontendVersion","showBackendVersion","Version","changelogLink","versionAnchor","getChangeLogUrl","ProfilerContext","ProfilerContextController","supportsProfiling","prevProfilingData","setPrevProfilingData","setRootID","selectedFiberID","selectFiberID","selectedFiberName","selectFiberName","selectFiber","setRootIDAndClearFiber","firstRootID","selectedElementRootID","isCommitFilterEnabled","setIsCommitFilterEnabled","minCommitDuration","setMinCommitDuration","selectedCommitIndex","selectCommitIndex","selectedTabID","tabId","current_tab","ProfilerSettings","updateRecordChangeDescriptions","updateMinCommitDuration","updateIsCommitFilterEnabled","minCommitDurationInputRef","SettingsModal","SettingsModalImpl","LOCAL_STORAGE_KEY","initResizeState","horizontalPercentage","verticalPercentage","isResizing","resizeReducer","setResizeCSSVariable","resizeElement","percentage","wrapperElementRef","resizeElementRef","onResizeEnd","wrapperElement","getOrientation","currentMousePosition","resizedElementDimension","actionType","TimelineContext","TimelineContextController","searchInputContainerRef","setFile","isTimelineSupported","inMemoryTimelineData","viewState","horizontalScrollStateChangeCallbacks","searchRegExpStateChangeCallbacks","horizontalScrollState","onHorizontalScrollStateChange","onSearchRegExpStateChange","searchRegExp","updateHorizontalScrollState","scrollState","updateSearchRegExpState","viewToMutableViewStateMap","selectedEvent","selectEvent","ClearProfilingDataButton","doesHaveInMemoryData","doesHaveUserTimingData","NoCommitData","minBarWidth","minWidthToDisplay","ChartNode","isDimmed","textStyle","CommitFlamegraphListItem","onElementMouseLeave","scaleX","selectedChartNode","selectedChartNodeIndex","selectedNodeOffset","nodeOffset","nodeWidth","textColor","nodeData","WhatChanged","changeDescription","didHooksChange","isFirstMount","changes","indices","numbers","hookIndicesToString","HoveredFiberInfo","fiberData","commitIndices","getFiberCommits","renderDurationInfo","initialTooltipState","mouseX","mouseY","tooltipRef","tooltipClassName","mousePosition","relativeContainer","mouseEvent","getMousePosition","TOOLTIP_OFFSET","getTooltipPosition","updateTooltipPosition","CommitFlamegraphAutoSizer","deselectCurrentFiber","CommitFlamegraph","hoveredFiberData","setHoveredFiberData","handleElementMouseLeave","tooltipLabel","patternUnits","CommitRankedListItem","selectedFiberIndex","CommitRankedAutoSizer","CommitRanked","getNodeIndex","RootSelector","RecordToggle","NoProfilingData","RecordingInProgress","DPR","devicePixelRatio","FONT_SIZE","BORDER_SIZE","INTERVAL_TIMES","COLORS","BACKGROUND","INTERNAL_MODULE_FRAME","INTERNAL_MODULE_FRAME_HOVER","INTERNAL_MODULE_FRAME_TEXT","NATIVE_EVENT","NATIVE_EVENT_HOVER","NETWORK_PRIMARY","NETWORK_PRIMARY_HOVER","NETWORK_SECONDARY","NETWORK_SECONDARY_HOVER","PRIORITY_BACKGROUND","PRIORITY_BORDER","PRIORITY_LABEL","USER_TIMING","USER_TIMING_HOVER","REACT_IDLE","REACT_IDLE_HOVER","REACT_RENDER","REACT_RENDER_HOVER","REACT_RENDER_TEXT","REACT_COMMIT","REACT_COMMIT_HOVER","REACT_COMMIT_TEXT","REACT_LAYOUT_EFFECTS","REACT_LAYOUT_EFFECTS_HOVER","REACT_LAYOUT_EFFECTS_TEXT","REACT_PASSIVE_EFFECTS","REACT_PASSIVE_EFFECTS_HOVER","REACT_PASSIVE_EFFECTS_TEXT","REACT_RESIZE_BAR","REACT_RESIZE_BAR_ACTIVE","REACT_RESIZE_BAR_BORDER","REACT_RESIZE_BAR_DOT","REACT_SCHEDULE","REACT_SCHEDULE_HOVER","REACT_SUSPENSE_REJECTED_EVENT","REACT_SUSPENSE_REJECTED_EVENT_HOVER","REACT_SUSPENSE_RESOLVED_EVENT","REACT_SUSPENSE_RESOLVED_EVENT_HOVER","REACT_SUSPENSE_UNRESOLVED_EVENT","REACT_SUSPENSE_UNRESOLVED_EVENT_HOVER","REACT_THROWN_ERROR","REACT_THROWN_ERROR_HOVER","REACT_WORK_BORDER","SCROLL_CARET","SCRUBBER_BACKGROUND","SCRUBBER_BORDER","SEARCH_RESULT_FILL","TEXT_COLOR","TEXT_DIM_COLOR","TIME_MARKER_LABEL","WARNING_BACKGROUND","WARNING_BACKGROUND_HOVER","WARNING_TEXT","WARNING_TEXT_INVERED","zeroPoint","zeroSize","zeroRect","rectEqualToRect","rect1","rect2","point1","point2","size1","size2","sizeIsValid","rectToBox","boxToRect","box","rectIntersectsRect","top1","right1","bottom1","left1","top2","right2","bottom2","left2","intersectionOfRects","rectContainsPoint","getCanvasContext","memoize","canvas","scaleCanvas","getContext","alpha","configureRetinaCanvas","Surface","resetHoveredEvent","activeView","hoveredView","_resetHoveredEvent","hasActiveView","_viewRefs","setCanvas","canvasSize","_canvasSize","rootView","setNeedsDisplay","displayIfNeeded","setFrame","setVisibleArea","getCurrentCursor","currentCursor","handleInteraction","interaction","viewRefs","handleInteractionAndPropagateToSubviews","viewToLayoutInfo","noopLayout","layeredLayout","containerFrame","layoutInfo","verticallyStackedLayout","currentY","desiredSize","proposedFrame","View","surface","layouter","visibleArea","backgroundColor","_backgroundColor","_layouter","_needsDisplay","superview","_setSubviewsNeedDisplay","subviews","subview","_subviewsNeedDisplay","newFrame","newVisibleArea","layoutSubviews","rects","firstRect","remainingRects","intermediateUnion","nextBox","unionTop","unionRight","unionBottom","unionLeft","nextTop","nextRight","nextBottom","nextLeft","unionOfRects","addSubview","removeSubview","subviewIndex","removeAllSubviews","sizeIsEmpty","region","Path2D","save","beginPath","draw","restore","fillStyle","fillRect","BackgroundColorView","clampOffset","containerLength","clampLength","minContentLength","maxContentLength","clampState","translateState","moveStateToRange","rangeStart","rangeEnd","contentLength","lengthClampedState","areScrollStatesEqual","state1","state2","MIN_ZOOM_LEVEL","MAX_ZOOM_LEVEL","HorizontalPanAndZoomView","contentView","intrinsicContentWidth","_contentView","_intrinsicContentWidth","_viewState","zoomToRange","setScrollState","proposedState","_handleMouseDown","_handleMouseMove","_handleMouseUp","_handleWheel","_isPanning","absDeltaX","absDeltaY","fixedPoint","zoomedState","zoomState","VerticalScrollView","_mutableViewStateKey","_onChangeCallback","_scrollState","_restoreMutableViewState","_setScrollState","CARET_HEIGHT","above","below","horizontalCenter","halfWidth","topY","moveTo","lineTo","closePath","bottomY","minimumHeight","desiredHeight","_handleWheelShift","scrollBy","contentHeight","containerHeight","clampedState","cachedTextWidths","getTextWidth","measuredWidth","measureText","drawText","fullRect","drawableRect","textAlign","TEXT_PADDING","textBaseline","font","trimmedName","longestValidIndex","longestValidText","trimmedText","trimText","textOverflowsViewableArea","textX","textY","fillText","ResizeBarView","_label","showLabel","isActive","_interactionState","verticalCenter","labelRect","arc","PI","_setInteractionState","cursorInView","HIDDEN_RECT","ResizableView","canvasRef","_canvasRef","_layoutState","barOffsetY","_subview","_resizeBar","subviewDesiredSize","_shouldRenderResizeBar","resizeBarDesiredSize","_updateLayoutState","_updateSubviewFrames","_updateLayoutStateAndResizeBar","maxInitialHeight","hideScrollBarIfLessThanHeight","RESIZE_BAR_WITH_LABEL_HEIGHT","_resizingState","maxBarOffset","proposedBarOffsetY","cursorOffsetInBarFrame","_handleClick","_handleDoubleClick","cursorLocation","resizeBarFrame","getCursorActiveSubView","LINE_HEIGHT","PAGE_HEIGHT","canvasBoundingRectCache","withVerticalScrollbarLayout","contentLayoutInfo","scrollbarLayoutInfo","scrollbarWidth","laidOutContentLayoutInfo","VerticalScrollOverflowView","maxScrollThumbY","_scrollBarView","getMaxScrollThumbY","_isProcessingOnChange","setScrollThumbY","_verticalScrollView","_onVerticalScrollViewChange","VerticalScrollBarView","contentSize","setContentHeight","setScrollOffset","newScrollOffset","maxScrollOffset","_scrollOffset","verticalScrollOverflowView","_verticalScrollOverflowView","_scrollThumbRect","_contentHeight","proposedScrollThumbRect","newScrollThumbY","contentScrollOffset","currentScrollThumbY","_isScrolling","positioningScaleFactor","intrinsicWidth","timestampToPosition","scaleFactor","positionToTimestamp","durationToWidth","widthToDuration","formatTimestamp","minimumFractionDigits","maximumFractionDigits","prettyMilliseconds","trimString","getSchedulingEventLabel","ROW_WITH_BORDER_HEIGHT","ComponentMeasuresView","profilerData","_profilerData","_cachedSearchMatches","_cachedSearchRegExp","_intrinsicSize","setHoveredEvent","hoveredEvent","_hoveredComponentMeasure","_drawSingleReactComponentMeasure","componentMeasure","showHoverHighlight","warning","xStart","xStop","componentMeasureRect","textFillStyle","typeLabel","cachedSearchRegExp","cachedSearchMatches","cachedValue","componentMeasures","didDrawMeasure","onHover","hoverTimestamp","isInternalModule","flamechartStackFrame","locationColumn","locationLine","scriptUrl","ranges","startStackFrame","stopStackFrame","isAfterStart","isBeforeStop","hslaColorToString","indexToValueInSpace","colorGenerator","hueSpace","satSpace","lightnessSpace","alphaSpace","_hueSpace","_satSpace","_lightnessSpace","_alphaSpace","_colors","setColorForID","colorForID","cachedColor","_generateColorForID","hash","zi","hashCode","defaultHslaColorForStackFrame","defaultColorForStackFrame","stackFrame","hoverColorForStackFrame","FlamechartStackLayerView","stackLayer","_stackLayer","_stackFrameSet","_internalModuleSourceToRanges","setHoveredFlamechartStackFrame","hoveredStackFrame","_hoveredStackFrame","stackFrameToSet","nodeRect","borderFrame","borderDrawableRect","_onHover","FlamechartView","flamechart","setDataAndUpdateSubviews","_verticalStackView","_flamechartRowViews","rowView","setOnHover","NativeEventsView","_performPreflightComputations","_depthToNativeEvent","nativeEvents","_maxDepth","_hoveredEvent","_drawSingleNativeEvent","baseY","eventRect","adjustedCanvasMouseY","nativeEventsAtDepth","BASE_URL_REGEX","NetworkMeasuresView","_depthToNetworkMeasure","networkMeasures","networkMeasure","_hoveredNetworkMeasure","_drawSingleNetworkMeasure","finishTimestamp","firstReceivedDataTimestamp","lastReceivedDataTimestamp","receiveResponseTimestamp","sendRequestTimestamp","timestampEnd","timestampMiddle","xMiddle","outerRect","displayUrl","networkMeasuresAtDepth","REACT_LANE_HEIGHT","ReactMeasuresView","_lanesToRender","measuresForLane","setHoveredMeasure","hoveredMeasure","_hoveredMeasure","_drawSingleReactMeasure","nextMeasure","showGroupHighlight","hoveredFillStyle","groupSelectedFillStyle","measureRect","textRect","batchUID","renderedLaneIndex","measures","SchedulingEventsView","TOP_ROW_PADDING","_drawSingleSchedulingEvent","REACT_EVENT_DIAMETER","schedulingEvents","highlightedEvents","eventTimestampAllowance","eventIndex","SnapshotsView","snapshotHeight","snapshot","_findClosestSnapshot","imageRect","image","img","Image","_drawSnapshotImage","imageSource","hoverLocation","_hoverLocation","scrubberWidth","scrubberOffset","_updateHover","shouldClip","clippedRect","drawImage","SuspenseEventsView","_depthToSuspenseEvent","suspenseEvents","_drawSingleSuspenseEvent","phase","promiseName","resolution","halfSize","suspenseEventsAtDepth","suspenseEvent","timestampAllowance","PENDING_SUSPENSE_EVENT_SIZE","ThrownErrorsView","_drawSingleThrownError","thrownError","thrownErrors","HEADER_HEIGHT_FIXED","LABEL_FIXED_WIDTH","TimeAxisMarkersView","totalDuration","_totalDuration","_getTimeTickInterval","currentInterval","clippedFrame","interval","markerTimestamp","markerLabel","MARKER_HEIGHT","UserTimingMarksView","marks","_marks","setHoveredMark","hoveredMark","_hoveredMark","_drawSingleMark","USER_TIMING_MARK_SIZE","getBatchRange","minStartTime","lastMeasure","stopTime","TOOLTIP_OFFSET_BOTTOM","TOOLTIP_OFFSET_TOP","EventTooltip","useSmartTooltip","schedulingEvent","userTimingMark","TooltipReactComponentMeasure","TooltipNativeEvent","TooltipNetworkMeasure","TooltipSchedulingEvent","TooltipSnapshot","TooltipSuspenseEvent","TooltipReactMeasure","TooltipFlamechartNode","TooltipUserTimingMark","TooltipThrownError","urlToDisplay","half","MAX_TOOLTIP_TEXT_LENGTH","laneLabels","aspectRatio","safeWidth","safeHeight","getReactMeasureLabel","EMPTY_ARRAY","safeSearchText","prevSelectedMeasure","prevSelectedMeasureIndex","TimelineSearchContext","TimelineSearchContextController","CanvasPageContextMenu","canvasWidth","zoomToBatch","batchDuration","copySummary","EMPTY_CONTEXT_INFO","AutoSizedCanvas","mouseLocation","setMouseLocation","lastHoveredEvent","setLastHoveredEvent","contextMenuRef","updateHoveredEvent","componentMeasureSearchResult","surfaceRef","userTimingMarksViewRef","nativeEventsViewRef","schedulingEventsViewRef","suspenseEventsViewRef","componentMeasuresViewRef","reactMeasuresViewRef","flamechartViewRef","networkMeasuresViewRef","snapshotsViewRef","thrownErrorsViewRef","defaultFrame","createViewHelper","shouldScrollVertically","shouldResizeVertically","verticalScrollView","horizontalPanAndZoomView","resizableView","axisMarkersViewWrapper","userTimingMarksViewWrapper","otherUserTimingMarks","userTimingMarksView","nativeEventsViewWrapper","nativeEventsView","thrownErrorsViewWrapper","thrownErrorsView","schedulingEventsViewWrapper","schedulingEventsView","suspenseEventsViewWrapper","suspenseEventsView","reactMeasuresView","reactMeasuresViewWrapper","componentMeasuresViewWrapper","componentMeasuresView","snapshotsViewWrapper","snapshotsView","networkMeasuresViewWrapper","networkMeasuresView","flamechartViewWrapper","flamechartView","interactor","isMouseDownRef","didMouseMoveWhileDownRef","localToCanvasCoordinates","localCoordinates","canvasRect","cacheFirstGetCanvasBoundingRect","onCanvasClick","onCanvasDoubleClick","onCanvasMouseDown","onDocumentMouseMove","onDocumentMouseUp","onCanvasWheel","WheelEvent","DOM_DELTA_LINE","DOM_DELTA_PAGE","normalizeWheel","useCanvasInteraction","REACT_TOTAL_NUM_LANES","SCHEDULING_PROFILER_VERSION","SNAPSHOT_MAX_HEIGHT","InvalidProfileError","NATIVE_EVENT_DURATION_THRESHOLD","NESTED_UPDATE_DURATION_THRESHOLD","WARNING_STRINGS","LONG_EVENT_HANDLER","NESTED_UPDATE","SUSPEND_DURING_UPDATE","getLanesFromTransportDecimalBitmask","laneBitmaskString","laneBitmask","powersOfTwo","profilerVersion","markWorkStarted","currentProfilerData","measureStack","getDepth","markWorkCompleted","assertNoOverlappingComponentMeasure","currentReactComponentMeasure","assertCurrentComponentMeasureType","parseStackFrame","ErrorStackParser","preprocessData","timeline","rawData","parsedData","errorToRethrow","SpeedscopeFlamechart","layer","preprocessFlamechart","reactVersion","indexOfProfileEvent","asyncProcessingPromises","internalModuleCurrentStackFrame","internalModuleStackStringSet","nativeEventStack","nextRenderShouldGenerateNewBatchID","potentialLongEvents","potentialLongNestedUpdate","potentialLongNestedUpdates","potentialSuspenseEventsOutsideOfTransition","requestIdToNetworkMeasureMap","uidCounter","unresolvedSuspenseEvents","cat","ph","createImageBitmap","bitmap","processScreenshot","stackTrace","prevNativeEvent","processEventDispatch","requestId","processResourceFinish","processResourceReceivedData","processResourceReceiveResponse","availableDepths","requestMethod","processResourceSendRequest","versionString","laneLabelTuplesString","laneLabelTuples","laneIndex","updateLaneToLabelMap","processReactComponentMeasure","forceUpdateEvent","stateUpdateEvent","lastIndex","throwIfIncomplete","getLastType","stackFrameStart","parsedStackFrameStart","stackFrameStop","parsedStackFrameStop","processTimelineEvent","readInputData","fileReader","FileReader","readAsText","importFile","readFile","processedData","workerizedImportFile","WorkerizedImportFile","importFileModule","fileNameToProfilerDataMap","TimelineSearchInput","TimelineNotSupported","Timeline","deferredTheme","intervalID","setInterval","updateColorsToMatchTheme","clearInterval","ProcessingData","FileLoader","onFileSelect","NoTimelineData","CouldNotLoadProfile","dataOrError","importFileWorker","SchedulingEventInfo","eventInfo","component","stackToComponentSources","SidebarEventInfo","ReloadAndProfileButton","reloadAndProfile","ProfilingImportExportButtons","downloadRef","modalDialogDispatch","downloadData","anchorElement","profilingDataExport","profilingDataFrontend","prepareProfilingDataExport","filename","downloadFile","toLocaleDateString","year","day","toLocaleTimeString","hour12","clickInputElement","files","prepareProfilingDataFrontendFromExport","SnapshotCommitListItem","filteredCommitIndices","maxDuration","setHoveredCommitIndex","startCommitDrag","totalDurations","heightScale","cbrt","colorScale","sizeIncrement","borderBottom","SnapshotCommitList","commitTimes","selectedFilteredCommitIndex","List","prevCommitIndexRef","maxCommitIndex","dragState","setDragState","handleDragCommit","newCommitIndex","newCommitLeft","newCommitRectRight","hoveredCommitIndex","SnapshotSelector","numFilteredCommits","handleCommitInputChange","filteredIndex","viewPrevCommit","viewNextCommit","inputMode","nextCommitIndex","flex","Updaters","serializedElement","SidebarCommitInfo","hasCommitPhaseDurations","ProfilingNotSupported","SidebarSelectedFiberInfo","selectedListItemRef","block","inline","listItems","prevIndex","nextIndex","OnlyTimelineData","tabsWithTimeline","timelineTraceEventData","isLegacyProfilerSelected","sidebar","ReactLogo","strokeWidth","rx","ry","DEVTOOLS_VERSION","INSTRUCTIONS_FB_URL","MODAL_DIALOG_ID","UnsupportedBridgeProtocolDialog","updateDialog","DialogContent","unsupportedBridgeProtocol","instructions","upgradeInstructions","downgradeInstructions","UnsupportedVersionDialog","showDialog","WarnIfLegacyBackendDetected","unlisten","InvalidBackendDetected","DevTools","defaultTab","enabledInspectedElementContextMenu","hookNamesModuleLoaderFunction","overrideTab","showTabBar","warnIfLegacyBackendDetected","warnIfUnsupportedVersionDetected","setTab","viewElementSource","contextMenu","devToolsRef","COMMON_EDITORS","childProcess","getValidFilePath","maybeRelativePath","absoluteProjectRoots","isAbsolute","existsSync","projectRoot","joinedPath","nodeWaitingToConnectHTML","projectRoots","statusListener","disconnectedCallback","safeUnmount","reload","resourceCache","_source","filePath","editor","destructuredArgs","REACT_EDITOR","platform","execSync","processNames","processName","VISUAL","EDITOR","guessEditor","basename","getArgumentsForLineNumber","isTerminalEditor","kill","spawn","stdio","launchEditor","onDisconnected","initialize","Bridge","transferable","startServerTimeoutID","DevtoolsUI","connectToSocket","setContentDOMNode","setProjectRoots","setStatusListener","setDisconnectedCallback","startServer","httpsOptions","loggerOptions","fetchAdditionalContext","eventWithoutMetadata","additionalContext","session_id","loggingUrl","crypto","randomUUID","iframe","handleLoggingIFrameLoaded","registerDevToolsEventLogger","useHttps","httpServer","connected","backendFile","readFileSync","__dirname","savedPreferencesString","openProfiler"],"sourceRoot":""}