{"version":3,"file":"zenuml.esm.mjs","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../node_modules/quick-format-unescaped/index.js","../node_modules/pino/browser.js","../src/logger/logger.ts","../node_modules/jotai/esm/vanilla/internals.mjs","../node_modules/jotai/esm/vanilla.mjs","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/jotai/esm/react.mjs","../src/store/utils.ts","../node_modules/antlr4/src/antlr4/utils/stringHashCode.js","../node_modules/antlr4/src/antlr4/polyfills/codepointat.js","../node_modules/antlr4/src/antlr4/polyfills/fromcodepoint.js","../node_modules/antlr4/src/antlr4/Token.js","../node_modules/antlr4/src/antlr4/utils/equalArrays.js","../node_modules/antlr4/src/antlr4/misc/HashCode.js","../node_modules/antlr4/src/antlr4/utils/standardHashCodeFunction.js","../node_modules/antlr4/src/antlr4/utils/standardEqualsFunction.js","../node_modules/antlr4/src/antlr4/utils/valueToString.js","../node_modules/antlr4/src/antlr4/utils/arrayToString.js","../node_modules/antlr4/src/antlr4/misc/HashSet.js","../node_modules/antlr4/src/antlr4/atn/SemanticContext.js","../node_modules/antlr4/src/antlr4/atn/ATNConfig.js","../node_modules/antlr4/src/antlr4/misc/Interval.js","../node_modules/antlr4/src/antlr4/misc/IntervalSet.js","../node_modules/antlr4/src/antlr4/state/ATNState.js","../node_modules/antlr4/src/antlr4/state/RuleStopState.js","../node_modules/antlr4/src/antlr4/transition/Transition.js","../node_modules/antlr4/src/antlr4/transition/RuleTransition.js","../node_modules/antlr4/src/antlr4/transition/SetTransition.js","../node_modules/antlr4/src/antlr4/transition/NotSetTransition.js","../node_modules/antlr4/src/antlr4/transition/WildcardTransition.js","../node_modules/antlr4/src/antlr4/atn/AbstractPredicateTransition.js","../node_modules/antlr4/src/antlr4/tree/Tree.js","../node_modules/antlr4/src/antlr4/tree/SyntaxTree.js","../node_modules/antlr4/src/antlr4/tree/ParseTree.js","../node_modules/antlr4/src/antlr4/tree/RuleNode.js","../node_modules/antlr4/src/antlr4/tree/TerminalNode.js","../node_modules/antlr4/src/antlr4/tree/ErrorNode.js","../node_modules/antlr4/src/antlr4/utils/escapeWhitespace.js","../node_modules/antlr4/src/antlr4/tree/Trees.js","../node_modules/antlr4/src/antlr4/context/RuleContext.js","../node_modules/antlr4/src/antlr4/context/PredictionContext.js","../node_modules/antlr4/src/antlr4/context/ArrayPredictionContext.js","../node_modules/antlr4/src/antlr4/context/SingletonPredictionContext.js","../node_modules/antlr4/src/antlr4/context/EmptyPredictionContext.js","../node_modules/antlr4/src/antlr4/misc/HashMap.js","../node_modules/antlr4/src/antlr4/context/PredictionContextUtils.js","../node_modules/antlr4/src/antlr4/misc/BitSet.js","../node_modules/antlr4/src/antlr4/atn/LL1Analyzer.js","../node_modules/antlr4/src/antlr4/atn/ATN.js","../node_modules/antlr4/src/antlr4/atn/ATNType.js","../node_modules/antlr4/src/antlr4/state/BasicState.js","../node_modules/antlr4/src/antlr4/state/DecisionState.js","../node_modules/antlr4/src/antlr4/state/BlockStartState.js","../node_modules/antlr4/src/antlr4/state/BlockEndState.js","../node_modules/antlr4/src/antlr4/state/LoopEndState.js","../node_modules/antlr4/src/antlr4/state/RuleStartState.js","../node_modules/antlr4/src/antlr4/state/TokensStartState.js","../node_modules/antlr4/src/antlr4/state/PlusLoopbackState.js","../node_modules/antlr4/src/antlr4/state/StarLoopbackState.js","../node_modules/antlr4/src/antlr4/state/StarLoopEntryState.js","../node_modules/antlr4/src/antlr4/state/PlusBlockStartState.js","../node_modules/antlr4/src/antlr4/state/StarBlockStartState.js","../node_modules/antlr4/src/antlr4/state/BasicBlockStartState.js","../node_modules/antlr4/src/antlr4/transition/AtomTransition.js","../node_modules/antlr4/src/antlr4/transition/RangeTransition.js","../node_modules/antlr4/src/antlr4/transition/ActionTransition.js","../node_modules/antlr4/src/antlr4/transition/EpsilonTransition.js","../node_modules/antlr4/src/antlr4/atn/Predicate.js","../node_modules/antlr4/src/antlr4/transition/PredicateTransition.js","../node_modules/antlr4/src/antlr4/atn/PrecedencePredicate.js","../node_modules/antlr4/src/antlr4/transition/PrecedencePredicateTransition.js","../node_modules/antlr4/src/antlr4/atn/ATNDeserializationOptions.js","../node_modules/antlr4/src/antlr4/atn/LexerActionType.js","../node_modules/antlr4/src/antlr4/action/LexerAction.js","../node_modules/antlr4/src/antlr4/action/LexerSkipAction.js","../node_modules/antlr4/src/antlr4/action/LexerChannelAction.js","../node_modules/antlr4/src/antlr4/action/LexerCustomAction.js","../node_modules/antlr4/src/antlr4/action/LexerMoreAction.js","../node_modules/antlr4/src/antlr4/action/LexerTypeAction.js","../node_modules/antlr4/src/antlr4/action/LexerPushModeAction.js","../node_modules/antlr4/src/antlr4/action/LexerPopModeAction.js","../node_modules/antlr4/src/antlr4/action/LexerModeAction.js","../node_modules/antlr4/src/antlr4/atn/ATNDeserializer.js","../node_modules/antlr4/src/antlr4/error/ErrorListener.js","../node_modules/antlr4/src/antlr4/error/ConsoleErrorListener.js","../node_modules/antlr4/src/antlr4/error/ProxyErrorListener.js","../node_modules/antlr4/src/antlr4/Recognizer.js","../node_modules/antlr4/src/antlr4/CommonToken.js","../node_modules/antlr4/src/antlr4/CommonTokenFactory.js","../node_modules/antlr4/src/antlr4/error/RecognitionException.js","../node_modules/antlr4/src/antlr4/error/LexerNoViableAltException.js","../node_modules/antlr4/src/antlr4/Lexer.js","../node_modules/antlr4/src/antlr4/atn/ATNConfigSet.js","../node_modules/antlr4/src/antlr4/dfa/DFAState.js","../node_modules/antlr4/src/antlr4/atn/ATNSimulator.js","../node_modules/antlr4/src/antlr4/atn/OrderedATNConfigSet.js","../node_modules/antlr4/src/antlr4/atn/LexerATNConfig.js","../node_modules/antlr4/src/antlr4/action/LexerIndexedCustomAction.js","../node_modules/antlr4/src/antlr4/atn/LexerActionExecutor.js","../node_modules/antlr4/src/antlr4/atn/LexerATNSimulator.js","../node_modules/antlr4/src/antlr4/dfa/PredPrediction.js","../node_modules/antlr4/src/antlr4/misc/AltDict.js","../node_modules/antlr4/src/antlr4/atn/PredictionMode.js","../node_modules/antlr4/src/antlr4/error/NoViableAltException.js","../node_modules/antlr4/src/antlr4/utils/DoubleDict.js","../node_modules/antlr4/src/antlr4/atn/ParserATNSimulator.js","../node_modules/antlr4/src/antlr4/atn/index.js","../node_modules/antlr4/src/antlr4/dfa/DFASerializer.js","../node_modules/antlr4/src/antlr4/dfa/LexerDFASerializer.js","../node_modules/antlr4/src/antlr4/dfa/DFA.js","../node_modules/antlr4/src/antlr4/dfa/index.js","../node_modules/antlr4/src/antlr4/tree/ParseTreeListener.js","../node_modules/antlr4/src/antlr4/tree/ParseTreeVisitor.js","../node_modules/antlr4/src/antlr4/tree/ParseTreeWalker.js","../node_modules/antlr4/src/antlr4/tree/index.js","../node_modules/antlr4/src/antlr4/error/InputMismatchException.js","../node_modules/antlr4/src/antlr4/error/FailedPredicateException.js","../node_modules/antlr4/src/antlr4/error/DiagnosticErrorListener.js","../node_modules/antlr4/src/antlr4/error/ParseCancellationException.js","../node_modules/antlr4/src/antlr4/error/ErrorStrategy.js","../node_modules/antlr4/src/antlr4/error/DefaultErrorStrategy.js","../node_modules/antlr4/src/antlr4/error/BailErrorStrategy.js","../node_modules/antlr4/src/antlr4/error/index.js","../node_modules/antlr4/src/antlr4/InputStream.js","../__vite-browser-external","../node_modules/antlr4/src/antlr4/CharStreams.js","../node_modules/antlr4/src/antlr4/FileStream.js","../node_modules/antlr4/src/antlr4/TokenStream.js","../node_modules/antlr4/src/antlr4/BufferedTokenStream.js","../node_modules/antlr4/src/antlr4/CommonTokenStream.js","../node_modules/antlr4/src/antlr4/TraceListener.js","../node_modules/antlr4/src/antlr4/Parser.js","../node_modules/antlr4/src/antlr4/atn/PredictionContextCache.js","../node_modules/antlr4/src/antlr4/tree/TerminalNodeImpl.js","../node_modules/antlr4/src/antlr4/tree/ErrorNodeImpl.js","../node_modules/antlr4/src/antlr4/context/ParserRuleContext.js","../node_modules/antlr4/src/antlr4/utils/index.js","../node_modules/antlr4/src/antlr4/index.js","../src/generated-parser/sequenceLexer.js","../src/generated-parser/sequenceParserListener.js","../src/generated-parser/sequenceParser.js","../src/parser/Participants.ts","../src/parser/ToCollector.js","../src/parser/ChildFragmentDetecotr.js","../src/parser/TitleContext.js","../src/parser/IsCurrent.js","../src/parser/Owner.js","../src/parser/ProgContext.js","../src/parser/RetContext.js","../src/parser/RefContext.ts","../src/parser/Origin.js","../src/parser/Divider/DividerContext.ts","../src/parser/SignatureText.ts","../src/parser/Messages/Assignment.ts","../src/parser/Messages/MessageContext.ts","../src/parser/From.ts","../src/parser/key/Key.ts","../src/parser/utils/cloest-ancestor/ClosestAncestor.ts","../src/parser/AncestorPath.ts","../src/utils/StringUtil.ts","../src/parser/index.js","../src/positioning/Coordinate.ts","../src/utils/RenderingCache.ts","../src/positioning/WidthProviderFunc.ts","../src/positioning/Constants.ts","../src/parser/OwnableMessage.ts","../src/parser/MessageCollector.ts","../src/parser/OrderedParticipants.ts","../src/positioning/david/DavidEisenstat.ts","../src/positioning/Coordinates.ts","../src/positioning/vertical/StatementIdentifier.ts","../src/positioning/vertical/vm/NodeVM.ts","../src/positioning/LocalParticipants.ts","../node_modules/marked/lib/marked.esm.js","../src/utils/messageStyling.ts","../src/emoji/builtinEmojis.ts","../src/emoji/resolveEmoji.ts","../src/components/Comment/Comment.ts","../src/positioning/vertical/MarkdownMeasurer.ts","../src/positioning/vertical/vm/StatementVM.ts","../src/positioning/vertical/vm/AsyncMessageStatementVM.ts","../src/positioning/vertical/vm/CreationStatementVM.ts","../src/positioning/vertical/vm/DividerStatementVM.ts","../src/positioning/vertical/vm/EmptyStatementVM.ts","../src/positioning/vertical/vm/FragmentVM.ts","../src/positioning/vertical/vm/FragmentAltVM.ts","../src/positioning/vertical/vm/FragmentSingleBlockVM.ts","../src/positioning/vertical/vm/FragmentCriticalVM.ts","../src/positioning/vertical/vm/FragmentLoopVM.ts","../src/positioning/vertical/vm/FragmentOptVM.ts","../src/positioning/vertical/vm/FragmentParVM.ts","../src/positioning/vertical/vm/FragmentRefVM.ts","../src/positioning/vertical/vm/FragmentSectionVM.ts","../src/positioning/vertical/vm/FragmentTryCatchVM.ts","../src/positioning/vertical/vm/ReturnStatementVM.ts","../src/positioning/vertical/vm/SyncMessageStatementVM.ts","../src/positioning/vertical/vm/createStatementVM.ts","../src/positioning/vertical/vm/BlockVM.ts","../src/positioning/vertical/LayoutMetrics.ts","../src/positioning/VerticalCoordinates.ts","../src/store/Store.ts","../node_modules/html-to-image/es/util.js","../node_modules/html-to-image/es/clone-pseudos.js","../node_modules/html-to-image/es/mimes.js","../node_modules/html-to-image/es/dataurl.js","../node_modules/html-to-image/es/clone-node.js","../node_modules/html-to-image/es/embed-resources.js","../node_modules/html-to-image/es/embed-images.js","../node_modules/html-to-image/es/apply-style.js","../node_modules/html-to-image/es/embed-webfonts.js","../node_modules/html-to-image/es/index.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils.ts","../src/components/Icon/icons/close.svg?react","../src/components/Icon/icons/collapse-expanded.svg?react","../src/components/Icon/icons/collapse-unexpanded.svg?react","../src/components/Icon/icons/debug.svg?react","../src/components/Icon/icons/non-selected-cycle.svg?react","../src/components/Icon/icons/numbering.svg?react","../src/components/Icon/icons/privacy.svg?react","../src/components/Icon/icons/selected-cycle.svg?react","../src/components/Icon/icons/theme.svg?react","../src/components/Icon/icons/tip.svg?react","../src/components/Icon/icons/zoom-in.svg?react","../src/components/Icon/icons/zoom-out.svg?react","../src/components/Icon/icons/alt-fragment.svg?react","../src/components/Icon/icons/critical-fragment.svg?react","../src/components/Icon/icons/loop-fragment.svg?react","../src/components/Icon/icons/opt-fragment.svg?react","../src/components/Icon/icons/ref-fragment.svg?react","../src/components/Icon/icons/par-fragment.svg?react","../src/components/Icon/icons/section-fragment.svg?react","../src/components/Icon/icons/try-catch-fragment.svg?react","../src/components/Icon/Icons.tsx","../src/components/DiagramFrame/Debug/index.tsx","../src/components/DiagramFrame/Privacy/index.tsx","../src/components/common/EditableSpan/EditableSpan.tsx","../src/components/DiagramFrame/DiagramTitle/index.tsx","../src/components/DiagramFrame/Tutorial/LazyIcons.ts","../src/components/DiagramFrame/Tutorial/AsyncIcon.tsx","../src/components/DiagramFrame/Tutorial/IconList.tsx","../src/components/DiagramFrame/Tutorial/TipsDialog.tsx","../node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","../node_modules/@react-aria/utils/dist/useEffectEvent.mjs","../node_modules/@react-aria/utils/dist/domHelpers.mjs","../node_modules/@react-stately/flags/dist/import.mjs","../node_modules/@react-aria/utils/dist/DOMFunctions.mjs","../node_modules/@react-aria/utils/dist/platform.mjs","../node_modules/@react-aria/utils/dist/useGlobalListeners.mjs","../node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/index.js","../node_modules/@react-aria/interactions/dist/utils.mjs","../node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","../node_modules/@react-aria/interactions/dist/useFocus.mjs","../node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","../node_modules/@react-aria/interactions/dist/useHover.mjs","../node_modules/@react-aria/focus/dist/useFocusRing.mjs","../node_modules/@headlessui/react/dist/utils/env.js","../node_modules/@headlessui/react/dist/utils/owner.js","../node_modules/@headlessui/react/dist/utils/micro-task.js","../node_modules/@headlessui/react/dist/utils/disposables.js","../node_modules/@headlessui/react/dist/hooks/use-disposables.js","../node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","../node_modules/@headlessui/react/dist/hooks/use-latest-value.js","../node_modules/@headlessui/react/dist/hooks/use-event.js","../node_modules/@headlessui/react/dist/hooks/use-slot.js","../node_modules/@headlessui/react/dist/internal/disabled.js","../node_modules/@headlessui/react/dist/utils/class-names.js","../node_modules/@headlessui/react/dist/utils/match.js","../node_modules/@headlessui/react/dist/utils/render.js","../node_modules/@headlessui/react/dist/hooks/use-controllable.js","../node_modules/@headlessui/react/dist/hooks/use-default-value.js","../node_modules/@headlessui/react/dist/utils/form.js","../node_modules/@headlessui/react/dist/internal/hidden.js","../node_modules/@headlessui/react/dist/internal/form-fields.js","../node_modules/@headlessui/react/dist/internal/id.js","../node_modules/@headlessui/react/dist/utils/dom.js","../node_modules/@headlessui/react/dist/utils/bugs.js","../node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","../node_modules/@headlessui/react/dist/components/description/description.js","../node_modules/@headlessui/react/dist/components/keyboard.js","../node_modules/@headlessui/react/dist/components/label/label.js","../node_modules/@headlessui/react/dist/internal/close-provider.js","../node_modules/@headlessui/react/dist/hooks/use-by-comparator.js","../node_modules/@headlessui/react/dist/utils/default-map.js","../node_modules/@headlessui/react/dist/machine.js","../node_modules/@headlessui/react/dist/machines/stack-machine.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/@headlessui/react/dist/react-glue.js","../node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js","../node_modules/@headlessui/react/dist/hooks/use-inert-others.js","../node_modules/@headlessui/react/dist/hooks/use-on-disappear.js","../node_modules/@headlessui/react/dist/utils/focus-management.js","../node_modules/@headlessui/react/dist/utils/platform.js","../node_modules/@headlessui/react/dist/hooks/use-document-event.js","../node_modules/@headlessui/react/dist/hooks/use-window-event.js","../node_modules/@headlessui/react/dist/hooks/use-outside-click.js","../node_modules/@headlessui/react/dist/hooks/use-owner.js","../node_modules/@headlessui/react/dist/hooks/use-event-listener.js","../node_modules/@headlessui/react/dist/hooks/use-store.js","../node_modules/@headlessui/react/dist/utils/store.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js","../node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js","../node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js","../node_modules/@headlessui/react/dist/hooks/use-flags.js","../node_modules/@headlessui/react/dist/hooks/use-transition.js","../node_modules/@headlessui/react/dist/hooks/use-watch.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/tabbable/dist/index.esm.js","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@headlessui/react/dist/internal/open-closed.js","../node_modules/@headlessui/react/dist/utils/document-ready.js","../node_modules/@headlessui/react/dist/utils/active-element-history.js","../node_modules/@headlessui/react/dist/hooks/use-on-unmount.js","../node_modules/@headlessui/react/dist/internal/portal-force-root.js","../node_modules/@headlessui/react/dist/components/portal/portal.js","../node_modules/@headlessui/react/dist/hooks/use-escape.js","../node_modules/@headlessui/react/dist/hooks/use-is-touch-device.js","../node_modules/@headlessui/react/dist/hooks/use-root-containers.js","../node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js","../node_modules/@headlessui/react/dist/hooks/use-is-mounted.js","../node_modules/@headlessui/react/dist/hooks/use-tab-direction.js","../node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js","../node_modules/@headlessui/react/dist/components/transition/transition.js","../node_modules/@headlessui/react/dist/components/dialog/dialog.js","../node_modules/@headlessui/react/dist/components/radio-group/radio-group.js","../src/EventBus.ts","../src/assets/theme/theme-legacy.svg?raw","../src/assets/theme/theme-clean-light.svg?raw","../src/assets/theme/theme-clean-dark.svg?raw","../src/assets/theme/theme-neon-dark.svg?raw","../src/components/DiagramFrame/ThemeSelector.tsx","../src/parser/FrameBuilder.ts","../src/positioning/FrameBorder.ts","../src/components/DiagramFrame/SeqDiagram/WidthOfContext.ts","../src/functions/useDocumentScroll.ts","../src/functions/useIntersectionTop.ts","../node_modules/color-name/index.js","../node_modules/color-string/index.js","../src/utils/Color.ts","../src/utils/dom.ts","../src/utils/messageNormalizers.ts","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/ParticipantLabel.tsx","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/Participant.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/utils.ts","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/LifeLine.tsx","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/LifeLineGroup.tsx","../src/utils/insertMessageInDsl.ts","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/MessageCreateControls.tsx","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/LifeLineLayer.tsx","../src/utils/Context.ts","../src/utils/Numbering.ts","../src/positioning/Anchor2.ts","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/useFragmentData.ts","../node_modules/dompurify/dist/purify.es.mjs","../node_modules/highlight.js/lib/core.js","../node_modules/highlight.js/es/languages/plaintext.js","../node_modules/highlight.js/es/languages/javascript.js","../node_modules/highlight.js/es/languages/bash.js","../node_modules/highlight.js/es/languages/yaml.js","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Comment/Comment.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Numbering.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/CollapseButton.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/ConditionLabel.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentLoop.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentAlt.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentPar.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentOpt.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentSection.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentCritical.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentTryCatchFinally.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/EditableLabelField.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/MessageLabel.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Fragment/FragmentRef.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Message/MessageView.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Message/Message.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Interaction/Occurrence/CollapseButton.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/AssignmentReturnLabel.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Interaction/Occurrence/Occurrence.tsx","../src/parser/CodeRange.ts","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/useArrow.ts","../src/components/DiagramFrame/SeqDiagram/MessageLayer/CreationMessageLabel.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Creation/Creation.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Message/ArrowHead.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Interaction/SelfInvocation/SelfInvocation.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Interaction/Interaction.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/InteractionAsync/SelfInvocationAsync/SelfInvocationAsync.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/InteractionAsync/Interaction-async.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Divider/Divider.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Return/Return.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Statement/Statement.tsx","../src/utils/messageReorderTransform.ts","../src/utils/insertDividerInDsl.ts","../src/components/DiagramFrame/SeqDiagram/MessageLayer/GapHandleZone.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/Block/Block.tsx","../src/utils/messageTypeTransform.ts","../src/utils/messageWrapTransform.ts","../node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../src/functions/useLatestValue.ts","../src/functions/useDocumentEvent.ts","../src/functions/useOutsideClick.ts","../src/components/DiagramFrame/SeqDiagram/MessageLayer/StylePanel.tsx","../src/components/DiagramFrame/SeqDiagram/MessageLayer/MessageLayer.tsx","../src/utils/participantInsertTransform.ts","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/ParticipantInsertControls.tsx","../src/utils/participantStyleTransform.ts","../src/components/DiagramFrame/SeqDiagram/LifeLineLayer/ParticipantStylePanel.tsx","../src/components/DiagramFrame/SeqDiagram/EmptyDiagramPrompt.tsx","../src/components/DiagramFrame/SeqDiagram/SeqDiagram.tsx","../src/components/DiagramFrame/DiagramFrame.tsx","../src/components/ErrorBoundary.tsx","../src/version.ts","../src/utils/CostTime.ts","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/scheduler/index.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/react-dom/client.js","../src/svg/svgConstants.ts","../src/svg/buildParticipantGeometry.ts","../src/svg/buildFragmentGeometry.ts","../src/svg/walkStatements.ts","../src/svg/computeReturnDebt.ts","../src/svg/buildStatementGeometry.ts","../src/svg/buildGeometry.ts","../src/assets/actor.svg?raw","../src/assets/Robustness_Diagram_Boundary.svg?raw","../src/assets/Robustness_Diagram_Control.svg?raw","../src/assets/database.svg?raw","../src/assets/Robustness_Diagram_Entity.svg?raw","../src/svg/icons.ts","../src/svg/components/svgUtils.ts","../src/svg/components/participant.ts","../src/svg/components/lifeline.ts","../src/svg/components/message.ts","../src/svg/components/occurrence.ts","../src/svg/components/fragment.ts","../src/svg/components/creation.ts","../src/svg/components/return.ts","../src/svg/components/divider.ts","../src/svg/components/comment.ts","../src/svg/components/group.ts","../src/svg/renderToSvg.ts","../src/core.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.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_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict'\nfunction tryStringify (o) {\n  try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n  var ss = (opts && opts.stringify) || tryStringify\n  var offset = 1\n  if (typeof f === 'object' && f !== null) {\n    var len = args.length + offset\n    if (len === 1) return f\n    var objects = new Array(len)\n    objects[0] = ss(f)\n    for (var index = 1; index < len; index++) {\n      objects[index] = ss(args[index])\n    }\n    return objects.join(' ')\n  }\n  if (typeof f !== 'string') {\n    return f\n  }\n  var argLen = args.length\n  if (argLen === 0) return f\n  var str = ''\n  var a = 1 - offset\n  var lastPos = -1\n  var flen = (f && f.length) || 0\n  for (var i = 0; i < flen;) {\n    if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n      lastPos = lastPos > -1 ? lastPos : 0\n      switch (f.charCodeAt(i + 1)) {\n        case 100: // 'd'\n        case 102: // 'f'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Number(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 105: // 'i'\n          if (a >= argLen)\n            break\n          if (args[a] == null)  break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += Math.floor(Number(args[a]))\n          lastPos = i + 2\n          i++\n          break\n        case 79: // 'O'\n        case 111: // 'o'\n        case 106: // 'j'\n          if (a >= argLen)\n            break\n          if (args[a] === undefined) break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          var type = typeof args[a]\n          if (type === 'string') {\n            str += '\\'' + args[a] + '\\''\n            lastPos = i + 2\n            i++\n            break\n          }\n          if (type === 'function') {\n            str += args[a].name || '<anonymous>'\n            lastPos = i + 2\n            i++\n            break\n          }\n          str += ss(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 115: // 's'\n          if (a >= argLen)\n            break\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += String(args[a])\n          lastPos = i + 2\n          i++\n          break\n        case 37: // '%'\n          if (lastPos < i)\n            str += f.slice(lastPos, i)\n          str += '%'\n          lastPos = i + 2\n          i++\n          a--\n          break\n      }\n      ++a\n    }\n    ++i\n  }\n  if (lastPos === -1)\n    return f\n  else if (lastPos < flen) {\n    str += f.slice(lastPos)\n  }\n\n  return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n  mapHttpRequest: mock,\n  mapHttpResponse: mock,\n  wrapRequestSerializer: passthrough,\n  wrapResponseSerializer: passthrough,\n  wrapErrorSerializer: passthrough,\n  req: mock,\n  res: mock,\n  err: asErrValue,\n  errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n  return level === 'silent'\n    ? Infinity\n    : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n  error: 'log',\n  fatal: 'error',\n  warn: 'error',\n  info: 'log',\n  debug: 'log',\n  trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n  const newEntry = {\n    logger: childLogger,\n    parent: parentLogger[hierarchySymbol]\n  }\n  childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n  const logFunctions = {}\n  levels.forEach(level => {\n    logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n  })\n  logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n  if (Array.isArray(serialize)) {\n    const hasToFilter = serialize.filter(function (k) {\n      return k !== '!stdSerializers.err'\n    })\n    return hasToFilter\n  } else if (serialize === true) {\n    return Object.keys(serializers)\n  }\n\n  return false\n}\n\nfunction pino (opts) {\n  opts = opts || {}\n  opts.browser = opts.browser || {}\n\n  const transmit = opts.browser.transmit\n  if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n  const proto = opts.browser.write || _console\n  if (opts.browser.write) opts.browser.asObject = true\n  const serializers = opts.serializers || {}\n  const serialize = shouldSerialize(opts.browser.serialize, serializers)\n  let stdErrSerialize = opts.browser.serialize\n\n  if (\n    Array.isArray(opts.browser.serialize) &&\n    opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n  ) stdErrSerialize = false\n\n  const customLevels = Object.keys(opts.customLevels || {})\n  const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n  if (typeof proto === 'function') {\n    levels.forEach(function (level) {\n      proto[level] = proto\n    })\n  }\n  if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n  const level = opts.level || 'info'\n  const logger = Object.create(proto)\n  if (!logger.log) logger.log = noop\n\n  setupBaseLogFunctions(logger, levels, proto)\n  // setup root hierarchy entry\n  appendChildLogger({}, logger)\n\n  Object.defineProperty(logger, 'levelVal', {\n    get: getLevelVal\n  })\n  Object.defineProperty(logger, 'level', {\n    get: getLevel,\n    set: setLevel\n  })\n\n  const setOpts = {\n    transmit,\n    serialize,\n    asObject: opts.browser.asObject,\n    formatters: opts.browser.formatters,\n    levels,\n    timestamp: getTimeFunction(opts)\n  }\n  logger.levels = getLevels(opts)\n  logger.level = level\n\n  logger.setMaxListeners = logger.getMaxListeners =\n  logger.emit = logger.addListener = logger.on =\n  logger.prependListener = logger.once =\n  logger.prependOnceListener = logger.removeListener =\n  logger.removeAllListeners = logger.listeners =\n  logger.listenerCount = logger.eventNames =\n  logger.write = logger.flush = noop\n  logger.serializers = serializers\n  logger._serialize = serialize\n  logger._stdErrSerialize = stdErrSerialize\n  logger.child = child\n\n  if (transmit) logger._logEvent = createLogEventShape()\n\n  function getLevelVal () {\n    return levelToValue(this.level, this)\n  }\n\n  function getLevel () {\n    return this._level\n  }\n  function setLevel (level) {\n    if (level !== 'silent' && !this.levels.values[level]) {\n      throw Error('unknown level ' + level)\n    }\n    this._level = level\n\n    set(this, setOpts, logger, 'error') // <-- must stay first\n    set(this, setOpts, logger, 'fatal')\n    set(this, setOpts, logger, 'warn')\n    set(this, setOpts, logger, 'info')\n    set(this, setOpts, logger, 'debug')\n    set(this, setOpts, logger, 'trace')\n\n    customLevels.forEach((level) => {\n      set(this, setOpts, logger, level)\n    })\n  }\n\n  function child (bindings, childOptions) {\n    if (!bindings) {\n      throw new Error('missing bindings for child Pino')\n    }\n    childOptions = childOptions || {}\n    if (serialize && bindings.serializers) {\n      childOptions.serializers = bindings.serializers\n    }\n    const childOptionsSerializers = childOptions.serializers\n    if (serialize && childOptionsSerializers) {\n      var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n      var childSerialize = opts.browser.serialize === true\n        ? Object.keys(childSerializers)\n        : serialize\n      delete bindings.serializers\n      applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n    }\n    function Child (parent) {\n      this._childLevel = (parent._childLevel | 0) + 1\n\n      // make sure bindings are available in the `set` function\n      this.bindings = bindings\n\n      if (childSerializers) {\n        this.serializers = childSerializers\n        this._serialize = childSerialize\n      }\n      if (transmit) {\n        this._logEvent = createLogEventShape(\n          [].concat(parent._logEvent.bindings, bindings)\n        )\n      }\n    }\n    Child.prototype = this\n    const newLogger = new Child(this)\n\n    // must happen before the level is assigned\n    appendChildLogger(this, newLogger)\n    // required to actually initialize the logger functions for any given child\n    newLogger.level = this.level\n\n    return newLogger\n  }\n  return logger\n}\n\nfunction getLevels (opts) {\n  const customLevels = opts.customLevels || {}\n\n  const values = Object.assign({}, pino.levels.values, customLevels)\n  const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n  return {\n    values,\n    labels\n  }\n}\n\nfunction invertObject (obj) {\n  const inverted = {}\n  Object.keys(obj).forEach(function (key) {\n    inverted[obj[key]] = key\n  })\n  return inverted\n}\n\npino.levels = {\n  values: {\n    fatal: 60,\n    error: 50,\n    warn: 40,\n    info: 30,\n    debug: 20,\n    trace: 10\n  },\n  labels: {\n    10: 'trace',\n    20: 'debug',\n    30: 'info',\n    40: 'warn',\n    50: 'error',\n    60: 'fatal'\n  }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n  const bindings = []\n  if (logger.bindings) {\n    bindings.push(logger.bindings)\n  }\n\n  // traverse up the tree to get all bindings\n  let hierarchy = logger[hierarchySymbol]\n  while (hierarchy.parent) {\n    hierarchy = hierarchy.parent\n    if (hierarchy.logger.bindings) {\n      bindings.push(hierarchy.logger.bindings)\n    }\n  }\n\n  return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n  // override the current log functions with either `noop` or the base log function\n  Object.defineProperty(self, level, {\n    value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n      ? noop\n      : rootLogger[baseLogFunctionSymbol][level]),\n    writable: true,\n    enumerable: true,\n    configurable: true\n  })\n\n  if (!opts.transmit && self[level] === noop) {\n    return\n  }\n\n  // make sure the log format is correct\n  self[level] = createWrap(self, opts, rootLogger, level)\n\n  // prepend bindings if it is not the root logger\n  const bindings = getBindingChain(self)\n  if (bindings.length === 0) {\n    // early exit in case for rootLogger\n    return\n  }\n  self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n  return function () {\n    return logFunc.apply(this, [...bindings, ...arguments])\n  }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n  return (function (write) {\n    return function LOG () {\n      const ts = opts.timestamp()\n      const args = new Array(arguments.length)\n      const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n      for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n      if (opts.serialize && !opts.asObject) {\n        applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n      }\n      if (opts.asObject || opts.formatters) {\n        write.call(proto, asObject(this, level, args, ts, opts.formatters))\n      } else write.apply(proto, args)\n\n      if (opts.transmit) {\n        const transmitLevel = opts.transmit.level || self._level\n        const transmitValue = rootLogger.levels.values[transmitLevel]\n        const methodValue = rootLogger.levels.values[level]\n        if (methodValue < transmitValue) return\n        transmit(this, {\n          ts,\n          methodLevel: level,\n          methodValue,\n          transmitLevel,\n          transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n          send: opts.transmit.send,\n          val: levelToValue(self._level, rootLogger)\n        }, args)\n      }\n    }\n  })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, formatters = {}) {\n  const {\n    level: levelFormatter = () => logger.levels.values[level],\n    log: logObjectFormatter = (obj) => obj\n  } = formatters\n  if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n  const argsCloned = args.slice()\n  let msg = argsCloned[0]\n  const logObject = {}\n  if (ts) {\n    logObject.time = ts\n  }\n  logObject.level = levelFormatter(level, logger.levels.values[level])\n\n  let lvl = (logger._childLevel | 0) + 1\n  if (lvl < 1) lvl = 1\n  // deliberate, catching objects, arrays\n  if (msg !== null && typeof msg === 'object') {\n    while (lvl-- && typeof argsCloned[0] === 'object') {\n      Object.assign(logObject, argsCloned.shift())\n    }\n    msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n  } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n  if (msg !== undefined) logObject.msg = msg\n\n  const formattedLogObject = logObjectFormatter(logObject)\n  return formattedLogObject\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n  for (const i in args) {\n    if (stdErrSerialize && args[i] instanceof Error) {\n      args[i] = pino.stdSerializers.err(args[i])\n    } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n      for (const k in args[i]) {\n        if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n          args[i][k] = serializers[k](args[i][k])\n        }\n      }\n    }\n  }\n}\n\nfunction transmit (logger, opts, args) {\n  const send = opts.send\n  const ts = opts.ts\n  const methodLevel = opts.methodLevel\n  const methodValue = opts.methodValue\n  const val = opts.val\n  const bindings = logger._logEvent.bindings\n\n  applySerializers(\n    args,\n    logger._serialize || Object.keys(logger.serializers),\n    logger.serializers,\n    logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n  )\n  logger._logEvent.ts = ts\n  logger._logEvent.messages = args.filter(function (arg) {\n    // bindings can only be objects, so reference equality check via indexOf is fine\n    return bindings.indexOf(arg) === -1\n  })\n\n  logger._logEvent.level.label = methodLevel\n  logger._logEvent.level.value = methodValue\n\n  send(methodLevel, logger._logEvent, val)\n\n  logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n  return {\n    ts: 0,\n    messages: [],\n    bindings: bindings || [],\n    level: { label: '', value: 0 }\n  }\n}\n\nfunction asErrValue (err) {\n  const obj = {\n    type: err.constructor.name,\n    msg: err.message,\n    stack: err.stack\n  }\n  for (const key in err) {\n    if (obj[key] === undefined) {\n      obj[key] = err[key]\n    }\n  }\n  return obj\n}\n\nfunction getTimeFunction (opts) {\n  if (typeof opts.timestamp === 'function') {\n    return opts.timestamp\n  }\n  if (opts.timestamp === false) {\n    return nullTime\n  }\n  return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n  function defd (o) { return typeof o !== 'undefined' && o }\n  try {\n    if (typeof globalThis !== 'undefined') return globalThis\n    Object.defineProperty(Object.prototype, 'globalThis', {\n      get: function () {\n        delete Object.prototype.globalThis\n        return (this.globalThis = this)\n      },\n      configurable: true\n    })\n    return globalThis\n  } catch (e) {\n    return defd(self) || defd(window) || defd(this) || {}\n  }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","import pino from \"pino\";\n\n/**\n * What do we get from 'pino'?\n * - log level. The level is used in the prettify function to determine which log is printed to the console.\n * - `child` method to create a child logger with a given name. The name is added to the log message with the prettify function.\n */\nconst logger = pino({\n  level: \"warn\",\n});\n\nconst LEVELS = [\"log\", \"trace\", \"debug\", \"info\", \"warn\", \"error\"] as const;\nconst PINO_LEVEL: Record<(typeof LEVELS)[number], \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\"> = {\n  log: \"info\",\n  trace: \"trace\",\n  debug: \"debug\",\n  info: \"info\",\n  warn: \"warn\",\n  error: \"error\",\n};\n\ntype LoggerLike = Record<string, (...args: unknown[]) => void> & {\n  child: (opts: { name?: string }) => LoggerLike;\n};\n\nfunction isEnabled(target: LoggerLike, level: (typeof LEVELS)[number]) {\n  const loggerTarget = target as unknown as {\n    isLevelEnabled?: (level: string) => boolean;\n  };\n  return loggerTarget.isLevelEnabled?.(PINO_LEVEL[level]) ?? true;\n}\n\nfunction bind(target: LoggerLike, level: (typeof LEVELS)[number]) {\n  const consoleFn = level in console\n    ? (console[level as keyof Console] as (...args: unknown[]) => void)\n    : console.log;\n  target[level] = (...args: unknown[]) => {\n    if (isEnabled(target, level)) {\n      consoleFn(...args);\n    }\n  };\n}\n\nfunction bind2(target: LoggerLike, level: (typeof LEVELS)[number], prefix: [string, string]) {\n  const consoleFn = level in console\n    ? (console[level as keyof Console] as (...args: unknown[]) => void)\n    : console.log;\n  target[level] = (...args: unknown[]) => {\n    if (isEnabled(target, level)) {\n      consoleFn(prefix[0], prefix[1], ...args);\n    }\n  };\n}\n\nfunction prettify(target: LoggerLike): LoggerLike {\n  LEVELS.forEach((level) => bind(target, level));\n  const childFn = target.child;\n  target.child = function (opts: { name?: string }) {\n    const child = childFn.call(target, opts);\n    LEVELS.forEach((level) =>\n      bind2(child, level, [\"%c\" + (opts.name || \"\"), \"color: #00f\"]),\n    );\n    return child;\n  };\n  return target;\n}\n\nconst rootLogger = prettify(logger as unknown as LoggerLike);\nexport default rootLogger;\n","function hasInitialValue(atom) {\n  return \"init\" in atom;\n}\nfunction isActuallyWritableAtom(atom) {\n  return !!atom.write;\n}\nfunction isAtomStateInitialized(atomState) {\n  return \"v\" in atomState || \"e\" in atomState;\n}\nfunction returnAtomValue(atomState) {\n  if (\"e\" in atomState) {\n    throw atomState.e;\n  }\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !(\"v\" in atomState)) {\n    throw new Error(\"[Bug] atom state is not initialized\");\n  }\n  return atomState.v;\n}\nconst promiseStateMap = /* @__PURE__ */ new WeakMap();\nfunction isPendingPromise(value) {\n  var _a;\n  return isPromiseLike(value) && !!((_a = promiseStateMap.get(value)) == null ? void 0 : _a[0]);\n}\nfunction abortPromise(promise) {\n  const promiseState = promiseStateMap.get(promise);\n  if (promiseState == null ? void 0 : promiseState[0]) {\n    promiseState[0] = false;\n    promiseState[1].forEach((fn) => fn());\n  }\n}\nfunction registerAbortHandler(promise, abortHandler) {\n  let promiseState = promiseStateMap.get(promise);\n  if (!promiseState) {\n    promiseState = [true, /* @__PURE__ */ new Set()];\n    promiseStateMap.set(promise, promiseState);\n    const settle = () => {\n      promiseState[0] = false;\n    };\n    promise.then(settle, settle);\n  }\n  promiseState[1].add(abortHandler);\n}\nfunction isPromiseLike(p) {\n  return typeof (p == null ? void 0 : p.then) === \"function\";\n}\nfunction addPendingPromiseToDependency(atom, promise, dependencyAtomState) {\n  if (!dependencyAtomState.p.has(atom)) {\n    dependencyAtomState.p.add(atom);\n    const cleanup = () => dependencyAtomState.p.delete(atom);\n    promise.then(cleanup, cleanup);\n  }\n}\nfunction getMountedOrPendingDependents(atom, atomState, mountedMap) {\n  var _a;\n  const dependents = /* @__PURE__ */ new Set();\n  for (const a of ((_a = mountedMap.get(atom)) == null ? void 0 : _a.t) || []) {\n    dependents.add(a);\n  }\n  for (const atomWithPendingPromise of atomState.p) {\n    dependents.add(atomWithPendingPromise);\n  }\n  return dependents;\n}\nconst createStoreHook = () => {\n  const callbacks = /* @__PURE__ */ new Set();\n  const notify = () => callbacks.forEach((fn) => fn());\n  notify.add = (fn) => {\n    callbacks.add(fn);\n    return () => callbacks.delete(fn);\n  };\n  return notify;\n};\nconst createStoreHookForAtoms = () => {\n  const all = {};\n  const callbacks = /* @__PURE__ */ new WeakMap();\n  const notify = (atom) => {\n    var _a, _b;\n    (_a = callbacks.get(all)) == null ? void 0 : _a.forEach((fn) => fn(atom));\n    (_b = callbacks.get(atom)) == null ? void 0 : _b.forEach((fn) => fn());\n  };\n  notify.add = (atom, fn) => {\n    const key = atom || all;\n    let fns = callbacks.get(key);\n    if (!fns) {\n      fns = /* @__PURE__ */ new Set();\n      callbacks.set(key, fns);\n    }\n    fns.add(fn);\n    return () => {\n      fns.delete(fn);\n      if (!fns.size) {\n        callbacks.delete(key);\n      }\n    };\n  };\n  return notify;\n};\nfunction initializeStoreHooks(storeHooks) {\n  storeHooks.i || (storeHooks.i = createStoreHookForAtoms());\n  storeHooks.r || (storeHooks.r = createStoreHookForAtoms());\n  storeHooks.c || (storeHooks.c = createStoreHookForAtoms());\n  storeHooks.m || (storeHooks.m = createStoreHookForAtoms());\n  storeHooks.u || (storeHooks.u = createStoreHookForAtoms());\n  storeHooks.f || (storeHooks.f = createStoreHook());\n  return storeHooks;\n}\nconst BUILDING_BLOCK_atomRead = (_store, atom, ...params) => atom.read(...params);\nconst BUILDING_BLOCK_atomWrite = (_store, atom, ...params) => atom.write(...params);\nconst BUILDING_BLOCK_atomOnInit = (store, atom) => {\n  if (atom.INTERNAL_onInit) {\n    return atom.INTERNAL_onInit(store);\n  }\n  if (atom.unstable_onInit) {\n    console.warn(\n      \"[DEPRECATED] atom.unstable_onInit is renamed to atom.INTERNAL_onInit.\"\n    );\n    return atom.unstable_onInit(store);\n  }\n};\nconst BUILDING_BLOCK_atomOnMount = (_store, atom, setAtom) => {\n  var _a;\n  return (_a = atom.onMount) == null ? void 0 : _a.call(atom, setAtom);\n};\nconst BUILDING_BLOCK_ensureAtomState = (store, atom) => {\n  var _a;\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const atomStateMap = buildingBlocks[0];\n  const storeHooks = buildingBlocks[6];\n  const atomOnInit = buildingBlocks[9];\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !atom) {\n    throw new Error(\"Atom is undefined or null\");\n  }\n  let atomState = atomStateMap.get(atom);\n  if (!atomState) {\n    atomState = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 };\n    atomStateMap.set(atom, atomState);\n    (_a = storeHooks.i) == null ? void 0 : _a.call(storeHooks, atom);\n    atomOnInit == null ? void 0 : atomOnInit(store, atom);\n  }\n  return atomState;\n};\nconst BUILDING_BLOCK_flushCallbacks = (store) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const changedAtoms = buildingBlocks[3];\n  const mountCallbacks = buildingBlocks[4];\n  const unmountCallbacks = buildingBlocks[5];\n  const storeHooks = buildingBlocks[6];\n  const recomputeInvalidatedAtoms = buildingBlocks[13];\n  const errors = [];\n  const call = (fn) => {\n    try {\n      fn();\n    } catch (e) {\n      errors.push(e);\n    }\n  };\n  do {\n    if (storeHooks.f) {\n      call(storeHooks.f);\n    }\n    const callbacks = /* @__PURE__ */ new Set();\n    const add = callbacks.add.bind(callbacks);\n    changedAtoms.forEach((atom) => {\n      var _a;\n      return (_a = mountedMap.get(atom)) == null ? void 0 : _a.l.forEach(add);\n    });\n    changedAtoms.clear();\n    unmountCallbacks.forEach(add);\n    unmountCallbacks.clear();\n    mountCallbacks.forEach(add);\n    mountCallbacks.clear();\n    callbacks.forEach(call);\n    if (changedAtoms.size) {\n      recomputeInvalidatedAtoms(store);\n    }\n  } while (changedAtoms.size || unmountCallbacks.size || mountCallbacks.size);\n  if (errors.length) {\n    throw new AggregateError(errors);\n  }\n};\nconst BUILDING_BLOCK_recomputeInvalidatedAtoms = (store) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const invalidatedAtoms = buildingBlocks[2];\n  const changedAtoms = buildingBlocks[3];\n  const ensureAtomState = buildingBlocks[11];\n  const readAtomState = buildingBlocks[14];\n  const mountDependencies = buildingBlocks[17];\n  const topSortedReversed = [];\n  const visiting = /* @__PURE__ */ new WeakSet();\n  const visited = /* @__PURE__ */ new WeakSet();\n  const stack = Array.from(changedAtoms);\n  while (stack.length) {\n    const a = stack[stack.length - 1];\n    const aState = ensureAtomState(store, a);\n    if (visited.has(a)) {\n      stack.pop();\n      continue;\n    }\n    if (visiting.has(a)) {\n      if (invalidatedAtoms.get(a) === aState.n) {\n        topSortedReversed.push([a, aState]);\n      } else if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && invalidatedAtoms.has(a)) {\n        throw new Error(\"[Bug] invalidated atom exists\");\n      }\n      visited.add(a);\n      stack.pop();\n      continue;\n    }\n    visiting.add(a);\n    for (const d of getMountedOrPendingDependents(a, aState, mountedMap)) {\n      if (!visiting.has(d)) {\n        stack.push(d);\n      }\n    }\n  }\n  for (let i = topSortedReversed.length - 1; i >= 0; --i) {\n    const [a, aState] = topSortedReversed[i];\n    let hasChangedDeps = false;\n    for (const dep of aState.d.keys()) {\n      if (dep !== a && changedAtoms.has(dep)) {\n        hasChangedDeps = true;\n        break;\n      }\n    }\n    if (hasChangedDeps) {\n      readAtomState(store, a);\n      mountDependencies(store, a);\n    }\n    invalidatedAtoms.delete(a);\n  }\n};\nconst storeMutationSet = /* @__PURE__ */ new WeakSet();\nconst BUILDING_BLOCK_readAtomState = (store, atom) => {\n  var _a, _b;\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const invalidatedAtoms = buildingBlocks[2];\n  const changedAtoms = buildingBlocks[3];\n  const storeHooks = buildingBlocks[6];\n  const atomRead = buildingBlocks[7];\n  const ensureAtomState = buildingBlocks[11];\n  const flushCallbacks = buildingBlocks[12];\n  const recomputeInvalidatedAtoms = buildingBlocks[13];\n  const readAtomState = buildingBlocks[14];\n  const writeAtomState = buildingBlocks[16];\n  const mountDependencies = buildingBlocks[17];\n  const setAtomStateValueOrPromise = buildingBlocks[20];\n  const atomState = ensureAtomState(store, atom);\n  if (isAtomStateInitialized(atomState)) {\n    if (mountedMap.has(atom) && invalidatedAtoms.get(atom) !== atomState.n) {\n      return atomState;\n    }\n    let hasChangedDeps = false;\n    for (const [a, n] of atomState.d) {\n      if (readAtomState(store, a).n !== n) {\n        hasChangedDeps = true;\n        break;\n      }\n    }\n    if (!hasChangedDeps) {\n      return atomState;\n    }\n  }\n  atomState.d.clear();\n  let isSync = true;\n  function mountDependenciesIfAsync() {\n    if (mountedMap.has(atom)) {\n      mountDependencies(store, atom);\n      recomputeInvalidatedAtoms(store);\n      flushCallbacks(store);\n    }\n  }\n  function getter(a) {\n    var _a2;\n    if (a === atom) {\n      const aState2 = ensureAtomState(store, a);\n      if (!isAtomStateInitialized(aState2)) {\n        if (hasInitialValue(a)) {\n          setAtomStateValueOrPromise(store, a, a.init);\n        } else {\n          throw new Error(\"no atom init\");\n        }\n      }\n      return returnAtomValue(aState2);\n    }\n    const aState = readAtomState(store, a);\n    try {\n      return returnAtomValue(aState);\n    } finally {\n      atomState.d.set(a, aState.n);\n      if (isPendingPromise(atomState.v)) {\n        addPendingPromiseToDependency(atom, atomState.v, aState);\n      }\n      if (mountedMap.has(atom)) {\n        (_a2 = mountedMap.get(a)) == null ? void 0 : _a2.t.add(atom);\n      }\n      if (!isSync) {\n        mountDependenciesIfAsync();\n      }\n    }\n  }\n  let controller;\n  let setSelf;\n  const options = {\n    get signal() {\n      if (!controller) {\n        controller = new AbortController();\n      }\n      return controller.signal;\n    },\n    get setSelf() {\n      if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !isActuallyWritableAtom(atom)) {\n        console.warn(\"setSelf function cannot be used with read-only atom\");\n      }\n      if (!setSelf && isActuallyWritableAtom(atom)) {\n        setSelf = (...args) => {\n          if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && isSync) {\n            console.warn(\"setSelf function cannot be called in sync\");\n          }\n          if (!isSync) {\n            try {\n              return writeAtomState(store, atom, ...args);\n            } finally {\n              recomputeInvalidatedAtoms(store);\n              flushCallbacks(store);\n            }\n          }\n        };\n      }\n      return setSelf;\n    }\n  };\n  const prevEpochNumber = atomState.n;\n  try {\n    if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n      storeMutationSet.delete(store);\n    }\n    const valueOrPromise = atomRead(store, atom, getter, options);\n    if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && storeMutationSet.has(store)) {\n      console.warn(\n        \"Detected store mutation during atom read. This is not supported.\"\n      );\n    }\n    setAtomStateValueOrPromise(store, atom, valueOrPromise);\n    if (isPromiseLike(valueOrPromise)) {\n      registerAbortHandler(valueOrPromise, () => controller == null ? void 0 : controller.abort());\n      valueOrPromise.then(mountDependenciesIfAsync, mountDependenciesIfAsync);\n    }\n    (_a = storeHooks.r) == null ? void 0 : _a.call(storeHooks, atom);\n    return atomState;\n  } catch (error) {\n    delete atomState.v;\n    atomState.e = error;\n    ++atomState.n;\n    return atomState;\n  } finally {\n    isSync = false;\n    if (prevEpochNumber !== atomState.n && invalidatedAtoms.get(atom) === prevEpochNumber) {\n      invalidatedAtoms.set(atom, atomState.n);\n      changedAtoms.add(atom);\n      (_b = storeHooks.c) == null ? void 0 : _b.call(storeHooks, atom);\n    }\n  }\n};\nconst BUILDING_BLOCK_invalidateDependents = (store, atom) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const invalidatedAtoms = buildingBlocks[2];\n  const ensureAtomState = buildingBlocks[11];\n  const stack = [atom];\n  while (stack.length) {\n    const a = stack.pop();\n    const aState = ensureAtomState(store, a);\n    for (const d of getMountedOrPendingDependents(a, aState, mountedMap)) {\n      const dState = ensureAtomState(store, d);\n      invalidatedAtoms.set(d, dState.n);\n      stack.push(d);\n    }\n  }\n};\nconst BUILDING_BLOCK_writeAtomState = (store, atom, ...args) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const changedAtoms = buildingBlocks[3];\n  const storeHooks = buildingBlocks[6];\n  const atomWrite = buildingBlocks[8];\n  const ensureAtomState = buildingBlocks[11];\n  const flushCallbacks = buildingBlocks[12];\n  const recomputeInvalidatedAtoms = buildingBlocks[13];\n  const readAtomState = buildingBlocks[14];\n  const invalidateDependents = buildingBlocks[15];\n  const writeAtomState = buildingBlocks[16];\n  const mountDependencies = buildingBlocks[17];\n  const setAtomStateValueOrPromise = buildingBlocks[20];\n  let isSync = true;\n  const getter = (a) => returnAtomValue(readAtomState(store, a));\n  const setter = (a, ...args2) => {\n    var _a;\n    const aState = ensureAtomState(store, a);\n    try {\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error(\"atom not writable\");\n        }\n        if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n          storeMutationSet.add(store);\n        }\n        const prevEpochNumber = aState.n;\n        const v = args2[0];\n        setAtomStateValueOrPromise(store, a, v);\n        mountDependencies(store, a);\n        if (prevEpochNumber !== aState.n) {\n          changedAtoms.add(a);\n          invalidateDependents(store, a);\n          (_a = storeHooks.c) == null ? void 0 : _a.call(storeHooks, a);\n        }\n        return void 0;\n      } else {\n        return writeAtomState(store, a, ...args2);\n      }\n    } finally {\n      if (!isSync) {\n        recomputeInvalidatedAtoms(store);\n        flushCallbacks(store);\n      }\n    }\n  };\n  try {\n    return atomWrite(store, atom, getter, setter, ...args);\n  } finally {\n    isSync = false;\n  }\n};\nconst BUILDING_BLOCK_mountDependencies = (store, atom) => {\n  var _a;\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const changedAtoms = buildingBlocks[3];\n  const storeHooks = buildingBlocks[6];\n  const ensureAtomState = buildingBlocks[11];\n  const invalidateDependents = buildingBlocks[15];\n  const mountAtom = buildingBlocks[18];\n  const unmountAtom = buildingBlocks[19];\n  const atomState = ensureAtomState(store, atom);\n  const mounted = mountedMap.get(atom);\n  if (mounted && !isPendingPromise(atomState.v)) {\n    for (const [a, n] of atomState.d) {\n      if (!mounted.d.has(a)) {\n        const aState = ensureAtomState(store, a);\n        const aMounted = mountAtom(store, a);\n        aMounted.t.add(atom);\n        mounted.d.add(a);\n        if (n !== aState.n) {\n          changedAtoms.add(a);\n          invalidateDependents(store, a);\n          (_a = storeHooks.c) == null ? void 0 : _a.call(storeHooks, a);\n        }\n      }\n    }\n    for (const a of mounted.d) {\n      if (!atomState.d.has(a)) {\n        mounted.d.delete(a);\n        const aMounted = unmountAtom(store, a);\n        aMounted == null ? void 0 : aMounted.t.delete(atom);\n      }\n    }\n  }\n};\nconst BUILDING_BLOCK_mountAtom = (store, atom) => {\n  var _a;\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const mountCallbacks = buildingBlocks[4];\n  const storeHooks = buildingBlocks[6];\n  const atomOnMount = buildingBlocks[10];\n  const ensureAtomState = buildingBlocks[11];\n  const flushCallbacks = buildingBlocks[12];\n  const recomputeInvalidatedAtoms = buildingBlocks[13];\n  const readAtomState = buildingBlocks[14];\n  const writeAtomState = buildingBlocks[16];\n  const mountAtom = buildingBlocks[18];\n  const atomState = ensureAtomState(store, atom);\n  let mounted = mountedMap.get(atom);\n  if (!mounted) {\n    readAtomState(store, atom);\n    for (const a of atomState.d.keys()) {\n      const aMounted = mountAtom(store, a);\n      aMounted.t.add(atom);\n    }\n    mounted = {\n      l: /* @__PURE__ */ new Set(),\n      d: new Set(atomState.d.keys()),\n      t: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if (isActuallyWritableAtom(atom)) {\n      const processOnMount = () => {\n        let isSync = true;\n        const setAtom = (...args) => {\n          try {\n            return writeAtomState(store, atom, ...args);\n          } finally {\n            if (!isSync) {\n              recomputeInvalidatedAtoms(store);\n              flushCallbacks(store);\n            }\n          }\n        };\n        try {\n          const onUnmount = atomOnMount(store, atom, setAtom);\n          if (onUnmount) {\n            mounted.u = () => {\n              isSync = true;\n              try {\n                onUnmount();\n              } finally {\n                isSync = false;\n              }\n            };\n          }\n        } finally {\n          isSync = false;\n        }\n      };\n      mountCallbacks.add(processOnMount);\n    }\n    (_a = storeHooks.m) == null ? void 0 : _a.call(storeHooks, atom);\n  }\n  return mounted;\n};\nconst BUILDING_BLOCK_unmountAtom = (store, atom) => {\n  var _a, _b;\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const mountedMap = buildingBlocks[1];\n  const unmountCallbacks = buildingBlocks[5];\n  const storeHooks = buildingBlocks[6];\n  const ensureAtomState = buildingBlocks[11];\n  const unmountAtom = buildingBlocks[19];\n  const atomState = ensureAtomState(store, atom);\n  let mounted = mountedMap.get(atom);\n  if (!mounted || mounted.l.size) {\n    return mounted;\n  }\n  let isDependent = false;\n  for (const a of mounted.t) {\n    if ((_a = mountedMap.get(a)) == null ? void 0 : _a.d.has(atom)) {\n      isDependent = true;\n      break;\n    }\n  }\n  if (!isDependent) {\n    if (mounted.u) {\n      unmountCallbacks.add(mounted.u);\n    }\n    mounted = void 0;\n    mountedMap.delete(atom);\n    for (const a of atomState.d.keys()) {\n      const aMounted = unmountAtom(store, a);\n      aMounted == null ? void 0 : aMounted.t.delete(atom);\n    }\n    (_b = storeHooks.u) == null ? void 0 : _b.call(storeHooks, atom);\n    return void 0;\n  }\n  return mounted;\n};\nconst BUILDING_BLOCK_setAtomStateValueOrPromise = (store, atom, valueOrPromise) => {\n  const ensureAtomState = getInternalBuildingBlocks(store)[11];\n  const atomState = ensureAtomState(store, atom);\n  const hasPrevValue = \"v\" in atomState;\n  const prevValue = atomState.v;\n  if (isPromiseLike(valueOrPromise)) {\n    for (const a of atomState.d.keys()) {\n      addPendingPromiseToDependency(\n        atom,\n        valueOrPromise,\n        ensureAtomState(store, a)\n      );\n    }\n  }\n  atomState.v = valueOrPromise;\n  delete atomState.e;\n  if (!hasPrevValue || !Object.is(prevValue, atomState.v)) {\n    ++atomState.n;\n    if (isPromiseLike(prevValue)) {\n      abortPromise(prevValue);\n    }\n  }\n};\nconst BUILDING_BLOCK_storeGet = (store, atom) => {\n  const readAtomState = getInternalBuildingBlocks(store)[14];\n  return returnAtomValue(readAtomState(store, atom));\n};\nconst BUILDING_BLOCK_storeSet = (store, atom, ...args) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const flushCallbacks = buildingBlocks[12];\n  const recomputeInvalidatedAtoms = buildingBlocks[13];\n  const writeAtomState = buildingBlocks[16];\n  try {\n    return writeAtomState(store, atom, ...args);\n  } finally {\n    recomputeInvalidatedAtoms(store);\n    flushCallbacks(store);\n  }\n};\nconst BUILDING_BLOCK_storeSub = (store, atom, listener) => {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const flushCallbacks = buildingBlocks[12];\n  const mountAtom = buildingBlocks[18];\n  const unmountAtom = buildingBlocks[19];\n  const mounted = mountAtom(store, atom);\n  const listeners = mounted.l;\n  listeners.add(listener);\n  flushCallbacks(store);\n  return () => {\n    listeners.delete(listener);\n    unmountAtom(store, atom);\n    flushCallbacks(store);\n  };\n};\nconst buildingBlockMap = /* @__PURE__ */ new WeakMap();\nconst getInternalBuildingBlocks = (store) => {\n  const buildingBlocks = buildingBlockMap.get(store);\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !buildingBlocks) {\n    throw new Error(\n      \"Store must be created by buildStore to read its building blocks\"\n    );\n  }\n  return buildingBlocks;\n};\nfunction getBuildingBlocks(store) {\n  const buildingBlocks = getInternalBuildingBlocks(store);\n  const enhanceBuildingBlocks = buildingBlocks[24];\n  if (enhanceBuildingBlocks) {\n    return enhanceBuildingBlocks(buildingBlocks);\n  }\n  return buildingBlocks;\n}\nfunction buildStore(...buildArgs) {\n  const store = {\n    get(atom) {\n      const storeGet = getInternalBuildingBlocks(store)[21];\n      return storeGet(store, atom);\n    },\n    set(atom, ...args) {\n      const storeSet = getInternalBuildingBlocks(store)[22];\n      return storeSet(store, atom, ...args);\n    },\n    sub(atom, listener) {\n      const storeSub = getInternalBuildingBlocks(store)[23];\n      return storeSub(store, atom, listener);\n    }\n  };\n  const buildingBlocks = [\n    // store state\n    /* @__PURE__ */ new WeakMap(),\n    // atomStateMap\n    /* @__PURE__ */ new WeakMap(),\n    // mountedMap\n    /* @__PURE__ */ new WeakMap(),\n    // invalidatedAtoms\n    /* @__PURE__ */ new Set(),\n    // changedAtoms\n    /* @__PURE__ */ new Set(),\n    // mountCallbacks\n    /* @__PURE__ */ new Set(),\n    // unmountCallbacks\n    {},\n    // storeHooks\n    // atom interceptors\n    BUILDING_BLOCK_atomRead,\n    BUILDING_BLOCK_atomWrite,\n    BUILDING_BLOCK_atomOnInit,\n    BUILDING_BLOCK_atomOnMount,\n    // building-block functions\n    BUILDING_BLOCK_ensureAtomState,\n    BUILDING_BLOCK_flushCallbacks,\n    BUILDING_BLOCK_recomputeInvalidatedAtoms,\n    BUILDING_BLOCK_readAtomState,\n    BUILDING_BLOCK_invalidateDependents,\n    BUILDING_BLOCK_writeAtomState,\n    BUILDING_BLOCK_mountDependencies,\n    BUILDING_BLOCK_mountAtom,\n    BUILDING_BLOCK_unmountAtom,\n    BUILDING_BLOCK_setAtomStateValueOrPromise,\n    BUILDING_BLOCK_storeGet,\n    BUILDING_BLOCK_storeSet,\n    BUILDING_BLOCK_storeSub,\n    void 0\n  ].map((fn, i) => buildArgs[i] || fn);\n  buildingBlockMap.set(store, Object.freeze(buildingBlocks));\n  return store;\n}\n\nexport { abortPromise as INTERNAL_abortPromise, addPendingPromiseToDependency as INTERNAL_addPendingPromiseToDependency, buildStore as INTERNAL_buildStoreRev2, getBuildingBlocks as INTERNAL_getBuildingBlocksRev2, getMountedOrPendingDependents as INTERNAL_getMountedOrPendingDependents, hasInitialValue as INTERNAL_hasInitialValue, initializeStoreHooks as INTERNAL_initializeStoreHooksRev2, isActuallyWritableAtom as INTERNAL_isActuallyWritableAtom, isAtomStateInitialized as INTERNAL_isAtomStateInitialized, isPendingPromise as INTERNAL_isPendingPromise, isPromiseLike as INTERNAL_isPromiseLike, promiseStateMap as INTERNAL_promiseStateMap, registerAbortHandler as INTERNAL_registerAbortHandler, returnAtomValue as INTERNAL_returnAtomValue };\n","import { INTERNAL_buildStoreRev2 } from 'jotai/vanilla/internals';\n\nlet keyCount = 0;\nfunction atom(read, write) {\n  const key = `atom${++keyCount}`;\n  const config = {\n    toString() {\n      return (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && this.debugLabel ? key + \":\" + this.debugLabel : key;\n    }\n  };\n  if (typeof read === \"function\") {\n    config.read = read;\n  } else {\n    config.init = read;\n    config.read = defaultRead;\n    config.write = defaultWrite;\n  }\n  if (write) {\n    config.write = write;\n  }\n  return config;\n}\nfunction defaultRead(get) {\n  return get(this);\n}\nfunction defaultWrite(get, set, arg) {\n  return set(\n    this,\n    typeof arg === \"function\" ? arg(get(this)) : arg\n  );\n}\n\nlet overiddenCreateStore;\nfunction INTERNAL_overrideCreateStore(fn) {\n  overiddenCreateStore = fn(overiddenCreateStore);\n}\nfunction createStore() {\n  if (overiddenCreateStore) {\n    return overiddenCreateStore();\n  }\n  return INTERNAL_buildStoreRev2();\n}\nlet defaultStore;\nfunction getDefaultStore() {\n  if (!defaultStore) {\n    defaultStore = createStore();\n    if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n      globalThis.__JOTAI_DEFAULT_STORE__ || (globalThis.__JOTAI_DEFAULT_STORE__ = defaultStore);\n      if (globalThis.__JOTAI_DEFAULT_STORE__ !== defaultStore) {\n        console.warn(\n          \"Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044\"\n        );\n      }\n    }\n  }\n  return defaultStore;\n}\n\nexport { INTERNAL_overrideCreateStore, atom, createStore, getDefaultStore };\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_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\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;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n  var refProp = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== refProp ? refProp : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(oldElement.type, newKey, oldElement.props);\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 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, noop)\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}\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        },\n  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.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__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.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cacheSignal = 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  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        (\"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, 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, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\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    null !== prevTransition &&\n      null !== currentTransition.types &&\n      (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\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.useEffectEvent = function (callback) {\n  return ReactSharedInternals.H.useEffectEvent(callback);\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 = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\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.2.3\";\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","'use client';\nimport React, { createContext, useContext, useRef, createElement, useReducer, useEffect, useDebugValue, useCallback } from 'react';\nimport { getDefaultStore, createStore } from 'jotai/vanilla';\nimport { INTERNAL_registerAbortHandler } from 'jotai/vanilla/internals';\n\nconst StoreContext = createContext(\n  void 0\n);\nfunction useStore(options) {\n  const store = useContext(StoreContext);\n  return (options == null ? void 0 : options.store) || store || getDefaultStore();\n}\nfunction Provider({\n  children,\n  store\n}) {\n  const storeRef = useRef(null);\n  if (store) {\n    return createElement(StoreContext.Provider, { value: store }, children);\n  }\n  if (storeRef.current === null) {\n    storeRef.current = createStore();\n  }\n  return createElement(\n    StoreContext.Provider,\n    {\n      // TODO: If this is not a false positive, consider using useState instead of useRef like https://github.com/pmndrs/jotai/pull/2771\n      // eslint-disable-next-line react-hooks/refs\n      value: storeRef.current\n    },\n    children\n  );\n}\n\nconst isPromiseLike = (x) => typeof (x == null ? void 0 : x.then) === \"function\";\nconst attachPromiseStatus = (promise) => {\n  if (!promise.status) {\n    promise.status = \"pending\";\n    promise.then(\n      (v) => {\n        promise.status = \"fulfilled\";\n        promise.value = v;\n      },\n      (e) => {\n        promise.status = \"rejected\";\n        promise.reason = e;\n      }\n    );\n  }\n};\nconst use = React.use || // A shim for older React versions\n((promise) => {\n  if (promise.status === \"pending\") {\n    throw promise;\n  } else if (promise.status === \"fulfilled\") {\n    return promise.value;\n  } else if (promise.status === \"rejected\") {\n    throw promise.reason;\n  } else {\n    attachPromiseStatus(promise);\n    throw promise;\n  }\n});\nconst continuablePromiseMap = /* @__PURE__ */ new WeakMap();\nconst createContinuablePromise = (promise, getValue) => {\n  let continuablePromise = continuablePromiseMap.get(promise);\n  if (!continuablePromise) {\n    continuablePromise = new Promise((resolve, reject) => {\n      let curr = promise;\n      const onFulfilled = (me) => (v) => {\n        if (curr === me) {\n          resolve(v);\n        }\n      };\n      const onRejected = (me) => (e) => {\n        if (curr === me) {\n          reject(e);\n        }\n      };\n      const onAbort = () => {\n        try {\n          const nextValue = getValue();\n          if (isPromiseLike(nextValue)) {\n            continuablePromiseMap.set(nextValue, continuablePromise);\n            curr = nextValue;\n            nextValue.then(onFulfilled(nextValue), onRejected(nextValue));\n            INTERNAL_registerAbortHandler(nextValue, onAbort);\n          } else {\n            resolve(nextValue);\n          }\n        } catch (e) {\n          reject(e);\n        }\n      };\n      promise.then(onFulfilled(promise), onRejected(promise));\n      INTERNAL_registerAbortHandler(promise, onAbort);\n    });\n    continuablePromiseMap.set(promise, continuablePromise);\n  }\n  return continuablePromise;\n};\nfunction useAtomValue(atom, options) {\n  const { delay, unstable_promiseStatus: promiseStatus = !React.use } = options || {};\n  const store = useStore(options);\n  const [[valueFromReducer, storeFromReducer, atomFromReducer], rerender] = useReducer(\n    (prev) => {\n      const nextValue = store.get(atom);\n      if (Object.is(prev[0], nextValue) && prev[1] === store && prev[2] === atom) {\n        return prev;\n      }\n      return [nextValue, store, atom];\n    },\n    void 0,\n    () => [store.get(atom), store, atom]\n  );\n  let value = valueFromReducer;\n  if (storeFromReducer !== store || atomFromReducer !== atom) {\n    rerender();\n    value = store.get(atom);\n  }\n  useEffect(() => {\n    const unsub = store.sub(atom, () => {\n      if (promiseStatus) {\n        try {\n          const value2 = store.get(atom);\n          if (isPromiseLike(value2)) {\n            attachPromiseStatus(\n              createContinuablePromise(value2, () => store.get(atom))\n            );\n          }\n        } catch (e) {\n        }\n      }\n      if (typeof delay === \"number\") {\n        setTimeout(rerender, delay);\n        return;\n      }\n      rerender();\n    });\n    rerender();\n    return unsub;\n  }, [store, atom, delay, promiseStatus]);\n  useDebugValue(value);\n  if (isPromiseLike(value)) {\n    const promise = createContinuablePromise(value, () => store.get(atom));\n    if (promiseStatus) {\n      attachPromiseStatus(promise);\n    }\n    return use(promise);\n  }\n  return value;\n}\n\nfunction useSetAtom(atom, options) {\n  const store = useStore(options);\n  const setAtom = useCallback(\n    (...args) => {\n      if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !(\"write\" in atom)) {\n        throw new Error(\"not writable atom\");\n      }\n      return store.set(atom, ...args);\n    },\n    [store, atom]\n  );\n  return setAtom;\n}\n\nfunction useAtom(atom, options) {\n  return [\n    useAtomValue(atom, options),\n    // We do wrong type assertion here, which results in throwing an error.\n    useSetAtom(atom, options)\n  ];\n}\n\nexport { Provider, useAtom, useAtomValue, useSetAtom, useStore };\n","import { SetStateAction, useSetAtom } from \"jotai\";\nimport { Setter } from \"jotai\";\nimport { atom, Getter } from \"jotai\";\nimport { useEffect } from \"react\";\n\nexport const atomWithLocalStorage = <T>(key: string, initialValue: T) => {\n  const getInitialValue = (): T => {\n    const item = localStorage.getItem(key);\n    if (item !== null) {\n      return JSON.parse(item);\n    }\n    return initialValue;\n  };\n  const baseAtom = atom(getInitialValue());\n  const derivedAtom = atom(\n    (get) => get(baseAtom),\n    (get, set, update: T) => {\n      const nextValue =\n        typeof update === \"function\" ? update(get(baseAtom)) : update;\n      set(baseAtom, nextValue);\n      localStorage.setItem(key, JSON.stringify(nextValue));\n    },\n  );\n  return derivedAtom;\n};\n\nexport const atomWithFunctionValue = <T extends Function>(value: T) => {\n  const baseAtom = atom({ fn: value });\n  const derivedAtom = atom(\n    (get) => get(baseAtom).fn,\n    (_, set, update: T) => {\n      set(baseAtom, { fn: update });\n    },\n  );\n  return derivedAtom;\n};\n\nexport const atomWithCallback = <T>(\n  value: T,\n  listener: (get: Getter, value: T) => void,\n) => {\n  const baseAtom = atom(value);\n  const derivedAtom = atom(\n    (get) => get(baseAtom),\n    (get, set, update: T) => {\n      set(baseAtom, update);\n      listener(get, update);\n    },\n  );\n  return derivedAtom;\n};\n\ntype Listener<Value> = (\n  get: Getter,\n  set: Setter,\n  newVal: Value,\n  prevVal: Value,\n) => void;\n\nexport function atomWithListeners<Value>(initialValue: Value) {\n  const baseAtom = atom(initialValue);\n  const listenersAtom = atom<Listener<Value>[]>([]);\n  const anAtom = atom(\n    (get) => get(baseAtom),\n    (get, set, arg: SetStateAction<Value>) => {\n      const prevVal = get(baseAtom);\n      set(baseAtom, arg);\n      const newVal = get(baseAtom);\n      get(listenersAtom).forEach((callback) => {\n        callback(get, set, newVal, prevVal);\n      });\n    },\n  );\n  const useListener = (callback: Listener<Value>) => {\n    const setListeners = useSetAtom(listenersAtom);\n    useEffect(() => {\n      setListeners((prev) => [...prev, callback]);\n      return () =>\n        setListeners((prev) => {\n          const index = prev.indexOf(callback);\n          return [...prev.slice(0, index), ...prev.slice(index + 1)];\n        });\n    }, [setListeners, callback]);\n  };\n  return [anAtom, listenersAtom, useListener] as const;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n    const key = this.toString();\n    let h1b, k1;\n\n    const remainder = key.length & 3; // key.length % 4\n    const bytes = key.length - remainder;\n    let h1 = String.prototype.seed;\n    const c1 = 0xcc9e2d51;\n    const c2 = 0x1b873593;\n    let i = 0;\n\n    while (i < bytes) {\n        k1 =\n            ((key.charCodeAt(i) & 0xff)) |\n            ((key.charCodeAt(++i) & 0xff) << 8) |\n            ((key.charCodeAt(++i) & 0xff) << 16) |\n            ((key.charCodeAt(++i) & 0xff) << 24);\n        ++i;\n\n        k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n        h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n    }\n\n    k1 = 0;\n\n    switch (remainder) {\n        case 3:\n            k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n        // no-break\n        case 2:\n            k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n        // no-break\n        case 1:\n            k1 ^= (key.charCodeAt(i) & 0xff);\n            k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n            k1 = (k1 << 15) | (k1 >>> 17);\n            k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n            h1 ^= k1;\n    }\n\n    h1 ^= key.length;\n\n    h1 ^= h1 >>> 16;\n    h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n    h1 ^= h1 >>> 13;\n    h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n    h1 ^= h1 >>> 16;\n\n    return h1 >>> 0;\n};\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {\n\t\t\t\t/* eslint no-empty: [ \"off\" ] */\n\t\t\t}\n\t\t\treturn result;\n\t\t}());\n\t\tconst codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tconst string = String(this);\n\t\t\tconst size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tlet index = position ? Number(position) : 0;\n\t\t\tif (index !== index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tconst first = string.charCodeAt(index);\n\t\t\tlet second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tconst defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\tlet result;\n\t\t\ttry {\n\t\t\t\tconst object = {};\n\t\t\t\tconst $defineProperty = Object.defineProperty;\n\t\t\t\tresult = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {\n\t\t\t\t/* eslint no-empty: [ \"off\" ] */\n\t\t\t}\n\t\t\treturn result;\n\t\t}());\n\t\tconst stringFromCharCode = String.fromCharCode;\n\t\tconst floor = Math.floor;\n\t\tconst fromCodePoint = function(_) {\n\t\t\tconst MAX_SIZE = 0x4000;\n\t\t\tconst codeUnits = [];\n\t\t\tlet highSurrogate;\n\t\t\tlet lowSurrogate;\n\t\t\tlet index = -1;\n\t\t\tconst length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tlet result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tlet codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) !== codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 === length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * A token has properties: text, type, line, character position in the line\n * (so we can ignore tabs), token channel, index, and source from which\n * we obtained this token.\n */\nexport default class Token {\n\tconstructor() {\n\t\tthis.source = null;\n\t\tthis.type = null; // token type of the token\n\t\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\t\tthis.start = null; // optional; return -1 if not implemented.\n\t\tthis.stop = null; // optional; return -1 if not implemented.\n\t\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\t\tthis.line = null; // line=1..n of the 1st character\n\t\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\t\tthis._text = null; // text of the token.\n\t}\n\n\tgetTokenSource() {\n\t\treturn this.source[0];\n\t}\n\n\tgetInputStream() {\n\t\treturn this.source[1];\n\t}\n\n\tget text(){\n\t\treturn this._text;\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\nToken.INVALID_TYPE = 0;\n\n/**\n * During lookahead operations, this \"token\" signifies we hit rule end ATN state\n * and did not follow it despite needing to.\n */\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n/**\n * All tokens go to the parser (unless skip() is called in that rule)\n * on a particular \"channel\". The parser tunes to a particular channel\n * so that whitespace etc... can go to the parser on a \"hidden\" channel.\n */\nToken.DEFAULT_CHANNEL = 0;\n\n/**\n * Anything on different channel than DEFAULT_CHANNEL is not parsed\n * by parser.\n */\nToken.HIDDEN_CHANNEL = 1;\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function equalArrays(a, b) {\n    if (!Array.isArray(a) || !Array.isArray(b))\n        return false;\n    if (a === b)\n        return true;\n    if (a.length !== b.length)\n        return false;\n    for (let i = 0; i < a.length; i++) {\n        if (a[i] === b[i])\n            continue;\n        if (!a[i].equals || !a[i].equals(b[i]))\n            return false;\n    }\n    return true;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class HashCode {\n\n    constructor() {\n        this.count = 0;\n        this.hash = 0;\n    }\n\n    update() {\n        for(let i=0;i<arguments.length;i++) {\n            const value = arguments[i];\n            if (value == null)\n                continue;\n            if(Array.isArray(value))\n                this.update.apply(this, value);\n            else {\n                let k = 0;\n                switch (typeof(value)) {\n                    case 'undefined':\n                    case 'function':\n                        continue;\n                    case 'number':\n                    case 'boolean':\n                        k = value;\n                        break;\n                    case 'string':\n                        k = value.hashCode();\n                        break;\n                    default:\n                        if(value.updateHashCode)\n                            value.updateHashCode(this);\n                        else\n                            console.log(\"No updateHashCode for \" + value.toString())\n                        continue;\n                }\n                k = k * 0xCC9E2D51;\n                k = (k << 15) | (k >>> (32 - 15));\n                k = k * 0x1B873593;\n                this.count = this.count + 1;\n                let hash = this.hash ^ k;\n                hash = (hash << 13) | (hash >>> (32 - 13));\n                hash = hash * 5 + 0xE6546B64;\n                this.hash = hash;\n            }\n        }\n    }\n\n    finish() {\n        let hash = this.hash ^ (this.count * 4);\n        hash = hash ^ (hash >>> 16);\n        hash = hash * 0x85EBCA6B;\n        hash = hash ^ (hash >>> 13);\n        hash = hash * 0xC2B2AE35;\n        hash = hash ^ (hash >>> 16);\n        return hash;\n    }\n\n    static hashStuff() {\n        const hash = new HashCode();\n        hash.update.apply(hash, arguments);\n        return hash.finish();\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function standardHashCodeFunction(a) {\n    return a ? a.hashCode() : -1;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function standardEqualsFunction(a, b) {\n    return a ? a.equals(b) : a===b;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function valueToString(v) {\n    return v === null ? \"null\" : v;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport valueToString from \"./valueToString.js\";\n\nexport default function arrayToString(a) {\n    return Array.isArray(a) ? (\"[\" + a.map(valueToString).join(\", \") + \"]\") : \"null\";\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport standardHashCodeFunction from \"../utils/standardHashCodeFunction.js\";\nimport standardEqualsFunction from \"../utils/standardEqualsFunction.js\";\nimport arrayToString from \"../utils/arrayToString.js\";\n\nconst HASH_KEY_PREFIX = \"h-\";\n\nexport default class HashSet {\n\n    constructor(hashFunction, equalsFunction) {\n        this.data = {};\n        this.hashFunction = hashFunction || standardHashCodeFunction;\n        this.equalsFunction = equalsFunction || standardEqualsFunction;\n    }\n\n    add(value) {\n        const key = HASH_KEY_PREFIX + this.hashFunction(value);\n        if (key in this.data) {\n            const values = this.data[key];\n            for (let i = 0; i < values.length; i++) {\n                if (this.equalsFunction(value, values[i])) {\n                    return values[i];\n                }\n            }\n            values.push(value);\n            return value;\n        } else {\n            this.data[key] = [value];\n            return value;\n        }\n    }\n\n    has(value) {\n        return this.get(value) != null;\n    }\n\n    get(value) {\n        const key = HASH_KEY_PREFIX + this.hashFunction(value);\n        if (key in this.data) {\n            const values = this.data[key];\n            for (let i = 0; i < values.length; i++) {\n                if (this.equalsFunction(value, values[i])) {\n                    return values[i];\n                }\n            }\n        }\n        return null;\n    }\n\n    values() {\n        return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).flatMap(key => this.data[key], this);\n    }\n\n    toString() {\n        return arrayToString(this.values());\n    }\n\n    get length() {\n        return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).map(key => this.data[key].length, this).reduce((accum, item) => accum + item, 0);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n/**\n * A tree structure used to record the semantic context in which\n * an ATN configuration is valid.  It's either a single predicate,\n * a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n *\n * <p>I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n * {@link SemanticContext} within the scope of this outer class.</p>\n */\nexport default class SemanticContext {\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\tthis.updateHashCode(hash);\n\t\treturn hash.finish();\n\t}\n\n\t/**\n\t * For context independent predicates, we evaluate them without a local\n\t * context (i.e., null context). That way, we can evaluate them without\n\t * having to create proper rule-specific context during prediction (as\n\t * opposed to the parser, which creates them naturally). In a practical\n\t * sense, this avoids a cast exception from RuleContext to myruleContext.\n\t *\n\t * <p>For context dependent predicates, we must pass in a local context so that\n\t * references such as $arg evaluate properly as _localctx.arg. We only\n\t * capture context dependent predicates in the context in which we begin\n\t * prediction, so we passed in the outer context here in case of context\n\t * dependent predicate evaluation.</p>\n\t */\n\tevaluate(parser, outerContext) {}\n\n\t/**\n\t * Evaluate the precedence predicates for the context and reduce the result.\n\t *\n\t * @param parser The parser instance.\n\t * @param outerContext The current parser context object.\n\t * @return The simplified semantic context after precedence predicates are\n\t * evaluated, which will be one of the following values.\n\t * <ul>\n\t * <li>{@link //NONE}: if the predicate simplifies to {@code true} after\n\t * precedence predicates are evaluated.</li>\n\t * <li>{@code null}: if the predicate simplifies to {@code false} after\n\t * precedence predicates are evaluated.</li>\n\t * <li>{@code this}: if the semantic context is not changed as a result of\n\t * precedence predicate evaluation.</li>\n\t * <li>A non-{@code null} {@link SemanticContext}: the new simplified\n\t * semantic context after precedence predicates are evaluated.</li>\n\t * </ul>\n\t */\n\tevalPrecedence(parser, outerContext) {\n\t\treturn this;\n\t}\n\n\tstatic andContext(a, b) {\n\t\tif (a === null || a === SemanticContext.NONE) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null || b === SemanticContext.NONE) {\n\t\t\treturn a;\n\t\t}\n\t\tconst result = new AND(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tstatic orContext(a, b) {\n\t\tif (a === null) {\n\t\t\treturn b;\n\t\t}\n\t\tif (b === null) {\n\t\t\treturn a;\n\t\t}\n\t\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tconst result = new OR(a, b);\n\t\tif (result.opnds.length === 1) {\n\t\t\treturn result.opnds[0];\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n}\n\n\n\nclass AND extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever none of the contained contexts\n\t * is false\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new HashSet();\n\t\tif (a instanceof AND) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof AND) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\t\tconst precedencePredicates = filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the lowest precedence\n\t\t\tlet reduced = null;\n\t\t\tprecedencePredicates.map( function(p) {\n\t\t\t\tif(reduced===null || p.precedence<reduced.precedence) {\n\t\t\t\t\treduced = p;\n\t\t\t\t}\n\t\t\t});\n\t\t\toperands.add(reduced);\n\t\t}\n\t\tthis.opnds = Array.from(operands.values());\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof AND)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn equalArrays(this.opnds, other.opnds);\n\t\t}\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.opnds, \"AND\");\n\t}\n\n\t/**\n\t * {@inheritDoc}\n\t *\n\t * <p>\n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.</p>\n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === null) {\n\t\t\t\t// The AND context is false if any element is false\n\t\t\t\treturn null;\n\t\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t\t// Reduce the result by skipping true elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were true, so the AND context is true\n\t\t\treturn SemanticContext.NONE;\n\t\t}\n\t\tlet result = null;\n\t\toperands.map(function(o) {\n\t\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"&&\");\n\t}\n}\n\n\nclass OR extends SemanticContext {\n\t/**\n\t * A semantic context which is true whenever at least one of the contained\n\t * contexts is true\n\t */\n\tconstructor(a, b) {\n\t\tsuper();\n\t\tconst operands = new HashSet();\n\t\tif (a instanceof OR) {\n\t\t\ta.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(a);\n\t\t}\n\t\tif (b instanceof OR) {\n\t\t\tb.opnds.map(function(o) {\n\t\t\t\toperands.add(o);\n\t\t\t});\n\t\t} else {\n\t\t\toperands.add(b);\n\t\t}\n\n\t\tconst precedencePredicates = filterPrecedencePredicates(operands);\n\t\tif (precedencePredicates.length > 0) {\n\t\t\t// interested in the transition with the highest precedence\n\t\t\tconst s = precedencePredicates.sort(function(a, b) {\n\t\t\t\treturn a.compareTo(b);\n\t\t\t});\n\t\t\tconst reduced = s[s.length-1];\n\t\t\toperands.add(reduced);\n\t\t}\n\t\tthis.opnds = Array.from(operands.values());\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof OR)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn equalArrays(this.opnds, other.opnds);\n\t\t}\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.opnds, \"OR\");\n\t}\n\n\t/**\n\t * <p>\n\t * The evaluation of predicates by this context is short-circuiting, but\n\t * unordered.</p>\n\t */\n\tevaluate(parser, outerContext) {\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tevalPrecedence(parser, outerContext) {\n\t\tlet differs = false;\n\t\tconst operands = [];\n\t\tfor (let i = 0; i < this.opnds.length; i++) {\n\t\t\tconst context = this.opnds[i];\n\t\t\tconst evaluated = context.evalPrecedence(parser, outerContext);\n\t\t\tdiffers |= (evaluated !== context);\n\t\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t\t// The OR context is true if any element is true\n\t\t\t\treturn SemanticContext.NONE;\n\t\t\t} else if (evaluated !== null) {\n\t\t\t\t// Reduce the result by skipping false elements\n\t\t\t\toperands.push(evaluated);\n\t\t\t}\n\t\t}\n\t\tif (!differs) {\n\t\t\treturn this;\n\t\t}\n\t\tif (operands.length === 0) {\n\t\t\t// all elements were false, so the OR context is false\n\t\t\treturn null;\n\t\t}\n\t\tconst result = null;\n\t\toperands.map(function(o) {\n\t\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t\t});\n\t\treturn result;\n\t}\n\n\ttoString() {\n\t\tconst s = this.opnds.map(o => o.toString());\n\t\treturn (s.length > 3 ? s.slice(3) : s).join(\"||\");\n\t}\n}\n\nfunction filterPrecedencePredicates(set) {\n\tconst result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof SemanticContext.PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport SemanticContext from './SemanticContext.js';\nimport HashCode from \"../misc/HashCode.js\";\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tconst result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tconst props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nexport default class ATNConfig {\n    /**\n     * @param {Object} params A tuple: (ATN state, predicted alt, syntactic, semantic context).\n     * The syntactic context is a graph-structured stack node whose\n     * path(s) to the root is the rule invocation(s)\n     * chain used to arrive at the state.  The semantic context is\n     * the tree of semantic predicates encountered before reaching\n     * an ATN state\n     */\n    constructor(params, config) {\n        this.checkContext(params, config);\n        params = checkParams(params);\n        config = checkParams(config, true);\n        // The ATN state associated with this configuration///\n        this.state = params.state!==null ? params.state : config.state;\n        // What alt (or lexer rule) is predicted by this configuration///\n        this.alt = params.alt!==null ? params.alt : config.alt;\n        /**\n         * The stack of invoking states leading to the rule/states associated\n         * with this config.  We track only those contexts pushed during\n         * execution of the ATN simulator\n         */\n        this.context = params.context!==null ? params.context : config.context;\n        this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n            (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n        // TODO: make it a boolean then\n        /**\n         * We cannot execute predicates dependent upon local context unless\n         * we know for sure we are in the correct context. Because there is\n         * no way to do this efficiently, we simply cannot evaluate\n         * dependent predicates unless we are in the rule that initially\n         * invokes the ATN simulator.\n         * closure() tracks the depth of how far we dip into the\n         * outer context: depth &gt; 0.  Note that it may not be totally\n         * accurate depth since I don't ever decrement\n         */\n        this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n        this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n    }\n\n    checkContext(params, config) {\n        if((params.context===null || params.context===undefined) &&\n                (config===null || config.context===null || config.context===undefined)) {\n            this.context = null;\n        }\n    }\n\n    hashCode() {\n        const hash = new HashCode();\n        this.updateHashCode(hash);\n        return hash.finish();\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n    }\n\n    /**\n     * An ATN configuration is equal to another if both have\n     * the same state, they predict the same alternative, and\n     * syntactic/semantic contexts are the same\n     */\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof ATNConfig)) {\n            return false;\n        } else {\n            return this.state.stateNumber===other.state.stateNumber &&\n                this.alt===other.alt &&\n                (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n                this.semanticContext.equals(other.semanticContext) &&\n                this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n        }\n    }\n\n    hashCodeForConfigSet() {\n        const hash = new HashCode();\n        hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n        return hash.finish();\n    }\n\n    equalsForConfigSet(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof ATNConfig)) {\n            return false;\n        } else {\n            return this.state.stateNumber===other.state.stateNumber &&\n                this.alt===other.alt &&\n                this.semanticContext.equals(other.semanticContext);\n        }\n    }\n\n    toString() {\n        return \"(\" + this.state + \",\" + this.alt +\n            (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n            (this.semanticContext !== SemanticContext.NONE ?\n                    (\",\" + this.semanticContext.toString())\n                    : \"\") +\n            (this.reachesIntoOuterContext>0 ?\n                    (\",up=\" + this.reachesIntoOuterContext)\n                    : \"\") + \")\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/* stop is not included! */\nexport default class Interval {\n\n    constructor(start, stop) {\n        this.start = start;\n        this.stop = stop;\n    }\n\n    clone() {\n        return new Interval(this.start, this.stop);\n    }\n\n    contains(item) {\n        return item >= this.start && item < this.stop;\n    }\n\n    toString() {\n        if(this.start===this.stop-1) {\n            return this.start.toString();\n        } else {\n            return this.start.toString() + \"..\" + (this.stop-1).toString();\n        }\n    }\n\n    get length(){\n        return this.stop - this.start;\n    }\n}\n\nInterval.INVALID_INTERVAL = new Interval(-1, -2);\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport Interval from \"./Interval.js\";\n\nexport default class IntervalSet {\n\tconstructor() {\n\t\tthis.intervals = null;\n\t\tthis.readOnly = false;\n\t}\n\n\tfirst(v) {\n\t\tif (this.intervals === null || this.intervals.length===0) {\n\t\t\treturn Token.INVALID_TYPE;\n\t\t} else {\n\t\t\treturn this.intervals[0].start;\n\t\t}\n\t}\n\n\taddOne(v) {\n\t\tthis.addInterval(new Interval(v, v + 1));\n\t}\n\n\taddRange(l, h) {\n\t\tthis.addInterval(new Interval(l, h + 1));\n\t}\n\n\taddInterval(toAdd) {\n\t\tif (this.intervals === null) {\n\t\t\tthis.intervals = [];\n\t\t\tthis.intervals.push(toAdd.clone());\n\t\t} else {\n\t\t\t// find insert pos\n\t\t\tfor (let pos = 0; pos < this.intervals.length; pos++) {\n\t\t\t\tconst existing = this.intervals[pos];\n\t\t\t\t// distinct range -> insert\n\t\t\t\tif (toAdd.stop < existing.start) {\n\t\t\t\t\tthis.intervals.splice(pos, 0, toAdd);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// contiguous range -> adjust\n\t\t\t\telse if (toAdd.stop === existing.start) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(toAdd.start, existing.stop)\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// overlapping range -> adjust and reduce\n\t\t\t\telse if (toAdd.start <= existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(Math.min(existing.start, toAdd.start), Math.max(existing.stop, toAdd.stop));\n\t\t\t\t\tthis.reduce(pos);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// greater than any existing\n\t\t\tthis.intervals.push(toAdd.clone());\n\t\t}\n\t}\n\n\taddSet(other) {\n\t\tif (other.intervals !== null) {\n\t\t\tother.intervals.forEach( toAdd => this.addInterval(toAdd), this);\n\t\t}\n\t\treturn this;\n\t}\n\n\treduce(pos) {\n\t\t// only need to reduce if pos is not the last\n\t\tif (pos < this.intervals.length - 1) {\n\t\t\tconst current = this.intervals[pos];\n\t\t\tconst next = this.intervals[pos + 1];\n\t\t\t// if next contained in current\n\t\t\tif (current.stop >= next.stop) {\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t\tthis.reduce(pos);\n\t\t\t} else if (current.stop >= next.start) {\n\t\t\t\tthis.intervals[pos] = new Interval(current.start, next.stop);\n\t\t\t\tthis.intervals.splice(pos + 1, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tcomplement(start, stop) {\n\t\tconst result = new IntervalSet();\n\t\tresult.addInterval(new Interval(start, stop + 1));\n\t\tif(this.intervals !== null)\n\t\t\tthis.intervals.forEach(toRemove => result.removeRange(toRemove));\n\t\treturn result;\n\t}\n\n\tcontains(item) {\n\t\tif (this.intervals === null) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tfor (let k = 0; k < this.intervals.length; k++) {\n\t\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tremoveRange(toRemove) {\n\t\tif(toRemove.start===toRemove.stop-1) {\n\t\t\tthis.removeOne(toRemove.start);\n\t\t} else if (this.intervals !== null) {\n\t\t\tlet pos = 0;\n\t\t\tfor(let n=0; n<this.intervals.length; n++) {\n\t\t\t\tconst existing = this.intervals[pos];\n\t\t\t\t// intervals are ordered\n\t\t\t\tif (toRemove.stop<=existing.start) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// check for including range, split it\n\t\t\t\telse if(toRemove.start>existing.start && toRemove.stop<existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(existing.start, toRemove.start);\n\t\t\t\t\tconst x = new Interval(toRemove.stop, existing.stop);\n\t\t\t\t\tthis.intervals.splice(pos, 0, x);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// check for included range, remove it\n\t\t\t\telse if(toRemove.start<=existing.start && toRemove.stop>=existing.stop) {\n\t\t\t\t\tthis.intervals.splice(pos, 1);\n\t\t\t\t\tpos = pos - 1; // need another pass\n\t\t\t\t}\n\t\t\t\t// check for lower boundary\n\t\t\t\telse if(toRemove.start<existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(existing.start, toRemove.start);\n\t\t\t\t}\n\t\t\t\t// check for upper boundary\n\t\t\t\telse if(toRemove.stop<existing.stop) {\n\t\t\t\t\tthis.intervals[pos] = new Interval(toRemove.stop, existing.stop);\n\t\t\t\t}\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveOne(value) {\n\t\tif (this.intervals !== null) {\n\t\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\t\tconst existing = this.intervals[i];\n\t\t\t\t// intervals are ordered\n\t\t\t\tif (value < existing.start) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// check for single value range\n\t\t\t\telse if (value === existing.start && value === existing.stop - 1) {\n\t\t\t\t\tthis.intervals.splice(i, 1);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// check for lower boundary\n\t\t\t\telse if (value === existing.start) {\n\t\t\t\t\tthis.intervals[i] = new Interval(existing.start + 1, existing.stop);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// check for upper boundary\n\t\t\t\telse if (value === existing.stop - 1) {\n\t\t\t\t\tthis.intervals[i] = new Interval(existing.start, existing.stop - 1);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// split existing range\n\t\t\t\telse if (value < existing.stop - 1) {\n\t\t\t\t\tconst replace = new Interval(existing.start, value);\n\t\t\t\t\texisting.start = value + 1;\n\t\t\t\t\tthis.intervals.splice(i, 0, replace);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttoString(literalNames, symbolicNames, elemsAreChar) {\n\t\tliteralNames = literalNames || null;\n\t\tsymbolicNames = symbolicNames || null;\n\t\telemsAreChar = elemsAreChar || false;\n\t\tif (this.intervals === null) {\n\t\t\treturn \"{}\";\n\t\t} else if(literalNames!==null || symbolicNames!==null) {\n\t\t\treturn this.toTokenString(literalNames, symbolicNames);\n\t\t} else if(elemsAreChar) {\n\t\t\treturn this.toCharString();\n\t\t} else {\n\t\t\treturn this.toIndexString();\n\t\t}\n\t}\n\n\ttoCharString() {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tif(existing.stop===existing.start+1) {\n\t\t\t\tif ( existing.start===Token.EOF ) {\n\t\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(existing.start) + \"'..'\" + String.fromCharCode(existing.stop-1) + \"'\");\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoIndexString() {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tif(existing.stop===existing.start+1) {\n\t\t\t\tif ( existing.start===Token.EOF ) {\n\t\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t\t} else {\n\t\t\t\t\tnames.push(existing.start.toString());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnames.push(existing.start.toString() + \"..\" + (existing.stop-1).toString());\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\ttoTokenString(literalNames, symbolicNames) {\n\t\tconst names = [];\n\t\tfor (let i = 0; i < this.intervals.length; i++) {\n\t\t\tconst existing = this.intervals[i];\n\t\t\tfor (let j = existing.start; j < existing.stop; j++) {\n\t\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t\t}\n\t\t}\n\t\tif (names.length > 1) {\n\t\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t\t} else {\n\t\t\treturn names[0];\n\t\t}\n\t}\n\n\telementName(literalNames, symbolicNames, token) {\n\t\tif (token === Token.EOF) {\n\t\t\treturn \"<EOF>\";\n\t\t} else if (token === Token.EPSILON) {\n\t\t\treturn \"<EPSILON>\";\n\t\t} else {\n\t\t\treturn literalNames[token] || symbolicNames[token];\n\t\t}\n\t}\n\n\tget length(){\n\t\treturn this.intervals.map( interval => interval.length ).reduce((acc, val) => acc + val);\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The following images show the relation of states and\n * {@link ATNState//transitions} for various grammar constructs.\n *\n * <ul>\n *\n * <li>Solid edges marked with an &//0949; indicate a required\n * {@link EpsilonTransition}.</li>\n *\n * <li>Dashed edges indicate locations where any transition derived from\n * {@link Transition} might appear.</li>\n *\n * <li>Dashed nodes are place holders for either a sequence of linked\n * {@link BasicState} states or the inclusion of a block representing a nested\n * construct in one of the forms below.</li>\n *\n * <li>Nodes showing multiple outgoing alternatives with a {@code ...} support\n * any number of alternatives (one or more). Nodes without the {@code ...} only\n * support the exact number of alternatives shown in the diagram.</li>\n *\n * </ul>\n *\n * <h2>Basic Blocks</h2>\n *\n * <h3>Rule</h3>\n *\n * <embed src=\"images/Rule.svg\" type=\"image/svg+xml\"/>\n *\n * <h3>Block of 1 or more alternatives</h3>\n *\n * <embed src=\"images/Block.svg\" type=\"image/svg+xml\"/>\n *\n * <h2>Greedy Loops</h2>\n *\n * <h3>Greedy Closure: {@code (...)*}</h3>\n *\n * <embed src=\"images/ClosureGreedy.svg\" type=\"image/svg+xml\"/>\n *\n * <h3>Greedy Positive Closure: {@code (...)+}</h3>\n *\n * <embed src=\"images/PositiveClosureGreedy.svg\" type=\"image/svg+xml\"/>\n *\n * <h3>Greedy Optional: {@code (...)?}</h3>\n *\n * <embed src=\"images/OptionalGreedy.svg\" type=\"image/svg+xml\"/>\n *\n * <h2>Non-Greedy Loops</h2>\n *\n * <h3>Non-Greedy Closure: {@code (...)*?}</h3>\n *\n * <embed src=\"images/ClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n *\n * <h3>Non-Greedy Positive Closure: {@code (...)+?}</h3>\n *\n * <embed src=\"images/PositiveClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n *\n * <h3>Non-Greedy Optional: {@code (...)??}</h3>\n *\n * <embed src=\"images/OptionalNonGreedy.svg\" type=\"image/svg+xml\"/>\n */\nexport default class ATNState {\n    constructor() {\n        // Which ATN are we in?\n        this.atn = null;\n        this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n        this.stateType = null;\n        this.ruleIndex = 0; // at runtime, we don't have Rule objects\n        this.epsilonOnlyTransitions = false;\n        // Track the transitions emanating from this ATN state.\n        this.transitions = [];\n        // Used to cache lookahead during parsing, not used during construction\n        this.nextTokenWithinRule = null;\n    }\n\n    toString() {\n        return this.stateNumber;\n    }\n\n    equals(other) {\n        if (other instanceof ATNState) {\n            return this.stateNumber===other.stateNumber;\n        } else {\n            return false;\n        }\n    }\n\n    isNonGreedyExitState() {\n        return false;\n    }\n\n    addTransition(trans, index) {\n        if(index===undefined) {\n            index = -1;\n        }\n        if (this.transitions.length===0) {\n            this.epsilonOnlyTransitions = trans.isEpsilon;\n        } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n            this.epsilonOnlyTransitions = false;\n        }\n        if (index===-1) {\n            this.transitions.push(trans);\n        } else {\n            this.transitions.splice(index, 1, trans);\n        }\n    }\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n            \"INVALID\",\n            \"BASIC\",\n            \"RULE_START\",\n            \"BLOCK_START\",\n            \"PLUS_BLOCK_START\",\n            \"STAR_BLOCK_START\",\n            \"TOKEN_START\",\n            \"RULE_STOP\",\n            \"BLOCK_END\",\n            \"STAR_LOOP_BACK\",\n            \"STAR_LOOP_ENTRY\",\n            \"PLUS_LOOP_BACK\",\n            \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The last node in the ATN for a rule, unless that rule is the start symbol.\n * In that case, there is one transition to EOF. Later, we might encode\n * references to all calls to this rule to compute FOLLOW sets for\n * error handling\n */\nexport default class RuleStopState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.RULE_STOP;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * An ATN transition between any two ATN states.  Subclasses define\n * atom, set, epsilon, action, predicate, rule transitions.\n *\n * <p>This is a one way link.  It emanates from a state (usually via a list of\n * transitions) and has a target state.</p>\n *\n * <p>Since we never have to change the ATN transitions once we construct it,\n * we can fix these transitions as specific classes. The DFA transitions\n * on the other hand need to update the labels as it adds transitions to\n * the states. We'll use the term Edge for the DFA to distinguish them from\n * ATN transitions.</p>\n */\nexport default class Transition {\n    constructor(target) {\n        // The target of this transition.\n        if (target===undefined || target===null) {\n            throw \"target cannot be null.\";\n        }\n        this.target = target;\n        // Are we epsilon, action, sempred?\n        this.isEpsilon = false;\n        this.label = null;\n    }\n}\n\n// constants for serialization\n\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\n// e.g., {isType(input.LT(1))}?\nTransition.PREDICATE = 4;\nTransition.ATOM = 5;\nTransition.ACTION = 6;\n// ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.SET = 7;\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n            \"INVALID\",\n            \"EPSILON\",\n            \"RANGE\",\n            \"RULE\",\n            \"PREDICATE\",\n            \"ATOM\",\n            \"ACTION\",\n            \"SET\",\n            \"NOT_SET\",\n            \"WILDCARD\",\n            \"PRECEDENCE\"\n        ];\n\nTransition.serializationTypes = {\n        EpsilonTransition: Transition.EPSILON,\n        RangeTransition: Transition.RANGE,\n        RuleTransition: Transition.RULE,\n        PredicateTransition: Transition.PREDICATE,\n        AtomTransition: Transition.ATOM,\n        ActionTransition: Transition.ACTION,\n        SetTransition: Transition.SET,\n        NotSetTransition: Transition.NOT_SET,\n        WildcardTransition: Transition.WILDCARD,\n        PrecedencePredicateTransition: Transition.PRECEDENCE\n    };\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class RuleTransition extends Transition {\n    constructor(ruleStart, ruleIndex, precedence, followState) {\n        super(ruleStart);\n        // ptr to the rule definition object for this rule ref\n        this.ruleIndex = ruleIndex;\n        this.precedence = precedence;\n        // what node to begin computations following ref to rule\n        this.followState = followState;\n        this.serializationType = Transition.RULE;\n        this.isEpsilon = true;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return false;\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n// A transition containing a set of values.\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Token from '../Token.js';\nimport Transition from \"./Transition.js\";\n\nexport default class SetTransition extends Transition {\n    constructor(target, set) {\n        super(target);\n        this.serializationType = Transition.SET;\n        if (set !==undefined && set !==null) {\n            this.label = set;\n        } else {\n            this.label = new IntervalSet();\n            this.label.addOne(Token.INVALID_TYPE);\n        }\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return this.label.contains(symbol);\n    }\n\n    toString() {\n        return this.label.toString();\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\nimport SetTransition from \"./SetTransition.js\";\n\nexport default class NotSetTransition extends SetTransition {\n    constructor(target, set) {\n        super(target, set);\n        this.serializationType = Transition.NOT_SET;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n            !super.matches(symbol, minVocabSymbol, maxVocabSymbol);\n    }\n\n    toString() {\n        return '~' + super.toString();\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class WildcardTransition extends Transition {\n    constructor(target) {\n        super(target);\n        this.serializationType = Transition.WILDCARD;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n    }\n\n    toString() {\n        return \".\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"../transition/Transition.js\";\n\nexport default class AbstractPredicateTransition extends Transition {\n    constructor(target) {\n        super(target);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The basic notion of a tree has a parent, a payload, and a list of children.\n * It is the most abstract interface for all the trees used by ANTLR.\n */\nexport default class Tree {}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Tree from \"./Tree.js\";\n\nexport default class SyntaxTree extends Tree {\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SyntaxTree from \"./SyntaxTree.js\";\n\nexport default class ParseTree extends SyntaxTree {\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ParseTree from \"./ParseTree.js\";\n\nexport default class RuleNode extends ParseTree {\n\n    getRuleContext(){\n        throw new Error(\"missing interface implementation\")\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ParseTree from \"./ParseTree.js\";\n\nexport default class TerminalNode extends ParseTree {\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport TerminalNode from \"./TerminalNode.js\";\n\nexport default class ErrorNode extends TerminalNode {\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default function escapeWhitespace(s, escapeSpaces) {\n    s = s.replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\");\n    if (escapeSpaces) {\n        s = s.replace(/ /g, \"\\u00B7\");\n    }\n    return s;\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ErrorNode from './ErrorNode.js';\nimport TerminalNode from './TerminalNode.js';\nimport RuleNode from './RuleNode.js';\nimport escapeWhitespace from \"../utils/escapeWhitespace.js\";\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nconst Trees = {\n    /**\n     * Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n     *  node payloads to get the text for the nodes.  Detect\n     *  parse trees and extract data appropriately.\n     */\n    toStringTree: function(tree, ruleNames, recog) {\n        ruleNames = ruleNames || null;\n        recog = recog || null;\n        if(recog!==null) {\n            ruleNames = recog.ruleNames;\n        }\n        let s = Trees.getNodeText(tree, ruleNames);\n        s = escapeWhitespace(s, false);\n        const c = tree.getChildCount();\n        if(c===0) {\n            return s;\n        }\n        let res = \"(\" + s + ' ';\n        if(c>0) {\n            s = Trees.toStringTree(tree.getChild(0), ruleNames);\n            res = res.concat(s);\n        }\n        for(let i=1;i<c;i++) {\n            s = Trees.toStringTree(tree.getChild(i), ruleNames);\n            res = res.concat(' ' + s);\n        }\n        res = res.concat(\")\");\n        return res;\n    },\n\n    getNodeText: function(t, ruleNames, recog) {\n        ruleNames = ruleNames || null;\n        recog = recog || null;\n        if(recog!==null) {\n            ruleNames = recog.ruleNames;\n        }\n        if(ruleNames!==null) {\n            if (t instanceof RuleNode) {\n                const context = t.getRuleContext()\n                const altNumber = context.getAltNumber();\n                // use const value of ATN.INVALID_ALT_NUMBER to avoid circular dependency\n                if ( altNumber != 0 ) {\n                    return ruleNames[t.ruleIndex]+\":\"+altNumber;\n                }\n                return ruleNames[t.ruleIndex];\n            } else if ( t instanceof ErrorNode) {\n                return t.toString();\n            } else if(t instanceof TerminalNode) {\n                if(t.symbol!==null) {\n                    return t.symbol.text;\n                }\n            }\n        }\n        // no recog for rule names\n        const payload = t.getPayload();\n        if (payload instanceof Token ) {\n            return payload.text;\n        }\n        return t.getPayload().toString();\n    },\n\n    /**\n     * Return ordered list of all children of this node\n     */\n    getChildren: function(t) {\n        const list = [];\n        for(let i=0;i<t.getChildCount();i++) {\n            list.push(t.getChild(i));\n        }\n        return list;\n    },\n\n    /**\n     * Return a list of all ancestors of this node.  The first node of\n     * list is the root and the last is the parent of this node.\n     */\n    getAncestors: function(t) {\n        let ancestors = [];\n        t = t.getParent();\n        while(t!==null) {\n            ancestors = [t].concat(ancestors);\n            t = t.getParent();\n        }\n        return ancestors;\n    },\n\n    findAllTokenNodes: function(t, ttype) {\n        return Trees.findAllNodes(t, ttype, true);\n    },\n\n    findAllRuleNodes: function(t, ruleIndex) {\n        return Trees.findAllNodes(t, ruleIndex, false);\n    },\n\n    findAllNodes: function(t, index, findTokens) {\n        const nodes = [];\n        Trees._findAllNodes(t, index, findTokens, nodes);\n        return nodes;\n    },\n\n    _findAllNodes: function(t, index, findTokens, nodes) {\n        // check this node (the root) first\n        if(findTokens && (t instanceof TerminalNode)) {\n            if(t.symbol.type===index) {\n                nodes.push(t);\n            }\n        } else if(!findTokens && (t instanceof RuleNode)) {\n            if(t.ruleIndex===index) {\n                nodes.push(t);\n            }\n        }\n        // check children\n        for(let i=0;i<t.getChildCount();i++) {\n            Trees._findAllNodes(t.getChild(i), index, findTokens, nodes);\n        }\n    },\n\n    descendants: function(t) {\n        let nodes = [t];\n        for(let i=0;i<t.getChildCount();i++) {\n            nodes = nodes.concat(Trees.descendants(t.getChild(i)));\n        }\n        return nodes;\n    }\n}\n\nexport default Trees;\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleNode from '../tree/RuleNode.js';\nimport Interval from '../misc/Interval.js';\nimport Trees from '../tree/Trees.js';\n\nexport default class RuleContext extends RuleNode {\n    /** A rule context is a record of a single rule invocation. It knows\n     * which context invoked it, if any. If there is no parent context, then\n     * naturally the invoking state is not valid.  The parent link\n     * provides a chain upwards from the current rule invocation to the root\n     * of the invocation tree, forming a stack. We actually carry no\n     * information about the rule associated with this context (except\n     * when parsing). We keep only the state number of the invoking state from\n     * the ATN submachine that invoked this. Contrast this with the s\n     * pointer inside ParserRuleContext that tracks the current state\n     * being \"executed\" for the current rule.\n     *\n     * The parent contexts are useful for computing lookahead sets and\n     * getting error information.\n     *\n     * These objects are used during parsing and prediction.\n     * For the special case of parsers, we use the subclass\n     * ParserRuleContext.\n     *\n     * @see ParserRuleContext\n     */\n    constructor(parent, invokingState) {\n        // What context invoked this rule?\n        super();\n        this.parentCtx = parent || null;\n        /**\n         * What state invoked the rule associated with this context?\n         * The \"return address\" is the followState of invokingState\n         * If parent is null, this should be -1.\n         */\n        this.invokingState = invokingState || -1;\n    }\n\n    depth() {\n        let n = 0;\n        let p = this;\n        while (p !== null) {\n            p = p.parentCtx;\n            n += 1;\n        }\n        return n;\n    }\n\n    /**\n     * A context is empty if there is no invoking state; meaning nobody call\n     * current context.\n     */\n    isEmpty() {\n        return this.invokingState === -1;\n    }\n\n// satisfy the ParseTree / SyntaxTree interface\n    getSourceInterval() {\n        return Interval.INVALID_INTERVAL;\n    }\n\n    getRuleContext() {\n        return this;\n    }\n\n    getPayload() {\n        return this;\n    }\n\n    /**\n     * Return the combined text of all child nodes. This method only considers\n     * tokens which have been added to the parse tree.\n     * <p>\n     * Since tokens on hidden channels (e.g. whitespace or comments) are not\n     * added to the parse trees, they will not appear in the output of this\n     * method.\n     */\n    getText() {\n        if (this.getChildCount() === 0) {\n            return \"\";\n        } else {\n            return this.children.map(function (child) {\n                return child.getText();\n            }).join(\"\");\n        }\n    }\n\n    /**\n     * For rule associated with this parse tree internal node, return\n     * the outer alternative number used to match the input. Default\n     * implementation does not compute nor store this alt num. Create\n     * a subclass of ParserRuleContext with backing field and set\n     * option contextSuperClass.\n     * to set it.\n     */\n    getAltNumber() {\n        // use constant value of ATN.INVALID_ALT_NUMBER to avoid circular dependency\n        return 0;\n    }\n\n    /**\n     * Set the outer alternative number for this context node. Default\n     * implementation does nothing to avoid backing field overhead for\n     * trees that don't need it.  Create\n     * a subclass of ParserRuleContext with backing field and set\n     * option contextSuperClass.\n     */\n    setAltNumber(altNumber) {\n    }\n\n    getChild(i) {\n        return null;\n    }\n\n    getChildCount() {\n        return 0;\n    }\n\n    accept(visitor) {\n        return visitor.visitChildren(this);\n    }\n\n    /**\n     * Print out a whole tree, not just a node, in LISP format\n     * (root child1 .. childN). Print just a node if this is a leaf.\n     */\n    toStringTree(ruleNames, recog) {\n        return Trees.toStringTree(this, ruleNames, recog);\n    }\n\n    toString(ruleNames, stop) {\n        ruleNames = ruleNames || null;\n        stop = stop || null;\n        let p = this;\n        let s = \"[\";\n        while (p !== null && p !== stop) {\n            if (ruleNames === null) {\n                if (!p.isEmpty()) {\n                    s += p.invokingState;\n                }\n            } else {\n                const ri = p.ruleIndex;\n                const ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n                    : \"\" + ri;\n                s += ruleName;\n            }\n            if (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n                s += \" \";\n            }\n            p = p.parentCtx;\n        }\n        s += \"]\";\n        return s;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexport default class PredictionContext {\n\n\tconstructor(cachedHashCode) {\n\t\tthis.cachedHashCode = cachedHashCode;\n\t}\n\n\t/**\n\t * Stores the computed hash code of this {@link PredictionContext}. The hash\n\t * code is computed in parts to match the following reference algorithm.\n\t *\n\t * <pre>\n\t * private int referenceHashCode() {\n\t * int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n\t * //INITIAL_HASH});\n\t *\n\t * for (int i = 0; i &lt; {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n\t * getParent}(i));\n\t * }\n\t *\n\t * for (int i = 0; i &lt; {@link //size()}; i++) {\n\t * hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n\t * //getReturnState getReturnState}(i));\n\t * }\n\t *\n\t * hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n\t * //size()});\n\t * return hash;\n\t * }\n\t * </pre>\n\t * This means only the {@link //EMPTY} context is in set.\n\t */\n\tisEmpty() {\n\t\treturn this === PredictionContext.EMPTY;\n\t}\n\n\thasEmptyPath() {\n\t\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n}\n\n/**\n * Represents {@code $} in local context prediction, which means wildcard.\n * {@code//+x =//}.\n */\nPredictionContext.EMPTY = null;\n\n/**\n * Represents {@code $} in an array in full context mode, when {@code $}\n * doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n * {@code $} = {@link //EMPTY_RETURN_STATE}.\n */\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"./PredictionContext.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class ArrayPredictionContext extends PredictionContext {\n\n    constructor(parents, returnStates) {\n        /**\n         * Parent can be null only if full ctx mode and we make an array\n         * from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n         * null parent and\n         * returnState == {@link //EMPTY_RETURN_STATE}.\n         */\n        const h = new HashCode();\n        h.update(parents, returnStates);\n        const hashCode = h.finish();\n        super(hashCode);\n        this.parents = parents;\n        this.returnStates = returnStates;\n        return this;\n    }\n\n    isEmpty() {\n        // since EMPTY_RETURN_STATE can only appear in the last position, we\n        // don't need to verify that size==1\n        return this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n    }\n\n    getParent(index) {\n        return this.parents[index];\n    }\n\n    getReturnState(index) {\n        return this.returnStates[index];\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (!(other instanceof ArrayPredictionContext)) {\n            return false;\n        } else if (this.hashCode() !== other.hashCode()) {\n            return false; // can't be same if hash is different\n        } else {\n            return equalArrays(this.returnStates, other.returnStates) &&\n                equalArrays(this.parents, other.parents);\n        }\n    }\n\n    toString() {\n        if (this.isEmpty()) {\n            return \"[]\";\n        } else {\n            let s = \"[\";\n            for (let i = 0; i < this.returnStates.length; i++) {\n                if (i > 0) {\n                    s = s + \", \";\n                }\n                if (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n                    s = s + \"$\";\n                    continue;\n                }\n                s = s + this.returnStates[i];\n                if (this.parents[i] !== null) {\n                    s = s + \" \" + this.parents[i];\n                } else {\n                    s = s + \"null\";\n                }\n            }\n            return s + \"]\";\n        }\n    }\n\n    get length(){\n        return this.returnStates.length;\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from './PredictionContext.js';\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class SingletonPredictionContext extends PredictionContext {\n\n    constructor(parent, returnState) {\n        let hashCode = 0;\n        const hash = new HashCode();\n        if(parent !== null) {\n            hash.update(parent, returnState);\n        } else {\n            hash.update(1);\n        }\n        hashCode = hash.finish();\n        super(hashCode);\n        this.parentCtx = parent;\n        this.returnState = returnState;\n    }\n\n    getParent(index) {\n        return this.parentCtx;\n    }\n\n    getReturnState(index) {\n        return this.returnState;\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (!(other instanceof SingletonPredictionContext)) {\n            return false;\n        } else if (this.hashCode() !== other.hashCode()) {\n            return false; // can't be same if hash is different\n        } else {\n            if(this.returnState !== other.returnState)\n                return false;\n            else if(this.parentCtx==null)\n                return other.parentCtx==null\n            else\n                return this.parentCtx.equals(other.parentCtx);\n        }\n    }\n\n    toString() {\n        const up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n        if (up.length === 0) {\n            if (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n                return \"$\";\n            } else {\n                return \"\" + this.returnState;\n            }\n        } else {\n            return \"\" + this.returnState + \" \" + up;\n        }\n    }\n\n    get length(){\n        return 1;\n    }\n\n    static create(parent, returnState) {\n        if (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n            // someone can pass in the bits of an array ctx that mean $\n            return PredictionContext.EMPTY;\n        } else {\n            return new SingletonPredictionContext(parent, returnState);\n        }\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"./PredictionContext.js\";\nimport SingletonPredictionContext from \"./SingletonPredictionContext.js\";\n\nexport default class EmptyPredictionContext extends SingletonPredictionContext {\n\n    constructor() {\n        super(null, PredictionContext.EMPTY_RETURN_STATE);\n    }\n\n    isEmpty() {\n        return true;\n    }\n\n    getParent(index) {\n        return null;\n    }\n\n    getReturnState(index) {\n        return this.returnState;\n    }\n\n    equals(other) {\n        return this === other;\n    }\n\n    toString() {\n        return \"$\";\n    }\n}\n\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport standardEqualsFunction from \"../utils/standardEqualsFunction.js\";\nimport standardHashCodeFunction from \"../utils/standardHashCodeFunction.js\";\n\nconst HASH_KEY_PREFIX = \"h-\";\n\nexport default class HashMap {\n\n    constructor(hashFunction, equalsFunction) {\n        this.data = {};\n        this.hashFunction = hashFunction || standardHashCodeFunction;\n        this.equalsFunction = equalsFunction || standardEqualsFunction;\n    }\n\n    set(key, value) {\n        const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n        if (hashKey in this.data) {\n            const entries = this.data[hashKey];\n            for (let i = 0; i < entries.length; i++) {\n                const entry = entries[i];\n                if (this.equalsFunction(key, entry.key)) {\n                    const oldValue = entry.value;\n                    entry.value = value;\n                    return oldValue;\n                }\n            }\n            entries.push({key:key, value:value});\n            return value;\n        } else {\n            this.data[hashKey] = [{key:key, value:value}];\n            return value;\n        }\n    }\n\n    containsKey(key) {\n        const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n        if(hashKey in this.data) {\n            const entries = this.data[hashKey];\n            for (let i = 0; i < entries.length; i++) {\n                const entry = entries[i];\n                if (this.equalsFunction(key, entry.key))\n                    return true;\n            }\n        }\n        return false;\n    }\n\n    get(key) {\n        const hashKey = HASH_KEY_PREFIX + this.hashFunction(key);\n        if(hashKey in this.data) {\n            const entries = this.data[hashKey];\n            for (let i = 0; i < entries.length; i++) {\n                const entry = entries[i];\n                if (this.equalsFunction(key, entry.key))\n                    return entry.value;\n            }\n        }\n        return null;\n    }\n\n    entries() {\n        return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).flatMap(key => this.data[key], this);\n    }\n\n    getKeys() {\n        return this.entries().map(e => e.key);\n    }\n\n    getValues() {\n        return this.entries().map(e => e.value);\n    }\n\n    toString() {\n        const ss = this.entries().map(e => '{' + e.key + ':' + e.value + '}');\n        return '[' + ss.join(\", \") + ']';\n    }\n\n    get length() {\n        return Object.keys(this.data).filter(key => key.startsWith(HASH_KEY_PREFIX)).map(key => this.data[key].length, this).reduce((accum, item) => accum + item, 0);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RuleContext from \"./RuleContext.js\";\nimport PredictionContext from \"./PredictionContext.js\";\nimport ArrayPredictionContext from \"./ArrayPredictionContext.js\";\nimport SingletonPredictionContext from \"./SingletonPredictionContext.js\";\nimport EmptyPredictionContext from \"./EmptyPredictionContext.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n * Return {@link //EMPTY} if {@code outerContext} is empty or null.\n */\nexport function predictionContextFromRuleContext(atn, outerContext) {\n    if (outerContext === undefined || outerContext === null) {\n        outerContext = RuleContext.EMPTY;\n    }\n    // if we are in RuleContext of start rule, s, then PredictionContext\n    // is EMPTY. Nobody called us. (if we are empty, return empty)\n    if (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n        return PredictionContext.EMPTY;\n    }\n    // If we have a parent, convert it to a PredictionContext graph\n    const parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n    const state = atn.states[outerContext.invokingState];\n    const transition = state.transitions[0];\n    return SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n\n\nexport function getCachedPredictionContext(context, contextCache, visited) {\n    if (context.isEmpty()) {\n        return context;\n    }\n    let existing = visited.get(context) || null;\n    if (existing !== null) {\n        return existing;\n    }\n    existing = contextCache.get(context);\n    if (existing !== null) {\n        visited.set(context, existing);\n        return existing;\n    }\n    let changed = false;\n    let parents = [];\n    for (let i = 0; i < parents.length; i++) {\n        const parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n        if (changed || parent !== context.getParent(i)) {\n            if (!changed) {\n                parents = [];\n                for (let j = 0; j < context.length; j++) {\n                    parents[j] = context.getParent(j);\n                }\n                changed = true;\n            }\n            parents[i] = parent;\n        }\n    }\n    if (!changed) {\n        contextCache.add(context);\n        visited.set(context, context);\n        return context;\n    }\n    let updated = null;\n    if (parents.length === 0) {\n        updated = PredictionContext.EMPTY;\n    } else if (parents.length === 1) {\n        updated = SingletonPredictionContext.create(parents[0], context\n            .getReturnState(0));\n    } else {\n        updated = new ArrayPredictionContext(parents, context.returnStates);\n    }\n    contextCache.add(updated);\n    visited.set(updated, updated);\n    visited.set(context, updated);\n\n    return updated;\n}\n\nexport function merge(a, b, rootIsWildcard, mergeCache) {\n    // share same graph if both same\n    if (a === b) {\n        return a;\n    }\n    if (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n        return mergeSingletons(a, b, rootIsWildcard, mergeCache);\n    }\n    // At least one of a or b is array\n    // If one is $ and rootIsWildcard, return $ as// wildcard\n    if (rootIsWildcard) {\n        if (a instanceof EmptyPredictionContext) {\n            return a;\n        }\n        if (b instanceof EmptyPredictionContext) {\n            return b;\n        }\n    }\n    // convert singleton so both are arrays to normalize\n    if (a instanceof SingletonPredictionContext) {\n        a = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n    }\n    if (b instanceof SingletonPredictionContext) {\n        b = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n    }\n    return mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n\n/**\n * Merge two {@link ArrayPredictionContext} instances.\n *\n * <p>Different tops, different parents.<br>\n * <embed src=\"images/ArrayMerge_DiffTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>Shared top, same parents.<br>\n * <embed src=\"images/ArrayMerge_ShareTopSamePar.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>Shared top, different parents.<br>\n * <embed src=\"images/ArrayMerge_ShareTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>Shared top, all shared parents.<br>\n * <embed src=\"images/ArrayMerge_ShareTopSharePar.svg\"\n * type=\"image/svg+xml\"/></p>\n *\n * <p>Equal tops, merge parents and reduce top to\n * {@link SingletonPredictionContext}.<br>\n * <embed src=\"images/ArrayMerge_EqualTop.svg\" type=\"image/svg+xml\"/></p>\n */\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n    if (mergeCache !== null) {\n        let previous = mergeCache.get(a, b);\n        if (previous !== null) {\n            return previous;\n        }\n        previous = mergeCache.get(b, a);\n        if (previous !== null) {\n            return previous;\n        }\n    }\n    // merge sorted payloads a + b => M\n    let i = 0; // walks a\n    let j = 0; // walks b\n    let k = 0; // walks target M array\n\n    let mergedReturnStates = [];\n    let mergedParents = [];\n    // walk and merge to yield mergedParents, mergedReturnStates\n    while (i < a.returnStates.length && j < b.returnStates.length) {\n        const a_parent = a.parents[i];\n        const b_parent = b.parents[j];\n        if (a.returnStates[i] === b.returnStates[j]) {\n            // same payload (stack tops are equal), must yield merged singleton\n            const payload = a.returnStates[i];\n            // $+$ = $\n            const bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n                a_parent === null && b_parent === null;\n            const ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n            // ->\n            // ax\n            if (bothDollars || ax_ax) {\n                mergedParents[k] = a_parent; // choose left\n                mergedReturnStates[k] = payload;\n            } else { // ax+ay -> a'[x,y]\n                mergedParents[k] = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n                mergedReturnStates[k] = payload;\n            }\n            i += 1; // hop over left one as usual\n            j += 1; // but also skip one in right side since we merge\n        } else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n            mergedParents[k] = a_parent;\n            mergedReturnStates[k] = a.returnStates[i];\n            i += 1;\n        } else { // b > a, copy b[j] to M\n            mergedParents[k] = b_parent;\n            mergedReturnStates[k] = b.returnStates[j];\n            j += 1;\n        }\n        k += 1;\n    }\n    // copy over any payloads remaining in either array\n    if (i < a.returnStates.length) {\n        for (let p = i; p < a.returnStates.length; p++) {\n            mergedParents[k] = a.parents[p];\n            mergedReturnStates[k] = a.returnStates[p];\n            k += 1;\n        }\n    } else {\n        for (let p = j; p < b.returnStates.length; p++) {\n            mergedParents[k] = b.parents[p];\n            mergedReturnStates[k] = b.returnStates[p];\n            k += 1;\n        }\n    }\n    // trim merged if we combined a few that had same stack tops\n    if (k < mergedParents.length) { // write index < last position; trim\n        if (k === 1) { // for just one merged element, return singleton top\n            const a_ = SingletonPredictionContext.create(mergedParents[0],\n                mergedReturnStates[0]);\n            if (mergeCache !== null) {\n                mergeCache.set(a, b, a_);\n            }\n            return a_;\n        }\n        mergedParents = mergedParents.slice(0, k);\n        mergedReturnStates = mergedReturnStates.slice(0, k);\n    }\n\n    const M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n    // if we created same array as a or b, return that instead\n    // TODO: track whether this is possible above during merge sort for speed\n    if (M === a) {\n        if (mergeCache !== null) {\n            mergeCache.set(a, b, a);\n        }\n        return a;\n    }\n    if (M === b) {\n        if (mergeCache !== null) {\n            mergeCache.set(a, b, b);\n        }\n        return b;\n    }\n    combineCommonParents(mergedParents);\n\n    if (mergeCache !== null) {\n        mergeCache.set(a, b, M);\n    }\n    return M;\n}\n\n\n/**\n * Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}\n * ones.\n */\nfunction combineCommonParents(parents) {\n    const uniqueParents = new HashMap();\n\n    for (let p = 0; p < parents.length; p++) {\n        const parent = parents[p];\n        if (!(uniqueParents.containsKey(parent))) {\n            uniqueParents.set(parent, parent);\n        }\n    }\n    for (let q = 0; q < parents.length; q++) {\n        parents[q] = uniqueParents.get(parents[q]);\n    }\n}\n\n\n/**\n * Merge two {@link SingletonPredictionContext} instances.\n *\n * <p>Stack tops equal, parents merge is same; return left graph.<br>\n * <embed src=\"images/SingletonMerge_SameRootSamePar.svg\"\n * type=\"image/svg+xml\"/></p>\n *\n * <p>Same stack top, parents differ; merge parents giving array node, then\n * remainders of those graphs. A new root node is created to point to the\n * merged parents.<br>\n * <embed src=\"images/SingletonMerge_SameRootDiffPar.svg\"\n * type=\"image/svg+xml\"/></p>\n *\n * <p>Different stack tops pointing to same parent. Make array node for the\n * root where both element in the root point to the same (original)\n * parent.<br>\n * <embed src=\"images/SingletonMerge_DiffRootSamePar.svg\"\n * type=\"image/svg+xml\"/></p>\n *\n * <p>Different stack tops pointing to different parents. Make array node for\n * the root where each element points to the corresponding original\n * parent.<br>\n * <embed src=\"images/SingletonMerge_DiffRootDiffPar.svg\"\n * type=\"image/svg+xml\"/></p>\n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n * @param mergeCache\n */\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n    if (mergeCache !== null) {\n        let previous = mergeCache.get(a, b);\n        if (previous !== null) {\n            return previous;\n        }\n        previous = mergeCache.get(b, a);\n        if (previous !== null) {\n            return previous;\n        }\n    }\n\n    const rootMerge = mergeRoot(a, b, rootIsWildcard);\n    if (rootMerge !== null) {\n        if (mergeCache !== null) {\n            mergeCache.set(a, b, rootMerge);\n        }\n        return rootMerge;\n    }\n    if (a.returnState === b.returnState) {\n        const parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n        // if parent is same as existing a or b parent or reduced to a parent,\n        // return it\n        if (parent === a.parentCtx) {\n            return a; // ax + bx = ax, if a=b\n        }\n        if (parent === b.parentCtx) {\n            return b; // ax + bx = bx, if a=b\n        }\n        // else: ax + ay = a'[x,y]\n        // merge parents x and y, giving array node with x,y then remainders\n        // of those graphs. dup a, a' points at merged array\n        // new joined parent so create new singleton pointing to it, a'\n        const spc = SingletonPredictionContext.create(parent, a.returnState);\n        if (mergeCache !== null) {\n            mergeCache.set(a, b, spc);\n        }\n        return spc;\n    } else { // a != b payloads differ\n        // see if we can collapse parents due to $+x parents if local ctx\n        let singleParent = null;\n        if (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n            // bx =\n            // [a,b]x\n            singleParent = a.parentCtx;\n        }\n        if (singleParent !== null) { // parents are same\n            // sort payloads and use same parent\n            const payloads = [ a.returnState, b.returnState ];\n            if (a.returnState > b.returnState) {\n                payloads[0] = b.returnState;\n                payloads[1] = a.returnState;\n            }\n            const parents = [ singleParent, singleParent ];\n            const apc = new ArrayPredictionContext(parents, payloads);\n            if (mergeCache !== null) {\n                mergeCache.set(a, b, apc);\n            }\n            return apc;\n        }\n        // parents differ and can't merge them. Just pack together\n        // into array; can't merge.\n        // ax + by = [ax,by]\n        const payloads = [ a.returnState, b.returnState ];\n        let parents = [ a.parentCtx, b.parentCtx ];\n        if (a.returnState > b.returnState) { // sort by payload\n            payloads[0] = b.returnState;\n            payloads[1] = a.returnState;\n            parents = [ b.parentCtx, a.parentCtx ];\n        }\n        const a_ = new ArrayPredictionContext(parents, payloads);\n        if (mergeCache !== null) {\n            mergeCache.set(a, b, a_);\n        }\n        return a_;\n    }\n}\n\n\n/**\n * Handle case where at least one of {@code a} or {@code b} is\n * {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n * to represent {@link //EMPTY}.\n *\n * <h2>Local-Context Merges</h2>\n *\n * <p>These local-context merge operations are used when {@code rootIsWildcard}\n * is true.</p>\n *\n * <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>\n * <embed src=\"images/LocalMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n * {@code //EMPTY}; return left graph.<br>\n * <embed src=\"images/LocalMerge_EmptyParent.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>Special case of last merge if local context.<br>\n * <embed src=\"images/LocalMerge_DiffRoots.svg\" type=\"image/svg+xml\"/></p>\n *\n * <h2>Full-Context Merges</h2>\n *\n * <p>These full-context merge operations are used when {@code rootIsWildcard}\n * is false.</p>\n *\n * <p><embed src=\"images/FullMerge_EmptyRoots.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and\n * null parent).<br>\n * <embed src=\"images/FullMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n *\n * <p><embed src=\"images/FullMerge_SameRoot.svg\" type=\"image/svg+xml\"/></p>\n *\n * @param a the first {@link SingletonPredictionContext}\n * @param b the second {@link SingletonPredictionContext}\n * @param rootIsWildcard {@code true} if this is a local-context merge,\n * otherwise false to indicate a full-context merge\n */\nfunction mergeRoot(a, b, rootIsWildcard) {\n    if (rootIsWildcard) {\n        if (a === PredictionContext.EMPTY) {\n            return PredictionContext.EMPTY; // // + b =//\n        }\n        if (b === PredictionContext.EMPTY) {\n            return PredictionContext.EMPTY; // a +// =//\n        }\n    } else {\n        if (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n            return PredictionContext.EMPTY; // $ + $ = $\n        } else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n            const payloads = [ b.returnState,\n                PredictionContext.EMPTY_RETURN_STATE ];\n            const parents = [ b.parentCtx, null ];\n            return new ArrayPredictionContext(parents, payloads);\n        } else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n            const payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n            const parents = [ a.parentCtx, null ];\n            return new ArrayPredictionContext(parents, payloads);\n        }\n    }\n    return null;\n}\n\n\n// ter's recursive version of Sam's getAllNodes()\nexport function getAllContextNodes(context, nodes, visited) {\n    if (nodes === null) {\n        nodes = [];\n        return getAllContextNodes(context, nodes, visited);\n    } else if (visited === null) {\n        visited = new HashMap();\n        return getAllContextNodes(context, nodes, visited);\n    } else {\n        if (context === null || visited.containsKey(context)) {\n            return nodes;\n        }\n        visited.set(context, context);\n        nodes.push(context);\n        for (let i = 0; i < context.length; i++) {\n            getAllContextNodes(context.getParent(i), nodes, visited);\n        }\n        return nodes;\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashCode from \"./HashCode.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\n\nexport default class BitSet {\n\n    constructor() {\n        this.data = [];\n    }\n\n    add(value) {\n        this.data[value] = true;\n    }\n\n    or(set) {\n        Object.keys(set.data).map(alt => this.add(alt), this);\n    }\n\n    remove(value) {\n        delete this.data[value];\n    }\n\n    has(value) {\n        return this.data[value] === true;\n    }\n\n    values() {\n        return Object.keys(this.data);\n    }\n\n    minValue() {\n        return Math.min.apply(null, this.values());\n    }\n\n    hashCode() {\n        return HashCode.hashStuff(this.values());\n    }\n\n    equals(other) {\n        return other instanceof BitSet && equalArrays(this.data, other.data);\n    }\n\n    toString() {\n        return \"{\" + this.values().join(\", \") + \"}\";\n    }\n\n    get length(){\n        return this.values().length;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ATNConfig from './ATNConfig.js';\nimport IntervalSet from '../misc/IntervalSet.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport WildcardTransition from '../transition/WildcardTransition.js';\nimport AbstractPredicateTransition from './AbstractPredicateTransition.js';\nimport { predictionContextFromRuleContext } from '../context/PredictionContextUtils.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport BitSet from \"../misc/BitSet.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class LL1Analyzer {\n    constructor(atn) {\n        this.atn = atn;\n    }\n\n    /**\n     * Calculates the SLL(1) expected lookahead set for each outgoing transition\n     * of an {@link ATNState}. The returned array has one element for each\n     * outgoing transition in {@code s}. If the closure from transition\n     * <em>i</em> leads to a semantic predicate before matching a symbol, the\n     * element at index <em>i</em> of the result will be {@code null}.\n     *\n     * @param s the ATN state\n     * @return the expected symbols for each outgoing transition of {@code s}.\n     */\n    getDecisionLookahead(s) {\n        if (s === null) {\n            return null;\n        }\n        const count = s.transitions.length;\n        const look = [];\n        for(let alt=0; alt< count; alt++) {\n            look[alt] = new IntervalSet();\n            const lookBusy = new HashSet();\n            const seeThruPreds = false; // fail to get lookahead upon pred\n            this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n                  look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n            // Wipe out lookahead for this alternative if we found nothing\n            // or we had a predicate when we !seeThruPreds\n            if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n                look[alt] = null;\n            }\n        }\n        return look;\n    }\n\n    /**\n     * Compute set of tokens that can follow {@code s} in the ATN in the\n     * specified {@code ctx}.\n     *\n     * <p>If {@code ctx} is {@code null} and the end of the rule containing\n     * {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n     * If {@code ctx} is not {@code null} and the end of the outermost rule is\n     * reached, {@link Token//EOF} is added to the result set.</p>\n     *\n     * @param s the ATN state\n     * @param stopState the ATN state to stop at. This can be a\n     * {@link BlockEndState} to detect epsilon paths through a closure.\n     * @param ctx the complete parser context, or {@code null} if the context\n     * should be ignored\n     *\n     * @return The set of tokens that can follow {@code s} in the ATN in the\n     * specified {@code ctx}.\n     */\n    LOOK(s, stopState, ctx) {\n        const r = new IntervalSet();\n        const seeThruPreds = true; // ignore preds; get all lookahead\n        ctx = ctx || null;\n        const lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n        this._LOOK(s, stopState, lookContext, r, new HashSet(), new BitSet(), seeThruPreds, true);\n        return r;\n    }\n\n    /**\n     * Compute set of tokens that can follow {@code s} in the ATN in the\n     * specified {@code ctx}.\n     *\n     * <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the\n     * rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n     * the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n     * {@code true} and {@code stopState} or the end of the outermost rule is\n     * reached, {@link Token//EOF} is added to the result set.</p>\n     *\n     * @param s the ATN state.\n     * @param stopState the ATN state to stop at. This can be a\n     * {@link BlockEndState} to detect epsilon paths through a closure.\n     * @param ctx The outer context, or {@code null} if the outer context should\n     * not be used.\n     * @param look The result lookahead set.\n     * @param lookBusy A set used for preventing epsilon closures in the ATN\n     * from causing a stack overflow. Outside code should pass\n     * {@code new CustomizedSet<ATNConfig>} for this argument.\n     * @param calledRuleStack A set used for preventing left recursion in the\n     * ATN from causing a stack overflow. Outside code should pass\n     * {@code new BitSet()} for this argument.\n     * @param seeThruPreds {@code true} to true semantic predicates as\n     * implicitly {@code true} and \"see through them\", otherwise {@code false}\n     * to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n     * result if one is encountered.\n     * @param addEOF Add {@link Token//EOF} to the result if the end of the\n     * outermost context is reached. This parameter has no effect if {@code ctx}\n     * is {@code null}.\n     */\n    _LOOK(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n        const c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n        if (lookBusy.has(c)) {\n            return;\n        }\n        lookBusy.add(c);\n        if (s === stopState) {\n            if (ctx ===null) {\n                look.addOne(Token.EPSILON);\n                return;\n            } else if (ctx.isEmpty() && addEOF) {\n                look.addOne(Token.EOF);\n                return;\n            }\n        }\n        if (s instanceof RuleStopState ) {\n            if (ctx ===null) {\n                look.addOne(Token.EPSILON);\n                return;\n            } else if (ctx.isEmpty() && addEOF) {\n                look.addOne(Token.EOF);\n                return;\n            }\n            if (ctx !== PredictionContext.EMPTY) {\n                const removed = calledRuleStack.has(s.ruleIndex);\n                try {\n                    calledRuleStack.remove(s.ruleIndex);\n                    // run thru all possible stack tops in ctx\n                    for (let i = 0; i < ctx.length; i++) {\n                        const returnState = this.atn.states[ctx.getReturnState(i)];\n                        this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n                    }\n                }finally {\n                    if (removed) {\n                        calledRuleStack.add(s.ruleIndex);\n                    }\n                }\n                return;\n            }\n        }\n        for(let j=0; j<s.transitions.length; j++) {\n            const t = s.transitions[j];\n            if (t.constructor === RuleTransition) {\n                if (calledRuleStack.has(t.target.ruleIndex)) {\n                    continue;\n                }\n                const newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);\n                try {\n                    calledRuleStack.add(t.target.ruleIndex);\n                    this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n                } finally {\n                    calledRuleStack.remove(t.target.ruleIndex);\n                }\n            } else if (t instanceof AbstractPredicateTransition ) {\n                if (seeThruPreds) {\n                    this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n                } else {\n                    look.addOne(LL1Analyzer.HIT_PRED);\n                }\n            } else if( t.isEpsilon) {\n                this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n            } else if (t.constructor === WildcardTransition) {\n                look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );\n            } else {\n                let set = t.label;\n                if (set !== null) {\n                    if (t instanceof NotSetTransition) {\n                        set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);\n                    }\n                    look.addSet(set);\n                }\n            }\n        }\n    }\n}\n\n/**\n * Special value added to the lookahead sets to indicate that we hit\n * a predicate during analysis if {@code seeThruPreds==false}.\n */\nLL1Analyzer.HIT_PRED = Token.INVALID_TYPE;\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport LL1Analyzer from './LL1Analyzer.js';\nimport IntervalSet from '../misc/IntervalSet.js';\nimport Token from '../Token.js';\n\nexport default class ATN {\n\n    constructor(grammarType , maxTokenType) {\n        /**\n         * Used for runtime deserialization of ATNs from strings\n         * The type of the ATN.\n        */\n        this.grammarType = grammarType;\n        // The maximum value for any symbol recognized by a transition in the ATN.\n        this.maxTokenType = maxTokenType;\n        this.states = [];\n        /**\n         * Each subrule/rule is a decision point and we must track them so we\n         * can go back later and build DFA predictors for them.  This includes\n         * all the rules, subrules, optional blocks, ()+, ()* etc...\n         */\n        this.decisionToState = [];\n        // Maps from rule index to starting state number.\n        this.ruleToStartState = [];\n        // Maps from rule index to stop state number.\n        this.ruleToStopState = null;\n        this.modeNameToStartState = {};\n        /**\n         * For lexer ATNs, this maps the rule index to the resulting token type.\n         * For parser ATNs, this maps the rule index to the generated bypass token\n         * type if the {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n         * deserialization option was specified; otherwise, this is {@code null}\n         */\n        this.ruleToTokenType = null;\n        /**\n         * For lexer ATNs, this is an array of {@link LexerAction} objects which may\n         * be referenced by action transitions in the ATN\n         */\n        this.lexerActions = null;\n        this.modeToStartState = [];\n    }\n\n    /**\n     * Compute the set of valid tokens that can occur starting in state {@code s}.\n     * If {@code ctx} is null, the set of tokens will not include what can follow\n     * the rule surrounding {@code s}. In other words, the set will be\n     * restricted to tokens reachable staying within {@code s}'s rule\n     */\n    nextTokensInContext(s, ctx) {\n        const anal = new LL1Analyzer(this);\n        return anal.LOOK(s, null, ctx);\n    }\n\n    /**\n     * Compute the set of valid tokens that can occur starting in {@code s} and\n     * staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n     * rule\n     */\n    nextTokensNoContext(s) {\n        if (s.nextTokenWithinRule !== null ) {\n            return s.nextTokenWithinRule;\n        }\n        s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n        s.nextTokenWithinRule.readOnly = true;\n        return s.nextTokenWithinRule;\n    }\n\n    nextTokens(s, ctx) {\n        if ( ctx===undefined ) {\n            return this.nextTokensNoContext(s);\n        } else {\n            return this.nextTokensInContext(s, ctx);\n        }\n    }\n\n    addState(state) {\n        if ( state !== null ) {\n            state.atn = this;\n            state.stateNumber = this.states.length;\n        }\n        this.states.push(state);\n    }\n\n    removeState(state) {\n        this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n    }\n\n    defineDecisionState(s) {\n        this.decisionToState.push(s);\n        s.decision = this.decisionToState.length-1;\n        return s.decision;\n    }\n\n    getDecisionState(decision) {\n        if (this.decisionToState.length===0) {\n            return null;\n        } else {\n            return this.decisionToState[decision];\n        }\n    }\n\n    /**\n     * Computes the set of input symbols which could follow ATN state number\n     * {@code stateNumber} in the specified full {@code context}. This method\n     * considers the complete parser context, but does not evaluate semantic\n     * predicates (i.e. all predicates encountered during the calculation are\n     * assumed true). If a path in the ATN exists from the starting state to the\n     * {@link RuleStopState} of the outermost context without matching any\n     * symbols, {@link Token//EOF} is added to the returned set.\n     *\n     * <p>If {@code context} is {@code null}, it is treated as\n     * {@link ParserRuleContext//EMPTY}.</p>\n     *\n     * @param stateNumber the ATN state number\n     * @param ctx the full parse context\n     *\n     * @return {IntervalSet} The set of potentially valid input symbols which could follow the\n     * specified state in the specified context.\n     *\n     * @throws IllegalArgumentException if the ATN does not contain a state with\n     * number {@code stateNumber}\n     */\n    getExpectedTokens(stateNumber, ctx ) {\n        if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n            throw(\"Invalid state number.\");\n        }\n        const s = this.states[stateNumber];\n        let following = this.nextTokens(s);\n        if (!following.contains(Token.EPSILON)) {\n            return following;\n        }\n        const expected = new IntervalSet();\n        expected.addSet(following);\n        expected.removeOne(Token.EPSILON);\n        while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n            const invokingState = this.states[ctx.invokingState];\n            const rt = invokingState.transitions[0];\n            following = this.nextTokens(rt.followState);\n            expected.addSet(following);\n            expected.removeOne(Token.EPSILON);\n            ctx = ctx.parentCtx;\n        }\n        if (following.contains(Token.EPSILON)) {\n            expected.addOne(Token.EOF);\n        }\n        return expected;\n    }\n}\n\nATN.INVALID_ALT_NUMBER = 0;\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Represents the type of recognizer an ATN applies to\n */\nexport default {\n    LEXER: 0,\n    PARSER: 1\n};\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class BasicState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.BASIC;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class DecisionState extends ATNState {\n    constructor() {\n        super();\n        this.decision = -1;\n        this.nonGreedy = false;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\n\n/**\n *  The start of a regular {@code (...)} block\n */\nexport default class BlockStartState extends DecisionState {\n    constructor() {\n        super();\n        this.endState = null;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Terminal node of a simple {@code (a|b|c)} block\n */\nexport default class BlockEndState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.BLOCK_END;\n        this.startState = null;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Mark the end of a * or + loop\n */\nexport default class LoopEndState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.LOOP_END;\n        this.loopBackState = null;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class RuleStartState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.RULE_START;\n        this.stopState = null;\n        this.isPrecedenceRule = false;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The Tokens rule start state linking to each lexer rule start state\n */\nexport default class TokensStartState extends DecisionState {\n    constructor() {\n        super();\n        this.stateType = ATNState.TOKEN_START;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Decision state for {@code A+} and {@code (A|B)+}.  It has two transitions:\n * one to the loop back to start of the block and one to exit.\n */\nexport default class PlusLoopbackState extends DecisionState {\n    constructor() {\n        super();\n        this.stateType = ATNState.PLUS_LOOP_BACK;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\n\nexport default class StarLoopbackState extends ATNState {\n    constructor() {\n        super();\n        this.stateType = ATNState.STAR_LOOP_BACK;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"./DecisionState.js\";\nimport ATNState from \"./ATNState.js\";\n\nexport default class StarLoopEntryState extends DecisionState {\n    constructor() {\n        super();\n        this.stateType = ATNState.STAR_LOOP_ENTRY;\n        this.loopBackState = null;\n        // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n        this.isPrecedenceDecision = null;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport BlockStartState from \"./BlockStartState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * Start of {@code (A|B|...)+} loop. Technically a decision state, but\n * we don't use for code generation; somebody might need it, so I'm defining\n * it for completeness. In reality, the {@link PlusLoopbackState} node is the\n * real decision-making note for {@code A+}\n */\nexport default class PlusBlockStartState extends BlockStartState {\n    constructor() {\n        super();\n        this.stateType = ATNState.PLUS_BLOCK_START;\n        this.loopBackState = null;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport BlockStartState from \"./BlockStartState.js\";\nimport ATNState from \"./ATNState.js\";\n\n/**\n * The block that begins a closure loop\n */\nexport default class StarBlockStartState extends BlockStartState {\n    constructor() {\n        super();\n        this.stateType = ATNState.STAR_BLOCK_START;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNState from \"./ATNState.js\";\nimport BlockStartState from \"./BlockStartState.js\";\n\nexport default class BasicBlockStartState extends BlockStartState {\n    constructor() {\n        super();\n        this.stateType = ATNState.BLOCK_START;\n        return this;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Transition from \"./Transition.js\";\n\nexport default class AtomTransition extends Transition {\n    constructor(target, label) {\n        super(target);\n        // The token type or character value; or, signifies special label.\n        this.label_ = label;\n        this.label = this.makeLabel();\n        this.serializationType = Transition.ATOM;\n    }\n\n    makeLabel() {\n        const s = new IntervalSet();\n        s.addOne(this.label_);\n        return s;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return this.label_ === symbol;\n    }\n\n    toString() {\n        return this.label_;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport Transition from \"./Transition.js\";\n\nexport default class RangeTransition extends Transition {\n    constructor(target, start, stop) {\n        super(target);\n        this.serializationType = Transition.RANGE;\n        this.start = start;\n        this.stop = stop;\n        this.label = this.makeLabel();\n    }\n\n    makeLabel() {\n        const s = new IntervalSet();\n        s.addRange(this.start, this.stop);\n        return s;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return symbol >= this.start && symbol <= this.stop;\n    }\n\n    toString() {\n        return \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class ActionTransition extends Transition {\n    constructor(target, ruleIndex, actionIndex, isCtxDependent) {\n        super(target);\n        this.serializationType = Transition.ACTION;\n        this.ruleIndex = ruleIndex;\n        this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n        this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n        this.isEpsilon = true;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return false;\n    }\n\n    toString() {\n        return \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Transition from \"./Transition.js\";\n\nexport default class EpsilonTransition extends Transition {\n    constructor(target, outermostPrecedenceReturn) {\n        super(target);\n        this.serializationType = Transition.EPSILON;\n        this.isEpsilon = true;\n        this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return false;\n    }\n\n    toString() {\n        return \"epsilon\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SemanticContext from \"./SemanticContext.js\";\n\nexport default class Predicate extends SemanticContext {\n\n    constructor(ruleIndex, predIndex, isCtxDependent) {\n        super();\n        this.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n        this.predIndex = predIndex === undefined ? -1 : predIndex;\n        this.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n    }\n\n    evaluate(parser, outerContext) {\n        const localctx = this.isCtxDependent ? outerContext : null;\n        return parser.sempred(localctx, this.ruleIndex, this.predIndex);\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (!(other instanceof Predicate)) {\n            return false;\n        } else {\n            return this.ruleIndex === other.ruleIndex &&\n                this.predIndex === other.predIndex &&\n                this.isCtxDependent === other.isCtxDependent;\n        }\n    }\n\n    toString() {\n        return \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n    }\n}\n\n/**\n * The default {@link SemanticContext}, which is semantically equivalent to\n * a predicate of the form {@code {true}?}\n */\nSemanticContext.NONE = new Predicate();\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Predicate from \"../atn/Predicate.js\";\nimport Transition from \"./Transition.js\";\nimport AbstractPredicateTransition from \"../atn/AbstractPredicateTransition.js\";\n\nexport default class PredicateTransition extends AbstractPredicateTransition {\n    constructor(target, ruleIndex, predIndex, isCtxDependent) {\n        super(target);\n        this.serializationType = Transition.PREDICATE;\n        this.ruleIndex = ruleIndex;\n        this.predIndex = predIndex;\n        this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n        this.isEpsilon = true;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return false;\n    }\n\n    getPredicate() {\n        return new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n    }\n\n    toString() {\n        return \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport SemanticContext from \"./SemanticContext.js\";\n\nexport default class PrecedencePredicate extends SemanticContext {\n\n    constructor(precedence) {\n        super();\n        this.precedence = precedence === undefined ? 0 : precedence;\n    }\n\n    evaluate(parser, outerContext) {\n        return parser.precpred(outerContext, this.precedence);\n    }\n\n    evalPrecedence(parser, outerContext) {\n        if (parser.precpred(outerContext, this.precedence)) {\n            return SemanticContext.NONE;\n        } else {\n            return null;\n        }\n    }\n\n    compareTo(other) {\n        return this.precedence - other.precedence;\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.precedence);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (!(other instanceof PrecedencePredicate)) {\n            return false;\n        } else {\n            return this.precedence === other.precedence;\n        }\n    }\n\n    toString() {\n        return \"{\" + this.precedence + \">=prec}?\";\n    }\n\n}\n\n// HORRIBLE workaround circular import, avoiding dynamic import\nSemanticContext.PrecedencePredicate = PrecedencePredicate;\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PrecedencePredicate from \"../atn/PrecedencePredicate.js\";\nimport Transition from \"./Transition.js\";\nimport AbstractPredicateTransition from \"../atn/AbstractPredicateTransition.js\";\n\nexport default class PrecedencePredicateTransition extends AbstractPredicateTransition {\n    constructor(target, precedence) {\n        super(target);\n        this.serializationType = Transition.PRECEDENCE;\n        this.precedence = precedence;\n        this.isEpsilon = true;\n    }\n\n    matches(symbol, minVocabSymbol, maxVocabSymbol) {\n        return false;\n    }\n\n    getPredicate() {\n        return new PrecedencePredicate(this.precedence);\n    }\n\n    toString() {\n        return this.precedence + \" >= _p\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexport default class ATNDeserializationOptions {\n\tconstructor(copyFrom) {\n\t\tif(copyFrom===undefined) {\n\t\t\tcopyFrom = null;\n\t\t}\n\t\tthis.readOnly = false;\n\t\tthis.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n\t\tthis.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\t}\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default {\n    // The type of a {@link LexerChannelAction} action.\n    CHANNEL: 0,\n    // The type of a {@link LexerCustomAction} action\n    CUSTOM: 1,\n    // The type of a {@link LexerModeAction} action.\n    MODE: 2,\n    //The type of a {@link LexerMoreAction} action.\n    MORE: 3,\n    //The type of a {@link LexerPopModeAction} action.\n    POP_MODE: 4,\n    //The type of a {@link LexerPushModeAction} action.\n    PUSH_MODE: 5,\n    //The type of a {@link LexerSkipAction} action.\n    SKIP: 6,\n    //The type of a {@link LexerTypeAction} action.\n    TYPE: 7\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashCode from \"../misc/HashCode.js\";\n\n/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nexport default class LexerAction {\n    constructor(action) {\n        this.actionType = action;\n        this.isPositionDependent = false;\n    }\n\n    hashCode() {\n        const hash = new HashCode();\n        this.updateHashCode(hash);\n        return hash.finish()\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType);\n    }\n\n    equals(other) {\n        return this === other;\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n *\n * <p>The {@code skip} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\n */\nexport default class LexerSkipAction extends LexerAction {\n    constructor() {\n        super(LexerActionType.SKIP);\n    }\n\n    execute(lexer) {\n        lexer.skip();\n    }\n\n    toString() {\n        return \"skip\";\n    }\n}\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code channel} lexer action by calling\n * {@link Lexer//setChannel} with the assigned channel.\n * Constructs a new {@code channel} action with the specified channel value.\n * @param channel The channel value to pass to {@link Lexer//setChannel}\n */\nexport default class LexerChannelAction extends LexerAction {\n    constructor(channel) {\n        super(LexerActionType.CHANNEL);\n        this.channel = channel;\n    }\n\n    /**\n     * <p>This action is implemented by calling {@link Lexer//setChannel} with the\n     * value provided by {@link //getChannel}.</p>\n     */\n    execute(lexer) {\n        lexer._channel = this.channel;\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.channel);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof LexerChannelAction)) {\n            return false;\n        } else {\n            return this.channel === other.channel;\n        }\n    }\n\n    toString() {\n        return \"channel(\" + this.channel + \")\";\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Executes a custom lexer action by calling {@link Recognizer//action} with the\n * rule and action indexes assigned to the custom action. The implementation of\n * a custom action is added to the generated code for the lexer in an override\n * of {@link Recognizer//action} when the grammar is compiled.\n *\n * <p>This class may represent embedded actions created with the <code>{...}</code>\n * syntax in ANTLR 4, as well as actions created for lexer commands where the\n * command argument could not be evaluated when the grammar was compiled.</p>\n */\nexport default class LexerCustomAction extends LexerAction {\n    /**\n     * Constructs a custom lexer action with the specified rule and action\n     * indexes.\n     *\n     * @param ruleIndex The rule index to use for calls to\n     * {@link Recognizer//action}.\n     * @param actionIndex The action index to use for calls to\n     * {@link Recognizer//action}.\n     */\n    constructor(ruleIndex, actionIndex) {\n        super(LexerActionType.CUSTOM);\n        this.ruleIndex = ruleIndex;\n        this.actionIndex = actionIndex;\n        this.isPositionDependent = true;\n    }\n\n    /**\n     * <p>Custom actions are implemented by calling {@link Lexer//action} with the\n     * appropriate rule and action indexes.</p>\n     */\n    execute(lexer) {\n        lexer.action(null, this.ruleIndex, this.actionIndex);\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof LexerCustomAction)) {\n            return false;\n        } else {\n            return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n        }\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code more} lexer action by calling {@link Lexer//more}.\n *\n * <p>The {@code more} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\n */\nexport default class LexerMoreAction extends LexerAction {\n    constructor() {\n        super(LexerActionType.MORE);\n    }\n\n    /**\n     * <p>This action is implemented by calling {@link Lexer//popMode}.</p>\n     */\n    execute(lexer) {\n        lexer.more();\n    }\n\n    toString() {\n        return \"more\";\n    }\n}\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code type} lexer action by calling {@link Lexer//setType}\n * with the assigned type\n */\n\nexport default class LexerTypeAction extends LexerAction {\n    constructor(type) {\n        super(LexerActionType.TYPE);\n        this.type = type;\n    }\n\n    execute(lexer) {\n        lexer.type = this.type;\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.type);\n    }\n\n    equals(other) {\n        if(this === other) {\n            return true;\n        } else if (! (other instanceof LexerTypeAction)) {\n            return false;\n        } else {\n            return this.type === other.type;\n        }\n    }\n\n    toString() {\n        return \"type(\" + this.type + \")\";\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code pushMode} lexer action by calling\n * {@link Lexer//pushMode} with the assigned mode\n */\nexport default class LexerPushModeAction extends LexerAction {\n    constructor(mode) {\n        super(LexerActionType.PUSH_MODE);\n        this.mode = mode;\n    }\n\n    /**\n     * <p>This action is implemented by calling {@link Lexer//pushMode} with the\n     * value provided by {@link //getMode}.</p>\n     */\n    execute(lexer) {\n        lexer.pushMode(this.mode);\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.mode);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof LexerPushModeAction)) {\n            return false;\n        } else {\n            return this.mode === other.mode;\n        }\n    }\n\n    toString() {\n        return \"pushMode(\" + this.mode + \")\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n *\n * <p>The {@code popMode} command does not have any parameters, so this action is\n * implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\n */\nexport default class LexerPopModeAction extends LexerAction {\n    constructor() {\n        super(LexerActionType.POP_MODE);\n    }\n\n    /**\n     * <p>This action is implemented by calling {@link Lexer//popMode}.</p>\n     */\n    execute(lexer) {\n        lexer.popMode();\n    }\n\n    toString() {\n        return \"popMode\";\n    }\n}\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport {default as LexerActionType } from \"../atn/LexerActionType.js\";\nimport LexerAction from \"./LexerAction.js\";\n\n/**\n * Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n * the assigned mode\n */\nexport default class LexerModeAction extends LexerAction {\n    constructor(mode) {\n        super(LexerActionType.MODE);\n        this.mode = mode;\n    }\n\n    /**\n     * <p>This action is implemented by calling {@link Lexer//mode} with the\n     * value provided by {@link //getMode}.</p>\n     */\n    execute(lexer) {\n        lexer.mode(this.mode);\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.mode);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof LexerModeAction)) {\n            return false;\n        } else {\n            return this.mode === other.mode;\n        }\n    }\n\n    toString() {\n        return \"mode(\" + this.mode + \")\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport ATN from './ATN.js';\nimport ATNType from './ATNType.js';\n\nimport ATNState from '../state/ATNState.js';\nimport BasicState from '../state/BasicState.js';\nimport DecisionState from '../state/DecisionState.js';\nimport BlockStartState from '../state/BlockStartState.js';\nimport BlockEndState from '../state/BlockEndState.js';\nimport LoopEndState from '../state/LoopEndState.js';\nimport RuleStartState from '../state/RuleStartState.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport TokensStartState from '../state/TokensStartState.js';\nimport PlusLoopbackState from '../state/PlusLoopbackState.js';\nimport StarLoopbackState from '../state/StarLoopbackState.js';\nimport StarLoopEntryState from '../state/StarLoopEntryState.js';\nimport PlusBlockStartState from '../state/PlusBlockStartState.js';\nimport StarBlockStartState from '../state/StarBlockStartState.js';\nimport BasicBlockStartState from '../state/BasicBlockStartState.js';\n\nimport Transition from '../transition/Transition.js';\nimport AtomTransition from '../transition/AtomTransition.js';\nimport SetTransition from '../transition/SetTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport RangeTransition from '../transition/RangeTransition.js';\nimport ActionTransition from '../transition/ActionTransition.js';\nimport EpsilonTransition from '../transition/EpsilonTransition.js';\nimport WildcardTransition from '../transition/WildcardTransition.js';\nimport PredicateTransition from '../transition/PredicateTransition.js';\nimport PrecedencePredicateTransition from '../transition/PrecedencePredicateTransition.js';\n\n\nimport IntervalSet from '../misc/IntervalSet.js';\nimport ATNDeserializationOptions from './ATNDeserializationOptions.js';\n\nimport LexerActionType from './LexerActionType.js';\nimport LexerSkipAction from '../action/LexerSkipAction.js';\nimport LexerChannelAction from '../action/LexerChannelAction.js';\nimport LexerCustomAction from '../action/LexerCustomAction.js';\nimport LexerMoreAction from '../action/LexerMoreAction.js';\nimport LexerTypeAction from '../action/LexerTypeAction.js';\nimport LexerPushModeAction from '../action/LexerPushModeAction.js';\nimport LexerPopModeAction from '../action/LexerPopModeAction.js';\nimport LexerModeAction from '../action/LexerModeAction.js';\n\nconst SERIALIZED_VERSION = 4;\n\nfunction initArray( length, value) {\n\tconst tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nexport default class ATNDeserializer {\n    constructor(options) {\n\n        if ( options=== undefined || options === null ) {\n            options = ATNDeserializationOptions.defaultOptions;\n        }\n        this.deserializationOptions = options;\n        this.stateFactories = null;\n        this.actionFactories = null;\n    }\n\n    deserialize(data) {\n        const legacy = this.reset(data);\n        this.checkVersion(legacy);\n        if(legacy)\n            this.skipUUID();\n        const atn = this.readATN();\n        this.readStates(atn, legacy);\n        this.readRules(atn, legacy);\n        this.readModes(atn);\n        const sets = [];\n        this.readSets(atn, sets, this.readInt.bind(this));\n        if(legacy)\n            this.readSets(atn, sets, this.readInt32.bind(this));\n        this.readEdges(atn, sets);\n        this.readDecisions(atn);\n        this.readLexerActions(atn, legacy);\n        this.markPrecedenceDecisions(atn);\n        this.verifyATN(atn);\n        if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n            this.generateRuleBypassTransitions(atn);\n            // re-verify after modification\n            this.verifyATN(atn);\n        }\n        return atn;\n    }\n\n    reset(data) {\n        const version = data.charCodeAt ? data.charCodeAt(0) : data[0];\n        if(version === SERIALIZED_VERSION - 1) {\n            const adjust = function (c) {\n                const v = c.charCodeAt(0);\n                return v > 1 ? v - 2 : v + 65534;\n            };\n            const temp = data.split(\"\").map(adjust);\n            // don't adjust the first value since that's the version number\n            temp[0] = data.charCodeAt(0);\n            this.data = temp;\n            this.pos = 0;\n            return true;\n        } else {\n            this.data = data\n            this.pos = 0;\n            return false;\n        }\n    }\n\n    skipUUID() {\n        let count = 0;\n        while(count++ < 8)\n            this.readInt();\n    }\n\n    checkVersion(legacy) {\n        const version = this.readInt();\n        if ( !legacy && version !== SERIALIZED_VERSION ) {\n            throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n        }\n    }\n\n    readATN() {\n        const grammarType = this.readInt();\n        const maxTokenType = this.readInt();\n        return new ATN(grammarType, maxTokenType);\n    }\n\n    readStates(atn, legacy) {\n        let j, pair, stateNumber;\n        const  loopBackStateNumbers = [];\n        const  endStateNumbers = [];\n        const  nstates = this.readInt();\n        for(let i=0; i<nstates; i++) {\n            const  stype = this.readInt();\n            // ignore bad type of states\n            if (stype===ATNState.INVALID_TYPE) {\n                atn.addState(null);\n                continue;\n            }\n            let ruleIndex = this.readInt();\n            if (legacy && ruleIndex === 0xFFFF) {\n                ruleIndex = -1;\n            }\n            const  s = this.stateFactory(stype, ruleIndex);\n            if (stype === ATNState.LOOP_END) { // special case\n                const  loopBackStateNumber = this.readInt();\n                loopBackStateNumbers.push([s, loopBackStateNumber]);\n            } else if(s instanceof BlockStartState) {\n                const  endStateNumber = this.readInt();\n                endStateNumbers.push([s, endStateNumber]);\n            }\n            atn.addState(s);\n        }\n        // delay the assignment of loop back and end states until we know all the\n        // state instances have been initialized\n        for (j=0; j<loopBackStateNumbers.length; j++) {\n            pair = loopBackStateNumbers[j];\n            pair[0].loopBackState = atn.states[pair[1]];\n        }\n\n        for (j=0; j<endStateNumbers.length; j++) {\n            pair = endStateNumbers[j];\n            pair[0].endState = atn.states[pair[1]];\n        }\n\n        let numNonGreedyStates = this.readInt();\n        for (j=0; j<numNonGreedyStates; j++) {\n            stateNumber = this.readInt();\n            atn.states[stateNumber].nonGreedy = true;\n        }\n\n        let numPrecedenceStates = this.readInt();\n        for (j=0; j<numPrecedenceStates; j++) {\n            stateNumber = this.readInt();\n            atn.states[stateNumber].isPrecedenceRule = true;\n        }\n    }\n\n    readRules(atn, legacy) {\n        let i;\n        const nrules = this.readInt();\n        if (atn.grammarType === ATNType.LEXER ) {\n            atn.ruleToTokenType = initArray(nrules, 0);\n        }\n        atn.ruleToStartState = initArray(nrules, 0);\n        for (i=0; i<nrules; i++) {\n            const s = this.readInt();\n            atn.ruleToStartState[i] = atn.states[s];\n            if ( atn.grammarType === ATNType.LEXER ) {\n                let tokenType = this.readInt();\n                if (legacy && tokenType === 0xFFFF) {\n                    tokenType = Token.EOF;\n                }\n                atn.ruleToTokenType[i] = tokenType;\n            }\n        }\n        atn.ruleToStopState = initArray(nrules, 0);\n        for (i=0; i<atn.states.length; i++) {\n            const state = atn.states[i];\n            if (!(state instanceof RuleStopState)) {\n                continue;\n            }\n            atn.ruleToStopState[state.ruleIndex] = state;\n            atn.ruleToStartState[state.ruleIndex].stopState = state;\n        }\n    }\n\n    readModes(atn) {\n        const nmodes = this.readInt();\n        for (let i=0; i<nmodes; i++) {\n            let s = this.readInt();\n            atn.modeToStartState.push(atn.states[s]);\n        }\n    }\n\n    readSets(atn, sets, reader) {\n        const m = this.readInt();\n        for (let i=0; i<m; i++) {\n            const iset = new IntervalSet();\n            sets.push(iset);\n            const n = this.readInt();\n            const containsEof = this.readInt();\n            if (containsEof!==0) {\n                iset.addOne(-1);\n            }\n            for (let j=0; j<n; j++) {\n                const i1 = reader();\n                const i2 = reader();\n                iset.addRange(i1, i2);\n            }\n        }\n    }\n\n    readEdges(atn, sets) {\n        let i, j, state, trans, target;\n        const nedges = this.readInt();\n        for (i=0; i<nedges; i++) {\n            const src = this.readInt();\n            const trg = this.readInt();\n            const ttype = this.readInt();\n            const arg1 = this.readInt();\n            const arg2 = this.readInt();\n            const arg3 = this.readInt();\n            trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\n            const srcState = atn.states[src];\n            srcState.addTransition(trans);\n        }\n        // edges for rule stop states can be derived, so they aren't serialized\n        for (i=0; i<atn.states.length; i++) {\n            state = atn.states[i];\n            for (j=0; j<state.transitions.length; j++) {\n                const t = state.transitions[j];\n                if (!(t instanceof RuleTransition)) {\n                    continue;\n                }\n                let outermostPrecedenceReturn = -1;\n                if (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {\n                    if (t.precedence === 0) {\n                        outermostPrecedenceReturn = t.target.ruleIndex;\n                    }\n                }\n\n                trans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);\n                atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);\n            }\n        }\n\n        for (i=0; i<atn.states.length; i++) {\n            state = atn.states[i];\n            if (state instanceof BlockStartState) {\n                // we need to know the end state to set its start state\n                if (state.endState === null) {\n                    throw (\"IllegalState\");\n                }\n                // block end states can only be associated to a single block start\n                // state\n                if ( state.endState.startState !== null) {\n                    throw (\"IllegalState\");\n                }\n                state.endState.startState = state;\n            }\n            if (state instanceof PlusLoopbackState) {\n                for (j=0; j<state.transitions.length; j++) {\n                    target = state.transitions[j].target;\n                    if (target instanceof PlusBlockStartState) {\n                        target.loopBackState = state;\n                    }\n                }\n            } else if (state instanceof StarLoopbackState) {\n                for (j=0; j<state.transitions.length; j++) {\n                    target = state.transitions[j].target;\n                    if (target instanceof StarLoopEntryState) {\n                        target.loopBackState = state;\n                    }\n                }\n            }\n        }\n    }\n\n    readDecisions(atn) {\n        const ndecisions = this.readInt();\n        for (let i=0; i<ndecisions; i++) {\n            const s = this.readInt();\n            const decState = atn.states[s];\n            atn.decisionToState.push(decState);\n            decState.decision = i;\n        }\n    }\n\n    readLexerActions(atn, legacy) {\n        if (atn.grammarType === ATNType.LEXER) {\n            const count = this.readInt();\n            atn.lexerActions = initArray(count, null);\n            for (let i=0; i<count; i++) {\n                const actionType = this.readInt();\n                let data1 = this.readInt();\n                if (legacy && data1 === 0xFFFF) {\n                    data1 = -1;\n                }\n                let data2 = this.readInt();\n                if (legacy && data2 === 0xFFFF) {\n                    data2 = -1;\n                }\n                atn.lexerActions[i] = this.lexerActionFactory(actionType, data1, data2);\n            }\n        }\n    }\n\n    generateRuleBypassTransitions(atn) {\n        let i;\n        const count = atn.ruleToStartState.length;\n        for(i=0; i<count; i++) {\n            atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\n        }\n        for(i=0; i<count; i++) {\n            this.generateRuleBypassTransition(atn, i);\n        }\n    }\n\n    generateRuleBypassTransition(atn, idx) {\n        let i, state;\n        const bypassStart = new BasicBlockStartState();\n        bypassStart.ruleIndex = idx;\n        atn.addState(bypassStart);\n\n        const bypassStop = new BlockEndState();\n        bypassStop.ruleIndex = idx;\n        atn.addState(bypassStop);\n\n        bypassStart.endState = bypassStop;\n        atn.defineDecisionState(bypassStart);\n\n        bypassStop.startState = bypassStart;\n\n        let excludeTransition = null;\n        let endState = null;\n\n        if (atn.ruleToStartState[idx].isPrecedenceRule) {\n            // wrap from the beginning of the rule to the StarLoopEntryState\n            endState = null;\n            for(i=0; i<atn.states.length; i++) {\n                state = atn.states[i];\n                if (this.stateIsEndStateFor(state, idx)) {\n                    endState = state;\n                    excludeTransition = state.loopBackState.transitions[0];\n                    break;\n                }\n            }\n            if (excludeTransition === null) {\n                throw (\"Couldn't identify final state of the precedence rule prefix section.\");\n            }\n        } else {\n            endState = atn.ruleToStopState[idx];\n        }\n\n        // all non-excluded transitions that currently target end state need to\n        // target blockEnd instead\n        for(i=0; i<atn.states.length; i++) {\n            state = atn.states[i];\n            for(let j=0; j<state.transitions.length; j++) {\n                const transition = state.transitions[j];\n                if (transition === excludeTransition) {\n                    continue;\n                }\n                if (transition.target === endState) {\n                    transition.target = bypassStop;\n                }\n            }\n        }\n\n        // all transitions leaving the rule start state need to leave blockStart\n        // instead\n        const ruleToStartState = atn.ruleToStartState[idx];\n        const count = ruleToStartState.transitions.length;\n        while ( count > 0) {\n            bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n            ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n        }\n        // link the new states\n        atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n        bypassStop.addTransition(new EpsilonTransition(endState));\n\n        const matchState = new BasicState();\n        atn.addState(matchState);\n        matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n        bypassStart.addTransition(new EpsilonTransition(matchState));\n    }\n\n    stateIsEndStateFor(state, idx) {\n        if ( state.ruleIndex !== idx) {\n            return null;\n        }\n        if (!( state instanceof StarLoopEntryState)) {\n            return null;\n        }\n        const maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n        if (!( maybeLoopEndState instanceof LoopEndState)) {\n            return null;\n        }\n        if (maybeLoopEndState.epsilonOnlyTransitions &&\n            (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n            return state;\n        } else {\n            return null;\n        }\n    }\n\n    /**\n     * Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n     * the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n     * correct value.\n     * @param atn The ATN.\n     */\n    markPrecedenceDecisions(atn) {\n        for(let i=0; i<atn.states.length; i++) {\n            const state = atn.states[i];\n            if (!( state instanceof StarLoopEntryState)) {\n                continue;\n            }\n            // We analyze the ATN to determine if this ATN decision state is the\n            // decision for the closure block that determines whether a\n            // precedence rule should continue or complete.\n            if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\n                const maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n                if (maybeLoopEndState instanceof LoopEndState) {\n                    if ( maybeLoopEndState.epsilonOnlyTransitions &&\n                            (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n                        state.isPrecedenceDecision = true;\n                    }\n                }\n            }\n        }\n    }\n\n    verifyATN(atn) {\n        if (!this.deserializationOptions.verifyATN) {\n            return;\n        }\n        // verify assumptions\n        for(let i=0; i<atn.states.length; i++) {\n            const state = atn.states[i];\n            if (state === null) {\n                continue;\n            }\n            this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);\n            if (state instanceof PlusBlockStartState) {\n                this.checkCondition(state.loopBackState !== null);\n            } else  if (state instanceof StarLoopEntryState) {\n                this.checkCondition(state.loopBackState !== null);\n                this.checkCondition(state.transitions.length === 2);\n                if (state.transitions[0].target instanceof StarBlockStartState) {\n                    this.checkCondition(state.transitions[1].target instanceof LoopEndState);\n                    this.checkCondition(!state.nonGreedy);\n                } else if (state.transitions[0].target instanceof LoopEndState) {\n                    this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);\n                    this.checkCondition(state.nonGreedy);\n                } else {\n                    throw(\"IllegalState\");\n                }\n            } else if (state instanceof StarLoopbackState) {\n                this.checkCondition(state.transitions.length === 1);\n                this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);\n            } else if (state instanceof LoopEndState) {\n                this.checkCondition(state.loopBackState !== null);\n            } else if (state instanceof RuleStartState) {\n                this.checkCondition(state.stopState !== null);\n            } else if (state instanceof BlockStartState) {\n                this.checkCondition(state.endState !== null);\n            } else if (state instanceof BlockEndState) {\n                this.checkCondition(state.startState !== null);\n            } else if (state instanceof DecisionState) {\n                this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);\n            } else {\n                this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n            }\n        }\n    }\n\n    checkCondition(condition, message) {\n        if (!condition) {\n            if (message === undefined || message===null) {\n                message = \"IllegalState\";\n            }\n            throw (message);\n        }\n    }\n\n    readInt() {\n        return this.data[this.pos++];\n    }\n\n    readInt32() {\n        const low = this.readInt();\n        const high = this.readInt();\n        return low | (high << 16);\n    }\n\n    edgeFactory(atn, type, src, trg, arg1, arg2, arg3, sets) {\n        const target = atn.states[trg];\n        switch(type) {\n        case Transition.EPSILON:\n            return new EpsilonTransition(target);\n        case Transition.RANGE:\n            return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n        case Transition.RULE:\n            return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n        case Transition.PREDICATE:\n            return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n        case Transition.PRECEDENCE:\n            return new PrecedencePredicateTransition(target, arg1);\n        case Transition.ATOM:\n            return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n        case Transition.ACTION:\n            return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n        case Transition.SET:\n            return new SetTransition(target, sets[arg1]);\n        case Transition.NOT_SET:\n            return new NotSetTransition(target, sets[arg1]);\n        case Transition.WILDCARD:\n            return new WildcardTransition(target);\n        default:\n            throw \"The specified transition type: \" + type + \" is not valid.\";\n        }\n    }\n\n    stateFactory(type, ruleIndex) {\n        if (this.stateFactories === null) {\n            const sf = [];\n            sf[ATNState.INVALID_TYPE] = null;\n            sf[ATNState.BASIC] = () => new BasicState();\n            sf[ATNState.RULE_START] = () => new RuleStartState();\n            sf[ATNState.BLOCK_START] = () => new BasicBlockStartState();\n            sf[ATNState.PLUS_BLOCK_START] = () => new PlusBlockStartState();\n            sf[ATNState.STAR_BLOCK_START] = () => new StarBlockStartState();\n            sf[ATNState.TOKEN_START] = () => new TokensStartState();\n            sf[ATNState.RULE_STOP] = () => new RuleStopState();\n            sf[ATNState.BLOCK_END] = () => new BlockEndState();\n            sf[ATNState.STAR_LOOP_BACK] = () => new StarLoopbackState();\n            sf[ATNState.STAR_LOOP_ENTRY] = () => new StarLoopEntryState();\n            sf[ATNState.PLUS_LOOP_BACK] = () => new PlusLoopbackState();\n            sf[ATNState.LOOP_END] = () => new LoopEndState();\n            this.stateFactories = sf;\n        }\n        if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n            throw(\"The specified state type \" + type + \" is not valid.\");\n        } else {\n            const s = this.stateFactories[type]();\n            if (s!==null) {\n                s.ruleIndex = ruleIndex;\n                return s;\n            }\n        }\n    }\n\n    lexerActionFactory(type, data1, data2) {\n        if (this.actionFactories === null) {\n            const af = [];\n            af[LexerActionType.CHANNEL] = (data1, data2) => new LexerChannelAction(data1);\n            af[LexerActionType.CUSTOM] = (data1, data2) => new LexerCustomAction(data1, data2);\n            af[LexerActionType.MODE] = (data1, data2) => new LexerModeAction(data1);\n            af[LexerActionType.MORE] = (data1, data2) => LexerMoreAction.INSTANCE;\n            af[LexerActionType.POP_MODE] = (data1, data2) => LexerPopModeAction.INSTANCE;\n            af[LexerActionType.PUSH_MODE] = (data1, data2) => new LexerPushModeAction(data1);\n            af[LexerActionType.SKIP] = (data1, data2) => LexerSkipAction.INSTANCE;\n            af[LexerActionType.TYPE] = (data1, data2) => new LexerTypeAction(data1);\n            this.actionFactories = af;\n        }\n        if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n            throw(\"The specified lexer action type \" + type + \" is not valid.\");\n        } else {\n            return this.actionFactories[type](data1, data2);\n        }\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * Provides an empty default implementation of {@link ANTLRErrorListener}. The\n * default implementation of each method does nothing, but can be overridden as\n * necessary.\n */\nexport default class ErrorListener {\n    syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n    }\n\n    reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n    }\n\n    reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n    }\n\n    reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ErrorListener from \"./ErrorListener.js\";\n\n/**\n * {@inheritDoc}\n *\n * <p>\n * This implementation prints messages to {@link System//err} containing the\n * values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n * the following format.</p>\n *\n * <pre>\n * line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>\n * </pre>\n *\n */\nexport default class ConsoleErrorListener extends ErrorListener {\n    constructor() {\n        super();\n    }\n\n    syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n        console.error(\"line \" + line + \":\" + column + \" \" + msg);\n    }\n}\n\n\n/**\n * Provides a default instance of {@link ConsoleErrorListener}.\n */\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ErrorListener from \"./ErrorListener.js\";\n\nexport default class ProxyErrorListener extends ErrorListener {\n    constructor(delegates) {\n        super();\n        if (delegates===null) {\n            throw \"delegates\";\n        }\n        this.delegates = delegates;\n        return this;\n    }\n\n    syntaxError(recognizer, offendingSymbol, line, column, msg, e) {\n        this.delegates.map(d => d.syntaxError(recognizer, offendingSymbol, line, column, msg, e));\n    }\n\n    reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n        this.delegates.map(d => d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs));\n    }\n\n    reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n        this.delegates.map(d => d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs));\n    }\n\n    reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n        this.delegates.map(d => d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs));\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport ConsoleErrorListener from './error/ConsoleErrorListener.js';\nimport ProxyErrorListener from './error/ProxyErrorListener.js';\n\nexport default class Recognizer {\n    constructor() {\n        this._listeners = [ ConsoleErrorListener.INSTANCE ];\n        this._interp = null;\n        this._stateNumber = -1;\n    }\n\n    checkVersion(toolVersion) {\n        const runtimeVersion = \"4.11.0\";\n        if (runtimeVersion!==toolVersion) {\n            console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n        }\n    }\n\n    addErrorListener(listener) {\n        this._listeners.push(listener);\n    }\n\n    removeErrorListeners() {\n        this._listeners = [];\n    }\n\n    getLiteralNames() {\n        return Object.getPrototypeOf(this).constructor.literalNames || [];\n    }\n\n    getSymbolicNames() {\n        return Object.getPrototypeOf(this).constructor.symbolicNames || [];\n    }\n\n    getTokenNames() {\n        if(!this.tokenNames) {\n            const literalNames = this.getLiteralNames();\n            const symbolicNames = this.getSymbolicNames();\n            const length = literalNames.length > symbolicNames.length ? literalNames.length : symbolicNames.length;\n            this.tokenNames = [];\n            for(let i=0; i<length; i++) {\n                this.tokenNames[i] = literalNames[i] || symbolicNames[i] || \"<INVALID\";\n            }\n        }\n        return this.tokenNames;\n    }\n\n    getTokenTypeMap() {\n        const tokenNames = this.getTokenNames();\n        if (tokenNames===null) {\n            throw(\"The current recognizer does not provide a list of token names.\");\n        }\n        let result = this.tokenTypeMapCache[tokenNames];\n        if(result===undefined) {\n            result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n            result.EOF = Token.EOF;\n            this.tokenTypeMapCache[tokenNames] = result;\n        }\n        return result;\n    }\n\n    /**\n     * Get a map from rule names to rule indexes.\n     * <p>Used for XPath and tree pattern compilation.</p>\n     */\n    getRuleIndexMap() {\n        const ruleNames = this.ruleNames;\n        if (ruleNames===null) {\n            throw(\"The current recognizer does not provide a list of rule names.\");\n        }\n        let result = this.ruleIndexMapCache[ruleNames]; // todo: should it be Recognizer.ruleIndexMapCache ?\n        if(result===undefined) {\n            result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n            this.ruleIndexMapCache[ruleNames] = result;\n        }\n        return result;\n    }\n\n    getTokenType(tokenName) {\n        const ttype = this.getTokenTypeMap()[tokenName];\n        if (ttype !==undefined) {\n            return ttype;\n        } else {\n            return Token.INVALID_TYPE;\n        }\n    }\n\n    // What is the error header, normally line/character position information?\n    getErrorHeader(e) {\n        const line = e.getOffendingToken().line;\n        const column = e.getOffendingToken().column;\n        return \"line \" + line + \":\" + column;\n    }\n\n    /**\n     * How should a token be displayed in an error message? The default\n     * is to display just the text, but during development you might\n     * want to have a lot of information spit out.  Override in that case\n     * to use t.toString() (which, for CommonToken, dumps everything about\n     * the token). This is better than forcing you to override a method in\n     * your token objects because you don't have to go modify your lexer\n     * so that it creates a new Java type.\n     *\n     * @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n     * implementations of {@link ANTLRErrorStrategy} may provide a similar\n     * feature when necessary. For example, see\n     * {@link DefaultErrorStrategy//getTokenErrorDisplay}.*/\n    getTokenErrorDisplay(t) {\n        if (t===null) {\n            return \"<no token>\";\n        }\n        let s = t.text;\n        if (s===null) {\n            if (t.type===Token.EOF) {\n                s = \"<EOF>\";\n            } else {\n                s = \"<\" + t.type + \">\";\n            }\n        }\n        s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n        return \"'\" + s + \"'\";\n    }\n\n    getErrorListenerDispatch() {\n        return new ProxyErrorListener(this._listeners);\n    }\n\n    /**\n     * subclass needs to override these if there are sempreds or actions\n     * that the ATN interp needs to execute\n     */\n    sempred(localctx, ruleIndex, actionIndex) {\n        return true;\n    }\n\n    precpred(localctx , precedence) {\n        return true;\n    }\n\n    get state(){\n        return this._stateNumber;\n    }\n\n    set state(state) {\n        this._stateNumber = state;\n    }\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n","import Token from \"./Token.js\";\n\nexport default class CommonToken extends Token {\n    constructor(source, type, channel, start, stop) {\n        super();\n        this.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n        this.type = type !== undefined ? type : null;\n        this.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n        this.start = start !== undefined ? start : -1;\n        this.stop = stop !== undefined ? stop : -1;\n        this.tokenIndex = -1;\n        if (this.source[0] !== null) {\n            this.line = source[0].line;\n            this.column = source[0].column;\n        } else {\n            this.column = -1;\n        }\n    }\n\n    /**\n     * Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n     *\n     * <p>\n     * If {@code oldToken} is also a {@link CommonToken} instance, the newly\n     * constructed token will share a reference to the {@link //text} field and\n     * the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n     * be assigned the result of calling {@link //getText}, and {@link //source}\n     * will be constructed from the result of {@link Token//getTokenSource} and\n     * {@link Token//getInputStream}.</p>\n     *\n     * @param oldToken The token to copy.\n     */\n    clone() {\n        const t = new CommonToken(this.source, this.type, this.channel, this.start, this.stop);\n        t.tokenIndex = this.tokenIndex;\n        t.line = this.line;\n        t.column = this.column;\n        t.text = this.text;\n        return t;\n    }\n\n    toString() {\n        let txt = this.text;\n        if (txt !== null) {\n            txt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n        } else {\n            txt = \"<no text>\";\n        }\n        return \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n            txt + \"',<\" + this.type + \">\" +\n            (this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n            this.line + \":\" + this.column + \"]\";\n    }\n\n    get text(){\n        if (this._text !== null) {\n            return this._text;\n        }\n        const input = this.getInputStream();\n        if (input === null) {\n            return null;\n        }\n        const n = input.size;\n        if (this.start < n && this.stop < n) {\n            return input.getText(this.start, this.stop);\n        } else {\n            return \"<EOF>\";\n        }\n    }\n\n    set text(text) {\n        this._text = text;\n    }\n}\n\n/**\n * An empty {@link Pair} which is used as the default value of\n * {@link //source} for tokens that do not have a source.\n */\nCommonToken.EMPTY_SOURCE = [ null, null ];\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport CommonToken from './CommonToken.js';\n\nclass TokenFactory {}\n\n/**\n * This default implementation of {@link TokenFactory} creates\n * {@link CommonToken} objects.\n */\nexport default class CommonTokenFactory extends TokenFactory {\n    constructor(copyText) {\n        super();\n        /**\n         * Indicates whether {@link CommonToken//setText} should be called after\n         * constructing tokens to explicitly set the text. This is useful for cases\n         * where the input stream might not be able to provide arbitrary substrings\n         * of text from the input after the lexer creates a token (e.g. the\n         * implementation of {@link CharStream//getText} in\n         * {@link UnbufferedCharStream} throws an\n         * {@link UnsupportedOperationException}). Explicitly setting the token text\n         * allows {@link Token//getText} to be called at any time regardless of the\n         * input stream implementation.\n         *\n         * <p>\n         * The default value is {@code false} to avoid the performance and memory\n         * overhead of copying text for every token unless explicitly requested.</p>\n         */\n        this.copyText = copyText===undefined ? false : copyText;\n    }\n\n    create(source, type, text, channel, start, stop, line, column) {\n        const t = new CommonToken(source, type, channel, start, stop);\n        t.line = line;\n        t.column = column;\n        if (text !==null) {\n            t.text = text;\n        } else if (this.copyText && source[1] !==null) {\n            t.text = source[1].getText(start,stop);\n        }\n        return t;\n    }\n\n    createThin(type, text) {\n        const t = new CommonToken(null, type);\n        t.text = text;\n        return t;\n    }\n}\n\n/**\n * The default {@link CommonTokenFactory} instance.\n *\n * <p>\n * This token factory does not explicitly copy token text when constructing\n * tokens.</p>\n */\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/**\n * The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n *  3 kinds of errors: prediction errors, failed predicate errors, and\n *  mismatched input errors. In each case, the parser knows where it is\n *  in the input, where it is in the ATN, the rule invocation stack,\n *  and what kind of problem occurred.\n */\n\nexport default class RecognitionException extends Error {\n    constructor(params) {\n        super(params.message);\n        if (Error.captureStackTrace)\n            Error.captureStackTrace(this, RecognitionException);\n        this.message = params.message;\n        this.recognizer = params.recognizer;\n        this.input = params.input;\n        this.ctx = params.ctx;\n        /**\n         * The current {@link Token} when an error occurred. Since not all streams\n         * support accessing symbols by index, we have to track the {@link Token}\n         * instance itself\n        */\n        this.offendingToken = null;\n        /**\n         * Get the ATN state number the parser was in at the time the error\n         * occurred. For {@link NoViableAltException} and\n         * {@link LexerNoViableAltException} exceptions, this is the\n         * {@link DecisionState} number. For others, it is the state whose outgoing\n         * edge we couldn't match.\n         */\n        this.offendingState = -1;\n        if (this.recognizer!==null) {\n            this.offendingState = this.recognizer.state;\n        }\n    }\n\n    /**\n     * Gets the set of input symbols which could potentially follow the\n     * previously matched symbol at the time this exception was thrown.\n     *\n     * <p>If the set of expected tokens is not known and could not be computed,\n     * this method returns {@code null}.</p>\n     *\n     * @return The set of token types that could potentially follow the current\n     * state in the ATN, or {@code null} if the information is not available.\n     */\n    getExpectedTokens() {\n        if (this.recognizer!==null) {\n            return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n        } else {\n            return null;\n        }\n    }\n\n    // <p>If the state number is not known, this method returns -1.</p>\n    toString() {\n        return this.message;\n    }\n}\n\n\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Interval from \"../misc/Interval.js\";\nimport RecognitionException from \"./RecognitionException.js\";\n\nexport default class LexerNoViableAltException extends RecognitionException {\n    constructor(lexer, input, startIndex, deadEndConfigs) {\n        super({message: \"\", recognizer: lexer, input: input, ctx: null});\n        this.startIndex = startIndex;\n        this.deadEndConfigs = deadEndConfigs;\n    }\n\n    toString() {\n        let symbol = \"\";\n        if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n            symbol = this.input.getText(new Interval(this.startIndex,this.startIndex));\n        }\n        return \"LexerNoViableAltException\" + symbol;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport Recognizer from './Recognizer.js';\nimport CommonTokenFactory from './CommonTokenFactory.js';\nimport RecognitionException from './error/RecognitionException.js';\nimport LexerNoViableAltException from './error/LexerNoViableAltException.js';\n\n/**\n * A lexer is recognizer that draws input symbols from a character stream.\n * lexer grammars result in a subclass of this object. A Lexer object\n * uses simplified match() and error recovery mechanisms in the interest of speed.\n */\nexport default class Lexer extends Recognizer {\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis._input = input;\n\t\tthis._factory = CommonTokenFactory.DEFAULT;\n\t\tthis._tokenFactorySourcePair = [ this, input ];\n\n\t\tthis._interp = null; // child classes must populate this\n\n\t\t/**\n\t\t * The goal of all lexer rules/methods is to create a token object.\n\t\t * this is an instance variable as multiple rules may collaborate to\n\t\t * create a single token. nextToken will return this object after\n\t\t * matching lexer rule(s). If you subclass to allow multiple token\n\t\t * emissions, then set this to the last token to be matched or\n\t\t * something nonnull so that the auto token emit mechanism will not\n\t\t * emit another token.\n\t\t */\n\t\tthis._token = null;\n\n\t\t/**\n\t\t * What character index in the stream did the current token start at?\n\t\t * Needed, for example, to get the text for current token. Set at\n\t\t * the start of nextToken.\n\t\t */\n\t\tthis._tokenStartCharIndex = -1;\n\n\t\t// The line on which the first character of the token resides///\n\t\tthis._tokenStartLine = -1;\n\n\t\t// The character position of first character within the line///\n\t\tthis._tokenStartColumn = -1;\n\n\t\t// Once we see EOF on char stream, next token will be EOF.\n\t\t// If you have DONE : EOF ; then you see DONE EOF.\n\t\tthis._hitEOF = false;\n\n\t\t// The channel number for the current token///\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t\t// The token type for the current token///\n\t\tthis._type = Token.INVALID_TYPE;\n\n\t\tthis._modeStack = [];\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t\t/**\n\t\t * You can set the text for the current token to override what is in\n\t\t * the input char buffer. Use setText() or can set this instance var.\n\t\t */\n\t\tthis._text = null;\n\t}\n\n\treset() {\n\t\t// wack Lexer state variables\n\t\tif (this._input !== null) {\n\t\t\tthis._input.seek(0); // rewind the input\n\t\t}\n\t\tthis._token = null;\n\t\tthis._type = Token.INVALID_TYPE;\n\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\tthis._tokenStartCharIndex = -1;\n\t\tthis._tokenStartColumn = -1;\n\t\tthis._tokenStartLine = -1;\n\t\tthis._text = null;\n\n\t\tthis._hitEOF = false;\n\t\tthis._mode = Lexer.DEFAULT_MODE;\n\t\tthis._modeStack = [];\n\n\t\tthis._interp.reset();\n\t}\n\n// Return a token from this source; i.e., match a token on the char stream.\n\tnextToken() {\n\t\tif (this._input === null) {\n\t\t\tthrow \"nextToken requires a non-null input stream.\";\n\t\t}\n\n\t\t/**\n\t\t * Mark start location in char stream so unbuffered streams are\n\t\t * guaranteed at least have text of current token\n\t\t */\n\t\tconst tokenStartMarker = this._input.mark();\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tif (this._hitEOF) {\n\t\t\t\t\tthis.emitEOF();\n\t\t\t\t\treturn this._token;\n\t\t\t\t}\n\t\t\t\tthis._token = null;\n\t\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\t\tthis._text = null;\n\t\t\t\tlet continueOuter = false;\n\t\t\t\tfor (;;) {\n\t\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\t\tlet ttype = Lexer.SKIP;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif(e instanceof RecognitionException) {\n\t\t\t\t\t\t\tthis.notifyListeners(e); // report error\n\t\t\t\t\t\t\tthis.recover(e);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log(e.stack);\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\t\tthis._type = ttype;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (continueOuter) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (this._token === null) {\n\t\t\t\t\tthis.emit();\n\t\t\t\t}\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t} finally {\n\t\t\t// make sure we release marker after match or\n\t\t\t// unbuffered char stream will keep buffering\n\t\t\tthis._input.release(tokenStartMarker);\n\t\t}\n\t}\n\n\t/**\n\t * Instruct the lexer to skip creating a token for current lexer rule\n\t * and look for another token. nextToken() knows to keep looking when\n\t * a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n\t * if token==null at end of any token rule, it creates one for you\n\t * and emits it.\n\t */\n\tskip() {\n\t\tthis._type = Lexer.SKIP;\n\t}\n\n\tmore() {\n\t\tthis._type = Lexer.MORE;\n\t}\n\n\tmode(m) {\n\t\tthis._mode = m;\n\t}\n\n\tpushMode(m) {\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"pushMode \" + m);\n\t\t}\n\t\tthis._modeStack.push(this._mode);\n\t\tthis.mode(m);\n\t}\n\n\tpopMode() {\n\t\tif (this._modeStack.length === 0) {\n\t\t\tthrow \"Empty Stack\";\n\t\t}\n\t\tif (this._interp.debug) {\n\t\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t\t}\n\t\tthis.mode(this._modeStack.pop());\n\t\treturn this._mode;\n\t}\n\n\t/**\n\t * By default does not support multiple emits per nextToken invocation\n\t * for efficiency reasons. Subclass and override this method, nextToken,\n\t * and getToken (to push tokens into a list and pull from that list\n\t * rather than a single variable as this implementation does).\n\t */\n\temitToken(token) {\n\t\tthis._token = token;\n\t}\n\n\t/**\n\t * The standard method called to automatically emit a token at the\n\t * outermost lexical rule. The token object should point into the\n\t * char buffer start..stop. If there is a text override in 'text',\n\t * use that to set the token's text. Override this method to emit\n\t * custom Token objects or provide a new factory.\n\t */\n\temit() {\n\t\tconst t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn);\n\t\tthis.emitToken(t);\n\t\treturn t;\n\t}\n\n\temitEOF() {\n\t\tconst cpos = this.column;\n\t\tconst lpos = this.line;\n\t\tconst eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\t\tthis._input.index - 1, lpos, cpos);\n\t\tthis.emitToken(eof);\n\t\treturn eof;\n\t}\n\n// What is the index of the current character of lookahead?///\n\tgetCharIndex() {\n\t\treturn this._input.index;\n\t}\n\n\t/**\n\t * Return a list of all Token objects in input char stream.\n\t * Forces load of all tokens. Does not include EOF token.\n\t */\n\tgetAllTokens() {\n\t\tconst tokens = [];\n\t\tlet t = this.nextToken();\n\t\twhile (t.type !== Token.EOF) {\n\t\t\ttokens.push(t);\n\t\t\tt = this.nextToken();\n\t\t}\n\t\treturn tokens;\n\t}\n\n\tnotifyListeners(e) {\n\t\tconst start = this._tokenStartCharIndex;\n\t\tconst stop = this._input.index;\n\t\tconst text = this._input.getText(start, stop);\n\t\tconst msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\t\tconst listener = this.getErrorListenerDispatch();\n\t\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\t\tthis._tokenStartColumn, msg, e);\n\t}\n\n\tgetErrorDisplay(s) {\n\t\tconst d = [];\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\td.push(s[i]);\n\t\t}\n\t\treturn d.join('');\n\t}\n\n\tgetErrorDisplayForChar(c) {\n\t\tif (c.charCodeAt(0) === Token.EOF) {\n\t\t\treturn \"<EOF>\";\n\t\t} else if (c === '\\n') {\n\t\t\treturn \"\\\\n\";\n\t\t} else if (c === '\\t') {\n\t\t\treturn \"\\\\t\";\n\t\t} else if (c === '\\r') {\n\t\t\treturn \"\\\\r\";\n\t\t} else {\n\t\t\treturn c;\n\t\t}\n\t}\n\n\tgetCharErrorDisplay(c) {\n\t\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n\t}\n\n\t/**\n\t * Lexers can normally match any char in it's vocabulary after matching\n\t * a token, so do the easy thing and just kill a character and hope\n\t * it all works out. You can instead use the rule invocation stack\n\t * to do sophisticated error recovery if you are in a fragment rule.\n\t */\n\trecover(re) {\n\t\tif (this._input.LA(1) !== Token.EOF) {\n\t\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t\t// skip a char and try again\n\t\t\t\tthis._interp.consume(this._input);\n\t\t\t} else {\n\t\t\t\t// TODO: Do we lose character or line position information?\n\t\t\t\tthis._input.consume();\n\t\t\t}\n\t\t}\n\t}\n\n\tget inputStream(){\n\t\treturn this._input;\n\t}\n\n\tset inputStream(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n\n\tget sourceName(){\n\t\treturn this._input.sourceName;\n\t}\n\n\tget type(){\n\t\treturn this._type;\n\t}\n\n\tset type(type) {\n\t\tthis._type = type;\n\t}\n\n\tget line(){\n\t\treturn this._interp.line;\n\t}\n\n\tset line(line) {\n\t\tthis._interp.line = line;\n\t}\n\n\tget column(){\n\t\treturn this._interp.column;\n\t}\n\n\tset column(column) {\n\t\tthis._interp.column = column;\n\t}\n\n\tget text(){\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t}\n\n\tset text(text) {\n\t\tthis._text = text;\n\t}\n}\n\n\n\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport SemanticContext from './SemanticContext.js';\nimport { merge } from '../context/PredictionContextUtils.js';\nimport arrayToString from \"../utils/arrayToString.js\";\nimport HashSet from \"../misc/HashSet.js\";\nimport equalArrays from \"../utils/equalArrays.js\";\nimport HashCode from \"../misc/HashCode.js\";\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n       return a.equalsForConfigSet(b);\n }\n\n/**\n * Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n * info about the set, with support for combining similar configurations using a\n * graph-structured stack\n */\nexport default class ATNConfigSet {\n\tconstructor(fullCtx) {\n\t\t/**\n\t\t * The reason that we need this is because we don't want the hash map to use\n\t\t * the standard hash code and equals. We need all configurations with the\n\t\t * same\n\t\t * {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t\t * doubles\n\t\t * the number of objects associated with ATNConfigs. The other solution is\n\t\t * to\n\t\t * use a hash table that lets us specify the equals/hashcode operation.\n\t\t * All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t\t * when we go readonly as this set becomes a DFA state\n\t\t */\n\t\tthis.configLookup = new HashSet(hashATNConfig, equalATNConfigs);\n\t\t/**\n\t\t * Indicates that this configuration set is part of a full context\n\t\t * LL prediction. It will be used to determine how to merge $. With SLL\n\t\t * it's a wildcard whereas it is not for LL context merge\n\t\t */\n\t\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t\t/**\n\t\t * Indicates that the set of configurations is read-only. Do not\n\t\t * allow any code to manipulate the set; DFA states will point at\n\t\t * the sets and they must not change. This does not protect the other\n\t\t * fields; in particular, conflictingAlts is set after\n\t\t * we've made this readonly\n\t\t */\n\t\tthis.readOnly = false;\n\t\t// Track the elements as they are added to the set; supports get(i)///\n\t\tthis.configs = [];\n\n\t\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t\t// together, saves recomputation\n\t\t// TODO: can we track conflicts as they are added to save scanning configs\n\t\t// later?\n\t\tthis.uniqueAlt = 0;\n\t\tthis.conflictingAlts = null;\n\n\t\t/**\n\t\t * Used in parser and lexer. In lexer, it indicates we hit a pred\n\t\t * while computing a closure operation. Don't make a DFA state from this\n\t\t */\n\t\tthis.hasSemanticContext = false;\n\t\tthis.dipsIntoOuterContext = false;\n\n\t\tthis.cachedHashCode = -1;\n\t}\n\n\t/**\n\t * Adding a new config means merging contexts with existing configs for\n\t * {@code (s, i, pi, _)}, where {@code s} is the\n\t * {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n\t * {@code pi} is the {@link ATNConfig//semanticContext}. We use\n\t * {@code (s,i,pi)} as key.\n\t *\n\t * <p>This method updates {@link //dipsIntoOuterContext} and\n\t * {@link //hasSemanticContext} when necessary.</p>\n\t */\n\tadd(config, mergeCache) {\n\t\tif (mergeCache === undefined) {\n\t\t\tmergeCache = null;\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\t\tthis.hasSemanticContext = true;\n\t\t}\n\t\tif (config.reachesIntoOuterContext > 0) {\n\t\t\tthis.dipsIntoOuterContext = true;\n\t\t}\n\t\tconst existing = this.configLookup.add(config);\n\t\tif (existing === config) {\n\t\t\tthis.cachedHashCode = -1;\n\t\t\tthis.configs.push(config); // track order here\n\t\t\treturn true;\n\t\t}\n\t\t// a previous (s,i,pi,_), merge with it and save result\n\t\tconst rootIsWildcard = !this.fullCtx;\n\t\tconst merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t\t/**\n\t\t * no need to check for existing.context, config.context in cache\n\t\t * since only way to create new graphs is \"call rule\" and here. We\n\t\t * cache at both places\n\t\t */\n\t\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t\t// make sure to preserve the precedence filter suppression during the merge\n\t\tif (config.precedenceFilterSuppressed) {\n\t\t\texisting.precedenceFilterSuppressed = true;\n\t\t}\n\t\texisting.context = merged; // replace context; no need to alt mapping\n\t\treturn true;\n\t}\n\n\tgetStates() {\n\t\tconst states = new HashSet();\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tstates.add(this.configs[i].state);\n\t\t}\n\t\treturn states;\n\t}\n\n\tgetPredicates() {\n\t\tconst preds = [];\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst c = this.configs[i].semanticContext;\n\t\t\tif (c !== SemanticContext.NONE) {\n\t\t\t\tpreds.push(c.semanticContext);\n\t\t\t}\n\t\t}\n\t\treturn preds;\n\t}\n\n\toptimizeConfigs(interpreter) {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tif (this.configLookup.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\tconst config = this.configs[i];\n\t\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t\t}\n\t}\n\n\taddAll(coll) {\n\t\tfor (let i = 0; i < coll.length; i++) {\n\t\t\tthis.add(coll[i]);\n\t\t}\n\t\treturn false;\n\t}\n\n\tequals(other) {\n\t\treturn this === other ||\n\t\t\t(other instanceof ATNConfigSet &&\n\t\t\tequalArrays(this.configs, other.configs) &&\n\t\t\tthis.fullCtx === other.fullCtx &&\n\t\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n\t}\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n\n\tupdateHashCode(hash) {\n\t\tif (this.readOnly) {\n\t\t\tif (this.cachedHashCode === -1) {\n\t\t\t\tthis.cachedHashCode = this.hashCode();\n\t\t\t}\n\t\t\thash.update(this.cachedHashCode);\n\t\t} else {\n\t\t\thash.update(this.hashCode());\n\t\t}\n\t}\n\n\tisEmpty() {\n\t\treturn this.configs.length === 0;\n\t}\n\n\tcontains(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.contains(item);\n\t}\n\n\tcontainsFast(item) {\n\t\tif (this.configLookup === null) {\n\t\t\tthrow \"This method is not implemented for readonly sets.\";\n\t\t}\n\t\treturn this.configLookup.containsFast(item);\n\t}\n\n\tclear() {\n\t\tif (this.readOnly) {\n\t\t\tthrow \"This set is readonly\";\n\t\t}\n\t\tthis.configs = [];\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configLookup = new HashSet();\n\t}\n\n\tsetReadonly(readOnly) {\n\t\tthis.readOnly = readOnly;\n\t\tif (readOnly) {\n\t\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn arrayToString(this.configs) +\n\t\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n\t}\n\n\tget items(){\n\t\treturn this.configs;\n\t}\n\n\tget length(){\n\t\treturn this.configs.length;\n\t}\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATNConfigSet from '../atn/ATNConfigSet.js';\nimport HashCode from \"../misc/HashCode.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n\n/**\n * A DFA state represents a set of possible ATN configurations.\n * As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n * to keep track of all possible states the ATN can be in after\n * reading each input symbol. That is to say, after reading\n * input a1a2..an, the DFA is in a state that represents the\n * subset T of the states of the ATN that are reachable from the\n * ATN's start state along some path labeled a1a2..an.\"\n * In conventional NFA&rarr;DFA conversion, therefore, the subset T\n * would be a bitset representing the set of states the\n * ATN could be in. We need to track the alt predicted by each\n * state as well, however. More importantly, we need to maintain\n * a stack of states, tracking the closure operations as they\n * jump from rule to rule, emulating rule invocations (method calls).\n * I have to add a stack to simulate the proper lookahead sequences for\n * the underlying LL grammar from which the ATN was derived.\n *\n * <p>I use a set of ATNConfig objects not simple states. An ATNConfig\n * is both a state (ala normal conversion) and a RuleContext describing\n * the chain of rules (if any) followed to arrive at that state.</p>\n *\n * <p>A DFA state may have multiple references to a particular state,\n * but with different ATN contexts (with same or different alts)\n * meaning that state was reached via a different set of rule invocations.</p>\n */\nexport default class DFAState {\n\tconstructor(stateNumber, configs) {\n\t\tif (stateNumber === null) {\n\t\t\tstateNumber = -1;\n\t\t}\n\t\tif (configs === null) {\n\t\t\tconfigs = new ATNConfigSet();\n\t\t}\n\t\tthis.stateNumber = stateNumber;\n\t\tthis.configs = configs;\n\t\t/**\n\t\t * {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t\t * {@link Token//EOF} maps to {@code edges[0]}.\n\t\t */\n\t\tthis.edges = null;\n\t\tthis.isAcceptState = false;\n\t\t/**\n\t\t * if accept state, what ttype do we match or alt do we predict?\n\t\t * This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link//predicates}\n\t\t * {@code !=null} or {@link //requiresFullContext}.\n\t\t */\n\t\tthis.prediction = 0;\n\t\tthis.lexerActionExecutor = null;\n\t\t/**\n\t\t * Indicates that this state was created during SLL prediction that\n\t\t * discovered a conflict between the configurations in the state. Future\n\t\t * {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t\t * full context prediction if this field is true.\n\t\t */\n\t\tthis.requiresFullContext = false;\n\t\t/**\n\t\t * During SLL parsing, this is a list of predicates associated with the\n\t\t * ATN configurations of the DFA state. When we have predicates,\n\t\t * {@link //requiresFullContext} is {@code false} since full context\n\t\t * prediction evaluates predicates\n\t\t * on-the-fly. If this is not null, then {@link //prediction} is\n\t\t * {@link ATN//INVALID_ALT_NUMBER}.\n\t\t *\n\t\t * <p>We only use these for non-{@link //requiresFullContext} but\n\t\t * conflicting states. That\n\t\t * means we know from the context (it's $ or we don't dip into outer\n\t\t * context) that it's an ambiguity not a conflict.</p>\n\t\t *\n\t\t * <p>This list is computed by {@link\n\t\t * ParserATNSimulator//predicateDFAState}.</p>\n\t\t */\n\t\tthis.predicates = null;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the set of all alts mentioned by all ATN configurations in this\n\t * DFA state.\n\t */\n\tgetAltSet() {\n\t\tconst alts = new HashSet();\n\t\tif (this.configs !== null) {\n\t\t\tfor (let i = 0; i < this.configs.length; i++) {\n\t\t\t\tconst c = this.configs[i];\n\t\t\t\talts.add(c.alt);\n\t\t\t}\n\t\t}\n\t\tif (alts.length === 0) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn alts;\n\t\t}\n\t}\n\n\t/**\n\t * Two {@link DFAState} instances are equal if their ATN configuration sets\n\t * are the same. This method is used to see if a state already exists.\n\t *\n\t * <p>Because the number of alternatives and number of ATN configurations are\n\t * finite, there is a finite number of DFA states that can be processed.\n\t * This is necessary to show that the algorithm terminates.</p>\n\t *\n\t * <p>Cannot test the DFA state numbers here because in\n\t * {@link ParserATNSimulator//addDFAState} we need to know if any other state\n\t * exists that has this exact set of ATN configurations. The\n\t * {@link //stateNumber} is irrelevant.</p>\n\t */\n\tequals(other) {\n\t\t// compare set of ATN configurations in this set with other\n\t\treturn this === other ||\n\t\t\t\t(other instanceof DFAState &&\n\t\t\t\t\tthis.configs.equals(other.configs));\n\t}\n\n\ttoString() {\n\t\tlet s = \"\" + this.stateNumber + \":\" + this.configs;\n\t\tif(this.isAcceptState) {\n\t\t\ts = s + \"=>\";\n\t\t\tif (this.predicates !== null)\n\t\t\t\ts = s + this.predicates;\n\t\t\telse\n\t\t\t\ts = s + this.prediction;\n\t\t}\n\t\treturn s;\n\t}\n\n\thashCode() {\n\t\tconst hash = new HashCode();\n\t\thash.update(this.configs);\n\t\treturn hash.finish();\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFAState from '../dfa/DFAState.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport { getCachedPredictionContext } from '../context/PredictionContextUtils.js';\nimport HashMap from \"../misc/HashMap.js\";\n\nexport default class ATNSimulator {\n    constructor(atn, sharedContextCache) {\n        /**\n         * The context cache maps all PredictionContext objects that are ==\n         * to a single cached copy. This cache is shared across all contexts\n         * in all ATNConfigs in all DFA states.  We rebuild each ATNConfigSet\n         * to use only cached nodes/graphs in addDFAState(). We don't want to\n         * fill this during closure() since there are lots of contexts that\n         * pop up but are not used ever again. It also greatly slows down closure().\n         *\n         * <p>This cache makes a huge difference in memory and a little bit in speed.\n         * For the Java grammar on java.*, it dropped the memory requirements\n         * at the end from 25M to 16M. We don't store any of the full context\n         * graphs in the DFA because they are limited to local context only,\n         * but apparently there's a lot of repetition there as well. We optimize\n         * the config contexts before storing the config set in the DFA states\n         * by literally rebuilding them with cached subgraphs only.</p>\n         *\n         * <p>I tried a cache for use during closure operations, that was\n         * whacked after each adaptivePredict(). It cost a little bit\n         * more time I think and doesn't save on the overall footprint\n         * so it's not worth the complexity.</p>\n         */\n        this.atn = atn;\n        this.sharedContextCache = sharedContextCache;\n        return this;\n    }\n\n    getCachedContext(context) {\n        if (this.sharedContextCache ===null) {\n            return context;\n        }\n        const visited = new HashMap();\n        return getCachedPredictionContext(context, this.sharedContextCache, visited);\n    }\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ATNConfigSet from \"./ATNConfigSet.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class OrderedATNConfigSet extends ATNConfigSet {\n    constructor() {\n        super();\n        this.configLookup = new HashSet();\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DecisionState from \"../state/DecisionState.js\";\nimport ATNConfig from \"./ATNConfig.js\";\n\nexport default class LexerATNConfig extends ATNConfig {\n    constructor(params, config) {\n        super(params, config);\n\n        // This is the backing field for {@link //getLexerActionExecutor}.\n        const lexerActionExecutor = params.lexerActionExecutor || null;\n        this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n        this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n        this.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n        this.equalsForConfigSet = LexerATNConfig.prototype.equals;\n        return this;\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n    }\n\n    equals(other) {\n        return this === other ||\n            (other instanceof LexerATNConfig &&\n                this.passedThroughNonGreedyDecision === other.passedThroughNonGreedyDecision &&\n                (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n                super.equals(other));\n    }\n\n    checkNonGreedyDecision(source, target) {\n        return source.passedThroughNonGreedyDecision ||\n            (target instanceof DecisionState) && target.nonGreedy;\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * This implementation of {@link LexerAction} is used for tracking input offsets\n * for position-dependent actions within a {@link LexerActionExecutor}.\n *\n * <p>This action is not serialized as part of the ATN, and is only required for\n * position-dependent lexer actions which appear at a location other than the\n * end of a rule. For more information about DFA optimizations employed for\n * lexer actions, see {@link LexerActionExecutor//append} and\n * {@link LexerActionExecutor//fixOffsetBeforeMatch}.</p>\n *\n * Constructs a new indexed custom action by associating a character offset\n * with a {@link LexerAction}.\n *\n * <p>Note: This class is only required for lexer actions for which\n * {@link LexerAction//isPositionDependent} returns {@code true}.</p>\n *\n * @param offset The offset into the input {@link CharStream}, relative to\n * the token start index, at which the specified lexer action should be\n * executed.\n * @param action The lexer action to execute at a particular offset in the\n * input {@link CharStream}.\n */\nimport LexerAction from \"./LexerAction.js\";\n\n\nexport default class LexerIndexedCustomAction extends LexerAction {\n    constructor(offset, action) {\n        super(action.actionType);\n        this.offset = offset;\n        this.action = action;\n        this.isPositionDependent = true;\n    }\n\n    /**\n     * <p>This method calls {@link //execute} on the result of {@link //getAction}\n     * using the provided {@code lexer}.</p>\n     */\n    execute(lexer) {\n        // assume the input stream position was properly set by the calling code\n        this.action.execute(lexer);\n    }\n\n    updateHashCode(hash) {\n        hash.update(this.actionType, this.offset, this.action);\n    }\n\n    equals(other) {\n        if (this === other) {\n            return true;\n        } else if (! (other instanceof LexerIndexedCustomAction)) {\n            return false;\n        } else {\n            return this.offset === other.offset && this.action === other.action;\n        }\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport LexerIndexedCustomAction from '../action/LexerIndexedCustomAction.js';\nimport HashCode from \"../misc/HashCode.js\";\n\nexport default class LexerActionExecutor {\n\t/**\n\t * Represents an executor for a sequence of lexer actions which traversed during\n\t * the matching operation of a lexer rule (token).\n\t *\n\t * <p>The executor tracks position information for position-dependent lexer actions\n\t * efficiently, ensuring that actions appearing only at the end of the rule do\n\t * not cause bloating of the {@link DFA} created for the lexer.</p>\n\t */\n\tconstructor(lexerActions) {\n\t\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t\t/**\n\t\t * Caches the result of {@link //hashCode} since the hash code is an element\n\t\t * of the performance-critical {@link LexerATNConfig//hashCode} operation\n\t\t */\n\t\tthis.cachedHashCode = HashCode.hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t\t// lexerActions]))\n\t\treturn this;\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which encodes the current offset\n\t * for position-dependent lexer actions.\n\t *\n\t * <p>Normally, when the executor encounters lexer actions where\n\t * {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n\t * {@link IntStream//seek} on the input {@link CharStream} to set the input\n\t * position to the <em>end</em> of the current token. This behavior provides\n\t * for efficient DFA representation of lexer actions which appear at the end\n\t * of a lexer rule, even when the lexer rule matches a variable number of\n\t * characters.</p>\n\t *\n\t * <p>Prior to traversing a match transition in the ATN, the current offset\n\t * from the token start index is assigned to all position-dependent lexer\n\t * actions which have not already been assigned a fixed offset. By storing\n\t * the offsets relative to the token start index, the DFA representation of\n\t * lexer actions which appear in the middle of tokens remains efficient due\n\t * to sharing among tokens of the same length, regardless of their absolute\n\t * position in the input stream.</p>\n\t *\n\t * <p>If the current executor already has offsets assigned to all\n\t * position-dependent lexer actions, the method returns {@code this}.</p>\n\t *\n\t * @param offset The current offset to assign to all position-dependent\n\t * lexer actions which do not already have offsets assigned.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} which stores input stream offsets\n\t * for all position-dependent lexer actions.\n\t */\n\tfixOffsetBeforeMatch(offset) {\n\t\tlet updatedLexerActions = null;\n\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\t\tif (updatedLexerActions === null) {\n\t\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t\t}\n\t\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\t\tthis.lexerActions[i]);\n\t\t\t}\n\t\t}\n\t\tif (updatedLexerActions === null) {\n\t\t\treturn this;\n\t\t} else {\n\t\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t\t}\n\t}\n\n\t/**\n\t * Execute the actions encapsulated by this executor within the context of a\n\t * particular {@link Lexer}.\n\t *\n\t * <p>This method calls {@link IntStream//seek} to set the position of the\n\t * {@code input} {@link CharStream} prior to calling\n\t * {@link LexerAction//execute} on a position-dependent action. Before the\n\t * method returns, the input position will be restored to the same position\n\t * it was in when the method was invoked.</p>\n\t *\n\t * @param lexer The lexer instance.\n\t * @param input The input stream which is the source for the current token.\n\t * When this method is called, the current {@link IntStream//index} for\n\t * {@code input} should be the start of the following token, i.e. 1\n\t * character past the end of the current token.\n\t * @param startIndex The token start index. This value may be passed to\n\t * {@link IntStream//seek} to set the {@code input} position to the beginning\n\t * of the token.\n\t */\n\texecute(lexer, input, startIndex) {\n\t\tlet requiresSeek = false;\n\t\tconst stopIndex = input.index;\n\t\ttry {\n\t\t\tfor (let i = 0; i < this.lexerActions.length; i++) {\n\t\t\t\tlet lexerAction = this.lexerActions[i];\n\t\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\t\tconst offset = lexerAction.offset;\n\t\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\t\tinput.seek(stopIndex);\n\t\t\t\t\trequiresSeek = false;\n\t\t\t\t}\n\t\t\t\tlexerAction.execute(lexer);\n\t\t\t}\n\t\t} finally {\n\t\t\tif (requiresSeek) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t}\n\t\t}\n\t}\n\n\thashCode() {\n\t\treturn this.cachedHashCode;\n\t}\n\n\tupdateHashCode(hash) {\n\t\thash.update(this.cachedHashCode);\n\t}\n\n\tequals(other) {\n\t\tif (this === other) {\n\t\t\treturn true;\n\t\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\t\treturn false;\n\t\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\t\treturn false;\n\t\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tconst numActions = this.lexerActions.length\n\t\t\tfor (let idx = 0; idx < numActions; ++idx) {\n\t\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Creates a {@link LexerActionExecutor} which executes the actions for\n\t * the input {@code lexerActionExecutor} followed by a specified\n\t * {@code lexerAction}.\n\t *\n\t * @param lexerActionExecutor The executor for actions already traversed by\n\t * the lexer while matching a token within a particular\n\t * {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n\t * though it were an empty executor.\n\t * @param lexerAction The lexer action to execute after the actions\n\t * specified in {@code lexerActionExecutor}.\n\t *\n\t * @return {LexerActionExecutor} A {@link LexerActionExecutor} for executing the combine actions\n\t * of {@code lexerActionExecutor} and {@code lexerAction}.\n\t */\n\tstatic append(lexerActionExecutor, lexerAction) {\n\t\tif (lexerActionExecutor === null) {\n\t\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t\t}\n\t\tconst lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\t\treturn new LexerActionExecutor(lexerActions);\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from '../Token.js';\nimport Lexer from './../Lexer.js';\nimport ATN from './ATN.js';\nimport ATNSimulator from './ATNSimulator.js';\nimport DFAState from '../dfa/DFAState.js';\nimport OrderedATNConfigSet from './OrderedATNConfigSet.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport LexerATNConfig from './LexerATNConfig.js';\nimport Transition from '../transition/Transition.js';\nimport LexerActionExecutor from './LexerActionExecutor.js';\nimport LexerNoViableAltException from '../error/LexerNoViableAltException.js';\n\nfunction resetSimState(sim) {\n    sim.index = -1;\n    sim.line = 0;\n    sim.column = -1;\n    sim.dfaState = null;\n}\n\nclass SimState {\n    constructor() {\n        resetSimState(this);\n    }\n\n    reset() {\n        resetSimState(this);\n    }\n}\n\nexport default class LexerATNSimulator extends ATNSimulator {\n    /**\n     * When we hit an accept state in either the DFA or the ATN, we\n     * have to notify the character stream to start buffering characters\n     * via {@link IntStream//mark} and record the current state. The current sim state\n     * includes the current index into the input, the current line,\n     * and current character position in that line. Note that the Lexer is\n     * tracking the starting line and characterization of the token. These\n     * variables track the \"state\" of the simulator when it hits an accept state.\n     *\n     * <p>We track these variables separately for the DFA and ATN simulation\n     * because the DFA simulation often has to fail over to the ATN\n     * simulation. If the ATN simulation fails, we need the DFA to fall\n     * back to its previously accepted state, if any. If the ATN succeeds,\n     * then the ATN does the accept and the DFA simulator that invoked it\n     * can simply return the predicted token type.</p>\n     */\n    constructor(recog, atn, decisionToDFA, sharedContextCache) {\n        super(atn, sharedContextCache);\n        this.decisionToDFA = decisionToDFA;\n        this.recog = recog;\n        /**\n         * The current token's starting index into the character stream.\n         * Shared across DFA to ATN simulation in case the ATN fails and the\n         * DFA did not have a previous accept state. In this case, we use the\n         * ATN-generated exception object\n         */\n        this.startIndex = -1;\n        // line number 1..n within the input///\n        this.line = 1;\n        /**\n         * The index of the character relative to the beginning of the line\n         * 0..n-1\n         */\n        this.column = 0;\n        this.mode = Lexer.DEFAULT_MODE;\n        /**\n         * Used during DFA/ATN exec to record the most recent accept configuration\n         * info\n         */\n        this.prevAccept = new SimState();\n    }\n\n    copyState(simulator) {\n        this.column = simulator.column;\n        this.line = simulator.line;\n        this.mode = simulator.mode;\n        this.startIndex = simulator.startIndex;\n    }\n\n    match(input, mode) {\n        this.mode = mode;\n        const mark = input.mark();\n        try {\n            this.startIndex = input.index;\n            this.prevAccept.reset();\n            const dfa = this.decisionToDFA[mode];\n            if (dfa.s0 === null) {\n                return this.matchATN(input);\n            } else {\n                return this.execATN(input, dfa.s0);\n            }\n        } finally {\n            input.release(mark);\n        }\n    }\n\n    reset() {\n        this.prevAccept.reset();\n        this.startIndex = -1;\n        this.line = 1;\n        this.column = 0;\n        this.mode = Lexer.DEFAULT_MODE;\n    }\n\n    matchATN(input) {\n        const startState = this.atn.modeToStartState[this.mode];\n\n        if (LexerATNSimulator.debug) {\n            console.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n        }\n        const old_mode = this.mode;\n        const s0_closure = this.computeStartState(input, startState);\n        const suppressEdge = s0_closure.hasSemanticContext;\n        s0_closure.hasSemanticContext = false;\n\n        const next = this.addDFAState(s0_closure);\n        if (!suppressEdge) {\n            this.decisionToDFA[this.mode].s0 = next;\n        }\n\n        const predict = this.execATN(input, next);\n\n        if (LexerATNSimulator.debug) {\n            console.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n        }\n        return predict;\n    }\n\n    execATN(input, ds0) {\n        if (LexerATNSimulator.debug) {\n            console.log(\"start state closure=\" + ds0.configs);\n        }\n        if (ds0.isAcceptState) {\n            // allow zero-length tokens\n            this.captureSimState(this.prevAccept, input, ds0);\n        }\n        let t = input.LA(1);\n        let s = ds0; // s is current/from DFA state\n\n        for (; ;) { // while more work\n            if (LexerATNSimulator.debug) {\n                console.log(\"execATN loop starting closure: \" + s.configs);\n            }\n\n            /**\n             * As we move src->trg, src->trg, we keep track of the previous trg to\n             * avoid looking up the DFA state again, which is expensive.\n             * If the previous target was already part of the DFA, we might\n             * be able to avoid doing a reach operation upon t. If s!=null,\n             * it means that semantic predicates didn't prevent us from\n             * creating a DFA state. Once we know s!=null, we check to see if\n             * the DFA state has an edge already for t. If so, we can just reuse\n             * it's configuration set; there's no point in re-computing it.\n             * This is kind of like doing DFA simulation within the ATN\n             * simulation because DFA simulation is really just a way to avoid\n             * computing reach/closure sets. Technically, once we know that\n             * we have a previously added DFA state, we could jump over to\n             * the DFA simulator. But, that would mean popping back and forth\n             * a lot and making things more complicated algorithmically.\n             * This optimization makes a lot of sense for loops within DFA.\n             * A character will take us back to an existing DFA state\n             * that already has lots of edges out of it. e.g., .* in comments.\n             * print(\"Target for:\" + str(s) + \" and:\" + str(t))\n             */\n            let target = this.getExistingTargetState(s, t);\n            // print(\"Existing:\" + str(target))\n            if (target === null) {\n                target = this.computeTargetState(input, s, t);\n                // print(\"Computed:\" + str(target))\n            }\n            if (target === ATNSimulator.ERROR) {\n                break;\n            }\n            // If this is a consumable input element, make sure to consume before\n            // capturing the accept state so the input index, line, and char\n            // position accurately reflect the state of the interpreter at the\n            // end of the token.\n            if (t !== Token.EOF) {\n                this.consume(input);\n            }\n            if (target.isAcceptState) {\n                this.captureSimState(this.prevAccept, input, target);\n                if (t === Token.EOF) {\n                    break;\n                }\n            }\n            t = input.LA(1);\n            s = target; // flip; current DFA target becomes new src/from state\n        }\n        return this.failOrAccept(this.prevAccept, input, s.configs, t);\n    }\n\n    /**\n     * Get an existing target state for an edge in the DFA. If the target state\n     * for the edge has not yet been computed or is otherwise not available,\n     * this method returns {@code null}.\n     *\n     * @param s The current DFA state\n     * @param t The next input symbol\n     * @return The existing target DFA state for the given input symbol\n     * {@code t}, or {@code null} if the target state for this edge is not\n     * already cached\n     */\n    getExistingTargetState(s, t) {\n        if (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n            return null;\n        }\n\n        let target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n        if (target === undefined) {\n            target = null;\n        }\n        if (LexerATNSimulator.debug && target !== null) {\n            console.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n        }\n        return target;\n    }\n\n    /**\n     * Compute a target state for an edge in the DFA, and attempt to add the\n     * computed state and corresponding edge to the DFA.\n     *\n     * @param input The input stream\n     * @param s The current DFA state\n     * @param t The next input symbol\n     *\n     * @return The computed target DFA state for the given input symbol\n     * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n     * returns {@link //ERROR}.\n     */\n    computeTargetState(input, s, t) {\n        const reach = new OrderedATNConfigSet();\n        // if we don't find an existing DFA state\n        // Fill reach starting from closure, following t transitions\n        this.getReachableConfigSet(input, s.configs, reach, t);\n\n        if (reach.items.length === 0) { // we got nowhere on t from s\n            if (!reach.hasSemanticContext) {\n                // we got nowhere on t, don't throw out this knowledge; it'd\n                // cause a failover from DFA later.\n                this.addDFAEdge(s, t, ATNSimulator.ERROR);\n            }\n            // stop when we can't match any more char\n            return ATNSimulator.ERROR;\n        }\n        // Add an edge from s to target DFA found/created for reach\n        return this.addDFAEdge(s, t, null, reach);\n    }\n\n    failOrAccept(prevAccept, input, reach, t) {\n        if (this.prevAccept.dfaState !== null) {\n            const lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n            this.accept(input, lexerActionExecutor, this.startIndex,\n                prevAccept.index, prevAccept.line, prevAccept.column);\n            return prevAccept.dfaState.prediction;\n        } else {\n            // if no accept and EOF is first char, return EOF\n            if (t === Token.EOF && input.index === this.startIndex) {\n                return Token.EOF;\n            }\n            throw new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n        }\n    }\n\n    /**\n     * Given a starting configuration set, figure out all ATN configurations\n     * we can reach upon input {@code t}. Parameter {@code reach} is a return\n     * parameter.\n     */\n    getReachableConfigSet(input, closure, reach, t) {\n        // this is used to skip processing for configs which have a lower priority\n        // than a config that already reached an accept state for the same rule\n        let skipAlt = ATN.INVALID_ALT_NUMBER;\n        for (let i = 0; i < closure.items.length; i++) {\n            const cfg = closure.items[i];\n            const currentAltReachedAcceptState = (cfg.alt === skipAlt);\n            if (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n                continue;\n            }\n            if (LexerATNSimulator.debug) {\n                console.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n                    .toString(this.recog, true));\n            }\n            for (let j = 0; j < cfg.state.transitions.length; j++) {\n                const trans = cfg.state.transitions[j]; // for each transition\n                const target = this.getReachableTarget(trans, t);\n                if (target !== null) {\n                    let lexerActionExecutor = cfg.lexerActionExecutor;\n                    if (lexerActionExecutor !== null) {\n                        lexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n                    }\n                    const treatEofAsEpsilon = (t === Token.EOF);\n                    const config = new LexerATNConfig({state: target, lexerActionExecutor: lexerActionExecutor}, cfg);\n                    if (this.closure(input, config, reach,\n                        currentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n                        // any remaining configs for this alt have a lower priority\n                        // than the one that just reached an accept state.\n                        skipAlt = cfg.alt;\n                    }\n                }\n            }\n        }\n    }\n\n    accept(input, lexerActionExecutor, startIndex, index, line, charPos) {\n        if (LexerATNSimulator.debug) {\n            console.log(\"ACTION %s\\n\", lexerActionExecutor);\n        }\n        // seek to after last char in token\n        input.seek(index);\n        this.line = line;\n        this.column = charPos;\n        if (lexerActionExecutor !== null && this.recog !== null) {\n            lexerActionExecutor.execute(this.recog, input, startIndex);\n        }\n    }\n\n    getReachableTarget(trans, t) {\n        if (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n            return trans.target;\n        } else {\n            return null;\n        }\n    }\n\n    computeStartState(input, p) {\n        const initialContext = PredictionContext.EMPTY;\n        const configs = new OrderedATNConfigSet();\n        for (let i = 0; i < p.transitions.length; i++) {\n            const target = p.transitions[i].target;\n            const cfg = new LexerATNConfig({state: target, alt: i + 1, context: initialContext}, null);\n            this.closure(input, cfg, configs, false, false, false);\n        }\n        return configs;\n    }\n\n    /**\n     * Since the alternatives within any lexer decision are ordered by\n     * preference, this method stops pursuing the closure as soon as an accept\n     * state is reached. After the first accept state is reached by depth-first\n     * search from {@code config}, all other (potentially reachable) states for\n     * this rule would have a lower priority.\n     *\n     * @return {Boolean} {@code true} if an accept state is reached, otherwise\n     * {@code false}.\n     */\n    closure(input, config, configs,\n            currentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n        let cfg = null;\n        if (LexerATNSimulator.debug) {\n            console.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n        }\n        if (config.state instanceof RuleStopState) {\n            if (LexerATNSimulator.debug) {\n                if (this.recog !== null) {\n                    console.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n                } else {\n                    console.log(\"closure at rule stop %s\\n\", config);\n                }\n            }\n            if (config.context === null || config.context.hasEmptyPath()) {\n                if (config.context === null || config.context.isEmpty()) {\n                    configs.add(config);\n                    return true;\n                } else {\n                    configs.add(new LexerATNConfig({state: config.state, context: PredictionContext.EMPTY}, config));\n                    currentAltReachedAcceptState = true;\n                }\n            }\n            if (config.context !== null && !config.context.isEmpty()) {\n                for (let i = 0; i < config.context.length; i++) {\n                    if (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n                        const newContext = config.context.getParent(i); // \"pop\" return state\n                        const returnState = this.atn.states[config.context.getReturnState(i)];\n                        cfg = new LexerATNConfig({state: returnState, context: newContext}, config);\n                        currentAltReachedAcceptState = this.closure(input, cfg,\n                            configs, currentAltReachedAcceptState, speculative,\n                            treatEofAsEpsilon);\n                    }\n                }\n            }\n            return currentAltReachedAcceptState;\n        }\n        // optimization\n        if (!config.state.epsilonOnlyTransitions) {\n            if (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n                configs.add(config);\n            }\n        }\n        for (let j = 0; j < config.state.transitions.length; j++) {\n            const trans = config.state.transitions[j];\n            cfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n            if (cfg !== null) {\n                currentAltReachedAcceptState = this.closure(input, cfg, configs,\n                    currentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n            }\n        }\n        return currentAltReachedAcceptState;\n    }\n\n    // side-effect: can alter configs.hasSemanticContext\n    getEpsilonTarget(input, config, trans,\n                     configs, speculative, treatEofAsEpsilon) {\n        let cfg = null;\n        if (trans.serializationType === Transition.RULE) {\n            const newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n            cfg = new LexerATNConfig({state: trans.target, context: newContext}, config);\n        } else if (trans.serializationType === Transition.PRECEDENCE) {\n            throw \"Precedence predicates are not supported in lexers.\";\n        } else if (trans.serializationType === Transition.PREDICATE) {\n            // Track traversing semantic predicates. If we traverse,\n            // we cannot add a DFA state for this \"reach\" computation\n            // because the DFA would not test the predicate again in the\n            // future. Rather than creating collections of semantic predicates\n            // like v3 and testing them on prediction, v4 will test them on the\n            // fly all the time using the ATN not the DFA. This is slower but\n            // semantically it's not used that often. One of the key elements to\n            // this predicate mechanism is not adding DFA states that see\n            // predicates immediately afterwards in the ATN. For example,\n\n            // a : ID {p1}? | ID {p2}? ;\n\n            // should create the start state for rule 'a' (to save start state\n            // competition), but should not create target of ID state. The\n            // collection of ATN states the following ID references includes\n            // states reached by traversing predicates. Since this is when we\n            // test them, we cannot cash the DFA state target of ID.\n\n            if (LexerATNSimulator.debug) {\n                console.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n            }\n            configs.hasSemanticContext = true;\n            if (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n                cfg = new LexerATNConfig({state: trans.target}, config);\n            }\n        } else if (trans.serializationType === Transition.ACTION) {\n            if (config.context === null || config.context.hasEmptyPath()) {\n                // execute actions anywhere in the start rule for a token.\n                //\n                // TODO: if the entry rule is invoked recursively, some\n                // actions may be executed during the recursive call. The\n                // problem can appear when hasEmptyPath() is true but\n                // isEmpty() is false. In this case, the config needs to be\n                // split into two contexts - one with just the empty path\n                // and another with everything but the empty path.\n                // Unfortunately, the current algorithm does not allow\n                // getEpsilonTarget to return two configurations, so\n                // additional modifications are needed before we can support\n                // the split operation.\n                const lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n                    this.atn.lexerActions[trans.actionIndex]);\n                cfg = new LexerATNConfig({state: trans.target, lexerActionExecutor: lexerActionExecutor}, config);\n            } else {\n                // ignore actions in referenced rules\n                cfg = new LexerATNConfig({state: trans.target}, config);\n            }\n        } else if (trans.serializationType === Transition.EPSILON) {\n            cfg = new LexerATNConfig({state: trans.target}, config);\n        } else if (trans.serializationType === Transition.ATOM ||\n            trans.serializationType === Transition.RANGE ||\n            trans.serializationType === Transition.SET) {\n            if (treatEofAsEpsilon) {\n                if (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n                    cfg = new LexerATNConfig({state: trans.target}, config);\n                }\n            }\n        }\n        return cfg;\n    }\n\n    /**\n     * Evaluate a predicate specified in the lexer.\n     *\n     * <p>If {@code speculative} is {@code true}, this method was called before\n     * {@link //consume} for the matched character. This method should call\n     * {@link //consume} before evaluating the predicate to ensure position\n     * sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n     * and {@link Lexer//getcolumn}, properly reflect the current\n     * lexer state. This method should restore {@code input} and the simulator\n     * to the original state before returning (i.e. undo the actions made by the\n     * call to {@link //consume}.</p>\n     *\n     * @param input The input stream.\n     * @param ruleIndex The rule containing the predicate.\n     * @param predIndex The index of the predicate within the rule.\n     * @param speculative {@code true} if the current index in {@code input} is\n     * one character before the predicate's location.\n     *\n     * @return {@code true} if the specified predicate evaluates to\n     * {@code true}.\n     */\n    evaluatePredicate(input, ruleIndex,\n                      predIndex, speculative) {\n        // assume true if no recognizer was provided\n        if (this.recog === null) {\n            return true;\n        }\n        if (!speculative) {\n            return this.recog.sempred(null, ruleIndex, predIndex);\n        }\n        const savedcolumn = this.column;\n        const savedLine = this.line;\n        const index = input.index;\n        const marker = input.mark();\n        try {\n            this.consume(input);\n            return this.recog.sempred(null, ruleIndex, predIndex);\n        } finally {\n            this.column = savedcolumn;\n            this.line = savedLine;\n            input.seek(index);\n            input.release(marker);\n        }\n    }\n\n    captureSimState(settings, input, dfaState) {\n        settings.index = input.index;\n        settings.line = this.line;\n        settings.column = this.column;\n        settings.dfaState = dfaState;\n    }\n\n    addDFAEdge(from_, tk, to, cfgs) {\n        if (to === undefined) {\n            to = null;\n        }\n        if (cfgs === undefined) {\n            cfgs = null;\n        }\n        if (to === null && cfgs !== null) {\n            // leading to this call, ATNConfigSet.hasSemanticContext is used as a\n            // marker indicating dynamic predicate evaluation makes this edge\n            // dependent on the specific input sequence, so the static edge in the\n            // DFA should be omitted. The target DFAState is still created since\n            // execATN has the ability to resynchronize with the DFA state cache\n            // following the predicate evaluation step.\n            //\n            // TJP notes: next time through the DFA, we see a pred again and eval.\n            // If that gets us to a previously created (but dangling) DFA\n            // state, we can continue in pure DFA mode from there.\n            // /\n            const suppressEdge = cfgs.hasSemanticContext;\n            cfgs.hasSemanticContext = false;\n\n            to = this.addDFAState(cfgs);\n\n            if (suppressEdge) {\n                return to;\n            }\n        }\n        // add the edge\n        if (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n            // Only track edges within the DFA bounds\n            return to;\n        }\n        if (LexerATNSimulator.debug) {\n            console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n        }\n        if (from_.edges === null) {\n            // make room for tokens 1..n and -1 masquerading as index 0\n            from_.edges = [];\n        }\n        from_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n        return to;\n    }\n\n    /**\n     * Add a new DFA state if there isn't one with this set of\n     * configurations already. This method also detects the first\n     * configuration containing an ATN rule stop state. Later, when\n     * traversing the DFA, we will know which rule to accept.\n     */\n    addDFAState(configs) {\n        const proposed = new DFAState(null, configs);\n        let firstConfigWithRuleStopState = null;\n        for (let i = 0; i < configs.items.length; i++) {\n            const cfg = configs.items[i];\n            if (cfg.state instanceof RuleStopState) {\n                firstConfigWithRuleStopState = cfg;\n                break;\n            }\n        }\n        if (firstConfigWithRuleStopState !== null) {\n            proposed.isAcceptState = true;\n            proposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n            proposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n        }\n        const dfa = this.decisionToDFA[this.mode];\n        const existing = dfa.states.get(proposed);\n        if (existing !== null) {\n            return existing;\n        }\n        const newState = proposed;\n        newState.stateNumber = dfa.states.length;\n        configs.setReadonly(true);\n        newState.configs = configs;\n        dfa.states.add(newState);\n        return newState;\n    }\n\n    getDFA(mode) {\n        return this.decisionToDFA[mode];\n    }\n\n// Get the text matched so far for the current token.\n    getText(input) {\n        // index is first lookahead char, don't include.\n        return input.getText(this.startIndex, input.index - 1);\n    }\n\n    consume(input) {\n        const curChar = input.LA(1);\n        if (curChar === \"\\n\".charCodeAt(0)) {\n            this.line += 1;\n            this.column = 0;\n        } else {\n            this.column += 1;\n        }\n        input.consume();\n    }\n\n    getTokenName(tt) {\n        if (tt === -1) {\n            return \"EOF\";\n        } else {\n            return \"'\" + String.fromCharCode(tt) + \"'\";\n        }\n    }\n}\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * Map a predicate to a predicted alternative.\n */\nexport default class PredPrediction {\n    constructor(pred, alt) {\n        this.alt = alt;\n        this.pred = pred;\n    }\n\n    toString() {\n        return \"(\" + this.pred + \", \" + this.alt + \")\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class AltDict {\n\n    constructor() {\n        this.data = {};\n    }\n\n    get(key) {\n        return this.data[\"k-\" + key] || null;\n    }\n\n    set(key, value) {\n        this.data[\"k-\" + key] = value;\n    }\n\n    values() {\n        return Object.keys(this.data).filter(key => key.startsWith(\"k-\")).map(key => this.data[key], this);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport ATNConfig from './ATNConfig.js';\nimport SemanticContext from './SemanticContext.js';\nimport BitSet from \"../misc/BitSet.js\";\nimport AltDict from \"../misc/AltDict.js\";\nimport HashCode from \"../misc/HashCode.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * This enumeration defines the prediction modes available in ANTLR 4 along with\n * utility methods for analyzing configuration sets for conflicts and/or\n * ambiguities.\n */\nconst PredictionMode = {\n    /**\n     * The SLL(*) prediction mode. This prediction mode ignores the current\n     * parser context when making predictions. This is the fastest prediction\n     * mode, and provides correct results for many grammars. This prediction\n     * mode is more powerful than the prediction mode provided by ANTLR 3, but\n     * may result in syntax errors for grammar and input combinations which are\n     * not SLL.\n     *\n     * <p>\n     * When using this prediction mode, the parser will either return a correct\n     * parse tree (i.e. the same parse tree that would be returned with the\n     * {@link //LL} prediction mode), or it will report a syntax error. If a\n     * syntax error is encountered when using the {@link //SLL} prediction mode,\n     * it may be due to either an actual syntax error in the input or indicate\n     * that the particular combination of grammar and input requires the more\n     * powerful {@link //LL} prediction abilities to complete successfully.</p>\n     *\n     * <p>\n     * This prediction mode does not provide any guarantees for prediction\n     * behavior for syntactically-incorrect inputs.</p>\n     */\n    SLL: 0,\n\n    /**\n     * The LL(*) prediction mode. This prediction mode allows the current parser\n     * context to be used for resolving SLL conflicts that occur during\n     * prediction. This is the fastest prediction mode that guarantees correct\n     * parse results for all combinations of grammars with syntactically correct\n     * inputs.\n     *\n     * <p>\n     * When using this prediction mode, the parser will make correct decisions\n     * for all syntactically-correct grammar and input combinations. However, in\n     * cases where the grammar is truly ambiguous this prediction mode might not\n     * report a precise answer for <em>exactly which</em> alternatives are\n     * ambiguous.</p>\n     *\n     * <p>\n     * This prediction mode does not provide any guarantees for prediction\n     * behavior for syntactically-incorrect inputs.</p>\n     */\n    LL: 1,\n\n    /**\n     *\n     * The LL(*) prediction mode with exact ambiguity detection. In addition to\n     * the correctness guarantees provided by the {@link //LL} prediction mode,\n     * this prediction mode instructs the prediction algorithm to determine the\n     * complete and exact set of ambiguous alternatives for every ambiguous\n     * decision encountered while parsing.\n     *\n     * <p>\n     * This prediction mode may be used for diagnosing ambiguities during\n     * grammar development. Due to the performance overhead of calculating sets\n     * of ambiguous alternatives, this prediction mode should be avoided when\n     * the exact results are not necessary.</p>\n     *\n     * <p>\n     * This prediction mode does not provide any guarantees for prediction\n     * behavior for syntactically-incorrect inputs.</p>\n     */\n    LL_EXACT_AMBIG_DETECTION: 2,\n\n    /**\n     *\n     * Computes the SLL prediction termination condition.\n     *\n     * <p>\n     * This method computes the SLL prediction termination condition for both of\n     * the following cases.</p>\n     *\n     * <ul>\n     * <li>The usual SLL+LL fallback upon SLL conflict</li>\n     * <li>Pure SLL without LL fallback</li>\n     * </ul>\n     *\n     * <p><strong>COMBINED SLL+LL PARSING</strong></p>\n     *\n     * <p>When LL-fallback is enabled upon SLL conflict, correct predictions are\n     * ensured regardless of how the termination condition is computed by this\n     * method. Due to the substantially higher cost of LL prediction, the\n     * prediction should only fall back to LL when the additional lookahead\n     * cannot lead to a unique SLL prediction.</p>\n     *\n     * <p>Assuming combined SLL+LL parsing, an SLL configuration set with only\n     * conflicting subsets should fall back to full LL, even if the\n     * configuration sets don't resolve to the same alternative (e.g.\n     * {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n     * configuration, SLL could continue with the hopes that more lookahead will\n     * resolve via one of those non-conflicting configurations.</p>\n     *\n     * <p>Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n     * stops when it sees only conflicting configuration subsets. In contrast,\n     * full LL keeps going when there is uncertainty.</p>\n     *\n     * <p><strong>HEURISTIC</strong></p>\n     *\n     * <p>As a heuristic, we stop prediction when we see any conflicting subset\n     * unless we see a state that only has one alternative associated with it.\n     * The single-alt-state thing lets prediction continue upon rules like\n     * (otherwise, it would admit defeat too soon):</p>\n     *\n     * <p>{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}</p>\n     *\n     * <p>When the ATN simulation reaches the state before {@code ';'}, it has a\n     * DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n     * {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n     * processing this node because alternative to has another way to continue,\n     * via {@code [6|2|[]]}.</p>\n     *\n     * <p>It also let's us continue for this rule:</p>\n     *\n     * <p>{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}</p>\n     *\n     * <p>After matching input A, we reach the stop state for rule A, state 1.\n     * State 8 is the state right before B. Clearly alternatives 1 and 2\n     * conflict and no amount of further lookahead will separate the two.\n     * However, alternative 3 will be able to continue and so we do not stop\n     * working on this state. In the previous example, we're concerned with\n     * states associated with the conflicting alternatives. Here alt 3 is not\n     * associated with the conflicting configs, but since we can continue\n     * looking for input reasonably, don't declare the state done.</p>\n     *\n     * <p><strong>PURE SLL PARSING</strong></p>\n     *\n     * <p>To handle pure SLL parsing, all we have to do is make sure that we\n     * combine stack contexts for configurations that differ only by semantic\n     * predicate. From there, we can do the usual SLL termination heuristic.</p>\n     *\n     * <p><strong>PREDICATES IN SLL+LL PARSING</strong></p>\n     *\n     * <p>SLL decisions don't evaluate predicates until after they reach DFA stop\n     * states because they need to create the DFA cache that works in all\n     * semantic situations. In contrast, full LL evaluates predicates collected\n     * during start state computation so it can ignore predicates thereafter.\n     * This means that SLL termination detection can totally ignore semantic\n     * predicates.</p>\n     *\n     * <p>Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n     * semantic predicate contexts so we might see two configurations like the\n     * following.</p>\n     *\n     * <p>{@code (s, 1, x, {}), (s, 1, x', {p})}</p>\n     *\n     * <p>Before testing these configurations against others, we have to merge\n     * {@code x} and {@code x'} (without modifying the existing configurations).\n     * For example, we test {@code (x+x')==x''} when looking for conflicts in\n     * the following configurations.</p>\n     *\n     * <p>{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}</p>\n     *\n     * <p>If the configuration set has predicates (as indicated by\n     * {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n     * the configurations to strip out all of the predicates so that a standard\n     * {@link ATNConfigSet} will merge everything ignoring predicates.</p>\n     */\n    hasSLLConflictTerminatingPrediction: function( mode, configs) {\n        // Configs in rule stop states indicate reaching the end of the decision\n        // rule (local context) or end of start rule (full context). If all\n        // configs meet this condition, then none of the configurations is able\n        // to match additional input so we terminate prediction.\n        //\n        if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n            return true;\n        }\n        // pure SLL mode parsing\n        if (mode === PredictionMode.SLL) {\n            // Don't bother with combining configs from different semantic\n            // contexts if we can fail over to full LL; costs more time\n            // since we'll often fail over anyway.\n            if (configs.hasSemanticContext) {\n                // dup configs, tossing out semantic predicates\n                const dup = new ATNConfigSet();\n                for(let i=0;i<configs.items.length;i++) {\n                    let c = configs.items[i];\n                    c = new ATNConfig({semanticContext:SemanticContext.NONE}, c);\n                    dup.add(c);\n                }\n                configs = dup;\n            }\n            // now we have combined contexts for configs with dissimilar preds\n        }\n        // pure SLL or combined SLL+LL mode parsing\n        const altsets = PredictionMode.getConflictingAltSubsets(configs);\n        return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs);\n    },\n\n    /**\n     * Checks if any configuration in {@code configs} is in a\n     * {@link RuleStopState}. Configurations meeting this condition have reached\n     * the end of the decision rule (local context) or end of start rule (full\n     * context).\n     *\n     * @param configs the configuration set to test\n     * @return {@code true} if any configuration in {@code configs} is in a\n     * {@link RuleStopState}, otherwise {@code false}\n     */\n    hasConfigInRuleStopState: function(configs) {\n        for(let i=0;i<configs.items.length;i++) {\n            const c = configs.items[i];\n            if (c.state instanceof RuleStopState) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n    /**\n     * Checks if all configurations in {@code configs} are in a\n     * {@link RuleStopState}. Configurations meeting this condition have reached\n     * the end of the decision rule (local context) or end of start rule (full\n     * context).\n     *\n     * @param configs the configuration set to test\n     * @return {@code true} if all configurations in {@code configs} are in a\n     * {@link RuleStopState}, otherwise {@code false}\n     */\n    allConfigsInRuleStopStates: function(configs) {\n        for(let i=0;i<configs.items.length;i++) {\n            const c = configs.items[i];\n            if (!(c.state instanceof RuleStopState)) {\n                return false;\n            }\n        }\n        return true;\n    },\n\n    /**\n     *\n     * Full LL prediction termination.\n     *\n     * <p>Can we stop looking ahead during ATN simulation or is there some\n     * uncertainty as to which alternative we will ultimately pick, after\n     * consuming more input? Even if there are partial conflicts, we might know\n     * that everything is going to resolve to the same minimum alternative. That\n     * means we can stop since no more lookahead will change that fact. On the\n     * other hand, there might be multiple conflicts that resolve to different\n     * minimums. That means we need more look ahead to decide which of those\n     * alternatives we should predict.</p>\n     *\n     * <p>The basic idea is to split the set of configurations {@code C}, into\n     * conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n     * non-conflicting configurations. Two configurations conflict if they have\n     * identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n     * but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n     * and {@code (s, j, ctx, _)} for {@code i!=j}.</p>\n     *\n     * <p>Reduce these configuration subsets to the set of possible alternatives.\n     * You can compute the alternative subsets in one pass as follows:</p>\n     *\n     * <p>{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n     * {@code C} holding {@code s} and {@code ctx} fixed.</p>\n     *\n     * <p>Or in pseudo-code, for each configuration {@code c} in {@code C}:</p>\n     *\n     * <pre>\n     * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n     * alt and not pred\n     * </pre>\n     *\n     * <p>The values in {@code map} are the set of {@code A_s,ctx} sets.</p>\n     *\n     * <p>If {@code |A_s,ctx|=1} then there is no conflict associated with\n     * {@code s} and {@code ctx}.</p>\n     *\n     * <p>Reduce the subsets to singletons by choosing a minimum of each subset. If\n     * the union of these alternative subsets is a singleton, then no amount of\n     * more lookahead will help us. We will always pick that alternative. If,\n     * however, there is more than one alternative, then we are uncertain which\n     * alternative to predict and must continue looking for resolution. We may\n     * or may not discover an ambiguity in the future, even if there are no\n     * conflicting subsets this round.</p>\n     *\n     * <p>The biggest sin is to terminate early because it means we've made a\n     * decision but were uncertain as to the eventual outcome. We haven't used\n     * enough lookahead. On the other hand, announcing a conflict too late is no\n     * big deal; you will still have the conflict. It's just inefficient. It\n     * might even look until the end of file.</p>\n     *\n     * <p>No special consideration for semantic predicates is required because\n     * predicates are evaluated on-the-fly for full LL prediction, ensuring that\n     * no configuration contains a semantic context during the termination\n     * check.</p>\n     *\n     * <p><strong>CONFLICTING CONFIGS</strong></p>\n     *\n     * <p>Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n     * when {@code i!=j} but {@code x=x'}. Because we merge all\n     * {@code (s, i, _)} configurations together, that means that there are at\n     * most {@code n} configurations associated with state {@code s} for\n     * {@code n} possible alternatives in the decision. The merged stacks\n     * complicate the comparison of configuration contexts {@code x} and\n     * {@code x'}. Sam checks to see if one is a subset of the other by calling\n     * merge and checking to see if the merged result is either {@code x} or\n     * {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n     * is the superset, then {@code i} is the only possible prediction since the\n     * others resolve to {@code min(i)} as well. However, if {@code x} is\n     * associated with {@code j>i} then at least one stack configuration for\n     * {@code j} is not in conflict with alternative {@code i}. The algorithm\n     * should keep going, looking for more lookahead due to the uncertainty.</p>\n     *\n     * <p>For simplicity, I'm doing a equality check between {@code x} and\n     * {@code x'} that lets the algorithm continue to consume lookahead longer\n     * than necessary. The reason I like the equality is of course the\n     * simplicity but also because that is the test you need to detect the\n     * alternatives that are actually in conflict.</p>\n     *\n     * <p><strong>CONTINUE/STOP RULE</strong></p>\n     *\n     * <p>Continue if union of resolved alternative sets from non-conflicting and\n     * conflicting alternative subsets has more than one alternative. We are\n     * uncertain about which alternative to predict.</p>\n     *\n     * <p>The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n     * alternatives are still in the running for the amount of input we've\n     * consumed at this point. The conflicting sets let us to strip away\n     * configurations that won't lead to more states because we resolve\n     * conflicts to the configuration with a minimum alternate for the\n     * conflicting set.</p>\n     *\n     * <p><strong>CASES</strong></p>\n     *\n     * <ul>\n     *\n     * <li>no conflicts and more than 1 alternative in set =&gt; continue</li>\n     *\n     * <li> {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n     * {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n     * {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n     * {@code {1,3}} =&gt; continue\n     * </li>\n     *\n     * <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n     * {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n     * {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n     * {@code {1}} =&gt; stop and predict 1</li>\n     *\n     * <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n     * {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n     * {@code {1}} = {@code {1}} =&gt; stop and predict 1, can announce\n     * ambiguity {@code {1,2}}</li>\n     *\n     * <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n     * {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n     * {@code {2}} = {@code {1,2}} =&gt; continue</li>\n     *\n     * <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n     * {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n     * {@code {3}} = {@code {1,3}} =&gt; continue</li>\n     *\n     * </ul>\n     *\n     * <p><strong>EXACT AMBIGUITY DETECTION</strong></p>\n     *\n     * <p>If all states report the same conflicting set of alternatives, then we\n     * know we have the exact ambiguity set.</p>\n     *\n     * <p><code>|A_<em>i</em>|&gt;1</code> and\n     * <code>A_<em>i</em> = A_<em>j</em></code> for all <em>i</em>, <em>j</em>.</p>\n     *\n     * <p>In other words, we continue examining lookahead until all {@code A_i}\n     * have more than one alternative and all {@code A_i} are the same. If\n     * {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n     * because the resolved set is {@code {1}}. To determine what the real\n     * ambiguity is, we have to know whether the ambiguity is between one and\n     * two or one and three so we keep going. We can only stop prediction when\n     * we need exact ambiguity detection when the sets look like\n     * {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...</p>\n     */\n    resolvesToJustOneViableAlt: function(altsets) {\n        return PredictionMode.getSingleViableAlt(altsets);\n    },\n\n    /**\n     * Determines if every alternative subset in {@code altsets} contains more\n     * than one alternative.\n     *\n     * @param altsets a collection of alternative subsets\n     * @return {@code true} if every {@link BitSet} in {@code altsets} has\n     * {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n     */\n    allSubsetsConflict: function(altsets) {\n        return ! PredictionMode.hasNonConflictingAltSet(altsets);\n    },\n    /**\n     * Determines if any single alternative subset in {@code altsets} contains\n     * exactly one alternative.\n     *\n     * @param altsets a collection of alternative subsets\n     * @return {@code true} if {@code altsets} contains a {@link BitSet} with\n     * {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n     */\n    hasNonConflictingAltSet: function(altsets) {\n        for(let i=0;i<altsets.length;i++) {\n            const alts = altsets[i];\n            if (alts.length===1) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n\n    /**\n     * Determines if any single alternative subset in {@code altsets} contains\n     * more than one alternative.\n     *\n     * @param altsets a collection of alternative subsets\n     * @return {@code true} if {@code altsets} contains a {@link BitSet} with\n     * {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n     */\n    hasConflictingAltSet: function(altsets) {\n        for(let i=0;i<altsets.length;i++) {\n            const alts = altsets[i];\n            if (alts.length>1) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n\n    /**\n     * Determines if every alternative subset in {@code altsets} is equivalent.\n     *\n     * @param altsets a collection of alternative subsets\n     * @return {@code true} if every member of {@code altsets} is equal to the\n     * others, otherwise {@code false}\n     */\n    allSubsetsEqual: function(altsets) {\n        let first = null;\n        for(let i=0;i<altsets.length;i++) {\n            const alts = altsets[i];\n            if (first === null) {\n                first = alts;\n            } else if (alts!==first) {\n                return false;\n            }\n        }\n        return true;\n    },\n\n\n    /**\n     * Returns the unique alternative predicted by all alternative subsets in\n     * {@code altsets}. If no such alternative exists, this method returns\n     * {@link ATN//INVALID_ALT_NUMBER}.\n     *\n     * @param altsets a collection of alternative subsets\n     */\n    getUniqueAlt: function(altsets) {\n        const all = PredictionMode.getAlts(altsets);\n        if (all.length===1) {\n            return all.minValue();\n        } else {\n            return ATN.INVALID_ALT_NUMBER;\n        }\n    },\n\n    /**\n     * Gets the complete set of represented alternatives for a collection of\n     * alternative subsets. This method returns the union of each {@link BitSet}\n     * in {@code altsets}.\n     *\n     * @param altsets a collection of alternative subsets\n     * @return the set of represented alternatives in {@code altsets}\n     */\n    getAlts: function(altsets) {\n        const all = new BitSet();\n        altsets.map( function(alts) { all.or(alts); });\n        return all;\n    },\n\n    /**\n     * This function gets the conflicting alt subsets from a configuration set.\n     * For each configuration {@code c} in {@code configs}:\n     *\n     * <pre>\n     * map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n     * alt and not pred\n     * </pre>\n     */\n    getConflictingAltSubsets: function(configs) {\n        const configToAlts = new HashMap();\n        configToAlts.hashFunction = function(cfg) { HashCode.hashStuff(cfg.state.stateNumber, cfg.context); };\n        configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber === c2.state.stateNumber && c1.context.equals(c2.context);};\n        configs.items.map(function(cfg) {\n            let alts = configToAlts.get(cfg);\n            if (alts === null) {\n                alts = new BitSet();\n                configToAlts.set(cfg, alts);\n            }\n            alts.add(cfg.alt);\n        });\n        return configToAlts.getValues();\n    },\n\n    /**\n     * Get a map from state to alt subset from a configuration set. For each\n     * configuration {@code c} in {@code configs}:\n     *\n     * <pre>\n     * map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n     * </pre>\n     */\n    getStateToAltMap: function(configs) {\n        const m = new AltDict();\n        configs.items.map(function(c) {\n            let alts = m.get(c.state);\n            if (alts === null) {\n                alts = new BitSet();\n                m.set(c.state, alts);\n            }\n            alts.add(c.alt);\n        });\n        return m;\n    },\n\n    hasStateAssociatedWithOneAlt: function(configs) {\n        const values = PredictionMode.getStateToAltMap(configs).values();\n        for(let i=0;i<values.length;i++) {\n            if (values[i].length===1) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n    getSingleViableAlt: function(altsets) {\n        let result = null;\n        for(let i=0;i<altsets.length;i++) {\n            const alts = altsets[i];\n            const minAlt = alts.minValue();\n            if(result===null) {\n                result = minAlt;\n            } else if(result!==minAlt) { // more than 1 viable alt\n                return ATN.INVALID_ALT_NUMBER;\n            }\n        }\n        return result;\n    }\n};\n\nexport default PredictionMode;\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * Indicates that the parser could not decide which of two or more paths\n * to take based upon the remaining input. It tracks the starting token\n * of the offending input and also knows where the parser was\n * in the various paths when the error. Reported by reportNoViableAlternative()\n */\n\nexport default class NoViableAltException extends RecognitionException {\n    constructor(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n        ctx = ctx || recognizer._ctx;\n        offendingToken = offendingToken || recognizer.getCurrentToken();\n        startToken = startToken || recognizer.getCurrentToken();\n        input = input || recognizer.getInputStream();\n        super({message: \"\", recognizer: recognizer, input: input, ctx: ctx});\n        // Which configurations did we try at input.index() that couldn't match\n        // input.LT(1)?//\n        this.deadEndConfigs = deadEndConfigs;\n        // The token object at the start index; the input stream might\n        // not be buffering tokens so get a reference to it. (At the\n        // time the error occurred, of course the stream needs to keep a\n        // buffer all of the tokens but later we might not have access to those.)\n        this.startToken = startToken;\n        this.offendingToken = offendingToken;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport HashMap from \"../misc/HashMap.js\";\n\nexport default class DoubleDict {\n\n    constructor(defaultMapCtor) {\n        this.defaultMapCtor = defaultMapCtor || HashMap;\n        this.cacheMap = new this.defaultMapCtor();\n    }\n\n    get(a, b) {\n        const d = this.cacheMap.get(a) || null;\n        return d === null ? null : (d.get(b) || null);\n    }\n\n    set(a, b, o) {\n        let d = this.cacheMap.get(a) || null;\n        if (d === null) {\n            d = new this.defaultMapCtor();\n            this.cacheMap.set(a, d);\n        }\n        d.set(b, o);\n    }\n\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport ATNState from '../state/ATNState.js';\nimport RuleStopState from '../state/RuleStopState.js';\nimport ATNConfig from './ATNConfig.js';\nimport ATNConfigSet from './ATNConfigSet.js';\nimport Token from '../Token.js';\nimport DFAState from '../dfa/DFAState.js';\nimport PredPrediction from '../dfa/PredPrediction.js';\nimport ATNSimulator from './ATNSimulator.js';\nimport PredictionMode from './PredictionMode.js';\nimport RuleContext from '../context/RuleContext.js';\nimport SemanticContext from './SemanticContext.js';\nimport PredictionContext from '../context/PredictionContext.js';\nimport Interval from '../misc/Interval.js';\nimport Transition from '../transition/Transition.js';\nimport SetTransition from '../transition/SetTransition.js';\nimport NotSetTransition from '../transition/NotSetTransition.js';\nimport RuleTransition from '../transition/RuleTransition.js';\nimport ActionTransition from '../transition/ActionTransition.js';\nimport NoViableAltException from '../error/NoViableAltException.js';\nimport SingletonPredictionContext from '../context/SingletonPredictionContext.js';\nimport { predictionContextFromRuleContext } from '../context/PredictionContextUtils.js';\nimport AtomTransition from \"../transition/AtomTransition.js\";\nimport arrayToString from \"../utils/arrayToString.js\";\nimport BitSet from \"../misc/BitSet.js\";\nimport DoubleDict from \"../utils/DoubleDict.js\";\nimport HashSet from \"../misc/HashSet.js\";\n\n/**\n * The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n *\n * <p>\n * The basic complexity of the adaptive strategy makes it harder to understand.\n * We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n * requests go through the DFA first. If they reach a state without an edge for\n * the current symbol, the algorithm fails over to the ATN simulation to\n * complete the DFA path for the current input (until it finds a conflict state\n * or uniquely predicting state).</p>\n *\n * <p>\n * All of that is done without using the outer context because we want to create\n * a DFA that is not dependent upon the rule invocation stack when we do a\n * prediction. One DFA works in all contexts. We avoid using context not\n * necessarily because it's slower, although it can be, but because of the DFA\n * caching problem. The closure routine only considers the rule invocation stack\n * created during prediction beginning in the decision rule. For example, if\n * prediction occurs without invoking another rule's ATN, there are no context\n * stacks in the configurations. When lack of context leads to a conflict, we\n * don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n * strategy (versus full LL(*)).</p>\n *\n * <p>\n * When SLL yields a configuration set with conflict, we rewind the input and\n * retry the ATN simulation, this time using full outer context without adding\n * to the DFA. Configuration context stacks will be the full invocation stacks\n * from the start rule. If we get a conflict using full context, then we can\n * definitively say we have a true ambiguity for that input sequence. If we\n * don't get a conflict, it implies that the decision is sensitive to the outer\n * context. (It is not context-sensitive in the sense of context-sensitive\n * grammars.)</p>\n *\n * <p>\n * The next time we reach this DFA state with an SLL conflict, through DFA\n * simulation, we will again retry the ATN simulation using full context mode.\n * This is slow because we can't save the results and have to \"interpret\" the\n * ATN each time we get that input.</p>\n *\n * <p>\n * <strong>CACHING FULL CONTEXT PREDICTIONS</strong></p>\n *\n * <p>\n * We could cache results from full context to predicted alternative easily and\n * that saves a lot of time but doesn't work in presence of predicates. The set\n * of visible predicates from the ATN start state changes depending on the\n * context, because closure can fall off the end of a rule. I tried to cache\n * tuples (stack context, semantic context, predicted alt) but it was slower\n * than interpreting and much more complicated. Also required a huge amount of\n * memory. The goal is not to create the world's fastest parser anyway. I'd like\n * to keep this algorithm simple. By launching multiple threads, we can improve\n * the speed of parsing across a large number of files.</p>\n *\n * <p>\n * There is no strict ordering between the amount of input used by SLL vs LL,\n * which makes it really hard to build a cache for full context. Let's say that\n * we have input A B C that leads to an SLL conflict with full context X. That\n * implies that using X we might only use A B but we could also use A B C D to\n * resolve conflict. Input A B C D could predict alternative 1 in one position\n * in the input and A B C E could predict alternative 2 in another position in\n * input. The conflicting SLL configurations could still be non-unique in the\n * full context prediction, which would lead us to requiring more input than the\n * original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n * input\tused during the previous prediction. That amounts to a cache that maps\n * X to a specific DFA for that context.</p>\n *\n * <p>\n * Something should be done for left-recursive expression predictions. They are\n * likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n * with full LL thing Sam does.</p>\n *\n * <p>\n * <strong>AVOIDING FULL CONTEXT PREDICTION</strong></p>\n *\n * <p>\n * We avoid doing full context retry when the outer context is empty, we did not\n * dip into the outer context by falling off the end of the decision state rule,\n * or when we force SLL mode.</p>\n *\n * <p>\n * As an example of the not dip into outer context case, consider as super\n * constructor calls versus function calls. One grammar might look like\n * this:</p>\n *\n * <pre>\n * ctorBody\n *   : '{' superCall? stat* '}'\n *   ;\n * </pre>\n *\n * <p>\n * Or, you might see something like</p>\n *\n * <pre>\n * stat\n *   : superCall ';'\n *   | expression ';'\n *   | ...\n *   ;\n * </pre>\n *\n * <p>\n * In both cases I believe that no closure operations will dip into the outer\n * context. In the first case ctorBody in the worst case will stop at the '}'.\n * In the 2nd case it should stop at the ';'. Both cases should stay within the\n * entry rule and not dip into the outer context.</p>\n *\n * <p>\n * <strong>PREDICATES</strong></p>\n *\n * <p>\n * Predicates are always evaluated if present in either SLL or LL both. SLL and\n * LL simulation deals with predicates differently. SLL collects predicates as\n * it performs closure operations like ANTLR v3 did. It delays predicate\n * evaluation until it reaches and accept state. This allows us to cache the SLL\n * ATN simulation whereas, if we had evaluated predicates on-the-fly during\n * closure, the DFA state configuration sets would be different and we couldn't\n * build up a suitable DFA.</p>\n *\n * <p>\n * When building a DFA accept state during ATN simulation, we evaluate any\n * predicates and return the sole semantically valid alternative. If there is\n * more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n * we throw an exception. Alternatives without predicates act like they have\n * true predicates. The simple way to think about it is to strip away all\n * alternatives with false predicates and choose the minimum alternative that\n * remains.</p>\n *\n * <p>\n * When we start in the DFA and reach an accept state that's predicated, we test\n * those and return the minimum semantically viable alternative. If no\n * alternatives are viable, we throw an exception.</p>\n *\n * <p>\n * During full LL ATN simulation, closure always evaluates predicates and\n * on-the-fly. This is crucial to reducing the configuration set size during\n * closure. It hits a landmine when parsing with the Java grammar, for example,\n * without this on-the-fly evaluation.</p>\n *\n * <p>\n * <strong>SHARING DFA</strong></p>\n *\n * <p>\n * All instances of the same parser share the same decision DFAs through a\n * static field. Each instance gets its own ATN simulator but they share the\n * same {@link //decisionToDFA} field. They also share a\n * {@link PredictionContextCache} object that makes sure that all\n * {@link PredictionContext} objects are shared among the DFA states. This makes\n * a big size difference.</p>\n *\n * <p>\n * <strong>THREAD SAFETY</strong></p>\n *\n * <p>\n * The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n * it adds a new DFA object to that array. {@link //addDFAEdge}\n * locks on the DFA for the current decision when setting the\n * {@link DFAState//edges} field. {@link //addDFAState} locks on\n * the DFA for the current decision when looking up a DFA state to see if it\n * already exists. We must make sure that all requests to add DFA states that\n * are equivalent result in the same shared DFA object. This is because lots of\n * threads will be trying to update the DFA at once. The\n * {@link //addDFAState} method also locks inside the DFA lock\n * but this time on the shared context cache when it rebuilds the\n * configurations' {@link PredictionContext} objects using cached\n * subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n * safe as long as we can guarantee that all threads referencing\n * {@code s.edge[t]} get the same physical target {@link DFAState}, or\n * {@code null}. Once into the DFA, the DFA simulation does not reference the\n * {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n * targets. The DFA simulator will either find {@link DFAState//edges} to be\n * {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n * {@code dfa.edges[t]} to be non-null. The\n * {@link //addDFAEdge} method could be racing to set the field\n * but in either case the DFA simulator works; if {@code null}, and requests ATN\n * simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n * way it will work because it's not doing a test and set operation.</p>\n *\n * <p>\n * <strong>Starting with SLL then failing to combined SLL/LL (Two-Stage\n * Parsing)</strong></p>\n *\n * <p>\n * Sam pointed out that if SLL does not give a syntax error, then there is no\n * point in doing full LL, which is slower. We only have to try LL if we get a\n * syntax error. For maximum speed, Sam starts the parser set to pure SLL\n * mode with the {@link BailErrorStrategy}:</p>\n *\n * <pre>\n * parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n * parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n * </pre>\n *\n * <p>\n * If it does not get a syntax error, then we're done. If it does get a syntax\n * error, we need to retry with the combined SLL/LL strategy.</p>\n *\n * <p>\n * The reason this works is as follows. If there are no SLL conflicts, then the\n * grammar is SLL (at least for that input set). If there is an SLL conflict,\n * the full LL analysis must yield a set of viable alternatives which is a\n * subset of the alternatives reported by SLL. If the LL set is a singleton,\n * then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n * set, the decision is SLL. If the LL set has size &gt; 1, then that decision\n * is truly ambiguous on the current input. If the LL set is smaller, then the\n * SLL conflict resolution might choose an alternative that the full LL would\n * rule out as a possibility based upon better context information. If that's\n * the case, then the SLL parse will definitely get an error because the full LL\n * analysis says it's not viable. If SLL conflict resolution chooses an\n * alternative within the LL set, them both SLL and LL would choose the same\n * alternative because they both choose the minimum of multiple conflicting\n * alternatives.</p>\n *\n * <p>\n * Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n * a smaller LL set called <em>s</em>. If <em>s</em> is {@code {2, 3}}, then SLL\n * parsing will get an error because SLL will pursue alternative 1. If\n * <em>s</em> is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n * choose the same alternative because alternative one is the minimum of either\n * set. If <em>s</em> is {@code {2}} or {@code {3}} then SLL will get a syntax\n * error. If <em>s</em> is {@code {1}} then SLL will succeed.</p>\n *\n * <p>\n * Of course, if the input is invalid, then we will get an error for sure in\n * both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n * the input.</p>\n */\nexport default class ParserATNSimulator extends ATNSimulator {\n    constructor(parser, atn, decisionToDFA, sharedContextCache) {\n        super(atn, sharedContextCache);\n        this.parser = parser;\n        this.decisionToDFA = decisionToDFA;\n        // SLL, LL, or LL + exact ambig detection?//\n        this.predictionMode = PredictionMode.LL;\n        // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n        this._input = null;\n        this._startIndex = 0;\n        this._outerContext = null;\n        this._dfa = null;\n        /**\n         * Each prediction operation uses a cache for merge of prediction contexts.\n         *  Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n         *  isn't synchronized but we're ok since two threads shouldn't reuse same\n         *  parser/atnsim object because it can only handle one input at a time.\n         *  This maps graphs a and b to merged result c. (a,b)&rarr;c. We can avoid\n         *  the merge if we ever see a and b again.  Note that (b,a)&rarr;c should\n         *  also be examined during cache lookup.\n         */\n        this.mergeCache = null;\n        this.debug = false;\n        this.debug_closure = false;\n        this.debug_add = false;\n        this.debug_list_atn_decisions = false;\n        this.dfa_debug = false;\n        this.retry_debug = false;\n    }\n\n    reset() {}\n\n    adaptivePredict(input, decision, outerContext) {\n        if (this.debug || this.debug_list_atn_decisions) {\n            console.log(\"adaptivePredict decision \" + decision +\n                                   \" exec LA(1)==\" + this.getLookaheadName(input) +\n                                   \" line \" + input.LT(1).line + \":\" +\n                                   input.LT(1).column);\n        }\n        this._input = input;\n        this._startIndex = input.index;\n        this._outerContext = outerContext;\n\n        const dfa = this.decisionToDFA[decision];\n        this._dfa = dfa;\n        const m = input.mark();\n        const index = input.index;\n\n        // Now we are certain to have a specific decision's DFA\n        // But, do we still need an initial state?\n        try {\n            let s0;\n            if (dfa.precedenceDfa) {\n                // the start state for a precedence DFA depends on the current\n                // parser precedence, and is provided by a DFA method.\n                s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n            } else {\n                // the start state for a \"regular\" DFA is just s0\n                s0 = dfa.s0;\n            }\n            if (s0===null) {\n                if (outerContext===null) {\n                    outerContext = RuleContext.EMPTY;\n                }\n                if (this.debug || this.debug_list_atn_decisions) {\n                    console.log(\"predictATN decision \" + dfa.decision +\n                                       \" exec LA(1)==\" + this.getLookaheadName(input) +\n                                       \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n                }\n\n                const fullCtx = false;\n                let s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n                if( dfa.precedenceDfa) {\n                    // If this is a precedence DFA, we use applyPrecedenceFilter\n                    // to convert the computed start state to a precedence start\n                    // state. We then use DFA.setPrecedenceStartState to set the\n                    // appropriate start state for the precedence level rather\n                    // than simply setting DFA.s0.\n                    //\n                    dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n                    s0_closure = this.applyPrecedenceFilter(s0_closure);\n                    s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n                    dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n                } else {\n                    s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n                    dfa.s0 = s0;\n                }\n            }\n            const alt = this.execATN(dfa, s0, input, index, outerContext);\n            if (this.debug) {\n                console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames, this.parser.symbolicNames));\n            }\n            return alt;\n        } finally {\n            this._dfa = null;\n            this.mergeCache = null; // wack cache after each prediction\n            input.seek(index);\n            input.release(m);\n        }\n    }\n\n    /**\n     * Performs ATN simulation to compute a predicted alternative based\n     *  upon the remaining input, but also updates the DFA cache to avoid\n     *  having to traverse the ATN again for the same input sequence.\n     *\n     * There are some key conditions we're looking for after computing a new\n     * set of ATN configs (proposed DFA state):\n     *       if the set is empty, there is no viable alternative for current symbol\n     *       does the state uniquely predict an alternative?\n     *       does the state have a conflict that would prevent us from\n     *         putting it on the work list?\n     *\n     * We also have some key operations to do:\n     *       add an edge from previous DFA state to potentially new DFA state, D,\n     *         upon current symbol but only if adding to work list, which means in all\n     *         cases except no viable alternative (and possibly non-greedy decisions?)\n     *       collecting predicates and adding semantic context to DFA accept states\n     *       adding rule context to context-sensitive DFA accept states\n     *       consuming an input symbol\n     *       reporting a conflict\n     *       reporting an ambiguity\n     *       reporting a context sensitivity\n     *       reporting insufficient predicates\n     *\n     * cover these cases:\n     *    dead end\n     *    single alt\n     *    single alt + preds\n     *    conflict\n     *    conflict + preds\n     *\n     */\n    execATN(dfa, s0, input, startIndex, outerContext ) {\n        if (this.debug || this.debug_list_atn_decisions) {\n            console.log(\"execATN decision \" + dfa.decision +\n                    \" exec LA(1)==\" + this.getLookaheadName(input) +\n                    \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n        }\n        let alt;\n        let previousD = s0;\n\n        if (this.debug) {\n            console.log(\"s0 = \" + s0);\n        }\n        let t = input.LA(1);\n        for(;;) { // while more work\n            let D = this.getExistingTargetState(previousD, t);\n            if(D===null) {\n                D = this.computeTargetState(dfa, previousD, t);\n            }\n            if(D===ATNSimulator.ERROR) {\n                // if any configs in previous dipped into outer context, that\n                // means that input up to t actually finished entry rule\n                // at least for SLL decision. Full LL doesn't dip into outer\n                // so don't need special case.\n                // We will get an error no matter what so delay until after\n                // decision; better error message. Also, no reachable target\n                // ATN states in SLL implies LL will also get nowhere.\n                // If conflict in states that dip out, choose min since we\n                // will get error no matter what.\n                const e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n                input.seek(startIndex);\n                alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n                if(alt!==ATN.INVALID_ALT_NUMBER) {\n                    return alt;\n                } else {\n                    throw e;\n                }\n            }\n            if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n                // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n                let conflictingAlts = null;\n                if (D.predicates!==null) {\n                    if (this.debug) {\n                        console.log(\"DFA state has preds in DFA sim LL failover\");\n                    }\n                    const conflictIndex = input.index;\n                    if(conflictIndex !== startIndex) {\n                        input.seek(startIndex);\n                    }\n                    conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n                    if (conflictingAlts.length===1) {\n                        if(this.debug) {\n                            console.log(\"Full LL avoided\");\n                        }\n                        return conflictingAlts.minValue();\n                    }\n                    if (conflictIndex !== startIndex) {\n                        // restore the index so reporting the fallback to full\n                        // context occurs with the index at the correct spot\n                        input.seek(conflictIndex);\n                    }\n                }\n                if (this.dfa_debug) {\n                    console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n                }\n                const fullCtx = true;\n                const s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n                this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n                alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n                return alt;\n            }\n            if (D.isAcceptState) {\n                if (D.predicates===null) {\n                    return D.prediction;\n                }\n                const stopIndex = input.index;\n                input.seek(startIndex);\n                const alts = this.evalSemanticContext(D.predicates, outerContext, true);\n                if (alts.length===0) {\n                    throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n                } else if (alts.length===1) {\n                    return alts.minValue();\n                } else {\n                    // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n                    this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n                    return alts.minValue();\n                }\n            }\n            previousD = D;\n\n            if (t !== Token.EOF) {\n                input.consume();\n                t = input.LA(1);\n            }\n        }\n    }\n\n    /**\n     * Get an existing target state for an edge in the DFA. If the target state\n     * for the edge has not yet been computed or is otherwise not available,\n     * this method returns {@code null}.\n     *\n     * @param previousD The current DFA state\n     * @param t The next input symbol\n     * @return The existing target DFA state for the given input symbol\n     * {@code t}, or {@code null} if the target state for this edge is not\n     * already cached\n     */\n    getExistingTargetState(previousD, t) {\n        const edges = previousD.edges;\n        if (edges===null) {\n            return null;\n        } else {\n            return edges[t + 1] || null;\n        }\n    }\n\n    /**\n     * Compute a target state for an edge in the DFA, and attempt to add the\n     * computed state and corresponding edge to the DFA.\n     *\n     * @param dfa The DFA\n     * @param previousD The current DFA state\n     * @param t The next input symbol\n     *\n     * @return The computed target DFA state for the given input symbol\n     * {@code t}. If {@code t} does not lead to a valid DFA state, this method\n     * returns {@link //ERROR\n     */\n    computeTargetState(dfa, previousD, t) {\n       const reach = this.computeReachSet(previousD.configs, t, false);\n        if(reach===null) {\n            this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n            return ATNSimulator.ERROR;\n        }\n        // create new target state; we'll add to DFA after it's complete\n        let D = new DFAState(null, reach);\n\n        const predictedAlt = this.getUniqueAlt(reach);\n\n        if (this.debug) {\n            const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n            console.log(\"SLL altSubSets=\" + arrayToString(altSubSets) +\n                        /*\", previous=\" + previousD.configs + */\n                        \", configs=\" + reach +\n                        \", predict=\" + predictedAlt +\n                        \", allSubsetsConflict=\" +\n                        PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n                        this.getConflictingAlts(reach));\n        }\n        if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n            // NO CONFLICT, UNIQUELY PREDICTED ALT\n            D.isAcceptState = true;\n            D.configs.uniqueAlt = predictedAlt;\n            D.prediction = predictedAlt;\n        } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n            // MORE THAN ONE VIABLE ALTERNATIVE\n            D.configs.conflictingAlts = this.getConflictingAlts(reach);\n            D.requiresFullContext = true;\n            // in SLL-only mode, we will stop at this state and return the minimum alt\n            D.isAcceptState = true;\n            D.prediction = D.configs.conflictingAlts.minValue();\n        }\n        if (D.isAcceptState && D.configs.hasSemanticContext) {\n            this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n            if( D.predicates!==null) {\n                D.prediction = ATN.INVALID_ALT_NUMBER;\n            }\n        }\n        // all adds to dfa are done after we've created full D state\n        D = this.addDFAEdge(dfa, previousD, t, D);\n        return D;\n    }\n\n    predicateDFAState(dfaState, decisionState) {\n        // We need to test all predicates, even in DFA states that\n        // uniquely predict alternative.\n        const nalts = decisionState.transitions.length;\n        // Update DFA so reach becomes accept state with (predicate,alt)\n        // pairs if preds found for conflicting alts\n        const altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n        const altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n        if (altToPred!==null) {\n            dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n            dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n        } else {\n            // There are preds in configs but they might go away\n            // when OR'd together like {p}? || NONE == NONE. If neither\n            // alt has preds, resolve to min alt\n            dfaState.prediction = altsToCollectPredsFrom.minValue();\n        }\n    }\n\n// comes back with reach.uniqueAlt set to a valid alt\n    execATNWithFullContext(dfa, D, // how far we got before failing over\n                                         s0,\n                                         input,\n                                         startIndex,\n                                         outerContext) {\n        if (this.debug || this.debug_list_atn_decisions) {\n            console.log(\"execATNWithFullContext \"+s0);\n        }\n        const fullCtx = true;\n        let foundExactAmbig = false;\n        let reach;\n        let previous = s0;\n        input.seek(startIndex);\n        let t = input.LA(1);\n        let predictedAlt = -1;\n        for (;;) { // while more work\n            reach = this.computeReachSet(previous, t, fullCtx);\n            if (reach===null) {\n                // if any configs in previous dipped into outer context, that\n                // means that input up to t actually finished entry rule\n                // at least for LL decision. Full LL doesn't dip into outer\n                // so don't need special case.\n                // We will get an error no matter what so delay until after\n                // decision; better error message. Also, no reachable target\n                // ATN states in SLL implies LL will also get nowhere.\n                // If conflict in states that dip out, choose min since we\n                // will get error no matter what.\n                const e = this.noViableAlt(input, outerContext, previous, startIndex);\n                input.seek(startIndex);\n                const alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n                if(alt!==ATN.INVALID_ALT_NUMBER) {\n                    return alt;\n                } else {\n                    throw e;\n                }\n            }\n            const altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n            if(this.debug) {\n                console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n                      PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n                      PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n            }\n            reach.uniqueAlt = this.getUniqueAlt(reach);\n            // unique prediction?\n            if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n                predictedAlt = reach.uniqueAlt;\n                break;\n            } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n                predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n                if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n                    break;\n                }\n            } else {\n                // In exact ambiguity mode, we never try to terminate early.\n                // Just keeps scarfing until we know what the conflict is\n                if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n                    foundExactAmbig = true;\n                    predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n                    break;\n                }\n                // else there are multiple non-conflicting subsets or\n                // we're not sure what the ambiguity is yet.\n                // So, keep going.\n            }\n            previous = reach;\n            if( t !== Token.EOF) {\n                input.consume();\n                t = input.LA(1);\n            }\n        }\n        // If the configuration set uniquely predicts an alternative,\n        // without conflict, then we know that it's a full LL decision\n        // not SLL.\n        if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n            this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n            return predictedAlt;\n        }\n        // We do not check predicates here because we have checked them\n        // on-the-fly when doing full context prediction.\n\n        //\n        // In non-exact ambiguity detection mode, we might\tactually be able to\n        // detect an exact ambiguity, but I'm not going to spend the cycles\n        // needed to check. We only emit ambiguity warnings in exact ambiguity\n        // mode.\n        //\n        // For example, we might know that we have conflicting configurations.\n        // But, that does not mean that there is no way forward without a\n        // conflict. It's possible to have nonconflicting alt subsets as in:\n\n        // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n        // from\n        //\n        //    [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n        //     (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n        //\n        // In this case, (17,1,[5 $]) indicates there is some next sequence that\n        // would resolve this without conflict to alternative 1. Any other viable\n        // next sequence, however, is associated with a conflict.  We stop\n        // looking for input because no amount of further lookahead will alter\n        // the fact that we should predict alternative 1.  We just can't say for\n        // sure that there is an ambiguity without looking further.\n\n        this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n        return predictedAlt;\n    }\n\n    computeReachSet(closure, t, fullCtx) {\n        if (this.debug) {\n            console.log(\"in computeReachSet, starting closure: \" + closure);\n        }\n        if( this.mergeCache===null) {\n            this.mergeCache = new DoubleDict();\n        }\n        const intermediate = new ATNConfigSet(fullCtx);\n\n        // Configurations already in a rule stop state indicate reaching the end\n        // of the decision rule (local context) or end of the start rule (full\n        // context). Once reached, these configurations are never updated by a\n        // closure operation, so they are handled separately for the performance\n        // advantage of having a smaller intermediate set when calling closure.\n        //\n        // For full-context reach operations, separate handling is required to\n        // ensure that the alternative matching the longest overall sequence is\n        // chosen when multiple such configurations can match the input.\n\n        let skippedStopStates = null;\n\n        // First figure out where we can reach on input t\n        for (let i=0; i<closure.items.length;i++) {\n            const c = closure.items[i];\n            if(this.debug) {\n                console.log(\"testing \" + this.getTokenName(t) + \" at \" + c);\n            }\n            if (c.state instanceof RuleStopState) {\n                if (fullCtx || t === Token.EOF) {\n                    if (skippedStopStates===null) {\n                        skippedStopStates = [];\n                    }\n                    skippedStopStates.push(c);\n                    if(this.debug_add) {\n                        console.log(\"added \" + c + \" to skippedStopStates\");\n                    }\n                }\n                continue;\n            }\n            for(let j=0;j<c.state.transitions.length;j++) {\n                const trans = c.state.transitions[j];\n                const target = this.getReachableTarget(trans, t);\n                if (target!==null) {\n                    const cfg = new ATNConfig({state:target}, c);\n                    intermediate.add(cfg, this.mergeCache);\n                    if(this.debug_add) {\n                        console.log(\"added \" + cfg + \" to intermediate\");\n                    }\n                }\n            }\n        }\n        // Now figure out where the reach operation can take us...\n        let reach = null;\n\n        // This block optimizes the reach operation for intermediate sets which\n        // trivially indicate a termination state for the overall\n        // adaptivePredict operation.\n        //\n        // The conditions assume that intermediate\n        // contains all configurations relevant to the reach set, but this\n        // condition is not true when one or more configurations have been\n        // withheld in skippedStopStates, or when the current symbol is EOF.\n        //\n        if (skippedStopStates===null && t!==Token.EOF) {\n            if (intermediate.items.length===1) {\n                // Don't pursue the closure if there is just one state.\n                // It can only have one alternative; just add to result\n                // Also don't pursue the closure if there is unique alternative\n                // among the configurations.\n                reach = intermediate;\n            } else if (this.getUniqueAlt(intermediate)!==ATN.INVALID_ALT_NUMBER) {\n                // Also don't pursue the closure if there is unique alternative\n                // among the configurations.\n                reach = intermediate;\n            }\n        }\n        // If the reach set could not be trivially determined, perform a closure\n        // operation on the intermediate set to compute its initial value.\n        //\n        if (reach===null) {\n            reach = new ATNConfigSet(fullCtx);\n            const closureBusy = new HashSet();\n            const treatEofAsEpsilon = t === Token.EOF;\n            for (let k=0; k<intermediate.items.length;k++) {\n                this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon);\n            }\n        }\n        if (t === Token.EOF) {\n            // After consuming EOF no additional input is possible, so we are\n            // only interested in configurations which reached the end of the\n            // decision rule (local context) or end of the start rule (full\n            // context). Update reach to contain only these configurations. This\n            // handles both explicit EOF transitions in the grammar and implicit\n            // EOF transitions following the end of the decision or start rule.\n            //\n            // When reach==intermediate, no closure operation was performed. In\n            // this case, removeAllConfigsNotInRuleStopState needs to check for\n            // reachable rule stop states as well as configurations already in\n            // a rule stop state.\n            //\n            // This is handled before the configurations in skippedStopStates,\n            // because any configurations potentially added from that list are\n            // already guaranteed to meet this condition whether or not it's\n            // required.\n            //\n            reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate);\n        }\n        // If skippedStopStates!==null, then it contains at least one\n        // configuration. For full-context reach operations, these\n        // configurations reached the end of the start rule, in which case we\n        // only add them back to reach if no configuration during the current\n        // closure operation reached such a state. This ensures adaptivePredict\n        // chooses an alternative matching the longest overall sequence when\n        // multiple alternatives are viable.\n        //\n        if (skippedStopStates!==null && ( (! fullCtx) || (! PredictionMode.hasConfigInRuleStopState(reach)))) {\n            for (let l=0; l<skippedStopStates.length;l++) {\n                reach.add(skippedStopStates[l], this.mergeCache);\n            }\n        }\n        if (reach.items.length===0) {\n            return null;\n        } else {\n            return reach;\n        }\n    }\n\n    /**\n     * Return a configuration set containing only the configurations from\n     * {@code configs} which are in a {@link RuleStopState}. If all\n     * configurations in {@code configs} are already in a rule stop state, this\n     * method simply returns {@code configs}.\n     *\n     * <p>When {@code lookToEndOfRule} is true, this method uses\n     * {@link ATN//nextTokens} for each configuration in {@code configs} which is\n     * not already in a rule stop state to see if a rule stop state is reachable\n     * from the configuration via epsilon-only transitions.</p>\n     *\n     * @param configs the configuration set to update\n     * @param lookToEndOfRule when true, this method checks for rule stop states\n     * reachable by epsilon-only transitions from each configuration in\n     * {@code configs}.\n     *\n     * @return {@code configs} if all configurations in {@code configs} are in a\n     * rule stop state, otherwise return a new configuration set containing only\n     * the configurations from {@code configs} which are in a rule stop state\n     */\n    removeAllConfigsNotInRuleStopState(configs, lookToEndOfRule) {\n        if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n            return configs;\n        }\n        const result = new ATNConfigSet(configs.fullCtx);\n        for(let i=0; i<configs.items.length;i++) {\n            const config = configs.items[i];\n            if (config.state instanceof RuleStopState) {\n                result.add(config, this.mergeCache);\n                continue;\n            }\n            if (lookToEndOfRule && config.state.epsilonOnlyTransitions) {\n                const nextTokens = this.atn.nextTokens(config.state);\n                if (nextTokens.contains(Token.EPSILON)) {\n                    const endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex];\n                    result.add(new ATNConfig({state:endOfRuleState}, config), this.mergeCache);\n                }\n            }\n        }\n        return result;\n    }\n\n    computeStartState(p, ctx, fullCtx) {\n        // always at least the implicit call to start rule\n        const initialContext = predictionContextFromRuleContext(this.atn, ctx);\n        const configs = new ATNConfigSet(fullCtx);\n        for(let i=0;i<p.transitions.length;i++) {\n            const target = p.transitions[i].target;\n            const c = new ATNConfig({ state:target, alt:i+1, context:initialContext }, null);\n            const closureBusy = new HashSet();\n            this.closure(c, configs, closureBusy, true, fullCtx, false);\n        }\n        return configs;\n    }\n\n    /**\n     * This method transforms the start state computed by\n     * {@link //computeStartState} to the special start state used by a\n     * precedence DFA for a particular precedence value. The transformation\n     * process applies the following changes to the start state's configuration\n     * set.\n     *\n     * <ol>\n     * <li>Evaluate the precedence predicates for each configuration using\n     * {@link SemanticContext//evalPrecedence}.</li>\n     * <li>Remove all configurations which predict an alternative greater than\n     * 1, for which another configuration that predicts alternative 1 is in the\n     * same ATN state with the same prediction context. This transformation is\n     * valid for the following reasons:\n     * <ul>\n     * <li>The closure block cannot contain any epsilon transitions which bypass\n     * the body of the closure, so all states reachable via alternative 1 are\n     * part of the precedence alternatives of the transformed left-recursive\n     * rule.</li>\n     * <li>The \"primary\" portion of a left recursive rule cannot contain an\n     * epsilon transition, so the only way an alternative other than 1 can exist\n     * in a state that is also reachable via alternative 1 is by nesting calls\n     * to the left-recursive rule, with the outer calls not being at the\n     * preferred precedence level.</li>\n     * </ul>\n     * </li>\n     * </ol>\n     *\n     * <p>\n     * The prediction context must be considered by this filter to address\n     * situations like the following.\n     * </p>\n     * <code>\n     * <pre>\n     * grammar TA;\n     * prog: statement* EOF;\n     * statement: letterA | statement letterA 'b' ;\n     * letterA: 'a';\n     * </pre>\n     * </code>\n     * <p>\n     * If the above grammar, the ATN state immediately before the token\n     * reference {@code 'a'} in {@code letterA} is reachable from the left edge\n     * of both the primary and closure blocks of the left-recursive rule\n     * {@code statement}. The prediction context associated with each of these\n     * configurations distinguishes between them, and prevents the alternative\n     * which stepped out to {@code prog} (and then back in to {@code statement}\n     * from being eliminated by the filter.\n     * </p>\n     *\n     * @param configs The configuration set computed by\n     * {@link //computeStartState} as the start state for the DFA.\n     * @return The transformed configuration set representing the start state\n     * for a precedence DFA at a particular precedence level (determined by\n     * calling {@link Parser//getPrecedence})\n     */\n    applyPrecedenceFilter(configs) {\n        let config;\n        const statesFromAlt1 = [];\n        const configSet = new ATNConfigSet(configs.fullCtx);\n        for(let i=0; i<configs.items.length; i++) {\n            config = configs.items[i];\n            // handle alt 1 first\n            if (config.alt !== 1) {\n                continue;\n            }\n            const updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext);\n            if (updatedContext===null) {\n                // the configuration was eliminated\n                continue;\n            }\n            statesFromAlt1[config.state.stateNumber] = config.context;\n            if (updatedContext !== config.semanticContext) {\n                configSet.add(new ATNConfig({semanticContext:updatedContext}, config), this.mergeCache);\n            } else {\n                configSet.add(config, this.mergeCache);\n            }\n        }\n        for(let i=0; i<configs.items.length; i++) {\n            config = configs.items[i];\n            if (config.alt === 1) {\n                // already handled\n                continue;\n            }\n            // In the future, this elimination step could be updated to also\n            // filter the prediction context for alternatives predicting alt>1\n            // (basically a graph subtraction algorithm).\n            if (!config.precedenceFilterSuppressed) {\n                const context = statesFromAlt1[config.state.stateNumber] || null;\n                if (context!==null && context.equals(config.context)) {\n                    // eliminated\n                    continue;\n                }\n            }\n            configSet.add(config, this.mergeCache);\n        }\n        return configSet;\n    }\n\n    getReachableTarget(trans, ttype) {\n        if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n            return trans.target;\n        } else {\n            return null;\n        }\n    }\n\n    getPredsForAmbigAlts(ambigAlts, configs, nalts) {\n        // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n        // altToPred starts as an array of all null contexts. The entry at index i\n        // corresponds to alternative i. altToPred[i] may have one of three values:\n        //   1. null: no ATNConfig c is found such that c.alt==i\n        //   2. SemanticContext.NONE: At least one ATNConfig c exists such that\n        //      c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n        //      alt i has at least one unpredicated config.\n        //   3. Non-NONE Semantic Context: There exists at least one, and for all\n        //      ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n        //\n        // From this, it is clear that NONE||anything==NONE.\n        //\n        let altToPred = [];\n        for(let i=0;i<configs.items.length;i++) {\n            const c = configs.items[i];\n            if(ambigAlts.has( c.alt )) {\n                altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext);\n            }\n        }\n        let nPredAlts = 0;\n        for (let i =1;i< nalts+1;i++) {\n            const pred = altToPred[i] || null;\n            if (pred===null) {\n                altToPred[i] = SemanticContext.NONE;\n            } else if (pred !== SemanticContext.NONE) {\n                nPredAlts += 1;\n            }\n        }\n        // nonambig alts are null in altToPred\n        if (nPredAlts===0) {\n            altToPred = null;\n        }\n        if (this.debug) {\n            console.log(\"getPredsForAmbigAlts result \" + arrayToString(altToPred));\n        }\n        return altToPred;\n    }\n\n    getPredicatePredictions(ambigAlts, altToPred) {\n        const pairs = [];\n        let containsPredicate = false;\n        for (let i=1; i<altToPred.length;i++) {\n            const pred = altToPred[i];\n            // unpredicated is indicated by SemanticContext.NONE\n            if( ambigAlts!==null && ambigAlts.has( i )) {\n                pairs.push(new PredPrediction(pred, i));\n            }\n            if (pred !== SemanticContext.NONE) {\n                containsPredicate = true;\n            }\n        }\n        if (! containsPredicate) {\n            return null;\n        }\n        return pairs;\n    }\n\n    /**\n     * This method is used to improve the localization of error messages by\n     * choosing an alternative rather than throwing a\n     * {@link NoViableAltException} in particular prediction scenarios where the\n     * {@link //ERROR} state was reached during ATN simulation.\n     *\n     * <p>\n     * The default implementation of this method uses the following\n     * algorithm to identify an ATN configuration which successfully parsed the\n     * decision entry rule. Choosing such an alternative ensures that the\n     * {@link ParserRuleContext} returned by the calling rule will be complete\n     * and valid, and the syntax error will be reported later at a more\n     * localized location.</p>\n     *\n     * <ul>\n     * <li>If a syntactically valid path or paths reach the end of the decision rule and\n     * they are semantically valid if predicated, return the min associated alt.</li>\n     * <li>Else, if a semantically invalid but syntactically valid path exist\n     * or paths exist, return the minimum associated alt.\n     * </li>\n     * <li>Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.</li>\n     * </ul>\n     *\n     * <p>\n     * In some scenarios, the algorithm described above could predict an\n     * alternative which will result in a {@link FailedPredicateException} in\n     * the parser. Specifically, this could occur if the <em>only</em> configuration\n     * capable of successfully parsing to the end of the decision rule is\n     * blocked by a semantic predicate. By choosing this alternative within\n     * {@link //adaptivePredict} instead of throwing a\n     * {@link NoViableAltException}, the resulting\n     * {@link FailedPredicateException} in the parser will identify the specific\n     * predicate which is preventing the parser from successfully parsing the\n     * decision rule, which helps developers identify and correct logic errors\n     * in semantic predicates.\n     * </p>\n     *\n     * @param configs The ATN configurations which were valid immediately before\n     * the {@link //ERROR} state was reached\n     * @param outerContext The is the \\gamma_0 initial parser context from the paper\n     * or the parser stack at the instant before prediction commences.\n     *\n     * @return The value to return from {@link //adaptivePredict}, or\n     * {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n     * identified and {@link //adaptivePredict} should report an error instead\n     */\n    getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs, outerContext) {\n        const cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n        const semValidConfigs = cfgs[0];\n        const semInvalidConfigs = cfgs[1];\n        let alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n        if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n            return alt;\n        }\n        // Is there a syntactically valid path with a failed pred?\n        if (semInvalidConfigs.items.length>0) {\n            alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n            if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n                return alt;\n            }\n        }\n        return ATN.INVALID_ALT_NUMBER;\n    }\n\n    getAltThatFinishedDecisionEntryRule(configs) {\n        const alts = [];\n        for(let i=0;i<configs.items.length; i++) {\n            const c = configs.items[i];\n            if (c.reachesIntoOuterContext>0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n                if(alts.indexOf(c.alt)<0) {\n                    alts.push(c.alt);\n                }\n            }\n        }\n        if (alts.length===0) {\n            return ATN.INVALID_ALT_NUMBER;\n        } else {\n            return Math.min.apply(null, alts);\n        }\n    }\n\n    /**\n     * Walk the list of configurations and split them according to\n     * those that have preds evaluating to true/false.  If no pred, assume\n     * true pred and include in succeeded set.  Returns Pair of sets.\n     *\n     * Create a new set so as not to alter the incoming parameter.\n     *\n     * Assumption: the input stream has been restored to the starting point\n     * prediction, which is where predicates need to evaluate.*/\n    splitAccordingToSemanticValidity( configs, outerContext) {\n        const succeeded = new ATNConfigSet(configs.fullCtx);\n        const failed = new ATNConfigSet(configs.fullCtx);\n        for(let i=0;i<configs.items.length; i++) {\n            const c = configs.items[i];\n            if (c.semanticContext !== SemanticContext.NONE) {\n                const predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext);\n                if (predicateEvaluationResult) {\n                    succeeded.add(c);\n                } else {\n                    failed.add(c);\n                }\n            } else {\n                succeeded.add(c);\n            }\n        }\n        return [succeeded, failed];\n    }\n\n    /**\n     * Look through a list of predicate/alt pairs, returning alts for the\n     * pairs that win. A {@code NONE} predicate indicates an alt containing an\n     * unpredicated config which behaves as \"always true.\" If !complete\n     * then we stop at the first predicate that evaluates to true. This\n     * includes pairs with null predicates.\n     */\n    evalSemanticContext(predPredictions, outerContext, complete) {\n        const predictions = new BitSet();\n        for(let i=0;i<predPredictions.length;i++) {\n            const pair = predPredictions[i];\n            if (pair.pred === SemanticContext.NONE) {\n                predictions.add(pair.alt);\n                if (! complete) {\n                    break;\n                }\n                continue;\n            }\n            const predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext);\n            if (this.debug || this.dfa_debug) {\n                console.log(\"eval pred \" + pair + \"=\" + predicateEvaluationResult);\n            }\n            if (predicateEvaluationResult) {\n                if (this.debug || this.dfa_debug) {\n                    console.log(\"PREDICT \" + pair.alt);\n                }\n                predictions.add(pair.alt);\n                if (! complete) {\n                    break;\n                }\n            }\n        }\n        return predictions;\n    }\n\n// TODO: If we are doing predicates, there is no point in pursuing\n//     closure operations if we reach a DFA state that uniquely predicts\n//     alternative. We will not be caching that DFA state and it is a\n//     waste to pursue the closure. Might have to advance when we do\n//     ambig detection thought :(\n//\n    closure(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) {\n        const initialDepth = 0;\n        this.closureCheckingStopState(config, configs, closureBusy, collectPredicates,\n                                 fullCtx, initialDepth, treatEofAsEpsilon);\n    }\n\n    closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n        if (this.debug || this.debug_closure) {\n            console.log(\"closure(\" + config.toString(this.parser,true) + \")\");\n            // console.log(\"configs(\" + configs.toString() + \")\");\n            if(config.reachesIntoOuterContext>50) {\n                throw \"problem\";\n            }\n        }\n        if (config.state instanceof RuleStopState) {\n            // We hit rule end. If we have context info, use it\n            // run thru all possible stack tops in ctx\n            if (! config.context.isEmpty()) {\n                for (let i =0; i<config.context.length; i++) {\n                    if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) {\n                        if (fullCtx) {\n                            configs.add(new ATNConfig({state:config.state, context:PredictionContext.EMPTY}, config), this.mergeCache);\n                            continue;\n                        } else {\n                            // we have no context info, just chase follow links (if greedy)\n                            if (this.debug) {\n                                console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n                            }\n                            this.closure_(config, configs, closureBusy, collectPredicates,\n                                     fullCtx, depth, treatEofAsEpsilon);\n                        }\n                        continue;\n                    }\n                    const returnState = this.atn.states[config.context.getReturnState(i)];\n                    const newContext = config.context.getParent(i); // \"pop\" return state\n                    const parms = {state:returnState, alt:config.alt, context:newContext, semanticContext:config.semanticContext};\n                    const c = new ATNConfig(parms, null);\n                    // While we have context to pop back from, we may have\n                    // gotten that context AFTER having falling off a rule.\n                    // Make sure we track that we are now out of context.\n                    c.reachesIntoOuterContext = config.reachesIntoOuterContext;\n                    this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);\n                }\n                return;\n            } else if( fullCtx) {\n                // reached end of start rule\n                configs.add(config, this.mergeCache);\n                return;\n            } else {\n                // else if we have no context info, just chase follow links (if greedy)\n                if (this.debug) {\n                    console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n                }\n            }\n        }\n        this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);\n    }\n\n    // Do the actual work of walking epsilon edges//\n    closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n        const p = config.state;\n        // optimization\n        if (! p.epsilonOnlyTransitions) {\n            configs.add(config, this.mergeCache);\n            // make sure to not return here, because EOF transitions can act as\n            // both epsilon transitions and non-epsilon transitions.\n        }\n        for(let i = 0;i<p.transitions.length; i++) {\n            if(i === 0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config))\n                continue;\n\n            const t = p.transitions[i];\n            const continueCollecting = collectPredicates && !(t instanceof ActionTransition);\n            const c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon);\n            if (c!==null) {\n                let newDepth = depth;\n                if ( config.state instanceof RuleStopState) {\n                    // target fell off end of rule; mark resulting c as having dipped into outer context\n                    // We can't get here if incoming config was rule stop and we had context\n                    // track how far we dip into outer context.  Might\n                    // come in handy and we avoid evaluating context dependent\n                    // preds if this is > 0.\n                    if (this._dfa !== null && this._dfa.precedenceDfa) {\n                        if (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n                            c.precedenceFilterSuppressed = true;\n                        }\n                    }\n\n                    c.reachesIntoOuterContext += 1;\n                    if (closureBusy.add(c)!==c) {\n                        // avoid infinite recursion for right-recursive rules\n                        continue;\n                    }\n                    configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n                    newDepth -= 1;\n                    if (this.debug) {\n                        console.log(\"dips into outer ctx: \" + c);\n                    }\n                } else {\n                    if (!t.isEpsilon && closureBusy.add(c)!==c){\n                        // avoid infinite recursion for EOF* and EOF+\n                        continue;\n                    }\n                    if (t instanceof RuleTransition) {\n                        // latch when newDepth goes negative - once we step out of the entry context we can't return\n                        if (newDepth >= 0) {\n                            newDepth += 1;\n                        }\n                    }\n                }\n                this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n            }\n        }\n    }\n\n    canDropLoopEntryEdgeInLeftRecursiveRule(config) {\n        // return False\n        const p = config.state;\n        // First check to see if we are in StarLoopEntryState generated during\n        // left-recursion elimination. For efficiency, also check if\n        // the context has an empty stack case. If so, it would mean\n        // global FOLLOW so we can't perform optimization\n        // Are we the special loop entry/exit state? or SLL wildcard\n        if(p.stateType !== ATNState.STAR_LOOP_ENTRY)\n            return false;\n        if(p.stateType !== ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n               config.context.isEmpty() || config.context.hasEmptyPath())\n            return false;\n\n        // Require all return states to return back to the same rule that p is in.\n        const numCtxs = config.context.length;\n        for(let i=0; i<numCtxs; i++) { // for each stack context\n            const returnState = this.atn.states[config.context.getReturnState(i)];\n            if (returnState.ruleIndex !== p.ruleIndex)\n                return false;\n        }\n\n        const decisionStartState = p.transitions[0].target;\n        const blockEndStateNum = decisionStartState.endState.stateNumber;\n        const blockEndState = this.atn.states[blockEndStateNum];\n\n        // Verify that the top of each stack context leads to loop entry/exit\n        // state through epsilon edges and w/o leaving rule.\n        for(let i=0; i<numCtxs; i++) { // for each stack context\n            const returnStateNumber = config.context.getReturnState(i);\n            const returnState = this.atn.states[returnStateNumber];\n            // all states must have single outgoing epsilon edge\n            if (returnState.transitions.length !== 1 || !returnState.transitions[0].isEpsilon)\n                return false;\n\n            // Look for prefix op case like 'not expr', (' type ')' expr\n            const returnStateTarget = returnState.transitions[0].target;\n            if ( returnState.stateType === ATNState.BLOCK_END && returnStateTarget === p )\n                continue;\n\n            // Look for 'expr op expr' or case where expr's return state is block end\n            // of (...)* internal block; the block end points to loop back\n            // which points to p but we don't need to check that\n            if ( returnState === blockEndState )\n                continue;\n\n            // Look for ternary expr ? expr : expr. The return state points at block end,\n            // which points at loop entry state\n            if ( returnStateTarget === blockEndState )\n                continue;\n\n            // Look for complex prefix 'between expr and expr' case where 2nd expr's\n            // return state points at block end state of (...)* internal block\n            if (returnStateTarget.stateType === ATNState.BLOCK_END && returnStateTarget.transitions.length === 1\n                    && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target === p)\n                continue;\n\n            // anything else ain't conforming\n            return false;\n        }\n        return true;\n    }\n\n    getRuleName(index) {\n        if (this.parser!==null && index>=0) {\n            return this.parser.ruleNames[index];\n        } else {\n            return \"<rule \" + index + \">\";\n        }\n    }\n\n    getEpsilonTarget(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n        switch(t.serializationType) {\n        case Transition.RULE:\n            return this.ruleTransition(config, t);\n        case Transition.PRECEDENCE:\n            return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n        case Transition.PREDICATE:\n            return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n        case Transition.ACTION:\n            return this.actionTransition(config, t);\n        case Transition.EPSILON:\n            return new ATNConfig({state:t.target}, config);\n        case Transition.ATOM:\n        case Transition.RANGE:\n        case Transition.SET:\n            // EOF transitions act like epsilon transitions after the first EOF\n            // transition is traversed\n            if (treatEofAsEpsilon) {\n                if (t.matches(Token.EOF, 0, 1)) {\n                    return new ATNConfig({state: t.target}, config);\n                }\n            }\n            return null;\n        default:\n            return null;\n        }\n    }\n\n    actionTransition(config, t) {\n        if (this.debug) {\n            const index = t.actionIndex === -1 ? 65535 : t.actionIndex;\n            console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n        }\n        return new ATNConfig({state:t.target}, config);\n    }\n\n    precedenceTransition(config, pt, collectPredicates, inContext, fullCtx) {\n        if (this.debug) {\n            console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n                    pt.precedence + \">=_p, ctx dependent=true\");\n            if (this.parser!==null) {\n                console.log(\"context surrounding pred is \" + arrayToString(this.parser.getRuleInvocationStack()));\n            }\n        }\n        let c = null;\n        if (collectPredicates && inContext) {\n            if (fullCtx) {\n                // In full context mode, we can evaluate predicates on-the-fly\n                // during closure, which dramatically reduces the size of\n                // the config sets. It also obviates the need to test predicates\n                // later during conflict resolution.\n                const currentPosition = this._input.index;\n                this._input.seek(this._startIndex);\n                const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n                this._input.seek(currentPosition);\n                if (predSucceeds) {\n                    c = new ATNConfig({state:pt.target}, config); // no pred context\n                }\n            } else {\n                const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n                c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n            }\n        } else {\n            c = new ATNConfig({state:pt.target}, config);\n        }\n        if (this.debug) {\n            console.log(\"config from pred transition=\" + c);\n        }\n        return c;\n    }\n\n    predTransition(config, pt, collectPredicates, inContext, fullCtx) {\n        if (this.debug) {\n            console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n                    \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n            if (this.parser!==null) {\n                console.log(\"context surrounding pred is \" + arrayToString(this.parser.getRuleInvocationStack()));\n            }\n        }\n        let c = null;\n        if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n            if (fullCtx) {\n                // In full context mode, we can evaluate predicates on-the-fly\n                // during closure, which dramatically reduces the size of\n                // the config sets. It also obviates the need to test predicates\n                // later during conflict resolution.\n                const currentPosition = this._input.index;\n                this._input.seek(this._startIndex);\n                const predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n                this._input.seek(currentPosition);\n                if (predSucceeds) {\n                    c = new ATNConfig({state:pt.target}, config); // no pred context\n                }\n            } else {\n                const newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n                c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n            }\n        } else {\n            c = new ATNConfig({state:pt.target}, config);\n        }\n        if (this.debug) {\n            console.log(\"config from pred transition=\" + c);\n        }\n        return c;\n    }\n\n    ruleTransition(config, t) {\n        if (this.debug) {\n            console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n        }\n        const returnState = t.followState;\n        const newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n        return new ATNConfig({state:t.target, context:newContext}, config );\n    }\n\n    getConflictingAlts(configs) {\n        const altsets = PredictionMode.getConflictingAltSubsets(configs);\n        return PredictionMode.getAlts(altsets);\n    }\n\n    /**\n     * Sam pointed out a problem with the previous definition, v3, of\n     * ambiguous states. If we have another state associated with conflicting\n     * alternatives, we should keep going. For example, the following grammar\n     *\n     * s : (ID | ID ID?) ';' ;\n     *\n     * When the ATN simulation reaches the state before ';', it has a DFA\n     * state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n     * 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n     * because alternative to has another way to continue, via [6|2|[]].\n     * The key is that we have a single state that has config's only associated\n     * with a single alternative, 2, and crucially the state transitions\n     * among the configurations are all non-epsilon transitions. That means\n     * we don't consider any conflicts that include alternative 2. So, we\n     * ignore the conflict between alts 1 and 2. We ignore a set of\n     * conflicting alts when there is an intersection with an alternative\n     * associated with a single alt state in the state&rarr;config-list map.\n     *\n     * It's also the case that we might have two conflicting configurations but\n     * also a 3rd nonconflicting configuration for a different alternative:\n     * [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n     *\n     * a : A | A | A B ;\n     *\n     * After matching input A, we reach the stop state for rule A, state 1.\n     * State 8 is the state right before B. Clearly alternatives 1 and 2\n     * conflict and no amount of further lookahead will separate the two.\n     * However, alternative 3 will be able to continue and so we do not\n     * stop working on this state. In the previous example, we're concerned\n     * with states associated with the conflicting alternatives. Here alt\n     * 3 is not associated with the conflicting configs, but since we can continue\n     * looking for input reasonably, I don't declare the state done. We\n     * ignore a set of conflicting alts when we have an alternative\n     * that we still need to pursue\n     */\n    getConflictingAltsOrUniqueAlt(configs) {\n        let conflictingAlts = null;\n        if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n            conflictingAlts = new BitSet();\n            conflictingAlts.add(configs.uniqueAlt);\n        } else {\n            conflictingAlts = configs.conflictingAlts;\n        }\n        return conflictingAlts;\n    }\n\n    getTokenName(t) {\n        if (t===Token.EOF) {\n            return \"EOF\";\n        }\n        if( this.parser!==null && this.parser.literalNames!==null) {\n            if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n                console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n                console.log(\"\" + this.parser.getInputStream().getTokens());\n            } else {\n                const name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n                return name + \"<\" + t + \">\";\n            }\n        }\n        return \"\" + t;\n    }\n\n    getLookaheadName(input) {\n        return this.getTokenName(input.LA(1));\n    }\n\n    /**\n     * Used for debugging in adaptivePredict around execATN but I cut\n     * it out for clarity now that alg. works well. We can leave this\n     * \"dead\" code for a bit\n     */\n    dumpDeadEndConfigs(nvae) {\n        console.log(\"dead end configs: \");\n        const decs = nvae.getDeadEndConfigs();\n        for(let i=0; i<decs.length; i++) {\n            const c = decs[i];\n            let trans = \"no edges\";\n            if (c.state.transitions.length>0) {\n                const t = c.state.transitions[0];\n                if (t instanceof AtomTransition) {\n                    trans = \"Atom \"+ this.getTokenName(t.label);\n                } else if (t instanceof SetTransition) {\n                    const neg = (t instanceof NotSetTransition);\n                    trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n                }\n            }\n            console.error(c.toString(this.parser, true) + \":\" + trans);\n        }\n    }\n\n    noViableAlt(input, outerContext, configs, startIndex) {\n        return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n    }\n\n    getUniqueAlt(configs) {\n        let alt = ATN.INVALID_ALT_NUMBER;\n        for(let i=0;i<configs.items.length;i++) {\n            const c = configs.items[i];\n            if (alt === ATN.INVALID_ALT_NUMBER) {\n                alt = c.alt // found first alt\n            } else if( c.alt!==alt) {\n                return ATN.INVALID_ALT_NUMBER;\n            }\n        }\n        return alt;\n    }\n\n    /**\n     * Add an edge to the DFA, if possible. This method calls\n     * {@link //addDFAState} to ensure the {@code to} state is present in the\n     * DFA. If {@code from} is {@code null}, or if {@code t} is outside the\n     * range of edges that can be represented in the DFA tables, this method\n     * returns without adding the edge to the DFA.\n     *\n     * <p>If {@code to} is {@code null}, this method returns {@code null}.\n     * Otherwise, this method returns the {@link DFAState} returned by calling\n     * {@link //addDFAState} for the {@code to} state.</p>\n     *\n     * @param dfa The DFA\n     * @param from_ The source state for the edge\n     * @param t The input symbol\n     * @param to The target state for the edge\n     *\n     * @return If {@code to} is {@code null}, this method returns {@code null};\n     * otherwise this method returns the result of calling {@link //addDFAState}\n     * on {@code to}\n     */\n    addDFAEdge(dfa, from_, t, to) {\n        if( this.debug) {\n            console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n        }\n        if (to===null) {\n            return null;\n        }\n        to = this.addDFAState(dfa, to); // used existing if possible not incoming\n        if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n            return to;\n        }\n        if (from_.edges===null) {\n            from_.edges = [];\n        }\n        from_.edges[t+1] = to; // connect\n\n        if (this.debug) {\n            const literalNames = this.parser===null ? null : this.parser.literalNames;\n            const symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n            console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n        }\n        return to;\n    }\n\n    /**\n     * Add state {@code D} to the DFA if it is not already present, and return\n     * the actual instance stored in the DFA. If a state equivalent to {@code D}\n     * is already in the DFA, the existing state is returned. Otherwise this\n     * method returns {@code D} after adding it to the DFA.\n     *\n     * <p>If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n     * does not change the DFA.</p>\n     *\n     * @param dfa The dfa\n     * @param D The DFA state to add\n     * @return The state stored in the DFA. This will be either the existing\n     * state if {@code D} is already in the DFA, or {@code D} itself if the\n     * state was not already present\n     */\n    addDFAState(dfa, D) {\n        if (D === ATNSimulator.ERROR) {\n            return D;\n        }\n        const existing = dfa.states.get(D);\n        if(existing!==null) {\n            return existing;\n        }\n        D.stateNumber = dfa.states.length;\n        if (! D.configs.readOnly) {\n            D.configs.optimizeConfigs(this);\n            D.configs.setReadonly(true);\n        }\n        dfa.states.add(D);\n        if (this.debug) {\n            console.log(\"adding new DFA state: \" + D);\n        }\n        return D;\n    }\n\n    reportAttemptingFullContext(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n        if (this.debug || this.retry_debug) {\n            const interval = new Interval(startIndex, stopIndex + 1);\n            console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n                               \", input=\" + this.parser.getTokenStream().getText(interval));\n        }\n        if (this.parser!==null) {\n            this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n        }\n    }\n\n    reportContextSensitivity(dfa, prediction, configs, startIndex, stopIndex) {\n        if (this.debug || this.retry_debug) {\n            const interval = new Interval(startIndex, stopIndex + 1);\n            console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n                               \", input=\" + this.parser.getTokenStream().getText(interval));\n        }\n        if (this.parser!==null) {\n            this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n        }\n    }\n\n    // If context sensitive parsing, we know it's ambiguity not conflict//\n    reportAmbiguity(dfa, D, startIndex, stopIndex,\n                                   exact, ambigAlts, configs ) {\n        if (this.debug || this.retry_debug) {\n            const interval = new Interval(startIndex, stopIndex + 1);\n            console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n                               \", input=\" + this.parser.getTokenStream().getText(interval));\n        }\n        if (this.parser!==null) {\n            this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n        }\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ATN from './ATN.js';\nimport ATNDeserializer from './ATNDeserializer.js';\nimport LexerATNSimulator from './LexerATNSimulator.js';\nimport ParserATNSimulator from './ParserATNSimulator.js';\nimport PredictionMode from './PredictionMode.js';\n\nexport default { ATN, ATNDeserializer, LexerATNSimulator, ParserATNSimulator, PredictionMode }\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nimport arrayToString from \"../utils/arrayToString.js\";\n\n/**\n * A DFA walker that knows how to dump them to serialized strings.\n */\nexport default class DFASerializer {\n    constructor(dfa, literalNames, symbolicNames) {\n        this.dfa = dfa;\n        this.literalNames = literalNames || [];\n        this.symbolicNames = symbolicNames || [];\n    }\n\n    toString() {\n       if(this.dfa.s0 === null) {\n           return null;\n       }\n       let buf = \"\";\n       const states = this.dfa.sortedStates();\n       for(let i=0; i<states.length; i++) {\n           const s = states[i];\n           if(s.edges!==null) {\n                const n = s.edges.length;\n                for(let j=0;j<n;j++) {\n                    const t = s.edges[j] || null;\n                    if(t!==null && t.stateNumber !== 0x7FFFFFFF) {\n                        buf = buf.concat(this.getStateString(s));\n                        buf = buf.concat(\"-\");\n                        buf = buf.concat(this.getEdgeLabel(j));\n                        buf = buf.concat(\"->\");\n                        buf = buf.concat(this.getStateString(t));\n                        buf = buf.concat('\\n');\n                    }\n                }\n           }\n       }\n       return buf.length===0 ? null : buf;\n    }\n\n    getEdgeLabel(i) {\n        if (i===0) {\n            return \"EOF\";\n        } else if(this.literalNames !==null || this.symbolicNames!==null) {\n            return this.literalNames[i-1] || this.symbolicNames[i-1];\n        } else {\n            return String.fromCharCode(i-1);\n        }\n    }\n\n    getStateString(s) {\n        const baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n        if(s.isAcceptState) {\n            if (s.predicates !== null) {\n                return baseStateStr + \"=>\" + arrayToString(s.predicates);\n            } else {\n                return baseStateStr + \"=>\" + s.prediction.toString();\n            }\n        } else {\n            return baseStateStr;\n        }\n    }\n}\n\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport DFASerializer from \"./DFASerializer.js\";\n\nexport default class LexerDFASerializer extends DFASerializer {\n    constructor(dfa) {\n        super(dfa, null);\n    }\n\n    getEdgeLabel(i) {\n        return \"'\" + String.fromCharCode(i) + \"'\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFAState from './DFAState.js';\nimport StarLoopEntryState from '../state/StarLoopEntryState.js';\nimport ATNConfigSet from './../atn/ATNConfigSet.js';\nimport DFASerializer from './DFASerializer.js';\nimport LexerDFASerializer from './LexerDFASerializer.js';\nimport HashSet from \"../misc/HashSet.js\";\n\nexport default class DFA {\n\tconstructor(atnStartState, decision) {\n\t\tif (decision === undefined) {\n\t\t\tdecision = 0;\n\t\t}\n\t\t/**\n\t\t * From which ATN state did we create this DFA?\n\t\t */\n\t\tthis.atnStartState = atnStartState;\n\t\tthis.decision = decision;\n\t\t/**\n\t\t * A set of all DFA states. Use {@link Map} so we can get old state back\n\t\t * ({@link Set} only allows you to see if it's there).\n\t\t */\n\t\tthis._states = new HashSet();\n\t\tthis.s0 = null;\n\t\t/**\n\t\t * {@code true} if this DFA is for a precedence decision; otherwise,\n\t\t * {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t\t * {@link //setPrecedenceDfa}\n\t\t */\n\t\tthis.precedenceDfa = false;\n\t\tif (atnStartState instanceof StarLoopEntryState)\n\t\t{\n\t\t\tif (atnStartState.isPrecedenceDecision) {\n\t\t\t\tthis.precedenceDfa = true;\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @return The start state corresponding to the specified precedence, or\n\t * {@code null} if no start state exists for the specified precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tgetPrecedenceStartState(precedence) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\t// s0.edges is never null for a precedence DFA\n\t\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.s0.edges[precedence] || null;\n\t}\n\n\t/**\n\t * Set the start state for a specific precedence value.\n\t *\n\t * @param precedence The current precedence.\n\t * @param startState The start state corresponding to the specified\n\t * precedence.\n\t *\n\t * @throws IllegalStateException if this is not a precedence DFA.\n\t * @see //isPrecedenceDfa()\n\t */\n\tsetPrecedenceStartState(precedence, startState) {\n\t\tif (!(this.precedenceDfa)) {\n\t\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t\t}\n\t\tif (precedence < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * synchronization on s0 here is ok. when the DFA is turned into a\n\t\t * precedence DFA, s0 will be initialized once and not updated again\n\t\t * s0.edges is never null for a precedence DFA\n\t\t */\n\t\tthis.s0.edges[precedence] = startState;\n\t}\n\n\t/**\n\t * Sets whether this is a precedence DFA. If the specified value differs\n\t * from the current DFA configuration, the following actions are taken;\n\t * otherwise no changes are made to the current DFA.\n\t *\n\t * <ul>\n\t * <li>The {@link //states} map is cleared</li>\n\t * <li>If {@code precedenceDfa} is {@code false}, the initial state\n\t * {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n\t * {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n\t * store the start states for individual precedence values.</li>\n\t * <li>The {@link //precedenceDfa} field is updated</li>\n\t * </ul>\n\t *\n\t * @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n\t * {@code false}\n\t */\n\tsetPrecedenceDfa(precedenceDfa) {\n\t\tif (this.precedenceDfa!==precedenceDfa) {\n\t\t\tthis._states = new HashSet();\n\t\t\tif (precedenceDfa) {\n\t\t\t\tconst precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\t\tprecedenceState.edges = [];\n\t\t\t\tprecedenceState.isAcceptState = false;\n\t\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\t\tthis.s0 = precedenceState;\n\t\t\t} else {\n\t\t\t\tthis.s0 = null;\n\t\t\t}\n\t\t\tthis.precedenceDfa = precedenceDfa;\n\t\t}\n\t}\n\n\t/**\n\t * Return a list of all states in this DFA, ordered by state number.\n\t */\n\tsortedStates() {\n\t\tconst list = this._states.values();\n\t\treturn list.sort(function(a, b) {\n\t\t\treturn a.stateNumber - b.stateNumber;\n\t\t});\n\t}\n\n\ttoString(literalNames, symbolicNames) {\n\t\tliteralNames = literalNames || null;\n\t\tsymbolicNames = symbolicNames || null;\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new DFASerializer(this, literalNames, symbolicNames);\n\t\treturn serializer.toString();\n\t}\n\n\ttoLexerString() {\n\t\tif (this.s0 === null) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst serializer = new LexerDFASerializer(this);\n\t\treturn serializer.toString();\n\t}\n\n\tget states(){\n\t\treturn this._states;\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport DFA from './DFA.js';\nimport DFASerializer from './DFASerializer.js';\nimport LexerDFASerializer from './LexerDFASerializer.js';\nimport PredPrediction from './PredPrediction.js';\n\nexport default { DFA, DFASerializer, LexerDFASerializer, PredPrediction };\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseTreeListener {\n    visitTerminal(node) {\n    }\n\n    visitErrorNode(node) {\n    }\n\n    enterEveryRule(node) {\n    }\n\n    exitEveryRule(node) {\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseTreeVisitor {\n    visit(ctx) {\n        if (Array.isArray(ctx)) {\n            return ctx.map(function(child) {\n                return child.accept(this);\n            }, this);\n        } else {\n            return ctx.accept(this);\n        }\n    }\n\n    visitChildren(ctx) {\n        if (ctx.children) {\n            return this.visit(ctx.children);\n        } else {\n            return null;\n        }\n    }\n\n    visitTerminal(node) {\n    }\n\n    visitErrorNode(node) {\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport TerminalNode from \"./TerminalNode.js\";\nimport ErrorNode from \"./ErrorNode.js\";\n\nexport default class ParseTreeWalker {\n\n    /**\n     * Performs a walk on the given parse tree starting at the root and going down recursively\n     * with depth-first search. On each node, {@link ParseTreeWalker//enterRule} is called before\n     * recursively walking down into child nodes, then\n     * {@link ParseTreeWalker//exitRule} is called after the recursive call to wind up.\n     * @param listener The listener used by the walker to process grammar rules\n     * @param t The parse tree to be walked on\n     */\n    walk(listener, t) {\n        const errorNode = t instanceof ErrorNode ||\n            (t.isErrorNode !== undefined && t.isErrorNode());\n        if (errorNode) {\n            listener.visitErrorNode(t);\n        } else if (t instanceof TerminalNode) {\n            listener.visitTerminal(t);\n        } else {\n            this.enterRule(listener, t);\n            for (let i = 0; i < t.getChildCount(); i++) {\n                const child = t.getChild(i);\n                this.walk(listener, child);\n            }\n            this.exitRule(listener, t);\n        }\n    }\n\n    /**\n     * Enters a grammar rule by first triggering the generic event {@link ParseTreeListener//enterEveryRule}\n     * then by triggering the event specific to the given parse tree node\n     * @param listener The listener responding to the trigger events\n     * @param r The grammar rule containing the rule context\n     */\n    enterRule(listener, r) {\n        const ctx = r.getRuleContext();\n        listener.enterEveryRule(ctx);\n        ctx.enterRule(listener);\n    }\n\n    /**\n     * Exits a grammar rule by first triggering the event specific to the given parse tree node\n     * then by triggering the generic event {@link ParseTreeListener//exitEveryRule}\n     * @param listener The listener responding to the trigger events\n     * @param r The grammar rule containing the rule context\n     */\n    exitRule(listener, r) {\n        const ctx = r.getRuleContext();\n        ctx.exitRule(listener);\n        listener.exitEveryRule(ctx);\n    }\n}\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleNode from './RuleNode.js';\nimport ErrorNode from './ErrorNode.js';\nimport TerminalNode from './TerminalNode.js';\nimport ParseTreeListener from './ParseTreeListener.js';\nimport ParseTreeVisitor from './ParseTreeVisitor.js';\nimport ParseTreeWalker from './ParseTreeWalker.js';\nimport { default as Trees } from './Trees.js';\n\nexport default { Trees, RuleNode, ErrorNode, TerminalNode, ParseTreeListener, ParseTreeVisitor, ParseTreeWalker }\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * This signifies any kind of mismatched input exceptions such as\n * when the current input does not match the expected token.\n */\nexport default class InputMismatchException extends RecognitionException {\n    constructor(recognizer) {\n        super({message: \"\", recognizer: recognizer, input: recognizer.getInputStream(), ctx: recognizer._ctx});\n        this.offendingToken = recognizer.getCurrentToken();\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredicateTransition from \"../transition/PredicateTransition.js\";\nimport RecognitionException from \"./RecognitionException.js\";\n\n/**\n * A semantic predicate failed during validation. Validation of predicates\n * occurs when normally parsing the alternative just like matching a token.\n * Disambiguating predicate evaluation occurs when we test a predicate during\n * prediction.\n */\nexport default class FailedPredicateException extends RecognitionException {\n    constructor(recognizer, predicate, message) {\n        super({\n            message: formatMessage(predicate, message || null), recognizer: recognizer,\n            input: recognizer.getInputStream(), ctx: recognizer._ctx\n        });\n        const s = recognizer._interp.atn.states[recognizer.state]\n        const trans = s.transitions[0]\n        if (trans instanceof PredicateTransition) {\n            this.ruleIndex = trans.ruleIndex;\n            this.predicateIndex = trans.predIndex;\n        } else {\n            this.ruleIndex = 0;\n            this.predicateIndex = 0;\n        }\n        this.predicate = predicate;\n        this.offendingToken = recognizer.getCurrentToken();\n    }\n}\n\n\nfunction formatMessage(predicate, message) {\n    if (message !==null) {\n        return message;\n    } else {\n        return \"failed predicate: {\" + predicate + \"}?\";\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport ErrorListener from './ErrorListener.js';\nimport Interval from '../misc/Interval.js';\nimport BitSet from \"../misc/BitSet.js\";\n\n\n/**\n * This implementation of {@link ANTLRErrorListener} can be used to identify\n *  certain potential correctness and performance problems in grammars. \"Reports\"\n *  are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n *  message.\n *\n *  <ul>\n *  <li><b>Ambiguities</b>: These are cases where more than one path through the\n *  grammar can match the input.</li>\n *  <li><b>Weak context sensitivity</b>: These are cases where full-context\n *  prediction resolved an SLL conflict to a unique alternative which equaled the\n *  minimum alternative of the SLL conflict.</li>\n *  <li><b>Strong (forced) context sensitivity</b>: These are cases where the\n *  full-context prediction resolved an SLL conflict to a unique alternative,\n *  <em>and</em> the minimum alternative of the SLL conflict was found to not be\n *  a truly viable alternative. Two-stage parsing cannot be used for inputs where\n *  this situation occurs.</li>\n *  </ul>\n */\nexport default class DiagnosticErrorListener extends ErrorListener {\n\tconstructor(exactOnly) {\n\t\tsuper();\n\t\texactOnly = exactOnly || true;\n\t\t// whether all ambiguities or only exact ambiguities are reported.\n\t\tthis.exactOnly = exactOnly;\n\t}\n\n\treportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n\t\tif (this.exactOnly && !exact) {\n\t\t\treturn;\n\t\t}\n\t\tconst msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\t\tconst msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\treportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\t\tconst msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\"\n\t\trecognizer.notifyErrorListeners(msg);\n\t}\n\n\tgetDecisionDescription(recognizer, dfa) {\n\t\tconst decision = dfa.decision\n\t\tconst ruleIndex = dfa.atnStartState.ruleIndex\n\n\t\tconst ruleNames = recognizer.ruleNames\n\t\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\tconst ruleName = ruleNames[ruleIndex] || null\n\t\tif (ruleName === null || ruleName.length === 0) {\n\t\t\treturn \"\" + decision;\n\t\t}\n\t\treturn `${decision} (${ruleName})`;\n\t}\n\n\t/**\n\t * Computes the set of conflicting or ambiguous alternatives from a\n\t * configuration set, if that information was not already provided by the\n\t * parser.\n\t *\n\t * @param reportedAlts The set of conflicting or ambiguous alternatives, as\n\t * reported by the parser.\n\t * @param configs The conflicting or ambiguous configuration set.\n\t * @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n\t * returns the set of alternatives represented in {@code configs}.\n     */\n\tgetConflictingAlts(reportedAlts, configs) {\n\t\tif (reportedAlts !== null) {\n\t\t\treturn reportedAlts;\n\t\t}\n\t\tconst result = new BitSet()\n\t\tfor (let i = 0; i < configs.items.length; i++) {\n\t\t\tresult.add(configs.items[i].alt);\n\t\t}\n\t\treturn `{${result.values().join(\", \")}}`;\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexport default class ParseCancellationException extends Error {\n    constructor() {\n        super()\n        Error.captureStackTrace(this, ParseCancellationException);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexport default class ErrorStrategy {\n\n    reset(recognizer) {\n    }\n\n    recoverInline(recognizer) {\n    }\n\n    recover(recognizer, e) {\n    }\n\n    sync(recognizer) {\n    }\n\n    inErrorRecoveryMode(recognizer) {\n    }\n\n    reportError(recognizer) {\n    }\n}\n\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport FailedPredicateException from \"./FailedPredicateException.js\";\nimport InputMismatchException from \"./InputMismatchException.js\";\nimport NoViableAltException from \"./NoViableAltException.js\";\nimport ATNState from \"../state/ATNState.js\";\nimport Token from '../Token.js';\nimport Interval from \"../misc/Interval.js\";\nimport IntervalSet from \"../misc/IntervalSet.js\";\nimport ErrorStrategy from \"./ErrorStrategy.js\";\n\n/**\n * This is the default implementation of {@link ANTLRErrorStrategy} used for\n * error reporting and recovery in ANTLR parsers.\n */\nexport default class DefaultErrorStrategy extends ErrorStrategy {\n    constructor() {\n        super();\n        /**\n         * Indicates whether the error strategy is currently \"recovering from an\n         * error\". This is used to suppress reporting multiple error messages while\n         * attempting to recover from a detected syntax error.\n         *\n         * @see //inErrorRecoveryMode\n         */\n        this.errorRecoveryMode = false;\n\n        /**\n         * The index into the input stream where the last error occurred.\n         * This is used to prevent infinite loops where an error is found\n         * but no token is consumed during recovery...another error is found,\n         * ad nauseum. This is a failsafe mechanism to guarantee that at least\n         * one token/tree node is consumed for two errors.\n         */\n        this.lastErrorIndex = -1;\n        this.lastErrorStates = null;\n        this.nextTokensContext = null;\n        this.nextTokenState = 0;\n    }\n\n    /**\n     * <p>The default implementation simply calls {@link //endErrorCondition} to\n     * ensure that the handler is not in error recovery mode.</p>\n     */\n    reset(recognizer) {\n        this.endErrorCondition(recognizer);\n    }\n\n    /**\n     * This method is called to enter error recovery mode when a recognition\n     * exception is reported.\n     *\n     * @param recognizer the parser instance\n     */\n    beginErrorCondition(recognizer) {\n        this.errorRecoveryMode = true;\n    }\n\n    inErrorRecoveryMode(recognizer) {\n        return this.errorRecoveryMode;\n    }\n\n    /**\n     * This method is called to leave error recovery mode after recovering from\n     * a recognition exception.\n     * @param recognizer\n     */\n    endErrorCondition(recognizer) {\n        this.errorRecoveryMode = false;\n        this.lastErrorStates = null;\n        this.lastErrorIndex = -1;\n    }\n\n    /**\n     * {@inheritDoc}\n     * <p>The default implementation simply calls {@link //endErrorCondition}.</p>\n     */\n    reportMatch(recognizer) {\n        this.endErrorCondition(recognizer);\n    }\n\n    /**\n     * {@inheritDoc}\n     *\n     * <p>The default implementation returns immediately if the handler is already\n     * in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n     * and dispatches the reporting task based on the runtime type of {@code e}\n     * according to the following table.</p>\n     *\n     * <ul>\n     * <li>{@link NoViableAltException}: Dispatches the call to\n     * {@link //reportNoViableAlternative}</li>\n     * <li>{@link InputMismatchException}: Dispatches the call to\n     * {@link //reportInputMismatch}</li>\n     * <li>{@link FailedPredicateException}: Dispatches the call to\n     * {@link //reportFailedPredicate}</li>\n     * <li>All other types: calls {@link Parser//notifyErrorListeners} to report\n     * the exception</li>\n     * </ul>\n     */\n    reportError(recognizer, e) {\n        // if we've already reported an error and have not matched a token\n        // yet successfully, don't report any errors.\n        if(this.inErrorRecoveryMode(recognizer)) {\n            return; // don't report spurious errors\n        }\n        this.beginErrorCondition(recognizer);\n        if ( e instanceof NoViableAltException ) {\n            this.reportNoViableAlternative(recognizer, e);\n        } else if ( e instanceof InputMismatchException ) {\n            this.reportInputMismatch(recognizer, e);\n        } else if ( e instanceof FailedPredicateException ) {\n            this.reportFailedPredicate(recognizer, e);\n        } else {\n            console.log(\"unknown recognition error type: \" + e.constructor.name);\n            console.log(e.stack);\n            recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n        }\n    }\n\n    /**\n     *\n     * {@inheritDoc}\n     *\n     * <p>The default implementation resynchronizes the parser by consuming tokens\n     * until we find one in the resynchronization set--loosely the set of tokens\n     * that can follow the current rule.</p>\n     *\n     */\n    recover(recognizer, e) {\n        if (this.lastErrorIndex===recognizer.getInputStream().index &&\n            this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n            // uh oh, another error at same token index and previously-visited\n            // state in ATN; must be a case where LT(1) is in the recovery\n            // token set so nothing got consumed. Consume a single token\n            // at least to prevent an infinite loop; this is a failsafe.\n            recognizer.consume();\n        }\n        this.lastErrorIndex = recognizer._input.index;\n        if (this.lastErrorStates === null) {\n            this.lastErrorStates = [];\n        }\n        this.lastErrorStates.push(recognizer.state);\n        const followSet = this.getErrorRecoverySet(recognizer)\n        this.consumeUntil(recognizer, followSet);\n    }\n\n    /**\n     * The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n     * that the current lookahead symbol is consistent with what were expecting\n     * at this point in the ATN. You can call this anytime but ANTLR only\n     * generates code to check before subrules/loops and each iteration.\n     *\n     * <p>Implements Jim Idle's magic sync mechanism in closures and optional\n     * subrules. E.g.,</p>\n     *\n     * <pre>\n     * a : sync ( stuff sync )* ;\n     * sync : {consume to what can follow sync} ;\n     * </pre>\n     *\n     * At the start of a sub rule upon error, {@link //sync} performs single\n     * token deletion, if possible. If it can't do that, it bails on the current\n     * rule and uses the default error recovery, which consumes until the\n     * resynchronization set of the current rule.\n     *\n     * <p>If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n     * with an empty alternative), then the expected set includes what follows\n     * the subrule.</p>\n     *\n     * <p>During loop iteration, it consumes until it sees a token that can start a\n     * sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n     * stay in the loop as long as possible.</p>\n     *\n     * <p><strong>ORIGINS</strong></p>\n     *\n     * <p>Previous versions of ANTLR did a poor job of their recovery within loops.\n     * A single mismatch token or missing token would force the parser to bail\n     * out of the entire rules surrounding the loop. So, for rule</p>\n     *\n     * <pre>\n     * classDef : 'class' ID '{' member* '}'\n     * </pre>\n     *\n     * input with an extra token between members would force the parser to\n     * consume until it found the next class definition rather than the next\n     * member definition of the current class.\n     *\n     * <p>This functionality cost a little bit of effort because the parser has to\n     * compare token set at the start of the loop and at each iteration. If for\n     * some reason speed is suffering for you, you can turn off this\n     * functionality by simply overriding this method as a blank { }.</p>\n     *\n     */\n    sync(recognizer) {\n        // If already recovering, don't try to sync\n        if (this.inErrorRecoveryMode(recognizer)) {\n            return;\n        }\n        const s = recognizer._interp.atn.states[recognizer.state];\n        const la = recognizer.getTokenStream().LA(1);\n        // try cheaper subset first; might get lucky. seems to shave a wee bit off\n        const nextTokens = recognizer.atn.nextTokens(s);\n        if(nextTokens.contains(la)) {\n            this.nextTokensContext = null;\n            this.nextTokenState = ATNState.INVALID_STATE_NUMBER;\n            return;\n        } else if (nextTokens.contains(Token.EPSILON)) {\n            if(this.nextTokensContext === null) {\n                // It's possible the next token won't match information tracked\n                // by sync is restricted for performance.\n                this.nextTokensContext = recognizer._ctx;\n                this.nextTokensState = recognizer._stateNumber;\n            }\n            return;\n        }\n        switch (s.stateType) {\n            case ATNState.BLOCK_START:\n            case ATNState.STAR_BLOCK_START:\n            case ATNState.PLUS_BLOCK_START:\n            case ATNState.STAR_LOOP_ENTRY:\n                // report error and recover if possible\n                if( this.singleTokenDeletion(recognizer) !== null) {\n                    return;\n                } else {\n                    throw new InputMismatchException(recognizer);\n                }\n            case ATNState.PLUS_LOOP_BACK:\n            case ATNState.STAR_LOOP_BACK:\n                {\n                this.reportUnwantedToken(recognizer);\n                const expecting = new IntervalSet();\n                expecting.addSet(recognizer.getExpectedTokens());\n                const whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n                this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n                }\n                break;\n            default:\n            // do nothing if we can't identify the exact kind of ATN state\n        }\n    }\n\n    /**\n     * This is called by {@link //reportError} when the exception is a\n     * {@link NoViableAltException}.\n     *\n     * @see //reportError\n     *\n     * @param recognizer the parser instance\n     * @param e the recognition exception\n     */\n    reportNoViableAlternative(recognizer, e) {\n        const tokens = recognizer.getTokenStream()\n        let input\n        if(tokens !== null) {\n            if (e.startToken.type===Token.EOF) {\n                input = \"<EOF>\";\n            } else {\n                input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n            }\n        } else {\n            input = \"<unknown input>\";\n        }\n        const msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input)\n        recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n    }\n\n    /**\n     * This is called by {@link //reportError} when the exception is an\n     * {@link InputMismatchException}.\n     *\n     * @see //reportError\n     *\n     * @param recognizer the parser instance\n     * @param e the recognition exception\n     */\n    reportInputMismatch(recognizer, e) {\n        const msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n            \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames)\n        recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n    }\n\n    /**\n     * This is called by {@link //reportError} when the exception is a\n     * {@link FailedPredicateException}.\n     *\n     * @see //reportError\n     *\n     * @param recognizer the parser instance\n     * @param e the recognition exception\n     */\n    reportFailedPredicate(recognizer, e) {\n        const ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex]\n        const msg = \"rule \" + ruleName + \" \" + e.message\n        recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n    }\n\n    /**\n     * This method is called to report a syntax error which requires the removal\n     * of a token from the input stream. At the time this method is called, the\n     * erroneous symbol is current {@code LT(1)} symbol and has not yet been\n     * removed from the input stream. When this method returns,\n     * {@code recognizer} is in error recovery mode.\n     *\n     * <p>This method is called when {@link //singleTokenDeletion} identifies\n     * single-token deletion as a viable recovery strategy for a mismatched\n     * input error.</p>\n     *\n     * <p>The default implementation simply returns if the handler is already in\n     * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n     * enter error recovery mode, followed by calling\n     * {@link Parser//notifyErrorListeners}.</p>\n     *\n     * @param recognizer the parser instance\n     *\n     */\n    reportUnwantedToken(recognizer) {\n        if (this.inErrorRecoveryMode(recognizer)) {\n            return;\n        }\n        this.beginErrorCondition(recognizer);\n        const t = recognizer.getCurrentToken()\n        const tokenName = this.getTokenErrorDisplay(t)\n        const expecting = this.getExpectedTokens(recognizer)\n        const msg = \"extraneous input \" + tokenName + \" expecting \" +\n            expecting.toString(recognizer.literalNames, recognizer.symbolicNames)\n        recognizer.notifyErrorListeners(msg, t, null);\n    }\n\n    /**\n     * This method is called to report a syntax error which requires the\n     * insertion of a missing token into the input stream. At the time this\n     * method is called, the missing token has not yet been inserted. When this\n     * method returns, {@code recognizer} is in error recovery mode.\n     *\n     * <p>This method is called when {@link //singleTokenInsertion} identifies\n     * single-token insertion as a viable recovery strategy for a mismatched\n     * input error.</p>\n     *\n     * <p>The default implementation simply returns if the handler is already in\n     * error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n     * enter error recovery mode, followed by calling\n     * {@link Parser//notifyErrorListeners}.</p>\n     *\n     * @param recognizer the parser instance\n     */\n    reportMissingToken(recognizer) {\n        if ( this.inErrorRecoveryMode(recognizer)) {\n            return;\n        }\n        this.beginErrorCondition(recognizer);\n        const t = recognizer.getCurrentToken()\n        const expecting = this.getExpectedTokens(recognizer)\n        const msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n            \" at \" + this.getTokenErrorDisplay(t)\n        recognizer.notifyErrorListeners(msg, t, null);\n    }\n\n    /**\n     * <p>The default implementation attempts to recover from the mismatched input\n     * by using single token insertion and deletion as described below. If the\n     * recovery attempt fails, this method throws an\n     * {@link InputMismatchException}.</p>\n     *\n     * <p><strong>EXTRA TOKEN</strong> (single token deletion)</p>\n     *\n     * <p>{@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n     * right token, however, then assume {@code LA(1)} is some extra spurious\n     * token and delete it. Then consume and return the next token (which was\n     * the {@code LA(2)} token) as the successful result of the match operation.</p>\n     *\n     * <p>This recovery strategy is implemented by {@link\n        * //singleTokenDeletion}.</p>\n     *\n     * <p><strong>MISSING TOKEN</strong> (single token insertion)</p>\n     *\n     * <p>If current token (at {@code LA(1)}) is consistent with what could come\n     * after the expected {@code LA(1)} token, then assume the token is missing\n     * and use the parser's {@link TokenFactory} to create it on the fly. The\n     * \"insertion\" is performed by returning the created token as the successful\n     * result of the match operation.</p>\n     *\n     * <p>This recovery strategy is implemented by {@link\n        * //singleTokenInsertion}.</p>\n     *\n     * <p><strong>EXAMPLE</strong></p>\n     *\n     * <p>For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n     * the parser returns from the nested call to {@code expr}, it will have\n     * call chain:</p>\n     *\n     * <pre>\n     * stat &rarr; expr &rarr; atom\n     * </pre>\n     *\n     * and it will be trying to match the {@code ')'} at this point in the\n     * derivation:\n     *\n     * <pre>\n     * =&gt; ID '=' '(' INT ')' ('+' atom)* ';'\n     * ^\n     * </pre>\n     *\n     * The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n     * call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n     * is in the set of tokens that can follow the {@code ')'} token reference\n     * in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n     */\n    recoverInline(recognizer) {\n        // SINGLE TOKEN DELETION\n        const matchedSymbol = this.singleTokenDeletion(recognizer)\n        if (matchedSymbol !== null) {\n            // we have deleted the extra token.\n            // now, move past ttype token as if all were ok\n            recognizer.consume();\n            return matchedSymbol;\n        }\n        // SINGLE TOKEN INSERTION\n        if (this.singleTokenInsertion(recognizer)) {\n            return this.getMissingSymbol(recognizer);\n        }\n        // even that didn't work; must throw the exception\n        throw new InputMismatchException(recognizer);\n    }\n\n    /**\n     * This method implements the single-token insertion inline error recovery\n     * strategy. It is called by {@link //recoverInline} if the single-token\n     * deletion strategy fails to recover from the mismatched input. If this\n     * method returns {@code true}, {@code recognizer} will be in error recovery\n     * mode.\n     *\n     * <p>This method determines whether or not single-token insertion is viable by\n     * checking if the {@code LA(1)} input symbol could be successfully matched\n     * if it were instead the {@code LA(2)} symbol. If this method returns\n     * {@code true}, the caller is responsible for creating and inserting a\n     * token with the correct type to produce this behavior.</p>\n     *\n     * @param recognizer the parser instance\n     * @return {@code true} if single-token insertion is a viable recovery\n     * strategy for the current mismatched input, otherwise {@code false}\n     */\n    singleTokenInsertion(recognizer) {\n        const currentSymbolType = recognizer.getTokenStream().LA(1)\n        // if current token is consistent with what could come after current\n        // ATN state, then we know we're missing a token; error recovery\n        // is free to conjure up and insert the missing token\n        const atn = recognizer._interp.atn\n        const currentState = atn.states[recognizer.state]\n        const next = currentState.transitions[0].target\n        const expectingAtLL2 = atn.nextTokens(next, recognizer._ctx)\n        if (expectingAtLL2.contains(currentSymbolType) ){\n            this.reportMissingToken(recognizer);\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * This method implements the single-token deletion inline error recovery\n     * strategy. It is called by {@link //recoverInline} to attempt to recover\n     * from mismatched input. If this method returns null, the parser and error\n     * handler state will not have changed. If this method returns non-null,\n     * {@code recognizer} will <em>not</em> be in error recovery mode since the\n     * returned token was a successful match.\n     *\n     * <p>If the single-token deletion is successful, this method calls\n     * {@link //reportUnwantedToken} to report the error, followed by\n     * {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n     * before returning {@link //reportMatch} is called to signal a successful\n     * match.</p>\n     *\n     * @param recognizer the parser instance\n     * @return the successfully matched {@link Token} instance if single-token\n     * deletion successfully recovers from the mismatched input, otherwise\n     * {@code null}\n     */\n    singleTokenDeletion(recognizer) {\n        const nextTokenType = recognizer.getTokenStream().LA(2)\n        const expecting = this.getExpectedTokens(recognizer)\n        if (expecting.contains(nextTokenType)) {\n            this.reportUnwantedToken(recognizer);\n            // print(\"recoverFromMismatchedToken deleting \" \\\n            // + str(recognizer.getTokenStream().LT(1)) \\\n            // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n            // + \" is what we want\", file=sys.stderr)\n            recognizer.consume(); // simply delete extra token\n            // we want to return the token we're actually matching\n            const matchedSymbol = recognizer.getCurrentToken()\n            this.reportMatch(recognizer); // we know current token is correct\n            return matchedSymbol;\n        } else {\n            return null;\n        }\n    }\n\n    /**\n     * Conjure up a missing token during error recovery.\n     *\n     * The recognizer attempts to recover from single missing\n     * symbols. But, actions might refer to that missing symbol.\n     * For example, x=ID {f($x);}. The action clearly assumes\n     * that there has been an identifier matched previously and that\n     * $x points at that token. If that token is missing, but\n     * the next token in the stream is what we want we assume that\n     * this token is missing and we keep going. Because we\n     * have to return some token to replace the missing token,\n     * we have to conjure one up. This method gives the user control\n     * over the tokens returned for missing tokens. Mostly,\n     * you will want to create something special for identifier\n     * tokens. For literals such as '{' and ',', the default\n     * action in the parser or tree parser works. It simply creates\n     * a CommonToken of the appropriate type. The text will be the token.\n     * If you change what tokens must be created by the lexer,\n     * override this method to create the appropriate tokens.\n     *\n     */\n    getMissingSymbol(recognizer) {\n        const currentSymbol = recognizer.getCurrentToken()\n        const expecting = this.getExpectedTokens(recognizer)\n        const expectedTokenType = expecting.first() // get any element\n        let tokenText\n        if (expectedTokenType===Token.EOF) {\n            tokenText = \"<missing EOF>\";\n        } else {\n            tokenText = \"<missing \" + recognizer.literalNames[expectedTokenType] + \">\";\n        }\n        let current = currentSymbol\n        const lookback = recognizer.getTokenStream().LT(-1)\n        if (current.type===Token.EOF && lookback !== null) {\n            current = lookback;\n        }\n        return recognizer.getTokenFactory().create(current.source,\n            expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n            -1, -1, current.line, current.column);\n    }\n\n    getExpectedTokens(recognizer) {\n        return recognizer.getExpectedTokens();\n    }\n\n    /**\n     * How should a token be displayed in an error message? The default\n     * is to display just the text, but during development you might\n     * want to have a lot of information spit out. Override in that case\n     * to use t.toString() (which, for CommonToken, dumps everything about\n     * the token). This is better than forcing you to override a method in\n     * your token objects because you don't have to go modify your lexer\n     * so that it creates a new Java type.\n     */\n    getTokenErrorDisplay(t) {\n        if (t === null) {\n            return \"<no token>\";\n        }\n        let s = t.text\n        if (s === null) {\n            if (t.type===Token.EOF) {\n                s = \"<EOF>\";\n            } else {\n                s = \"<\" + t.type + \">\";\n            }\n        }\n        return this.escapeWSAndQuote(s);\n    }\n\n    escapeWSAndQuote(s) {\n        s = s.replace(/\\n/g,\"\\\\n\");\n        s = s.replace(/\\r/g,\"\\\\r\");\n        s = s.replace(/\\t/g,\"\\\\t\");\n        return \"'\" + s + \"'\";\n    }\n\n    /**\n     * Compute the error recovery set for the current rule. During\n     * rule invocation, the parser pushes the set of tokens that can\n     * follow that rule reference on the stack; this amounts to\n     * computing FIRST of what follows the rule reference in the\n     * enclosing rule. See LinearApproximator.FIRST().\n     * This local follow set only includes tokens\n     * from within the rule; i.e., the FIRST computation done by\n     * ANTLR stops at the end of a rule.\n     *\n     * EXAMPLE\n     *\n     * When you find a \"no viable alt exception\", the input is not\n     * consistent with any of the alternatives for rule r. The best\n     * thing to do is to consume tokens until you see something that\n     * can legally follow a call to r//or* any rule that called r.\n     * You don't want the exact set of viable next tokens because the\n     * input might just be missing a token--you might consume the\n     * rest of the input looking for one of the missing tokens.\n     *\n     * Consider grammar:\n     *\n     * a : '[' b ']'\n     * | '(' b ')'\n     * ;\n     * b : c '^' INT ;\n     * c : ID\n     * | INT\n     * ;\n     *\n     * At each rule invocation, the set of tokens that could follow\n     * that rule is pushed on a stack. Here are the various\n     * context-sensitive follow sets:\n     *\n     * FOLLOW(b1_in_a) = FIRST(']') = ']'\n     * FOLLOW(b2_in_a) = FIRST(')') = ')'\n     * FOLLOW(c_in_b) = FIRST('^') = '^'\n     *\n     * Upon erroneous input \"[]\", the call chain is\n     *\n     * a -> b -> c\n     *\n     * and, hence, the follow context stack is:\n     *\n     * depth follow set start of rule execution\n     * 0 <EOF> a (from main())\n     * 1 ']' b\n     * 2 '^' c\n     *\n     * Notice that ')' is not included, because b would have to have\n     * been called from a different context in rule a for ')' to be\n     * included.\n     *\n     * For error recovery, we cannot consider FOLLOW(c)\n     * (context-sensitive or otherwise). We need the combined set of\n     * all context-sensitive FOLLOW sets--the set of all tokens that\n     * could follow any reference in the call chain. We need to\n     * resync to one of those tokens. Note that FOLLOW(c)='^' and if\n     * we resync'd to that token, we'd consume until EOF. We need to\n     * sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n     * In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n     * not consume anything. After printing an error, rule c would\n     * return normally. Rule b would not find the required '^' though.\n     * At this point, it gets a mismatched token error and throws an\n     * exception (since LA(1) is not in the viable following token\n     * set). The rule exception handler tries to recover, but finds\n     * the same recovery set and doesn't consume anything. Rule b\n     * exits normally returning to rule a. Now it finds the ']' (and\n     * with the successful match exits errorRecovery mode).\n     *\n     * So, you can see that the parser walks up the call chain looking\n     * for the token that was a member of the recovery set.\n     *\n     * Errors are not generated in errorRecovery mode.\n     *\n     * ANTLR's error recovery mechanism is based upon original ideas:\n     *\n     * \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n     *\n     * and\n     *\n     * \"A note on error recovery in recursive descent parsers\":\n     * http://portal.acm.org/citation.cfm?id=947902.947905\n     *\n     * Later, Josef Grosch had some good ideas:\n     *\n     * \"Efficient and Comfortable Error Recovery in Recursive Descent\n     * Parsers\":\n     * ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n     *\n     * Like Grosch I implement context-sensitive FOLLOW sets that are combined\n     * at run-time upon error to avoid overhead during parsing.\n     */\n    getErrorRecoverySet(recognizer) {\n        const atn = recognizer._interp.atn\n        let ctx = recognizer._ctx\n        const recoverSet = new IntervalSet()\n        while (ctx !== null && ctx.invokingState>=0) {\n            // compute what follows who invoked us\n            const invokingState = atn.states[ctx.invokingState]\n            const rt = invokingState.transitions[0]\n            const follow = atn.nextTokens(rt.followState)\n            recoverSet.addSet(follow);\n            ctx = ctx.parentCtx;\n        }\n        recoverSet.removeOne(Token.EPSILON);\n        return recoverSet;\n    }\n\n// Consume tokens until one matches the given token set.//\n    consumeUntil(recognizer, set) {\n        let ttype = recognizer.getTokenStream().LA(1)\n        while( ttype !== Token.EOF && !set.contains(ttype)) {\n            recognizer.consume();\n            ttype = recognizer.getTokenStream().LA(1);\n        }\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport InputMismatchException from \"./InputMismatchException.js\";\nimport ParseCancellationException from \"./ParseCancellationException.js\";\nimport DefaultErrorStrategy from \"./DefaultErrorStrategy.js\";\n\n/**\n * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n * by immediately canceling the parse operation with a\n * {@link ParseCancellationException}. The implementation ensures that the\n * {@link ParserRuleContext//exception} field is set for all parse tree nodes\n * that were not completed prior to encountering the error.\n *\n * <p>\n * This error strategy is useful in the following scenarios.</p>\n *\n * <ul>\n * <li><strong>Two-stage parsing:</strong> This error strategy allows the first\n * stage of two-stage parsing to immediately terminate if an error is\n * encountered, and immediately fall back to the second stage. In addition to\n * avoiding wasted work by attempting to recover from errors here, the empty\n * implementation of {@link BailErrorStrategy//sync} improves the performance of\n * the first stage.</li>\n * <li><strong>Silent validation:</strong> When syntax errors are not being\n * reported or logged, and the parse result is simply ignored if errors occur,\n * the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n * when the result will be ignored either way.</li>\n * </ul>\n *\n * <p>\n * {@code myparser.setErrorHandler(new BailErrorStrategy());}</p>\n *\n * @see Parser//setErrorHandler(ANTLRErrorStrategy)\n * */\nexport default class BailErrorStrategy extends DefaultErrorStrategy {\n\n    constructor() {\n        super();\n    }\n\n    /**\n     * Instead of recovering from exception {@code e}, re-throw it wrapped\n     * in a {@link ParseCancellationException} so it is not caught by the\n     * rule function catches. Use {@link Exception//getCause()} to get the\n     * original {@link RecognitionException}.\n     */\n    recover(recognizer, e) {\n        let context = recognizer._ctx\n        while (context !== null) {\n            context.exception = e;\n            context = context.parentCtx;\n        }\n        throw new ParseCancellationException(e);\n    }\n\n    /**\n     * Make sure we don't attempt to recover inline; if the parser\n     * successfully recovers, it won't throw an exception.\n     */\n    recoverInline(recognizer) {\n        this.recover(recognizer, new InputMismatchException(recognizer));\n    }\n\n// Make sure we don't attempt to recover from problems in subrules.//\n    sync(recognizer) {\n        // pass\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RecognitionException from './RecognitionException.js';\nimport NoViableAltException from './NoViableAltException.js';\nimport LexerNoViableAltException from './LexerNoViableAltException.js';\nimport InputMismatchException from './InputMismatchException.js';\nimport FailedPredicateException from './FailedPredicateException.js';\nimport DiagnosticErrorListener from './DiagnosticErrorListener.js';\nimport BailErrorStrategy from './BailErrorStrategy.js';\nimport DefaultErrorStrategy from './DefaultErrorStrategy.js';\nimport ErrorListener from './ErrorListener.js';\n\nexport default {\n    RecognitionException, NoViableAltException, LexerNoViableAltException, InputMismatchException, FailedPredicateException,\n    DiagnosticErrorListener, BailErrorStrategy, DefaultErrorStrategy, ErrorListener\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport './polyfills/codepointat.js';\nimport './polyfills/fromcodepoint.js';\n\n/**\n * If decodeToUnicodeCodePoints is true, the input is treated\n * as a series of Unicode code points.\n *\n * Otherwise, the input is treated as a series of 16-bit UTF-16 code\n * units.\n */\nexport default class InputStream {\n\tconstructor(data, decodeToUnicodeCodePoints) {\n\t\tthis.name = \"<empty>\";\n\t\tthis.strdata = data;\n\t\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t\t// _loadString - Vacuum all input from a string and then treat it like a buffer.\n\t\tthis._index = 0;\n\t\tthis.data = [];\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tfor (let i = 0; i < this.strdata.length; ) {\n\t\t\t\tconst codePoint = this.strdata.codePointAt(i);\n\t\t\t\tthis.data.push(codePoint);\n\t\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.data = new Array(this.strdata.length);\n\t\t\tfor (let i = 0; i < this.strdata.length; i++) {\n\t\t\t\tconst codeUnit = this.strdata.charCodeAt(i);\n\t\t\t\tthis.data[i] = codeUnit;\n\t\t\t}\n\t\t}\n\t\tthis._size = this.data.length;\n\t}\n\n\t/**\n\t * Reset the stream so that it's in the same state it was\n\t * when the object was created *except* the data array is not\n\t * touched.\n\t */\n\treset() {\n\t\tthis._index = 0;\n\t}\n\n\tconsume() {\n\t\tif (this._index >= this._size) {\n\t\t\t// assert this.LA(1) == Token.EOF\n\t\t\tthrow (\"cannot consume EOF\");\n\t\t}\n\t\tthis._index += 1;\n\t}\n\n\tLA(offset) {\n\t\tif (offset === 0) {\n\t\t\treturn 0; // undefined\n\t\t}\n\t\tif (offset < 0) {\n\t\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t\t}\n\t\tconst pos = this._index + offset - 1;\n\t\tif (pos < 0 || pos >= this._size) { // invalid\n\t\t\treturn Token.EOF;\n\t\t}\n\t\treturn this.data[pos];\n\t}\n\n\tLT(offset) {\n\t\treturn this.LA(offset);\n\t}\n\n// mark/release do nothing; we have entire buffer\n\tmark() {\n\t\treturn -1;\n\t}\n\n\trelease(marker) {\n\t}\n\n\t/**\n\t * consume() ahead until p==_index; can't just set p=_index as we must\n\t * update line and column. If we seek backwards, just set p\n\t */\n\tseek(_index) {\n\t\tif (_index <= this._index) {\n\t\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t\t// ...)\n\t\t\treturn;\n\t\t}\n\t\t// seek forward\n\t\tthis._index = Math.min(_index, this._size);\n\t}\n\n\tgetText(start, stop) {\n\t\tif (stop >= this._size) {\n\t\t\tstop = this._size - 1;\n\t\t}\n\t\tif (start >= this._size) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\t\tlet result = \"\";\n\t\t\t\tfor (let i = start; i <= stop; i++) {\n\t\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn this.strdata;\n\t}\n\n\tget index(){\n\t\treturn this._index;\n\t}\n\n\tget size(){\n\t\treturn this._size;\n\t}\n}\n","export default {}","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport InputStream from './InputStream.js';\nimport fs from \"fs\";\n\n/**\n * Utility functions to create InputStreams from various sources.\n *\n * All returned InputStreams support the full range of Unicode\n * up to U+10FFFF (the default behavior of InputStream only supports\n * code points up to U+FFFF).\n */\nexport default {\n  // Creates an InputStream from a string.\n  fromString: function(str) {\n    return new InputStream(str, true);\n  },\n\n  /**\n   * Asynchronously creates an InputStream from a blob given the\n   * encoding of the bytes in that blob (defaults to 'utf8' if\n   * encoding is null).\n   *\n   * Invokes onLoad(result) on success, onError(error) on\n   * failure.\n   */\n  fromBlob: function(blob, encoding, onLoad, onError) {\n    const reader = new window.FileReader();\n    reader.onload = function(e) {\n      const is = new InputStream(e.target.result, true);\n      onLoad(is);\n    };\n    reader.onerror = onError;\n    reader.readAsText(blob, encoding);\n  },\n\n  /**\n   * Creates an InputStream from a Buffer given the\n   * encoding of the bytes in that buffer (defaults to 'utf8' if\n   * encoding is null).\n   */\n  fromBuffer: function(buffer, encoding) {\n    return new InputStream(buffer.toString(encoding), true);\n  },\n\n  /** Asynchronously creates an InputStream from a file on disk given\n   * the encoding of the bytes in that file (defaults to 'utf8' if\n   * encoding is null).\n   *\n   * Invokes callback(error, result) on completion.\n   */\n  fromPath: function(path, encoding, callback) {\n    fs.readFile(path, encoding, function(err, data) {\n      let is = null;\n      if (data !== null) {\n        is = new InputStream(data, true);\n      }\n      callback(err, is);\n    });\n  },\n\n  /**\n   * Synchronously creates an InputStream given a path to a file\n   * on disk and the encoding of the bytes in that file (defaults to\n   * 'utf8' if encoding is null).\n   */\n  fromPathSync: function(path, encoding) {\n    const data = fs.readFileSync(path, encoding);\n    return new InputStream(data, true);\n  }\n};\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport InputStream from './InputStream.js';\nimport fs from \"fs\";\n\n/**\n * This is an InputStream that is loaded from a file all at once\n * when you construct the object.\n */\nexport default class FileStream extends InputStream {\n\tconstructor(fileName, decodeToUnicodeCodePoints) {\n\t\tconst data = fs.readFileSync(fileName, \"utf8\");\n\t\tsuper(data, decodeToUnicodeCodePoints);\n\t\tthis.fileName = fileName;\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n// this is just to keep meaningful parameter types to Parser\nexport default class TokenStream {}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport Lexer from './Lexer.js';\nimport Interval from './misc/Interval.js';\nimport TokenStream from \"./TokenStream.js\";\n\n/**\n * This implementation of {@link TokenStream} loads tokens from a\n * {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n * access to any previous token by index.\n *\n * <p>\n * This token stream ignores the value of {@link Token//getChannel}. If your\n * parser requires the token stream filter tokens to only those on a particular\n * channel, such as {@link Token//DEFAULT_CHANNEL} or\n * {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n * {@link CommonTokenStream}.</p>\n */\nexport default class BufferedTokenStream extends TokenStream {\n\tconstructor(tokenSource) {\n\n\t\tsuper();\n\t\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\t\tthis.tokenSource = tokenSource;\n\t\t/**\n\t\t * A collection of all tokens fetched from the token source. The list is\n\t\t * considered a complete view of the input once {@link //fetchedEOF} is set\n\t\t * to {@code true}.\n\t\t */\n\t\tthis.tokens = [];\n\n\t\t/**\n\t\t * The index into {@link //tokens} of the current token (next token to\n\t\t * {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t\t * be\n\t\t * {@link //LT LT(1)}.\n\t\t *\n\t\t * <p>This field is set to -1 when the stream is first constructed or when\n\t\t * {@link //setTokenSource} is called, indicating that the first token has\n\t\t * not yet been fetched from the token source. For additional information,\n\t\t * see the documentation of {@link IntStream} for a description of\n\t\t * Initializing Methods.</p>\n\t\t */\n\t\tthis.index = -1;\n\n\t\t/**\n\t\t * Indicates whether the {@link Token//EOF} token has been fetched from\n\t\t * {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t\t * performance for the following cases:\n\t\t *\n\t\t * <ul>\n\t\t * <li>{@link //consume}: The lookahead check in {@link //consume} to\n\t\t * prevent\n\t\t * consuming the EOF symbol is optimized by checking the values of\n\t\t * {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t\t * //LA}.</li>\n\t\t * <li>{@link //fetch}: The check to prevent adding multiple EOF symbols\n\t\t * into\n\t\t * {@link //tokens} is trivial with this field.</li>\n\t\t * <ul>\n\t\t */\n\t\tthis.fetchedEOF = false;\n\t}\n\n\tmark() {\n\t\treturn 0;\n\t}\n\n\trelease(marker) {\n\t\t// no resources to release\n\t}\n\n\treset() {\n\t\tthis.seek(0);\n\t}\n\n\tseek(index) {\n\t\tthis.lazyInit();\n\t\tthis.index = this.adjustSeekIndex(index);\n\t}\n\n\tget(index) {\n\t\tthis.lazyInit();\n\t\treturn this.tokens[index];\n\t}\n\n\tconsume() {\n\t\tlet skipEofCheck = false;\n\t\tif (this.index >= 0) {\n\t\t\tif (this.fetchedEOF) {\n\t\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t\t// fetched token except the last.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t\t} else {\n\t\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t\t}\n\t\t} else {\n\t\t\t// not yet initialized\n\t\t\tskipEofCheck = false;\n\t\t}\n\t\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\t\tthrow \"cannot consume EOF\";\n\t\t}\n\t\tif (this.sync(this.index + 1)) {\n\t\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t\t}\n\t}\n\n\t/**\n\t * Make sure index {@code i} in tokens has a token.\n\t *\n\t * @return {Boolean} {@code true} if a token is located at index {@code i}, otherwise\n\t * {@code false}.\n\t * @see //get(int i)\n\t */\n\tsync(i) {\n\t\tconst n = i - this.tokens.length + 1; // how many more elements we need?\n\t\tif (n > 0) {\n\t\t\tconst fetched = this.fetch(n);\n\t\t\treturn fetched >= n;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Add {@code n} elements to buffer.\n\t *\n\t * @return {Number} The actual number of elements added to the buffer.\n\t */\n\tfetch(n) {\n\t\tif (this.fetchedEOF) {\n\t\t\treturn 0;\n\t\t}\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tconst t = this.tokenSource.nextToken();\n\t\t\tt.tokenIndex = this.tokens.length;\n\t\t\tthis.tokens.push(t);\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tthis.fetchedEOF = true;\n\t\t\t\treturn i + 1;\n\t\t\t}\n\t\t}\n\t\treturn n;\n\t}\n\n// Get all tokens from start..stop inclusively///\n\tgetTokens(start, stop, types) {\n\t\tif (types === undefined) {\n\t\t\ttypes = null;\n\t\t}\n\t\tif (start < 0 || stop < 0) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.lazyInit();\n\t\tconst subset = [];\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tfor (let i = start; i < stop; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (types === null || types.contains(t.type)) {\n\t\t\t\tsubset.push(t);\n\t\t\t}\n\t\t}\n\t\treturn subset;\n\t}\n\n\tLA(i) {\n\t\treturn this.LT(i).type;\n\t}\n\n\tLB(k) {\n\t\tif (this.index - k < 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.tokens[this.index - k];\n\t}\n\n\tLT(k) {\n\t\tthis.lazyInit();\n\t\tif (k === 0) {\n\t\t\treturn null;\n\t\t}\n\t\tif (k < 0) {\n\t\t\treturn this.LB(-k);\n\t\t}\n\t\tconst i = this.index + k - 1;\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) { // return EOF token\n\t\t\t// EOF must be last token\n\t\t\treturn this.tokens[this.tokens.length - 1];\n\t\t}\n\t\treturn this.tokens[i];\n\t}\n\n\t/**\n\t * Allowed derived classes to modify the behavior of operations which change\n\t * the current stream position by adjusting the target token index of a seek\n\t * operation. The default implementation simply returns {@code i}. If an\n\t * exception is thrown in this method, the current stream index should not be\n\t * changed.\n\t *\n\t * <p>For example, {@link CommonTokenStream} overrides this method to ensure\n\t * that\n\t * the seek target is always an on-channel token.</p>\n\t *\n\t * @param {Number} i The target token index.\n\t * @return {Number} The adjusted target token index.\n\t */\n\tadjustSeekIndex(i) {\n\t\treturn i;\n\t}\n\n\tlazyInit() {\n\t\tif (this.index === -1) {\n\t\t\tthis.setup();\n\t\t}\n\t}\n\n\tsetup() {\n\t\tthis.sync(0);\n\t\tthis.index = this.adjustSeekIndex(0);\n\t}\n\n// Reset this token stream by setting its token source.///\n\tsetTokenSource(tokenSource) {\n\t\tthis.tokenSource = tokenSource;\n\t\tthis.tokens = [];\n\t\tthis.index = -1;\n\t\tthis.fetchedEOF = false;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the next token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and EOF.\n\t */\n\tnextTokenOnChannel(i, channel) {\n\t\tthis.sync(i);\n\t\tif (i >= this.tokens.length) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet token = this.tokens[i];\n\t\twhile (token.channel !== this.channel) {\n\t\t\tif (token.type === Token.EOF) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\ti += 1;\n\t\t\tthis.sync(i);\n\t\t\ttoken = this.tokens[i];\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Given a starting index, return the index of the previous token on channel.\n\t * Return i if tokens[i] is on channel. Return -1 if there are no tokens\n\t * on channel between i and 0.\n\t */\n\tpreviousTokenOnChannel(i, channel) {\n\t\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\t\ti -= 1;\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the right of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n\t * EOF. If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToRight(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tconst from_ = tokenIndex + 1;\n\t\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\t\tconst to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\t/**\n\t * Collect all tokens on specified channel to the left of\n\t * the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n\t * If channel is -1, find any non default channel token.\n\t */\n\tgetHiddenTokensToLeft(tokenIndex,\n\t\t\tchannel) {\n\t\tif (channel === undefined) {\n\t\t\tchannel = -1;\n\t\t}\n\t\tthis.lazyInit();\n\t\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t\t}\n\t\tconst prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\t\tif (prevOnChannel === tokenIndex - 1) {\n\t\t\treturn null;\n\t\t}\n\t\t// if none on channel to left, prevOnChannel=-1 then from=0\n\t\tconst from_ = prevOnChannel + 1;\n\t\tconst to = tokenIndex - 1;\n\t\treturn this.filterForChannel(from_, to, channel);\n\t}\n\n\tfilterForChannel(left, right, channel) {\n\t\tconst hidden = [];\n\t\tfor (let i = left; i < right + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (channel === -1) {\n\t\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\t\thidden.push(t);\n\t\t\t\t}\n\t\t\t} else if (t.channel === channel) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t}\n\t\tif (hidden.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\treturn hidden;\n\t}\n\n\tgetSourceName() {\n\t\treturn this.tokenSource.getSourceName();\n\t}\n\n// Get the text of all tokens in this buffer.///\n\tgetText(interval) {\n\t\tthis.lazyInit();\n\t\tthis.fill();\n\t\tif (interval === undefined || interval === null) {\n\t\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t\t}\n\t\tlet start = interval.start;\n\t\tif (start instanceof Token) {\n\t\t\tstart = start.tokenIndex;\n\t\t}\n\t\tlet stop = interval.stop;\n\t\tif (stop instanceof Token) {\n\t\t\tstop = stop.tokenIndex;\n\t\t}\n\t\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tif (stop >= this.tokens.length) {\n\t\t\tstop = this.tokens.length - 1;\n\t\t}\n\t\tlet s = \"\";\n\t\tfor (let i = start; i < stop + 1; i++) {\n\t\t\tconst t = this.tokens[i];\n\t\t\tif (t.type === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ts = s + t.text;\n\t\t}\n\t\treturn s;\n\t}\n\n// Get all tokens from lexer until EOF///\n\tfill() {\n\t\tthis.lazyInit();\n\t\twhile (this.fetch(1000) === 1000) {\n\t\t\tcontinue;\n\t\t}\n\t}\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n\nimport Token from './Token.js';\nimport BufferedTokenStream from './BufferedTokenStream.js';\n\n/**\n * This class extends {@link BufferedTokenStream} with functionality to filter\n * token streams to tokens on a particular channel (tokens where\n * {@link Token//getChannel} returns a particular value).\n *\n * <p>\n * This token stream provides access to all tokens by index or when calling\n * methods like {@link //getText}. The channel filtering is only used for code\n * accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n * {@link //LB}.</p>\n *\n * <p>\n * By default, tokens are placed on the default channel\n * ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n * {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n * call {@link Lexer//setChannel}.\n * </p>\n *\n * <p>\n * Note: lexer rules which use the {@code ->skip} lexer command or call\n * {@link Lexer//skip} do not produce tokens at all, so input text matched by\n * such a rule will not be available as part of the token stream, regardless of\n * channel.</p>\n */\nexport default class CommonTokenStream extends BufferedTokenStream {\n    constructor(lexer, channel) {\n        super(lexer);\n        this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n    }\n\n    adjustSeekIndex(i) {\n        return this.nextTokenOnChannel(i, this.channel);\n    }\n\n    LB(k) {\n        if (k===0 || this.index-k<0) {\n            return null;\n        }\n        let i = this.index;\n        let n = 1;\n        // find k good tokens looking backwards\n        while (n <= k) {\n            // skip off-channel tokens\n            i = this.previousTokenOnChannel(i - 1, this.channel);\n            n += 1;\n        }\n        if (i < 0) {\n            return null;\n        }\n        return this.tokens[i];\n    }\n\n    LT(k) {\n        this.lazyInit();\n        if (k === 0) {\n            return null;\n        }\n        if (k < 0) {\n            return this.LB(-k);\n        }\n        let i = this.index;\n        let n = 1; // we know tokens[pos] is a good one\n        // find k good tokens\n        while (n < k) {\n            // skip off-channel tokens, but make sure to not look past EOF\n            if (this.sync(i + 1)) {\n                i = this.nextTokenOnChannel(i + 1, this.channel);\n            }\n            n += 1;\n        }\n        return this.tokens[i];\n    }\n\n    // Count EOF just once.\n    getNumberOfOnChannelTokens() {\n        let n = 0;\n        this.fill();\n        for (let i =0; i< this.tokens.length;i++) {\n            const t = this.tokens[i];\n            if( t.channel===this.channel) {\n                n += 1;\n            }\n            if( t.type===Token.EOF) {\n                break;\n            }\n        }\n        return n;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport ParseTreeListener from \"./tree/ParseTreeListener.js\";\n\nexport default class TraceListener extends ParseTreeListener {\n    constructor(parser) {\n        super();\n        this.parser = parser;\n    }\n\n    enterEveryRule(ctx) {\n        console.log(\"enter   \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n    }\n\n    visitTerminal(node) {\n        console.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n    }\n\n    exitEveryRule(ctx) {\n        console.log(\"exit    \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport Token from './Token.js';\nimport TerminalNode from './tree/TerminalNode.js';\nimport ErrorNode from './tree/ErrorNode.js';\nimport Recognizer from './Recognizer.js';\nimport DefaultErrorStrategy from './error/DefaultErrorStrategy.js';\nimport ATNDeserializer from './atn/ATNDeserializer.js';\nimport ATNDeserializationOptions from './atn/ATNDeserializationOptions.js';\nimport TraceListener from \"./TraceListener.js\";\n\nexport default class Parser extends Recognizer {\n    /**\n     * this is all the parsing support code essentially; most of it is error\n     * recovery stuff.\n     */\n    constructor(input) {\n        super();\n        // The input stream.\n        this._input = null;\n        /**\n         * The error handling strategy for the parser. The default value is a new\n         * instance of {@link DefaultErrorStrategy}.\n         */\n        this._errHandler = new DefaultErrorStrategy();\n        this._precedenceStack = [];\n        this._precedenceStack.push(0);\n        /**\n         * The {@link ParserRuleContext} object for the currently executing rule.\n         * this is always non-null during the parsing process.\n         */\n        this._ctx = null;\n        /**\n         * Specifies whether or not the parser should construct a parse tree during\n         * the parsing process. The default value is {@code true}.\n         */\n        this.buildParseTrees = true;\n        /**\n         * When {@link //setTrace}{@code (true)} is called, a reference to the\n         * {@link TraceListener} is stored here so it can be easily removed in a\n         * later call to {@link //setTrace}{@code (false)}. The listener itself is\n         * implemented as a parser listener so this field is not directly used by\n         * other parser methods.\n         */\n        this._tracer = null;\n        /**\n         * The list of {@link ParseTreeListener} listeners registered to receive\n         * events during the parse.\n         */\n        this._parseListeners = null;\n        /**\n         * The number of syntax errors reported during parsing. this value is\n         * incremented each time {@link //notifyErrorListeners} is called.\n         */\n        this._syntaxErrors = 0;\n        this.setInputStream(input);\n    }\n\n    // reset the parser's state\n    reset() {\n        if (this._input !== null) {\n            this._input.seek(0);\n        }\n        this._errHandler.reset(this);\n        this._ctx = null;\n        this._syntaxErrors = 0;\n        this.setTrace(false);\n        this._precedenceStack = [];\n        this._precedenceStack.push(0);\n        if (this._interp !== null) {\n            this._interp.reset();\n        }\n    }\n\n    /**\n     * Match current input symbol against {@code ttype}. If the symbol type\n     * matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n     * called to complete the match process.\n     *\n     * <p>If the symbol type does not match,\n     * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n     * strategy to attempt recovery. If {@link //getBuildParseTree} is\n     * {@code true} and the token index of the symbol returned by\n     * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n     * the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n     *\n     * @param ttype the token type to match\n     * @return the matched symbol\n     * @throws RecognitionException if the current input symbol did not match\n     * {@code ttype} and the error strategy could not recover from the\n     * mismatched symbol\n     */\n    match(ttype) {\n        let t = this.getCurrentToken();\n        if (t.type === ttype) {\n            this._errHandler.reportMatch(this);\n            this.consume();\n        } else {\n            t = this._errHandler.recoverInline(this);\n            if (this.buildParseTrees && t.tokenIndex === -1) {\n                // we must have conjured up a new token during single token\n                // insertion\n                // if it's not the current symbol\n                this._ctx.addErrorNode(t);\n            }\n        }\n        return t;\n    }\n\n    /**\n     * Match current input symbol as a wildcard. If the symbol type matches\n     * (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n     * and {@link //consume} are called to complete the match process.\n     *\n     * <p>If the symbol type does not match,\n     * {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n     * strategy to attempt recovery. If {@link //getBuildParseTree} is\n     * {@code true} and the token index of the symbol returned by\n     * {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n     * the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n     *\n     * @return the matched symbol\n     * @throws RecognitionException if the current input symbol did not match\n     * a wildcard and the error strategy could not recover from the mismatched\n     * symbol\n     */\n    matchWildcard() {\n        let t = this.getCurrentToken();\n        if (t.type > 0) {\n            this._errHandler.reportMatch(this);\n            this.consume();\n        } else {\n            t = this._errHandler.recoverInline(this);\n            if (this._buildParseTrees && t.tokenIndex === -1) {\n                // we must have conjured up a new token during single token\n                // insertion\n                // if it's not the current symbol\n                this._ctx.addErrorNode(t);\n            }\n        }\n        return t;\n    }\n\n    getParseListeners() {\n        return this._parseListeners || [];\n    }\n\n    /**\n     * Registers {@code listener} to receive events during the parsing process.\n     *\n     * <p>To support output-preserving grammar transformations (including but not\n     * limited to left-recursion removal, automated left-factoring, and\n     * optimized code generation), calls to listener methods during the parse\n     * may differ substantially from calls made by\n     * {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n     * particular, rule entry and exit events may occur in a different order\n     * during the parse than after the parser. In addition, calls to certain\n     * rule entry methods may be omitted.</p>\n     *\n     * <p>With the following specific exceptions, calls to listener events are\n     * <em>deterministic</em>, i.e. for identical input the calls to listener\n     * methods will be the same.</p>\n     *\n     * <ul>\n     * <li>Alterations to the grammar used to generate code may change the\n     * behavior of the listener calls.</li>\n     * <li>Alterations to the command line options passed to ANTLR 4 when\n     * generating the parser may change the behavior of the listener calls.</li>\n     * <li>Changing the version of the ANTLR Tool used to generate the parser\n     * may change the behavior of the listener calls.</li>\n     * </ul>\n     *\n     * @param listener the listener to add\n     *\n     * @throws NullPointerException if {@code} listener is {@code null}\n     */\n    addParseListener(listener) {\n        if (listener === null) {\n            throw \"listener\";\n        }\n        if (this._parseListeners === null) {\n            this._parseListeners = [];\n        }\n        this._parseListeners.push(listener);\n    }\n\n    /**\n     * Remove {@code listener} from the list of parse listeners.\n     *\n     * <p>If {@code listener} is {@code null} or has not been added as a parse\n     * listener, this method does nothing.</p>\n     * @param listener the listener to remove\n     */\n    removeParseListener(listener) {\n        if (this._parseListeners !== null) {\n            const idx = this._parseListeners.indexOf(listener);\n            if (idx >= 0) {\n                this._parseListeners.splice(idx, 1);\n            }\n            if (this._parseListeners.length === 0) {\n                this._parseListeners = null;\n            }\n        }\n    }\n\n    // Remove all parse listeners.\n    removeParseListeners() {\n        this._parseListeners = null;\n    }\n\n    // Notify any parse listeners of an enter rule event.\n    triggerEnterRuleEvent() {\n        if (this._parseListeners !== null) {\n            const ctx = this._ctx;\n            this._parseListeners.forEach(function (listener) {\n                listener.enterEveryRule(ctx);\n                ctx.enterRule(listener);\n            });\n        }\n    }\n\n    /**\n     * Notify any parse listeners of an exit rule event.\n     * @see //addParseListener\n     */\n    triggerExitRuleEvent() {\n        if (this._parseListeners !== null) {\n            // reverse order walk of listeners\n            const ctx = this._ctx;\n            this._parseListeners.slice(0).reverse().forEach(function (listener) {\n                ctx.exitRule(listener);\n                listener.exitEveryRule(ctx);\n            });\n        }\n    }\n\n    getTokenFactory() {\n        return this._input.tokenSource._factory;\n    }\n\n    // Tell our token source and error strategy about a new way to create tokens.\n    setTokenFactory(factory) {\n        this._input.tokenSource._factory = factory;\n    }\n\n    /**\n     * The ATN with bypass alternatives is expensive to create so we create it\n     * lazily.\n     *\n     * @throws UnsupportedOperationException if the current parser does not\n     * implement the {@link //getSerializedATN()} method.\n     */\n    getATNWithBypassAlts() {\n        const serializedAtn = this.getSerializedATN();\n        if (serializedAtn === null) {\n            throw \"The current parser does not support an ATN with bypass alternatives.\";\n        }\n        let result = this.bypassAltsAtnCache[serializedAtn];\n        if (result === null) {\n            const deserializationOptions = new ATNDeserializationOptions();\n            deserializationOptions.generateRuleBypassTransitions = true;\n            result = new ATNDeserializer(deserializationOptions)\n                .deserialize(serializedAtn);\n            this.bypassAltsAtnCache[serializedAtn] = result;\n        }\n        return result;\n    }\n\n    getInputStream() {\n        return this.getTokenStream();\n    }\n\n    setInputStream(input) {\n        this.setTokenStream(input);\n    }\n\n    getTokenStream() {\n        return this._input;\n    }\n\n    // Set the token stream and reset the parser.\n    setTokenStream(input) {\n        this._input = null;\n        this.reset();\n        this._input = input;\n    }\n\n    /**\n     * Match needs to return the current input symbol, which gets put\n     * into the label for the associated token ref; e.g., x=ID.\n     */\n    getCurrentToken() {\n        return this._input.LT(1);\n    }\n\n    notifyErrorListeners(msg, offendingToken, err) {\n        offendingToken = offendingToken || null;\n        err = err || null;\n        if (offendingToken === null) {\n            offendingToken = this.getCurrentToken();\n        }\n        this._syntaxErrors += 1;\n        const line = offendingToken.line;\n        const column = offendingToken.column;\n        const listener = this.getErrorListenerDispatch();\n        listener.syntaxError(this, offendingToken, line, column, msg, err);\n    }\n\n    /**\n     * Consume and return the {@linkplain //getCurrentToken current symbol}.\n     *\n     * <p>E.g., given the following input with {@code A} being the current\n     * lookahead symbol, this function moves the cursor to {@code B} and returns\n     * {@code A}.</p>\n     *\n     * <pre>\n     * A B\n     * ^\n     * </pre>\n     *\n     * If the parser is not in error recovery mode, the consumed symbol is added\n     * to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n     * {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n     * If the parser <em>is</em> in error recovery mode, the consumed symbol is\n     * added to the parse tree using\n     * {@link ParserRuleContext//addErrorNode(Token)}, and\n     * {@link ParseTreeListener//visitErrorNode} is called on any parse\n     * listeners.\n     */\n    consume() {\n        const o = this.getCurrentToken();\n        if (o.type !== Token.EOF) {\n            this.getInputStream().consume();\n        }\n        const hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n        if (this.buildParseTrees || hasListener) {\n            let node;\n            if (this._errHandler.inErrorRecoveryMode(this)) {\n                node = this._ctx.addErrorNode(o);\n            } else {\n                node = this._ctx.addTokenNode(o);\n            }\n            node.invokingState = this.state;\n            if (hasListener) {\n                this._parseListeners.forEach(function (listener) {\n                    if (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n                        listener.visitErrorNode(node);\n                    } else if (node instanceof TerminalNode) {\n                        listener.visitTerminal(node);\n                    }\n                });\n            }\n        }\n        return o;\n    }\n\n    addContextToParseTree() {\n        // add current context to parent if we have a parent\n        if (this._ctx.parentCtx !== null) {\n            this._ctx.parentCtx.addChild(this._ctx);\n        }\n    }\n\n    /**\n     * Always called by generated parsers upon entry to a rule. Access field\n     * {@link //_ctx} get the current context.\n     */\n    enterRule(localctx, state, ruleIndex) {\n        this.state = state;\n        this._ctx = localctx;\n        this._ctx.start = this._input.LT(1);\n        if (this.buildParseTrees) {\n            this.addContextToParseTree();\n        }\n        this.triggerEnterRuleEvent();\n    }\n\n    exitRule() {\n        this._ctx.stop = this._input.LT(-1);\n        // trigger event on _ctx, before it reverts to parent\n        this.triggerExitRuleEvent();\n        this.state = this._ctx.invokingState;\n        this._ctx = this._ctx.parentCtx;\n    }\n\n    enterOuterAlt(localctx, altNum) {\n        localctx.setAltNumber(altNum);\n        // if we have new localctx, make sure we replace existing ctx\n        // that is previous child of parse tree\n        if (this.buildParseTrees && this._ctx !== localctx) {\n            if (this._ctx.parentCtx !== null) {\n                this._ctx.parentCtx.removeLastChild();\n                this._ctx.parentCtx.addChild(localctx);\n            }\n        }\n        this._ctx = localctx;\n    }\n\n    /**\n     * Get the precedence level for the top-most precedence rule.\n     *\n     * @return The precedence level for the top-most precedence rule, or -1 if\n     * the parser context is not nested within a precedence rule.\n     */\n    getPrecedence() {\n        if (this._precedenceStack.length === 0) {\n            return -1;\n        } else {\n            return this._precedenceStack[this._precedenceStack.length - 1];\n        }\n    }\n\n    enterRecursionRule(localctx, state, ruleIndex, precedence) {\n        this.state = state;\n        this._precedenceStack.push(precedence);\n        this._ctx = localctx;\n        this._ctx.start = this._input.LT(1);\n        this.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\n    }\n\n    // Like {@link //enterRule} but for recursive rules.\n    pushNewRecursionContext(localctx, state, ruleIndex) {\n        const previous = this._ctx;\n        previous.parentCtx = localctx;\n        previous.invokingState = state;\n        previous.stop = this._input.LT(-1);\n\n        this._ctx = localctx;\n        this._ctx.start = previous.start;\n        if (this.buildParseTrees) {\n            this._ctx.addChild(previous);\n        }\n        this.triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules\n    }\n\n    unrollRecursionContexts(parentCtx) {\n        this._precedenceStack.pop();\n        this._ctx.stop = this._input.LT(-1);\n        const retCtx = this._ctx; // save current ctx (return value)\n        // unroll so _ctx is as it was before call to recursive method\n        const parseListeners = this.getParseListeners();\n        if (parseListeners !== null && parseListeners.length > 0) {\n            while (this._ctx !== parentCtx) {\n                this.triggerExitRuleEvent();\n                this._ctx = this._ctx.parentCtx;\n            }\n        } else {\n            this._ctx = parentCtx;\n        }\n        // hook into tree\n        retCtx.parentCtx = parentCtx;\n        if (this.buildParseTrees && parentCtx !== null) {\n            // add return ctx into invoking rule's tree\n            parentCtx.addChild(retCtx);\n        }\n    }\n\n    getInvokingContext(ruleIndex) {\n        let ctx = this._ctx;\n        while (ctx !== null) {\n            if (ctx.ruleIndex === ruleIndex) {\n                return ctx;\n            }\n            ctx = ctx.parentCtx;\n        }\n        return null;\n    }\n\n    precpred(localctx, precedence) {\n        return precedence >= this._precedenceStack[this._precedenceStack.length - 1];\n    }\n\n    inContext(context) {\n        // TODO: useful in parser?\n        return false;\n    }\n\n    /**\n     * Checks whether or not {@code symbol} can follow the current state in the\n     * ATN. The behavior of this method is equivalent to the following, but is\n     * implemented such that the complete context-sensitive follow set does not\n     * need to be explicitly constructed.\n     *\n     * <pre>\n     * return getExpectedTokens().contains(symbol);\n     * </pre>\n     *\n     * @param symbol the symbol type to check\n     * @return {@code true} if {@code symbol} can follow the current state in\n     * the ATN, otherwise {@code false}.\n     */\n    isExpectedToken(symbol) {\n        const atn = this._interp.atn;\n        let ctx = this._ctx;\n        const s = atn.states[this.state];\n        let following = atn.nextTokens(s);\n        if (following.contains(symbol)) {\n            return true;\n        }\n        if (!following.contains(Token.EPSILON)) {\n            return false;\n        }\n        while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n            const invokingState = atn.states[ctx.invokingState];\n            const rt = invokingState.transitions[0];\n            following = atn.nextTokens(rt.followState);\n            if (following.contains(symbol)) {\n                return true;\n            }\n            ctx = ctx.parentCtx;\n        }\n        if (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * Computes the set of input symbols which could follow the current parser\n     * state and context, as given by {@link //getState} and {@link //getContext},\n     * respectively.\n     *\n     * @see ATN//getExpectedTokens(int, RuleContext)\n     */\n    getExpectedTokens() {\n        return this._interp.atn.getExpectedTokens(this.state, this._ctx);\n    }\n\n    getExpectedTokensWithinCurrentRule() {\n        const atn = this._interp.atn;\n        const s = atn.states[this.state];\n        return atn.nextTokens(s);\n    }\n\n    // Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.\n    getRuleIndex(ruleName) {\n        const ruleIndex = this.getRuleIndexMap()[ruleName];\n        if (ruleIndex !== null) {\n            return ruleIndex;\n        } else {\n            return -1;\n        }\n    }\n\n    /**\n     * Return List&lt;String&gt; of the rule names in your parser instance\n     * leading up to a call to the current rule. You could override if\n     * you want more details such as the file/line info of where\n     * in the ATN a rule is invoked.\n     *\n     * this is very useful for error messages.\n     */\n    getRuleInvocationStack(p) {\n        p = p || null;\n        if (p === null) {\n            p = this._ctx;\n        }\n        const stack = [];\n        while (p !== null) {\n            // compute what follows who invoked us\n            const ruleIndex = p.ruleIndex;\n            if (ruleIndex < 0) {\n                stack.push(\"n/a\");\n            } else {\n                stack.push(this.ruleNames[ruleIndex]);\n            }\n            p = p.parentCtx;\n        }\n        return stack;\n    }\n\n    // For debugging and other purposes.\n    getDFAStrings() {\n        return this._interp.decisionToDFA.toString();\n    }\n\n    // For debugging and other purposes.\n    dumpDFA() {\n        let seenOne = false;\n        for (let i = 0; i < this._interp.decisionToDFA.length; i++) {\n            const dfa = this._interp.decisionToDFA[i];\n            if (dfa.states.length > 0) {\n                if (seenOne) {\n                    console.log();\n                }\n                this.printer.println(\"Decision \" + dfa.decision + \":\");\n                this.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n                seenOne = true;\n            }\n        }\n    }\n\n    /*\n        \"\t\t\tprinter = function() {\\r\\n\" +\n        \"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n        \"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n        \"\t\t\t};\\r\\n\" +\n        */\n    getSourceName() {\n        return this._input.sourceName;\n    }\n\n    /**\n     * During a parse is sometimes useful to listen in on the rule entry and exit\n     * events as well as token matches. this is for quick and dirty debugging.\n     */\n    setTrace(trace) {\n        if (!trace) {\n            this.removeParseListener(this._tracer);\n            this._tracer = null;\n        } else {\n            if (this._tracer !== null) {\n                this.removeParseListener(this._tracer);\n            }\n            this._tracer = new TraceListener(this);\n            this.addParseListener(this._tracer);\n        }\n    }\n}\n\n/**\n * this field maps from the serialized ATN string to the deserialized {@link\n    * ATN} with\n * bypass alternatives.\n *\n * @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n */\nParser.bypassAltsAtnCache = {};\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport PredictionContext from \"../context/PredictionContext.js\";\nimport HashMap from \"../misc/HashMap.js\";\n\n/**\n * Used to cache {@link PredictionContext} objects. Its used for the shared\n * context cash associated with contexts in DFA states. This cache\n * can be used for both lexers and parsers.\n */\nexport default class PredictionContextCache {\n\n    constructor() {\n        this.cache = new HashMap();\n    }\n\n    /**\n     * Add a context to the cache and return it. If the context already exists,\n     * return that one instead and do not add a new context to the cache.\n     * Protect shared cache from unsafe thread access.\n     */\n    add(ctx) {\n        if (ctx === PredictionContext.EMPTY) {\n            return PredictionContext.EMPTY;\n        }\n        const existing = this.cache.get(ctx) || null;\n        if (existing !== null) {\n            return existing;\n        }\n        this.cache.set(ctx, ctx);\n        return ctx;\n    }\n\n    get(ctx) {\n        return this.cache.get(ctx) || null;\n    }\n\n    get length(){\n        return this.cache.length;\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport Interval from \"../misc/Interval.js\";\nimport Token from '../Token.js';\nimport TerminalNode from \"./TerminalNode.js\";\n\nexport default class TerminalNodeImpl extends TerminalNode {\n    constructor(symbol) {\n        super();\n        this.parentCtx = null;\n        this.symbol = symbol;\n    }\n\n    getChild(i) {\n        return null;\n    }\n\n    getSymbol() {\n        return this.symbol;\n    }\n\n    getParent() {\n        return this.parentCtx;\n    }\n\n    getPayload() {\n        return this.symbol;\n    }\n\n    getSourceInterval() {\n        if (this.symbol === null) {\n            return Interval.INVALID_INTERVAL;\n        }\n        const tokenIndex = this.symbol.tokenIndex;\n        return new Interval(tokenIndex, tokenIndex);\n    }\n\n    getChildCount() {\n        return 0;\n    }\n\n    accept(visitor) {\n        return visitor.visitTerminal(this);\n    }\n\n    getText() {\n        return this.symbol.text;\n    }\n\n    toString() {\n        if (this.symbol.type === Token.EOF) {\n            return \"<EOF>\";\n        } else {\n            return this.symbol.text;\n        }\n    }\n}\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n/**\n * Represents a token that was consumed during resynchronization\n * rather than during a valid match operation. For example,\n * we will create this kind of a node during single token insertion\n * and deletion as well as during \"consume until error recovery set\"\n * upon no viable alternative exceptions.\n */\nimport TerminalNodeImpl from \"./TerminalNodeImpl.js\";\n\nexport default class ErrorNodeImpl extends TerminalNodeImpl {\n    constructor(token) {\n        super(token);\n    }\n\n    isErrorNode() {\n        return true;\n    }\n\n    accept(visitor) {\n        return visitor.visitErrorNode(this);\n    }\n}\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nimport RuleContext from './RuleContext.js';\nimport TerminalNode from '../tree/TerminalNode.js';\nimport TerminalNodeImpl from '../tree/TerminalNodeImpl.js';\nimport ErrorNodeImpl from '../tree/ErrorNodeImpl.js';\nimport Interval from \"../misc/Interval.js\";\n\n/**\n * A rule invocation record for parsing.\n *\n *  Contains all of the information about the current rule not stored in the\n *  RuleContext. It handles parse tree children list, Any ATN state\n *  tracing, and the default values available for rule indications:\n *  start, stop, rule index, current alt number, current\n *  ATN state.\n *\n *  Subclasses made for each rule and grammar track the parameters,\n *  return values, locals, and labels specific to that rule. These\n *  are the objects that are returned from rules.\n *\n *  Note text is not an actual field of a rule return value; it is computed\n *  from start and stop using the input stream's toString() method.  I\n *  could add a ctor to this so that we can pass in and store the input\n *  stream, but I'm not sure we want to do that.  It would seem to be undefined\n *  to get the .text property anyway if the rule matches tokens from multiple\n *  input streams.\n *\n *  I do not use getters for fields of objects that are used simply to\n *  group values such as this aggregate.  The getters/setters are there to\n *  satisfy the superclass interface.\n */\nexport default class ParserRuleContext extends RuleContext {\n\tconstructor(parent, invokingStateNumber) {\n\t\tparent = parent || null;\n\t\tinvokingStateNumber = invokingStateNumber || null;\n\t\tsuper(parent, invokingStateNumber);\n\t\tthis.ruleIndex = -1;\n\t\t/**\n\t\t * If we are debugging or building a parse tree for a visitor,\n\t\t * we need to track all of the tokens and rule invocations associated\n\t\t * with this rule's context. This is empty for parsing w/o tree constr.\n\t\t * operation because we don't the need to track the details about\n\t\t * how we parse this rule.\n\t\t */\n\t\tthis.children = null;\n\t\tthis.start = null;\n\t\tthis.stop = null;\n\t\t/**\n\t\t * The exception that forced this rule to return. If the rule successfully\n\t\t * completed, this is {@code null}.\n\t\t */\n\t\tthis.exception = null;\n\t}\n\n\t// COPY a ctx (I'm deliberately not using copy constructor)\n\tcopyFrom(ctx) {\n\t\t// from RuleContext\n\t\tthis.parentCtx = ctx.parentCtx;\n\t\tthis.invokingState = ctx.invokingState;\n\t\tthis.children = null;\n\t\tthis.start = ctx.start;\n\t\tthis.stop = ctx.stop;\n\t\t// copy any error nodes to alt label node\n\t\tif(ctx.children) {\n\t\t\tthis.children = [];\n\t\t\t// reset parent pointer for any error nodes\n\t\t\tctx.children.map(function(child) {\n\t\t\t\tif (child instanceof ErrorNodeImpl) {\n\t\t\t\t\tthis.children.push(child);\n\t\t\t\t\tchild.parentCtx = this;\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\t// Double dispatch methods for listeners\n\tenterRule(listener) {\n\t}\n\n\texitRule(listener) {\n\t}\n\n\t// Does not set parent link; other add methods do that\n\taddChild(child) {\n\t\tif (this.children === null) {\n\t\t\tthis.children = [];\n\t\t}\n\t\tthis.children.push(child);\n\t\treturn child;\n\t}\n\n\t/** Used by enterOuterAlt to toss out a RuleContext previously added as\n\t * we entered a rule. If we have // label, we will need to remove\n\t * generic ruleContext object.\n\t */\n\tremoveLastChild() {\n\t\tif (this.children !== null) {\n\t\t\tthis.children.pop();\n\t\t}\n\t}\n\n\taddTokenNode(token) {\n\t\tconst node = new TerminalNodeImpl(token);\n\t\tthis.addChild(node);\n\t\tnode.parentCtx = this;\n\t\treturn node;\n\t}\n\n\taddErrorNode(badToken) {\n\t\tconst node = new ErrorNodeImpl(badToken);\n\t\tthis.addChild(node);\n\t\tnode.parentCtx = this;\n\t\treturn node;\n\t}\n\n\tgetChild(i, type) {\n\t\ttype = type || null;\n\t\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tif (type === null) {\n\t\t\treturn this.children[i];\n\t\t} else {\n\t\t\tfor(let j=0; j<this.children.length; j++) {\n\t\t\t\tconst child = this.children[j];\n\t\t\t\tif(child instanceof type) {\n\t\t\t\t\tif(i===0) {\n\t\t\t\t\t\treturn child;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti -= 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetToken(ttype, i) {\n\t\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\t\treturn null;\n\t\t}\n\t\tfor(let j=0; j<this.children.length; j++) {\n\t\t\tconst child = this.children[j];\n\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\tif(i===0) {\n\t\t\t\t\t\treturn child;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti -= 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetTokens(ttype ) {\n\t\tif (this.children=== null) {\n\t\t\treturn [];\n\t\t} else {\n\t\t\tconst tokens = [];\n\t\t\tfor(let j=0; j<this.children.length; j++) {\n\t\t\t\tconst child = this.children[j];\n\t\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\t\ttokens.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn tokens;\n\t\t}\n\t}\n\n\tgetTypedRuleContext(ctxType, i) {\n\t\treturn this.getChild(i, ctxType);\n\t}\n\n\tgetTypedRuleContexts(ctxType) {\n\t\tif (this.children=== null) {\n\t\t\treturn [];\n\t\t} else {\n\t\t\tconst contexts = [];\n\t\t\tfor(let j=0; j<this.children.length; j++) {\n\t\t\t\tconst child = this.children[j];\n\t\t\t\tif (child instanceof ctxType) {\n\t\t\t\t\tcontexts.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn contexts;\n\t\t}\n\t}\n\n\tgetChildCount() {\n\t\tif (this.children=== null) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn this.children.length;\n\t\t}\n\t}\n\n\tgetSourceInterval() {\n\t\tif( this.start === null || this.stop === null) {\n\t\t\treturn Interval.INVALID_INTERVAL;\n\t\t} else {\n\t\t\treturn new Interval(this.start.tokenIndex, this.stop.tokenIndex);\n\t\t}\n\t}\n}\n\nRuleContext.EMPTY = new ParserRuleContext();\n\n\n","/* Copyright (c) 2012-2022 The ANTLR Project Contributors. All rights reserved.\n * Use is of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport arrayToString from \"../utils/arrayToString.js\";\n\nexport default { arrayToString };\n","/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nimport './utils/stringHashCode.js';\nimport './polyfills/codepointat.js';\nimport './polyfills/fromcodepoint.js';\nimport { default as atn } from './atn/index.js';\nimport { default as dfa } from './dfa/index.js';\nimport { default as tree } from './tree/index.js';\nimport { default as error } from './error/index.js';\nimport Token from './Token.js';\nimport CommonToken from './CommonToken.js';\nimport { default as CharStreams } from './CharStreams.js';\nimport InputStream from './InputStream.js';\nimport FileStream from './FileStream.js';\nimport CommonTokenStream from './CommonTokenStream.js';\nimport Lexer from './Lexer.js';\nimport Parser from './Parser.js';\nimport PredictionContextCache from './atn/PredictionContextCache.js';\nimport ParserRuleContext from './context/ParserRuleContext.js';\nimport Interval from './misc/Interval.js';\nimport IntervalSet from './misc/IntervalSet.js';\nimport LL1Analyzer from './atn/LL1Analyzer.js';\nimport { default as Utils } from './utils/index.js';\n\nconst antlr4 = {\n    atn, dfa, tree, error, Token, CommonToken, CharStreams, InputStream, FileStream, CommonTokenStream, Lexer, Parser,\n    PredictionContextCache, ParserRuleContext, Interval, IntervalSet, LL1Analyzer, Utils\n};\n\nexport default antlr4;\n","// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\n\n\nconst serializedATN = [4,0,75,801,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,\n2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,\n11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,\n2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,\n26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,\n7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,\n40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,\n2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,\n55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,\n7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,\n69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,\n2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,1,0,1,0,1,1,\n4,1,173,8,1,11,1,12,1,174,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,\n3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,\n4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,\n7,1,7,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,11,1,11,1,11,\n1,12,1,12,1,13,1,13,4,13,245,8,13,11,13,12,13,246,1,14,1,14,1,15,1,15,1,\n16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,21,\n1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,\n27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,\n1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,\n39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,321,8,40,1,41,1,41,\n1,41,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,\n43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,\n1,43,1,43,1,43,3,43,357,8,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,\n1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,\n48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,\n1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,3,50,405,8,50,1,51,1,51,1,51,1,51,\n1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,\n55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,\n1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,451,8,57,1,58,\n1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,\n58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,479,8,58,1,59,\n1,59,5,59,483,8,59,10,59,12,59,486,9,59,1,60,1,60,1,61,1,61,5,61,492,8,61,\n10,61,12,61,495,9,61,1,62,1,62,1,63,4,63,500,8,63,11,63,12,63,501,1,64,4,\n64,505,8,64,11,64,12,64,506,1,64,1,64,5,64,511,8,64,10,64,12,64,514,9,64,\n1,64,1,64,4,64,518,8,64,11,64,12,64,519,1,64,1,64,3,64,524,8,64,1,65,1,65,\n1,65,3,65,529,8,65,1,66,4,66,532,8,66,11,66,12,66,533,1,66,1,66,5,66,538,\n8,66,10,66,12,66,541,9,66,1,66,1,66,4,66,545,8,66,11,66,12,66,546,1,66,4,\n66,550,8,66,11,66,12,66,551,3,66,554,8,66,1,66,1,66,1,67,4,67,559,8,67,11,\n67,12,67,560,1,67,1,67,5,67,565,8,67,10,67,12,67,568,9,67,1,68,1,68,1,68,\n1,68,3,68,574,8,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,\n1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,\n69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,\n1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,\n69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,\n1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,\n69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,\n1,69,3,69,675,8,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,\n1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,\n70,1,70,1,70,1,70,3,70,706,8,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,\n1,71,1,71,1,71,1,71,1,71,1,71,3,71,722,8,71,1,72,1,72,1,72,1,72,1,72,3,72,\n729,8,72,1,73,1,73,1,73,1,73,5,73,735,8,73,10,73,12,73,738,9,73,1,73,1,73,\n1,74,1,74,1,74,1,74,5,74,746,8,74,10,74,12,74,749,9,74,1,75,1,75,1,75,1,\n75,1,76,1,76,1,76,1,76,5,76,759,8,76,10,76,12,76,762,9,76,1,76,1,76,1,77,\n1,77,1,78,1,78,5,78,770,8,78,10,78,12,78,773,9,78,1,78,1,78,1,78,1,78,5,\n78,779,8,78,10,78,12,78,782,9,78,1,79,4,79,785,8,79,11,79,12,79,786,1,80,\n1,80,1,80,1,80,1,81,4,81,794,8,81,11,81,12,81,795,1,82,1,82,1,82,1,82,0,\n0,83,3,0,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8,21,9,23,10,25,11,27,0,29,12,\n31,13,33,14,35,15,37,16,39,17,41,18,43,19,45,20,47,21,49,22,51,23,53,24,\n55,25,57,26,59,27,61,28,63,29,65,30,67,31,69,32,71,33,73,34,75,35,77,36,\n79,37,81,38,83,39,85,40,87,41,89,42,91,43,93,44,95,45,97,46,99,47,101,48,\n103,49,105,50,107,51,109,52,111,53,113,54,115,55,117,56,119,57,121,58,123,\n59,125,60,127,0,129,61,131,62,133,63,135,64,137,65,139,0,141,0,143,0,145,\n0,147,0,149,66,151,67,153,68,155,69,157,70,159,71,161,72,163,73,165,74,167,\n75,3,0,1,2,9,2,0,9,9,32,32,3,0,48,57,65,70,97,102,4,0,48,57,65,90,95,95,\n97,122,649,0,65,90,95,95,97,122,170,170,181,181,186,186,192,214,216,246,\n248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,\n902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,\n1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,\n1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,\n1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,\n2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,\n2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,\n2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,\n2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,\n2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,\n2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,\n2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,\n2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,\n2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,\n3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,\n3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,\n3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,\n3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,\n3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,\n3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,\n4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,\n4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,\n4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,\n4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,\n5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5873,5880,5888,5905,\n5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,\n6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,\n6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,\n7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,\n7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,\n7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,\n8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,\n8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,\n8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,\n8505,8508,8511,8517,8521,8526,8526,8579,8580,11264,11492,11499,11502,11506,\n11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,\n11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,\n11726,11728,11734,11736,11742,11823,11823,12293,12294,12337,12341,12347,\n12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,\n12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,\n42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42725,42775,\n42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,\n43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,\n43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,\n43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,\n43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,\n43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,\n43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,\n43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,\n64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,\n64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,\n64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,\n65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,\n65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,\n65629,65664,65786,66176,66204,66208,66256,66304,66335,66349,66368,66370,\n66377,66384,66421,66432,66461,66464,66499,66504,66511,66560,66717,66736,\n66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,\n66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,\n67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,\n67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,\n67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,\n68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,\n68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,\n68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,\n69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,\n69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,\n69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,\n70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70272,\n70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,\n70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,\n70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,\n70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,\n71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,\n71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,\n71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,\n72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,\n72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,\n72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,\n73112,73440,73458,73648,73648,73728,74649,74880,75075,77712,77808,77824,\n78894,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,\n92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,\n94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,\n101640,110576,110579,110581,110587,110589,110590,110592,110882,110928,110930,\n110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,\n113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,\n119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,\n120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,\n120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,\n120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,\n120714,120744,120746,120770,120772,120779,122624,122654,123136,123180,123191,\n123197,123214,123214,123536,123565,123584,123627,124896,124902,124904,124907,\n124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,\n126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,\n126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,\n126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,\n126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,\n126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,\n126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,\n173791,173824,177976,177984,178205,178208,183969,183984,191456,194560,195101,\n196608,201546,693,0,48,57,65,90,95,95,97,122,170,170,181,181,186,186,192,\n214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,\n893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,\n1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1632,1641,1646,\n1647,1649,1747,1749,1749,1765,1766,1774,1788,1791,1791,1808,1808,1810,1839,\n1869,1957,1969,1969,1984,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,\n2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,\n2365,2365,2384,2384,2392,2401,2406,2415,2417,2432,2437,2444,2447,2448,2451,\n2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,\n2534,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,\n2614,2616,2617,2649,2652,2654,2654,2662,2671,2674,2676,2693,2701,2703,2705,\n2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2790,\n2799,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,\n2877,2877,2908,2909,2911,2913,2918,2927,2929,2929,2947,2947,2949,2954,2958,\n2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,\n3024,3024,3046,3055,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,\n3162,3165,3165,3168,3169,3174,3183,3200,3200,3205,3212,3214,3216,3218,3240,\n3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3302,3311,3313,3314,3332,\n3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3430,3439,\n3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3558,3567,3585,\n3632,3634,3635,3648,3654,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,\n3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3792,3801,3804,\n3807,3840,3840,3872,3881,3904,3911,3913,3948,3976,3980,4096,4138,4159,4169,\n4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4240,\n4249,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,\n4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,\n4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,\n5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5873,5880,5888,5905,5919,\n5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6112,6121,\n6160,6169,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6470,\n6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6678,6688,6740,6784,6793,\n6800,6809,6823,6823,6917,6963,6981,6988,6992,7001,7043,7072,7086,7141,7168,\n7203,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,\n7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,\n8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,\n8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,\n8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,\n8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,\n8526,8579,8580,11264,11492,11499,11502,11506,11507,11520,11557,11559,11559,\n11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,\n11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,\n11823,11823,12293,12294,12337,12341,12347,12348,12353,12438,12445,12447,\n12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,\n13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42606,\n42623,42653,42656,42725,42775,42783,42786,42888,42891,42954,42960,42961,\n42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,\n43072,43123,43138,43187,43216,43225,43250,43255,43259,43259,43261,43262,\n43264,43301,43312,43334,43360,43388,43396,43442,43471,43481,43488,43492,\n43494,43518,43520,43560,43584,43586,43588,43595,43600,43609,43616,43638,\n43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,\n43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,\n43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,\n44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,\n64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,\n64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,\n64914,64967,65008,65019,65136,65140,65142,65276,65296,65305,65313,65338,\n65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,\n65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,\n65664,65786,66176,66204,66208,66256,66304,66335,66349,66368,66370,66377,\n66384,66421,66432,66461,66464,66499,66504,66511,66560,66717,66720,66729,\n66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,\n66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,\n67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,\n67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,\n67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,\n67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,\n68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,\n68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,\n68912,68921,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,\n69488,69505,69552,69572,69600,69622,69635,69687,69734,69743,69745,69746,\n69749,69749,69763,69807,69840,69864,69872,69881,69891,69926,69942,69951,\n69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,\n70096,70106,70108,70108,70144,70161,70163,70187,70272,70278,70280,70280,\n70282,70285,70287,70301,70303,70312,70320,70366,70384,70393,70405,70412,\n70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,\n70480,70480,70493,70497,70656,70708,70727,70730,70736,70745,70751,70753,\n70784,70831,70852,70853,70855,70855,70864,70873,71040,71086,71128,71131,\n71168,71215,71236,71236,71248,71257,71296,71338,71352,71352,71360,71369,\n71424,71450,71472,71481,71488,71494,71680,71723,71840,71913,71935,71942,\n71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,\n72016,72025,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,\n72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,\n72704,72712,72714,72750,72768,72768,72784,72793,72818,72847,72960,72966,\n72968,72969,72971,73008,73030,73030,73040,73049,73056,73061,73063,73064,\n73066,73097,73112,73112,73120,73129,73440,73458,73648,73648,73728,74649,\n74880,75075,77712,77808,77824,78894,82944,83526,92160,92728,92736,92766,\n92768,92777,92784,92862,92864,92873,92880,92909,92928,92975,92992,92995,\n93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,\n94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640,\n110576,110579,110581,110587,110589,110590,110592,110882,110928,110930,110948,\n110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,\n119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,\n119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,\n120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,\n120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,\n120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,\n120744,120746,120770,120772,120779,120782,120831,122624,122654,123136,123180,\n123191,123197,123200,123209,123214,123214,123536,123565,123584,123627,123632,\n123641,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,\n125184,125251,125259,125259,125264,125273,126464,126467,126469,126495,126497,\n126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,\n126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,\n126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,\n126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,\n126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,\n126625,126627,126629,126633,126635,126651,130032,130041,131072,173791,173824,\n177976,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,\n1,0,48,57,648,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,\n705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,\n902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,\n1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,\n1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,\n1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,\n2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,\n2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,\n2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,\n2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,\n2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,\n2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,\n2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,\n2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,\n2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,\n3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,\n3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,\n3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,\n3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,\n3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,\n3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,\n4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,\n4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,\n4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,\n4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,\n5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5873,5880,5888,5905,\n5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,6108,6108,6176,\n6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,\n6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,\n7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,\n7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,\n7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,\n8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,\n8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,\n8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,\n8505,8508,8511,8517,8521,8526,8526,8579,8580,11264,11492,11499,11502,11506,\n11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,\n11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,\n11726,11728,11734,11736,11742,11823,11823,12293,12294,12337,12341,12347,\n12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,\n12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,\n42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42725,42775,\n42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,\n43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,\n43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,\n43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,\n43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,\n43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,\n43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,\n43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,\n64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,\n64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,\n64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,\n65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,\n65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,\n65629,65664,65786,66176,66204,66208,66256,66304,66335,66349,66368,66370,\n66377,66384,66421,66432,66461,66464,66499,66504,66511,66560,66717,66736,\n66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,\n66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,\n67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,\n67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,\n67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,\n68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,\n68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,\n68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,\n69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,\n69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,\n69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,\n70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70272,\n70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,\n70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,\n70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,\n70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,\n71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,\n71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,\n71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,\n72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,\n72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,\n72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,\n73112,73440,73458,73648,73648,73728,74649,74880,75075,77712,77808,77824,\n78894,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,\n92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,\n94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,\n101640,110576,110579,110581,110587,110589,110590,110592,110882,110928,110930,\n110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,\n113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,\n119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,\n120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,\n120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,\n120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,\n120714,120744,120746,120770,120772,120779,122624,122654,123136,123180,123191,\n123197,123214,123214,123536,123565,123584,123627,124896,124902,124904,124907,\n124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,\n126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,\n126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,\n126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,\n126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,\n126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,\n126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,\n173791,173824,177976,177984,178205,178208,183969,183984,191456,194560,195101,\n196608,201546,3,0,10,10,13,13,34,34,2,0,10,10,13,13,872,0,5,1,0,0,0,0,7,\n1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,\n0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,29,1,0,0,0,0,31,1,\n0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,\n43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,\n0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,\n1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,\n0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,\n0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,\n99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,\n1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,\n0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,129,1,0,0,0,0,131,1,0,\n0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,\n0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,1,161,1,0,0,0,\n1,163,1,0,0,0,2,165,1,0,0,0,2,167,1,0,0,0,3,169,1,0,0,0,5,172,1,0,0,0,7,\n178,1,0,0,0,9,186,1,0,0,0,11,197,1,0,0,0,13,206,1,0,0,0,15,214,1,0,0,0,17,\n223,1,0,0,0,19,227,1,0,0,0,21,230,1,0,0,0,23,233,1,0,0,0,25,237,1,0,0,0,\n27,240,1,0,0,0,29,242,1,0,0,0,31,248,1,0,0,0,33,250,1,0,0,0,35,252,1,0,0,\n0,37,255,1,0,0,0,39,258,1,0,0,0,41,261,1,0,0,0,43,264,1,0,0,0,45,266,1,0,\n0,0,47,268,1,0,0,0,49,271,1,0,0,0,51,274,1,0,0,0,53,276,1,0,0,0,55,278,1,\n0,0,0,57,280,1,0,0,0,59,282,1,0,0,0,61,284,1,0,0,0,63,286,1,0,0,0,65,288,\n1,0,0,0,67,290,1,0,0,0,69,292,1,0,0,0,71,294,1,0,0,0,73,296,1,0,0,0,75,298,\n1,0,0,0,77,300,1,0,0,0,79,302,1,0,0,0,81,307,1,0,0,0,83,320,1,0,0,0,85,322,\n1,0,0,0,87,325,1,0,0,0,89,356,1,0,0,0,91,358,1,0,0,0,93,365,1,0,0,0,95,369,\n1,0,0,0,97,373,1,0,0,0,99,379,1,0,0,0,101,383,1,0,0,0,103,404,1,0,0,0,105,\n406,1,0,0,0,107,410,1,0,0,0,109,413,1,0,0,0,111,417,1,0,0,0,113,423,1,0,\n0,0,115,431,1,0,0,0,117,450,1,0,0,0,119,478,1,0,0,0,121,480,1,0,0,0,123,\n487,1,0,0,0,125,489,1,0,0,0,127,496,1,0,0,0,129,499,1,0,0,0,131,523,1,0,\n0,0,133,525,1,0,0,0,135,553,1,0,0,0,137,558,1,0,0,0,139,573,1,0,0,0,141,\n674,1,0,0,0,143,705,1,0,0,0,145,721,1,0,0,0,147,728,1,0,0,0,149,730,1,0,\n0,0,151,741,1,0,0,0,153,750,1,0,0,0,155,754,1,0,0,0,157,765,1,0,0,0,159,\n767,1,0,0,0,161,784,1,0,0,0,163,788,1,0,0,0,165,793,1,0,0,0,167,797,1,0,\n0,0,169,170,7,0,0,0,170,4,1,0,0,0,171,173,3,3,0,0,172,171,1,0,0,0,173,174,\n1,0,0,0,174,172,1,0,0,0,174,175,1,0,0,0,175,176,1,0,0,0,176,177,6,1,0,0,\n177,6,1,0,0,0,178,179,5,99,0,0,179,180,5,111,0,0,180,181,5,110,0,0,181,182,\n5,115,0,0,182,183,5,116,0,0,183,184,1,0,0,0,184,185,6,2,1,0,185,8,1,0,0,\n0,186,187,5,114,0,0,187,188,5,101,0,0,188,189,5,97,0,0,189,190,5,100,0,0,\n190,191,5,111,0,0,191,192,5,110,0,0,192,193,5,108,0,0,193,194,5,121,0,0,\n194,195,1,0,0,0,195,196,6,3,1,0,196,10,1,0,0,0,197,198,5,115,0,0,198,199,\n5,116,0,0,199,200,5,97,0,0,200,201,5,116,0,0,201,202,5,105,0,0,202,203,5,\n99,0,0,203,204,1,0,0,0,204,205,6,4,1,0,205,12,1,0,0,0,206,207,5,97,0,0,207,\n208,5,119,0,0,208,209,5,97,0,0,209,210,5,105,0,0,210,211,5,116,0,0,211,212,\n1,0,0,0,212,213,6,5,1,0,213,14,1,0,0,0,214,215,4,6,0,0,215,216,5,116,0,0,\n216,217,5,105,0,0,217,218,5,116,0,0,218,219,5,108,0,0,219,220,5,101,0,0,\n220,221,1,0,0,0,221,222,6,6,2,0,222,16,1,0,0,0,223,224,5,58,0,0,224,225,\n1,0,0,0,225,226,6,7,3,0,226,18,1,0,0,0,227,228,5,60,0,0,228,229,5,60,0,0,\n229,20,1,0,0,0,230,231,5,62,0,0,231,232,5,62,0,0,232,22,1,0,0,0,233,234,\n5,45,0,0,234,235,5,45,0,0,235,236,5,62,0,0,236,24,1,0,0,0,237,238,5,45,0,\n0,238,239,5,62,0,0,239,26,1,0,0,0,240,241,7,1,0,0,241,28,1,0,0,0,242,244,\n5,35,0,0,243,245,3,27,12,0,244,243,1,0,0,0,245,246,1,0,0,0,246,244,1,0,0,\n0,246,247,1,0,0,0,247,30,1,0,0,0,248,249,5,91,0,0,249,32,1,0,0,0,250,251,\n5,93,0,0,251,34,1,0,0,0,252,253,5,124,0,0,253,254,5,124,0,0,254,36,1,0,0,\n0,255,256,5,38,0,0,256,257,5,38,0,0,257,38,1,0,0,0,258,259,5,61,0,0,259,\n260,5,61,0,0,260,40,1,0,0,0,261,262,5,33,0,0,262,263,5,61,0,0,263,42,1,0,\n0,0,264,265,5,62,0,0,265,44,1,0,0,0,266,267,5,60,0,0,267,46,1,0,0,0,268,\n269,5,62,0,0,269,270,5,61,0,0,270,48,1,0,0,0,271,272,5,60,0,0,272,273,5,\n61,0,0,273,50,1,0,0,0,274,275,5,43,0,0,275,52,1,0,0,0,276,277,5,45,0,0,277,\n54,1,0,0,0,278,279,5,42,0,0,279,56,1,0,0,0,280,281,5,47,0,0,281,58,1,0,0,\n0,282,283,5,37,0,0,283,60,1,0,0,0,284,285,5,94,0,0,285,62,1,0,0,0,286,287,\n5,33,0,0,287,64,1,0,0,0,288,289,5,59,0,0,289,66,1,0,0,0,290,291,5,44,0,0,\n291,68,1,0,0,0,292,293,5,61,0,0,293,70,1,0,0,0,294,295,5,40,0,0,295,72,1,\n0,0,0,296,297,5,41,0,0,297,74,1,0,0,0,298,299,5,123,0,0,299,76,1,0,0,0,300,\n301,5,125,0,0,301,78,1,0,0,0,302,303,5,116,0,0,303,304,5,114,0,0,304,305,\n5,117,0,0,305,306,5,101,0,0,306,80,1,0,0,0,307,308,5,102,0,0,308,309,5,97,\n0,0,309,310,5,108,0,0,310,311,5,115,0,0,311,312,5,101,0,0,312,82,1,0,0,0,\n313,314,5,110,0,0,314,315,5,105,0,0,315,321,5,108,0,0,316,317,5,110,0,0,\n317,318,5,117,0,0,318,319,5,108,0,0,319,321,5,108,0,0,320,313,1,0,0,0,320,\n316,1,0,0,0,321,84,1,0,0,0,322,323,5,105,0,0,323,324,5,102,0,0,324,86,1,\n0,0,0,325,326,5,101,0,0,326,327,5,108,0,0,327,328,5,115,0,0,328,329,5,101,\n0,0,329,88,1,0,0,0,330,331,5,119,0,0,331,332,5,104,0,0,332,333,5,105,0,0,\n333,334,5,108,0,0,334,357,5,101,0,0,335,336,5,102,0,0,336,337,5,111,0,0,\n337,357,5,114,0,0,338,339,5,102,0,0,339,340,5,111,0,0,340,341,5,114,0,0,\n341,342,5,101,0,0,342,343,5,97,0,0,343,344,5,99,0,0,344,357,5,104,0,0,345,\n346,5,102,0,0,346,347,5,111,0,0,347,348,5,114,0,0,348,349,5,69,0,0,349,350,\n5,97,0,0,350,351,5,99,0,0,351,357,5,104,0,0,352,353,5,108,0,0,353,354,5,\n111,0,0,354,355,5,111,0,0,355,357,5,112,0,0,356,330,1,0,0,0,356,335,1,0,\n0,0,356,338,1,0,0,0,356,345,1,0,0,0,356,352,1,0,0,0,357,90,1,0,0,0,358,359,\n5,114,0,0,359,360,5,101,0,0,360,361,5,116,0,0,361,362,5,117,0,0,362,363,\n5,114,0,0,363,364,5,110,0,0,364,92,1,0,0,0,365,366,5,110,0,0,366,367,5,101,\n0,0,367,368,5,119,0,0,368,94,1,0,0,0,369,370,5,112,0,0,370,371,5,97,0,0,\n371,372,5,114,0,0,372,96,1,0,0,0,373,374,5,103,0,0,374,375,5,114,0,0,375,\n376,5,111,0,0,376,377,5,117,0,0,377,378,5,112,0,0,378,98,1,0,0,0,379,380,\n5,111,0,0,380,381,5,112,0,0,381,382,5,116,0,0,382,100,1,0,0,0,383,384,5,\n99,0,0,384,385,5,114,0,0,385,386,5,105,0,0,386,387,5,116,0,0,387,388,5,105,\n0,0,388,389,5,99,0,0,389,390,5,97,0,0,390,391,5,108,0,0,391,102,1,0,0,0,\n392,393,5,115,0,0,393,394,5,101,0,0,394,395,5,99,0,0,395,396,5,116,0,0,396,\n397,5,105,0,0,397,398,5,111,0,0,398,405,5,110,0,0,399,400,5,102,0,0,400,\n401,5,114,0,0,401,402,5,97,0,0,402,403,5,109,0,0,403,405,5,101,0,0,404,392,\n1,0,0,0,404,399,1,0,0,0,405,104,1,0,0,0,406,407,5,114,0,0,407,408,5,101,\n0,0,408,409,5,102,0,0,409,106,1,0,0,0,410,411,5,97,0,0,411,412,5,115,0,0,\n412,108,1,0,0,0,413,414,5,116,0,0,414,415,5,114,0,0,415,416,5,121,0,0,416,\n110,1,0,0,0,417,418,5,99,0,0,418,419,5,97,0,0,419,420,5,116,0,0,420,421,\n5,99,0,0,421,422,5,104,0,0,422,112,1,0,0,0,423,424,5,102,0,0,424,425,5,105,\n0,0,425,426,5,110,0,0,426,427,5,97,0,0,427,428,5,108,0,0,428,429,5,108,0,\n0,429,430,5,121,0,0,430,114,1,0,0,0,431,432,5,105,0,0,432,433,5,110,0,0,\n433,116,1,0,0,0,434,435,5,64,0,0,435,436,5,83,0,0,436,437,5,116,0,0,437,\n438,5,97,0,0,438,439,5,114,0,0,439,440,5,116,0,0,440,441,5,101,0,0,441,451,\n5,114,0,0,442,443,5,64,0,0,443,444,5,115,0,0,444,445,5,116,0,0,445,446,5,\n97,0,0,446,447,5,114,0,0,447,448,5,116,0,0,448,449,5,101,0,0,449,451,5,114,\n0,0,450,434,1,0,0,0,450,442,1,0,0,0,451,118,1,0,0,0,452,453,5,64,0,0,453,\n454,5,82,0,0,454,455,5,101,0,0,455,456,5,116,0,0,456,457,5,117,0,0,457,458,\n5,114,0,0,458,479,5,110,0,0,459,460,5,64,0,0,460,461,5,114,0,0,461,462,5,\n101,0,0,462,463,5,116,0,0,463,464,5,117,0,0,464,465,5,114,0,0,465,479,5,\n110,0,0,466,467,5,64,0,0,467,468,5,82,0,0,468,469,5,101,0,0,469,470,5,112,\n0,0,470,471,5,108,0,0,471,479,5,121,0,0,472,473,5,64,0,0,473,474,5,114,0,\n0,474,475,5,101,0,0,475,476,5,112,0,0,476,477,5,108,0,0,477,479,5,121,0,\n0,478,452,1,0,0,0,478,459,1,0,0,0,478,466,1,0,0,0,478,472,1,0,0,0,479,120,\n1,0,0,0,480,484,5,64,0,0,481,483,7,2,0,0,482,481,1,0,0,0,483,486,1,0,0,0,\n484,482,1,0,0,0,484,485,1,0,0,0,485,122,1,0,0,0,486,484,1,0,0,0,487,488,\n5,46,0,0,488,124,1,0,0,0,489,493,7,3,0,0,490,492,7,4,0,0,491,490,1,0,0,0,\n492,495,1,0,0,0,493,491,1,0,0,0,493,494,1,0,0,0,494,126,1,0,0,0,495,493,\n1,0,0,0,496,497,7,5,0,0,497,128,1,0,0,0,498,500,3,127,62,0,499,498,1,0,0,\n0,500,501,1,0,0,0,501,499,1,0,0,0,501,502,1,0,0,0,502,130,1,0,0,0,503,505,\n3,127,62,0,504,503,1,0,0,0,505,506,1,0,0,0,506,504,1,0,0,0,506,507,1,0,0,\n0,507,508,1,0,0,0,508,512,5,46,0,0,509,511,3,127,62,0,510,509,1,0,0,0,511,\n514,1,0,0,0,512,510,1,0,0,0,512,513,1,0,0,0,513,524,1,0,0,0,514,512,1,0,\n0,0,515,517,5,46,0,0,516,518,3,127,62,0,517,516,1,0,0,0,518,519,1,0,0,0,\n519,517,1,0,0,0,519,520,1,0,0,0,520,521,1,0,0,0,521,522,4,64,1,0,522,524,\n1,0,0,0,523,504,1,0,0,0,523,515,1,0,0,0,524,132,1,0,0,0,525,528,5,36,0,0,\n526,529,3,129,63,0,527,529,3,131,64,0,528,526,1,0,0,0,528,527,1,0,0,0,529,\n134,1,0,0,0,530,532,3,127,62,0,531,530,1,0,0,0,532,533,1,0,0,0,533,531,1,\n0,0,0,533,534,1,0,0,0,534,535,1,0,0,0,535,539,5,46,0,0,536,538,3,127,62,\n0,537,536,1,0,0,0,538,541,1,0,0,0,539,537,1,0,0,0,539,540,1,0,0,0,540,554,\n1,0,0,0,541,539,1,0,0,0,542,544,5,46,0,0,543,545,3,127,62,0,544,543,1,0,\n0,0,545,546,1,0,0,0,546,544,1,0,0,0,546,547,1,0,0,0,547,554,1,0,0,0,548,\n550,3,127,62,0,549,548,1,0,0,0,550,551,1,0,0,0,551,549,1,0,0,0,551,552,1,\n0,0,0,552,554,1,0,0,0,553,531,1,0,0,0,553,542,1,0,0,0,553,549,1,0,0,0,554,\n555,1,0,0,0,555,556,3,139,68,0,556,136,1,0,0,0,557,559,3,127,62,0,558,557,\n1,0,0,0,559,560,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,562,1,0,0,0,\n562,566,7,6,0,0,563,565,7,4,0,0,564,563,1,0,0,0,565,568,1,0,0,0,566,564,\n1,0,0,0,566,567,1,0,0,0,567,138,1,0,0,0,568,566,1,0,0,0,569,574,3,141,69,\n0,570,574,3,143,70,0,571,574,3,145,71,0,572,574,3,147,72,0,573,569,1,0,0,\n0,573,570,1,0,0,0,573,571,1,0,0,0,573,572,1,0,0,0,574,140,1,0,0,0,575,576,\n5,109,0,0,576,577,5,105,0,0,577,578,5,108,0,0,578,579,5,108,0,0,579,580,\n5,105,0,0,580,581,5,115,0,0,581,582,5,101,0,0,582,583,5,99,0,0,583,584,5,\n111,0,0,584,585,5,110,0,0,585,586,5,100,0,0,586,675,5,115,0,0,587,588,5,\n109,0,0,588,589,5,105,0,0,589,590,5,108,0,0,590,591,5,108,0,0,591,592,5,\n105,0,0,592,593,5,115,0,0,593,594,5,101,0,0,594,595,5,99,0,0,595,596,5,111,\n0,0,596,597,5,110,0,0,597,675,5,100,0,0,598,599,5,109,0,0,599,675,5,115,\n0,0,600,601,5,115,0,0,601,602,5,101,0,0,602,603,5,99,0,0,603,604,5,111,0,\n0,604,605,5,110,0,0,605,606,5,100,0,0,606,675,5,115,0,0,607,608,5,115,0,\n0,608,609,5,101,0,0,609,610,5,99,0,0,610,611,5,111,0,0,611,612,5,110,0,0,\n612,675,5,100,0,0,613,614,5,115,0,0,614,615,5,101,0,0,615,616,5,99,0,0,616,\n675,5,115,0,0,617,618,5,115,0,0,618,619,5,101,0,0,619,675,5,99,0,0,620,675,\n5,115,0,0,621,622,5,109,0,0,622,623,5,105,0,0,623,624,5,110,0,0,624,625,\n5,117,0,0,625,626,5,116,0,0,626,627,5,101,0,0,627,675,5,115,0,0,628,629,\n5,109,0,0,629,630,5,105,0,0,630,631,5,110,0,0,631,632,5,117,0,0,632,633,\n5,116,0,0,633,675,5,101,0,0,634,635,5,109,0,0,635,636,5,105,0,0,636,637,\n5,110,0,0,637,675,5,115,0,0,638,639,5,109,0,0,639,640,5,105,0,0,640,675,\n5,110,0,0,641,642,5,104,0,0,642,643,5,111,0,0,643,644,5,117,0,0,644,645,\n5,114,0,0,645,675,5,115,0,0,646,647,5,104,0,0,647,648,5,111,0,0,648,649,\n5,117,0,0,649,675,5,114,0,0,650,651,5,104,0,0,651,652,5,114,0,0,652,675,\n5,115,0,0,653,654,5,104,0,0,654,675,5,114,0,0,655,675,5,104,0,0,656,657,\n5,100,0,0,657,658,5,97,0,0,658,659,5,121,0,0,659,675,5,115,0,0,660,661,5,\n100,0,0,661,662,5,97,0,0,662,675,5,121,0,0,663,675,5,100,0,0,664,665,5,119,\n0,0,665,666,5,101,0,0,666,667,5,101,0,0,667,668,5,107,0,0,668,675,5,115,\n0,0,669,670,5,119,0,0,670,671,5,101,0,0,671,672,5,101,0,0,672,675,5,107,\n0,0,673,675,5,119,0,0,674,575,1,0,0,0,674,587,1,0,0,0,674,598,1,0,0,0,674,\n600,1,0,0,0,674,607,1,0,0,0,674,613,1,0,0,0,674,617,1,0,0,0,674,620,1,0,\n0,0,674,621,1,0,0,0,674,628,1,0,0,0,674,634,1,0,0,0,674,638,1,0,0,0,674,\n641,1,0,0,0,674,646,1,0,0,0,674,650,1,0,0,0,674,653,1,0,0,0,674,655,1,0,\n0,0,674,656,1,0,0,0,674,660,1,0,0,0,674,663,1,0,0,0,674,664,1,0,0,0,674,\n669,1,0,0,0,674,673,1,0,0,0,675,142,1,0,0,0,676,677,5,75,0,0,677,678,5,105,\n0,0,678,706,5,66,0,0,679,680,5,77,0,0,680,681,5,105,0,0,681,706,5,66,0,0,\n682,683,5,71,0,0,683,684,5,105,0,0,684,706,5,66,0,0,685,686,5,84,0,0,686,\n687,5,105,0,0,687,706,5,66,0,0,688,689,5,75,0,0,689,706,5,66,0,0,690,691,\n5,77,0,0,691,706,5,66,0,0,692,693,5,71,0,0,693,706,5,66,0,0,694,695,5,84,\n0,0,695,706,5,66,0,0,696,697,5,107,0,0,697,706,5,98,0,0,698,699,5,109,0,\n0,699,706,5,98,0,0,700,701,5,103,0,0,701,706,5,98,0,0,702,703,5,116,0,0,\n703,706,5,98,0,0,704,706,5,66,0,0,705,676,1,0,0,0,705,679,1,0,0,0,705,682,\n1,0,0,0,705,685,1,0,0,0,705,688,1,0,0,0,705,690,1,0,0,0,705,692,1,0,0,0,\n705,694,1,0,0,0,705,696,1,0,0,0,705,698,1,0,0,0,705,700,1,0,0,0,705,702,\n1,0,0,0,705,704,1,0,0,0,706,144,1,0,0,0,707,708,5,114,0,0,708,709,5,101,\n0,0,709,722,5,109,0,0,710,711,5,101,0,0,711,722,5,109,0,0,712,713,5,112,\n0,0,713,722,5,120,0,0,714,715,5,109,0,0,715,722,5,109,0,0,716,717,5,99,0,\n0,717,722,5,109,0,0,718,719,5,107,0,0,719,722,5,109,0,0,720,722,5,109,0,\n0,721,707,1,0,0,0,721,710,1,0,0,0,721,712,1,0,0,0,721,714,1,0,0,0,721,716,\n1,0,0,0,721,718,1,0,0,0,721,720,1,0,0,0,722,146,1,0,0,0,723,724,5,109,0,\n0,724,729,5,103,0,0,725,726,5,107,0,0,726,729,5,103,0,0,727,729,5,103,0,\n0,728,723,1,0,0,0,728,725,1,0,0,0,728,727,1,0,0,0,729,148,1,0,0,0,730,736,\n5,34,0,0,731,732,5,34,0,0,732,735,5,34,0,0,733,735,8,7,0,0,734,731,1,0,0,\n0,734,733,1,0,0,0,735,738,1,0,0,0,736,734,1,0,0,0,736,737,1,0,0,0,737,739,\n1,0,0,0,738,736,1,0,0,0,739,740,5,34,0,0,740,150,1,0,0,0,741,747,5,34,0,\n0,742,743,5,34,0,0,743,746,5,34,0,0,744,746,8,7,0,0,745,742,1,0,0,0,745,\n744,1,0,0,0,746,749,1,0,0,0,747,745,1,0,0,0,747,748,1,0,0,0,748,152,1,0,\n0,0,749,747,1,0,0,0,750,751,7,8,0,0,751,752,1,0,0,0,752,753,6,75,0,0,753,\n154,1,0,0,0,754,755,5,47,0,0,755,756,5,47,0,0,756,760,1,0,0,0,757,759,8,\n8,0,0,758,757,1,0,0,0,759,762,1,0,0,0,760,758,1,0,0,0,760,761,1,0,0,0,761,\n763,1,0,0,0,762,760,1,0,0,0,763,764,6,76,4,0,764,156,1,0,0,0,765,766,9,0,\n0,0,766,158,1,0,0,0,767,771,4,78,2,0,768,770,3,3,0,0,769,768,1,0,0,0,770,\n773,1,0,0,0,771,769,1,0,0,0,771,772,1,0,0,0,772,774,1,0,0,0,773,771,1,0,\n0,0,774,775,5,61,0,0,775,776,5,61,0,0,776,780,1,0,0,0,777,779,8,8,0,0,778,\n777,1,0,0,0,779,782,1,0,0,0,780,778,1,0,0,0,780,781,1,0,0,0,781,160,1,0,\n0,0,782,780,1,0,0,0,783,785,8,8,0,0,784,783,1,0,0,0,785,786,1,0,0,0,786,\n784,1,0,0,0,786,787,1,0,0,0,787,162,1,0,0,0,788,789,7,8,0,0,789,790,1,0,\n0,0,790,791,6,80,5,0,791,164,1,0,0,0,792,794,8,8,0,0,793,792,1,0,0,0,794,\n795,1,0,0,0,795,793,1,0,0,0,795,796,1,0,0,0,796,166,1,0,0,0,797,798,7,8,\n0,0,798,799,1,0,0,0,799,800,6,82,5,0,800,168,1,0,0,0,39,0,1,2,174,246,320,\n356,404,450,478,484,493,501,506,512,519,523,528,533,539,546,551,553,560,\n566,573,674,705,721,728,734,736,745,747,760,771,780,786,795,6,0,1,0,0,3,\n0,5,2,0,5,1,0,0,2,0,4,0,0];\n\n\nconst atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nconst decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );\n\nexport default class sequenceLexer extends antlr4.Lexer {\n\n    static grammarFileName = \"sequenceLexer.g4\";\n    static channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\", \"COMMENT_CHANNEL\", \n                                                               \"MODIFIER_CHANNEL\" ];\n\tstatic modeNames = [ \"DEFAULT_MODE\", \"EVENT\", \"TITLE_MODE\" ];\n\tstatic literalNames = [ null, null, \"'const'\", \"'readonly'\", \"'static'\", \n                         \"'await'\", null, \"':'\", \"'<<'\", \"'>>'\", \"'-->'\", \n                         \"'->'\", null, \"'['\", \"']'\", \"'||'\", \"'&&'\", \"'=='\", \n                         \"'!='\", \"'>'\", \"'<'\", \"'>='\", \"'<='\", \"'+'\", \"'-'\", \n                         \"'*'\", \"'/'\", \"'%'\", \"'^'\", \"'!'\", \"';'\", \"','\", \n                         \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \"'true'\", \"'false'\", \n                         null, \"'if'\", \"'else'\", null, \"'return'\", \"'new'\", \n                         \"'par'\", \"'group'\", \"'opt'\", \"'critical'\", null, \n                         \"'ref'\", \"'as'\", \"'try'\", \"'catch'\", \"'finally'\", \n                         \"'in'\", null, null, null, \"'.'\" ];\n\tstatic symbolicNames = [ null, \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \n                          \"AWAIT\", \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \"RETURN_ARROW\", \n                          \"ARROW\", \"COLOR\", \"LBRACKET\", \"RBRACKET\", \"OR\", \n                          \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \"GTEQ\", \"LTEQ\", \n                          \"PLUS\", \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \"POW\", \n                          \"NOT\", \"SCOL\", \"COMMA\", \"ASSIGN\", \"OPAR\", \"CPAR\", \n                          \"OBRACE\", \"CBRACE\", \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \n                          \"ELSE\", \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \"GROUP\", \n                          \"OPT\", \"CRITICAL\", \"SECTION\", \"REF\", \"AS\", \"TRY\", \n                          \"CATCH\", \"FINALLY\", \"IN\", \"STARTER_LXR\", \"ANNOTATION_RET\", \n                          \"ANNOTATION\", \"DOT\", \"ID\", \"INT\", \"FLOAT\", \"MONEY\", \n                          \"NUMBER_UNIT\", \"DIGIT_LEADING_NAME\", \"CSTRING\", \n                          \"USTRING\", \"CR\", \"COMMENT\", \"OTHER\", \"DIVIDER\", \n                          \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \"TITLE_CONTENT\", \n                          \"TITLE_END\" ];\n\tstatic ruleNames = [ \"HWS\", \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \"AWAIT\", \n                      \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \"RETURN_ARROW\", \n                      \"ARROW\", \"HEX\", \"COLOR\", \"LBRACKET\", \"RBRACKET\", \"OR\", \n                      \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \"GTEQ\", \"LTEQ\", \"PLUS\", \n                      \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \"POW\", \"NOT\", \"SCOL\", \n                      \"COMMA\", \"ASSIGN\", \"OPAR\", \"CPAR\", \"OBRACE\", \"CBRACE\", \n                      \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \"ELSE\", \"WHILE\", \"RETURN\", \n                      \"NEW\", \"PAR\", \"GROUP\", \"OPT\", \"CRITICAL\", \"SECTION\", \n                      \"REF\", \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \"IN\", \"STARTER_LXR\", \n                      \"ANNOTATION_RET\", \"ANNOTATION\", \"DOT\", \"ID\", \"DIGIT\", \n                      \"INT\", \"FLOAT\", \"MONEY\", \"NUMBER_UNIT\", \"DIGIT_LEADING_NAME\", \n                      \"KNOWN_UNIT\", \"TIME_UNIT\", \"SIZE_UNIT\", \"LENGTH_UNIT\", \n                      \"MASS_UNIT\", \"CSTRING\", \"USTRING\", \"CR\", \"COMMENT\", \n                      \"OTHER\", \"DIVIDER\", \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \n                      \"TITLE_CONTENT\", \"TITLE_END\" ];\n\n    constructor(input) {\n        super(input)\n        this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n\n          // 1. title must be at the beginning\n          // 2. title must not be followed by '.', '(', '='\n          this.isTitle = function() {\n            // Check if 'title' appears at the beginning (only whitespace/comments before it)\n            const currentPos = this._tokenStartCharIndex;\n            const preceding = this._input.getText(0, currentPos - 1)\n              .replace(/\\/\\/[^\\n]*(?:\\n|$)/g, '')\n              .trim();\n            if (preceding.length) return false;\n\n            // Look ahead past 'title' and any whitespace to check what follows\n            const SPACE = 32, TAB = 9, EOF = -1, DOT = 46, EQUALS = 61, OPEN_PAREN = 40;\n            let pos = 6, next = this._input.LA(pos);\n\n            // Skip past any whitespace\n            while (next === SPACE || next === TAB) {\n              ++pos;\n              next = this._input.LA(pos);\n            }\n\n            // Title directive if EOF or not followed by '.', '(', '='\n            return next === EOF || (next !== DOT && next !== EQUALS && next !== OPEN_PAREN);\n          };\n\n          this.isNameStartAhead = function() {\n            const next = this._input.LA(1);\n            return next !== -1 && /[\\p{L}_]/u.test(String.fromCodePoint(next));\n          };\n\n    }\n\n    get atn() {\n        return atn;\n    }\n}\n\nsequenceLexer.EOF = antlr4.Token.EOF;\nsequenceLexer.WS = 1;\nsequenceLexer.CONSTANT = 2;\nsequenceLexer.READONLY = 3;\nsequenceLexer.STATIC = 4;\nsequenceLexer.AWAIT = 5;\nsequenceLexer.TITLE = 6;\nsequenceLexer.COL = 7;\nsequenceLexer.SOPEN = 8;\nsequenceLexer.SCLOSE = 9;\nsequenceLexer.RETURN_ARROW = 10;\nsequenceLexer.ARROW = 11;\nsequenceLexer.COLOR = 12;\nsequenceLexer.LBRACKET = 13;\nsequenceLexer.RBRACKET = 14;\nsequenceLexer.OR = 15;\nsequenceLexer.AND = 16;\nsequenceLexer.EQ = 17;\nsequenceLexer.NEQ = 18;\nsequenceLexer.GT = 19;\nsequenceLexer.LT = 20;\nsequenceLexer.GTEQ = 21;\nsequenceLexer.LTEQ = 22;\nsequenceLexer.PLUS = 23;\nsequenceLexer.MINUS = 24;\nsequenceLexer.MULT = 25;\nsequenceLexer.DIV = 26;\nsequenceLexer.MOD = 27;\nsequenceLexer.POW = 28;\nsequenceLexer.NOT = 29;\nsequenceLexer.SCOL = 30;\nsequenceLexer.COMMA = 31;\nsequenceLexer.ASSIGN = 32;\nsequenceLexer.OPAR = 33;\nsequenceLexer.CPAR = 34;\nsequenceLexer.OBRACE = 35;\nsequenceLexer.CBRACE = 36;\nsequenceLexer.TRUE = 37;\nsequenceLexer.FALSE = 38;\nsequenceLexer.NIL = 39;\nsequenceLexer.IF = 40;\nsequenceLexer.ELSE = 41;\nsequenceLexer.WHILE = 42;\nsequenceLexer.RETURN = 43;\nsequenceLexer.NEW = 44;\nsequenceLexer.PAR = 45;\nsequenceLexer.GROUP = 46;\nsequenceLexer.OPT = 47;\nsequenceLexer.CRITICAL = 48;\nsequenceLexer.SECTION = 49;\nsequenceLexer.REF = 50;\nsequenceLexer.AS = 51;\nsequenceLexer.TRY = 52;\nsequenceLexer.CATCH = 53;\nsequenceLexer.FINALLY = 54;\nsequenceLexer.IN = 55;\nsequenceLexer.STARTER_LXR = 56;\nsequenceLexer.ANNOTATION_RET = 57;\nsequenceLexer.ANNOTATION = 58;\nsequenceLexer.DOT = 59;\nsequenceLexer.ID = 60;\nsequenceLexer.INT = 61;\nsequenceLexer.FLOAT = 62;\nsequenceLexer.MONEY = 63;\nsequenceLexer.NUMBER_UNIT = 64;\nsequenceLexer.DIGIT_LEADING_NAME = 65;\nsequenceLexer.CSTRING = 66;\nsequenceLexer.USTRING = 67;\nsequenceLexer.CR = 68;\nsequenceLexer.COMMENT = 69;\nsequenceLexer.OTHER = 70;\nsequenceLexer.DIVIDER = 71;\nsequenceLexer.EVENT_PAYLOAD_LXR = 72;\nsequenceLexer.EVENT_END = 73;\nsequenceLexer.TITLE_CONTENT = 74;\nsequenceLexer.TITLE_END = 75;\n\nsequenceLexer.COMMENT_CHANNEL = 2;\nsequenceLexer.MODIFIER_CHANNEL = 3;\n\nsequenceLexer.EVENT = 1;\nsequenceLexer.TITLE_MODE = 2;\n\n\nsequenceLexer.prototype.sempred = function(localctx, ruleIndex, predIndex) {\n\tswitch (ruleIndex) {\n\t\tcase 6:\n\t\t\treturn this.TITLE_sempred(localctx, predIndex);\n\t\tcase 64:\n\t\t\treturn this.FLOAT_sempred(localctx, predIndex);\n\t\tcase 78:\n\t\t\treturn this.DIVIDER_sempred(localctx, predIndex);\n    \tdefault:\n    \t\tthrow \"No registered predicate for:\" + ruleIndex;\n    }\n};\n\nsequenceLexer.prototype.TITLE_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 0:\n\t\t\treturn this.isTitle();\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\nsequenceLexer.prototype.FLOAT_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 1:\n\t\t\treturn !this.isNameStartAhead();\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\nsequenceLexer.prototype.DIVIDER_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 2:\n\t\t\treturn this.column === 0;\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\n\n\n\n","// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\n\n// This class defines a complete listener for a parse tree produced by sequenceParser.\nexport default class sequenceParserListener extends antlr4.tree.ParseTreeListener {\n\n\t// Enter a parse tree produced by sequenceParser#prog.\n\tenterProg(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#prog.\n\texitProg(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#title.\n\tenterTitle(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#title.\n\texitTitle(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#head.\n\tenterHead(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#head.\n\texitHead(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#group.\n\tenterGroup(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#group.\n\texitGroup(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#starterExp.\n\tenterStarterExp(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#starterExp.\n\texitStarterExp(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#starter.\n\tenterStarter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#starter.\n\texitStarter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#participant.\n\tenterParticipant(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#participant.\n\texitParticipant(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stereotype.\n\tenterStereotype(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stereotype.\n\texitStereotype(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#label.\n\tenterLabel(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#label.\n\texitLabel(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#participantType.\n\tenterParticipantType(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#participantType.\n\texitParticipantType(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#name.\n\tenterName(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#name.\n\texitName(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#width.\n\tenterWidth(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#width.\n\texitWidth(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#emoji.\n\tenterEmoji(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#emoji.\n\texitEmoji(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#block.\n\tenterBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#block.\n\texitBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ret.\n\tenterRet(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ret.\n\texitRet(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#returnAsyncMessage.\n\tenterReturnAsyncMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#returnAsyncMessage.\n\texitReturnAsyncMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#divider.\n\tenterDivider(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#divider.\n\texitDivider(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#dividerNote.\n\tenterDividerNote(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#dividerNote.\n\texitDividerNote(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stat.\n\tenterStat(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stat.\n\texitStat(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#par.\n\tenterPar(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#par.\n\texitPar(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#opt.\n\tenterOpt(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#opt.\n\texitOpt(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#critical.\n\tenterCritical(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#critical.\n\texitCritical(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#section.\n\tenterSection(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#section.\n\texitSection(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creation.\n\tenterCreation(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creation.\n\texitCreation(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ref.\n\tenterRef(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ref.\n\texitRef(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creationBody.\n\tenterCreationBody(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creationBody.\n\texitCreationBody(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#message.\n\tenterMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#message.\n\texitMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#messageBody.\n\tenterMessageBody(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#messageBody.\n\texitMessageBody(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#fromTo.\n\tenterFromTo(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#fromTo.\n\texitFromTo(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#func.\n\tenterFunc(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#func.\n\texitFunc(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#from.\n\tenterFrom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#from.\n\texitFrom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#to.\n\tenterTo(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#to.\n\texitTo(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#signature.\n\tenterSignature(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#signature.\n\texitSignature(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#invocation.\n\tenterInvocation(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#invocation.\n\texitInvocation(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignment.\n\tenterAssignment(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignment.\n\texitAssignment(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#asyncMessage.\n\tenterAsyncMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#asyncMessage.\n\texitAsyncMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#content.\n\tenterContent(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#content.\n\texitContent(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#construct.\n\tenterConstruct(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#construct.\n\texitConstruct(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#type.\n\tenterType(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#type.\n\texitType(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignee.\n\tenterAssignee(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignee.\n\texitAssignee(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#methodName.\n\tenterMethodName(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#methodName.\n\texitMethodName(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parameters.\n\tenterParameters(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parameters.\n\texitParameters(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parameter.\n\tenterParameter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parameter.\n\texitParameter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#namedParameter.\n\tenterNamedParameter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#namedParameter.\n\texitNamedParameter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#declaration.\n\tenterDeclaration(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#declaration.\n\texitDeclaration(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#tcf.\n\tenterTcf(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#tcf.\n\texitTcf(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#tryBlock.\n\tenterTryBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#tryBlock.\n\texitTryBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#catchBlock.\n\tenterCatchBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#catchBlock.\n\texitCatchBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#finallyBlock.\n\tenterFinallyBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#finallyBlock.\n\texitFinallyBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#alt.\n\tenterAlt(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#alt.\n\texitAlt(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ifBlock.\n\tenterIfBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ifBlock.\n\texitIfBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#elseIfBlock.\n\tenterElseIfBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#elseIfBlock.\n\texitElseIfBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#elseBlock.\n\tenterElseBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#elseBlock.\n\texitElseBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#braceBlock.\n\tenterBraceBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#braceBlock.\n\texitBraceBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#loop.\n\tenterLoop(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#loop.\n\texitLoop(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignmentExpr.\n\tenterAssignmentExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignmentExpr.\n\texitAssignmentExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#funcExpr.\n\tenterFuncExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#funcExpr.\n\texitFuncExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#atomExpr.\n\tenterAtomExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#atomExpr.\n\texitAtomExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#orExpr.\n\tenterOrExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#orExpr.\n\texitOrExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#additiveExpr.\n\tenterAdditiveExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#additiveExpr.\n\texitAdditiveExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#relationalExpr.\n\tenterRelationalExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#relationalExpr.\n\texitRelationalExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#plusExpr.\n\tenterPlusExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#plusExpr.\n\texitPlusExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#notExpr.\n\tenterNotExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#notExpr.\n\texitNotExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#unaryMinusExpr.\n\tenterUnaryMinusExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#unaryMinusExpr.\n\texitUnaryMinusExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creationExpr.\n\tenterCreationExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creationExpr.\n\texitCreationExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parenthesizedExpr.\n\tenterParenthesizedExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parenthesizedExpr.\n\texitParenthesizedExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#multiplicationExpr.\n\tenterMultiplicationExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#multiplicationExpr.\n\texitMultiplicationExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#equalityExpr.\n\tenterEqualityExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#equalityExpr.\n\texitEqualityExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#andExpr.\n\tenterAndExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#andExpr.\n\texitAndExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#numberAtom.\n\tenterNumberAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#numberAtom.\n\texitNumberAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#numberUnitAtom.\n\tenterNumberUnitAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#numberUnitAtom.\n\texitNumberUnitAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#moneyAtom.\n\tenterMoneyAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#moneyAtom.\n\texitMoneyAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#booleanAtom.\n\tenterBooleanAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#booleanAtom.\n\texitBooleanAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#idAtom.\n\tenterIdAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#idAtom.\n\texitIdAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#digitLeadingNameAtom.\n\tenterDigitLeadingNameAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#digitLeadingNameAtom.\n\texitDigitLeadingNameAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stringAtom.\n\tenterStringAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stringAtom.\n\texitStringAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#nilAtom.\n\tenterNilAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#nilAtom.\n\texitNilAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parExpr.\n\tenterParExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parExpr.\n\texitParExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#condition.\n\tenterCondition(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#condition.\n\texitCondition(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#inExpr.\n\tenterInExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#inExpr.\n\texitInExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#textExpr.\n\tenterTextExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#textExpr.\n\texitTextExpr(ctx) {\n\t}\n\n\n\n}","// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\nimport sequenceParserListener from './sequenceParserListener.js';\nconst serializedATN = [4,1,76,655,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,\n4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,\n2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,\n20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,\n7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,\n34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,\n2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,\n49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,\n7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,1,0,3,0,124,8,0,1,0,1,0,3,0,\n128,8,0,1,0,1,0,1,0,1,0,3,0,134,8,0,1,0,3,0,137,8,0,1,0,1,0,1,0,3,0,142,\n8,0,1,1,1,1,3,1,146,8,1,1,1,3,1,149,8,1,1,2,1,2,4,2,153,8,2,11,2,12,2,154,\n1,2,1,2,5,2,159,8,2,10,2,12,2,162,9,2,1,2,3,2,165,8,2,1,3,1,3,3,3,169,8,\n3,1,3,1,3,5,3,173,8,3,10,3,12,3,176,9,3,1,3,3,3,179,8,3,3,3,181,8,3,1,4,\n1,4,1,4,3,4,186,8,4,1,4,3,4,189,8,4,1,4,3,4,192,8,4,1,5,1,5,1,6,3,6,197,\n8,6,1,6,3,6,200,8,6,1,6,3,6,203,8,6,1,6,1,6,3,6,207,8,6,1,6,3,6,210,8,6,\n1,6,3,6,213,8,6,1,6,1,6,3,6,217,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,226,\n8,7,1,7,1,7,3,7,230,8,7,3,7,232,8,7,1,8,1,8,1,8,3,8,237,8,8,1,9,1,9,1,10,\n1,10,1,11,1,11,1,12,1,12,1,12,1,12,1,12,3,12,250,8,12,1,13,4,13,253,8,13,\n11,13,12,13,254,1,14,1,14,3,14,259,8,14,1,14,3,14,262,8,14,1,14,1,14,1,14,\n3,14,267,8,14,1,14,1,14,3,14,271,8,14,3,14,273,8,14,1,15,1,15,1,15,1,15,\n1,15,3,15,280,8,15,1,15,1,15,1,15,3,15,285,8,15,3,15,287,8,15,1,16,1,16,\n1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,304,\n8,18,1,18,1,18,1,18,3,18,309,8,18,1,19,1,19,3,19,313,8,19,1,19,1,19,3,19,\n317,8,19,1,20,1,20,3,20,321,8,20,1,20,1,20,3,20,325,8,20,1,21,1,21,3,21,\n329,8,21,1,21,1,21,3,21,333,8,21,1,22,1,22,1,22,3,22,338,8,22,1,22,3,22,\n341,8,22,1,22,1,22,1,22,3,22,346,8,22,1,23,1,23,1,23,3,23,351,8,23,1,24,\n1,24,1,24,1,24,1,24,5,24,358,8,24,10,24,12,24,361,9,24,5,24,363,8,24,10,\n24,12,24,366,9,24,1,24,1,24,3,24,370,8,24,1,25,3,25,373,8,25,1,25,1,25,1,\n25,1,25,3,25,379,8,25,1,25,3,25,382,8,25,1,25,3,25,385,8,25,1,25,3,25,388,\n8,25,1,26,1,26,1,26,3,26,393,8,26,1,27,1,27,1,27,3,27,398,8,27,1,27,3,27,\n401,8,27,1,27,1,27,3,27,405,8,27,1,27,3,27,408,8,27,1,28,1,28,1,28,3,28,\n413,8,28,1,28,1,28,1,28,1,29,1,29,1,29,5,29,421,8,29,10,29,12,29,424,9,29,\n1,30,3,30,427,8,30,1,30,1,30,1,31,3,31,432,8,31,1,31,1,31,1,32,1,32,3,32,\n438,8,32,1,33,1,33,3,33,442,8,33,1,33,1,33,1,34,3,34,447,8,34,1,34,1,34,\n1,34,1,35,1,35,1,35,3,35,455,8,35,1,35,1,35,1,35,3,35,460,8,35,1,35,1,35,\n1,35,3,35,465,8,35,3,35,467,8,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,\n1,39,1,39,5,39,479,8,39,10,39,12,39,482,9,39,1,39,1,39,1,39,3,39,487,8,39,\n1,40,3,40,490,8,40,1,40,1,40,1,41,1,41,1,41,5,41,497,8,41,10,41,12,41,500,\n9,41,1,41,3,41,503,8,41,1,42,1,42,1,42,3,42,508,8,42,1,43,1,43,1,43,3,43,\n513,8,43,1,44,1,44,1,44,1,45,1,45,5,45,520,8,45,10,45,12,45,523,9,45,1,45,\n3,45,526,8,45,1,46,1,46,1,46,1,47,1,47,3,47,533,8,47,1,47,1,47,1,48,1,48,\n1,48,1,49,1,49,5,49,542,8,49,10,49,12,49,545,9,49,1,49,3,49,548,8,49,1,50,\n1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,3,53,564,\n8,53,1,53,1,53,1,54,1,54,3,54,570,8,54,1,54,3,54,573,8,54,1,55,1,55,1,55,\n1,55,1,55,1,55,1,55,1,55,1,55,3,55,584,8,55,1,55,1,55,1,55,1,55,1,55,1,55,\n1,55,1,55,1,55,3,55,595,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,\n1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,618,8,55,\n10,55,12,55,621,9,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,631,8,\n56,1,57,1,57,3,57,635,8,57,1,57,3,57,638,8,57,1,58,1,58,1,58,1,58,3,58,644,\n8,58,1,59,1,59,1,59,1,59,1,60,4,60,651,8,60,11,60,12,60,652,1,60,0,1,110,\n61,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,\n50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,\n98,100,102,104,106,108,110,112,114,116,118,120,0,13,2,0,8,8,20,20,2,0,9,\n9,19,19,2,0,60,60,65,67,2,0,11,11,24,24,2,0,60,60,65,65,1,0,25,27,1,0,23,\n24,1,0,19,22,1,0,17,18,1,0,61,62,1,0,37,38,1,0,66,67,2,0,60,60,64,65,735,\n0,141,1,0,0,0,2,143,1,0,0,0,4,164,1,0,0,0,6,166,1,0,0,0,8,191,1,0,0,0,10,\n193,1,0,0,0,12,216,1,0,0,0,14,231,1,0,0,0,16,236,1,0,0,0,18,238,1,0,0,0,\n20,240,1,0,0,0,22,242,1,0,0,0,24,249,1,0,0,0,26,252,1,0,0,0,28,272,1,0,0,\n0,30,286,1,0,0,0,32,288,1,0,0,0,34,290,1,0,0,0,36,308,1,0,0,0,38,316,1,0,\n0,0,40,324,1,0,0,0,42,332,1,0,0,0,44,345,1,0,0,0,46,347,1,0,0,0,48,352,1,\n0,0,0,50,387,1,0,0,0,52,389,1,0,0,0,54,407,1,0,0,0,56,412,1,0,0,0,58,417,\n1,0,0,0,60,426,1,0,0,0,62,431,1,0,0,0,64,435,1,0,0,0,66,439,1,0,0,0,68,446,\n1,0,0,0,70,466,1,0,0,0,72,468,1,0,0,0,74,470,1,0,0,0,76,472,1,0,0,0,78,486,\n1,0,0,0,80,489,1,0,0,0,82,493,1,0,0,0,84,507,1,0,0,0,86,509,1,0,0,0,88,514,\n1,0,0,0,90,517,1,0,0,0,92,527,1,0,0,0,94,530,1,0,0,0,96,536,1,0,0,0,98,539,\n1,0,0,0,100,549,1,0,0,0,102,553,1,0,0,0,104,558,1,0,0,0,106,561,1,0,0,0,\n108,567,1,0,0,0,110,594,1,0,0,0,112,630,1,0,0,0,114,632,1,0,0,0,116,643,\n1,0,0,0,118,645,1,0,0,0,120,650,1,0,0,0,122,124,3,2,1,0,123,122,1,0,0,0,\n123,124,1,0,0,0,124,125,1,0,0,0,125,142,5,0,0,1,126,128,3,2,1,0,127,126,\n1,0,0,0,127,128,1,0,0,0,128,129,1,0,0,0,129,130,3,4,2,0,130,131,5,0,0,1,\n131,142,1,0,0,0,132,134,3,2,1,0,133,132,1,0,0,0,133,134,1,0,0,0,134,136,\n1,0,0,0,135,137,3,4,2,0,136,135,1,0,0,0,136,137,1,0,0,0,137,138,1,0,0,0,\n138,139,3,26,13,0,139,140,5,0,0,1,140,142,1,0,0,0,141,123,1,0,0,0,141,127,\n1,0,0,0,141,133,1,0,0,0,142,1,1,0,0,0,143,145,5,6,0,0,144,146,5,74,0,0,145,\n144,1,0,0,0,145,146,1,0,0,0,146,148,1,0,0,0,147,149,5,75,0,0,148,147,1,0,\n0,0,148,149,1,0,0,0,149,3,1,0,0,0,150,153,3,6,3,0,151,153,3,12,6,0,152,150,\n1,0,0,0,152,151,1,0,0,0,153,154,1,0,0,0,154,152,1,0,0,0,154,155,1,0,0,0,\n155,165,1,0,0,0,156,159,3,6,3,0,157,159,3,12,6,0,158,156,1,0,0,0,158,157,\n1,0,0,0,159,162,1,0,0,0,160,158,1,0,0,0,160,161,1,0,0,0,161,163,1,0,0,0,\n162,160,1,0,0,0,163,165,3,8,4,0,164,152,1,0,0,0,164,160,1,0,0,0,165,5,1,\n0,0,0,166,168,5,46,0,0,167,169,3,20,10,0,168,167,1,0,0,0,168,169,1,0,0,0,\n169,180,1,0,0,0,170,174,5,35,0,0,171,173,3,12,6,0,172,171,1,0,0,0,173,176,\n1,0,0,0,174,172,1,0,0,0,174,175,1,0,0,0,175,178,1,0,0,0,176,174,1,0,0,0,\n177,179,5,36,0,0,178,177,1,0,0,0,178,179,1,0,0,0,179,181,1,0,0,0,180,170,\n1,0,0,0,180,181,1,0,0,0,181,7,1,0,0,0,182,188,5,56,0,0,183,185,5,33,0,0,\n184,186,3,10,5,0,185,184,1,0,0,0,185,186,1,0,0,0,186,187,1,0,0,0,187,189,\n5,34,0,0,188,183,1,0,0,0,188,189,1,0,0,0,189,192,1,0,0,0,190,192,5,58,0,\n0,191,182,1,0,0,0,191,190,1,0,0,0,192,9,1,0,0,0,193,194,3,20,10,0,194,11,\n1,0,0,0,195,197,3,18,9,0,196,195,1,0,0,0,196,197,1,0,0,0,197,199,1,0,0,0,\n198,200,3,14,7,0,199,198,1,0,0,0,199,200,1,0,0,0,200,202,1,0,0,0,201,203,\n3,24,12,0,202,201,1,0,0,0,202,203,1,0,0,0,203,204,1,0,0,0,204,206,3,20,10,\n0,205,207,3,22,11,0,206,205,1,0,0,0,206,207,1,0,0,0,207,209,1,0,0,0,208,\n210,3,16,8,0,209,208,1,0,0,0,209,210,1,0,0,0,210,212,1,0,0,0,211,213,5,12,\n0,0,212,211,1,0,0,0,212,213,1,0,0,0,213,217,1,0,0,0,214,217,3,14,7,0,215,\n217,3,18,9,0,216,196,1,0,0,0,216,214,1,0,0,0,216,215,1,0,0,0,217,13,1,0,\n0,0,218,219,5,8,0,0,219,220,3,20,10,0,220,221,5,9,0,0,221,232,1,0,0,0,222,\n223,5,8,0,0,223,225,3,20,10,0,224,226,5,19,0,0,225,224,1,0,0,0,225,226,1,\n0,0,0,226,232,1,0,0,0,227,229,7,0,0,0,228,230,7,1,0,0,229,228,1,0,0,0,229,\n230,1,0,0,0,230,232,1,0,0,0,231,218,1,0,0,0,231,222,1,0,0,0,231,227,1,0,\n0,0,232,15,1,0,0,0,233,234,5,51,0,0,234,237,3,20,10,0,235,237,5,51,0,0,236,\n233,1,0,0,0,236,235,1,0,0,0,237,17,1,0,0,0,238,239,5,58,0,0,239,19,1,0,0,\n0,240,241,7,2,0,0,241,21,1,0,0,0,242,243,5,61,0,0,243,23,1,0,0,0,244,245,\n5,13,0,0,245,246,3,20,10,0,246,247,5,14,0,0,247,250,1,0,0,0,248,250,5,76,\n0,0,249,244,1,0,0,0,249,248,1,0,0,0,250,25,1,0,0,0,251,253,3,36,18,0,252,\n251,1,0,0,0,253,254,1,0,0,0,254,252,1,0,0,0,254,255,1,0,0,0,255,27,1,0,0,\n0,256,258,5,43,0,0,257,259,3,110,55,0,258,257,1,0,0,0,258,259,1,0,0,0,259,\n261,1,0,0,0,260,262,5,30,0,0,261,260,1,0,0,0,261,262,1,0,0,0,262,273,1,0,\n0,0,263,264,5,57,0,0,264,266,3,70,35,0,265,267,5,73,0,0,266,265,1,0,0,0,\n266,267,1,0,0,0,267,273,1,0,0,0,268,270,3,30,15,0,269,271,5,73,0,0,270,269,\n1,0,0,0,270,271,1,0,0,0,271,273,1,0,0,0,272,256,1,0,0,0,272,263,1,0,0,0,\n272,268,1,0,0,0,273,29,1,0,0,0,274,275,3,60,30,0,275,276,5,10,0,0,276,277,\n3,62,31,0,277,279,5,7,0,0,278,280,3,72,36,0,279,278,1,0,0,0,279,280,1,0,\n0,0,280,287,1,0,0,0,281,282,3,60,30,0,282,284,5,10,0,0,283,285,3,62,31,0,\n284,283,1,0,0,0,284,285,1,0,0,0,285,287,1,0,0,0,286,274,1,0,0,0,286,281,\n1,0,0,0,287,31,1,0,0,0,288,289,3,34,17,0,289,33,1,0,0,0,290,291,5,71,0,0,\n291,35,1,0,0,0,292,309,3,98,49,0,293,309,3,38,19,0,294,309,3,40,20,0,295,\n309,3,42,21,0,296,309,3,44,22,0,297,309,3,48,24,0,298,309,3,108,54,0,299,\n309,3,46,23,0,300,309,3,52,26,0,301,303,3,70,35,0,302,304,5,73,0,0,303,302,\n1,0,0,0,303,304,1,0,0,0,304,309,1,0,0,0,305,309,3,28,14,0,306,309,3,32,16,\n0,307,309,3,90,45,0,308,292,1,0,0,0,308,293,1,0,0,0,308,294,1,0,0,0,308,\n295,1,0,0,0,308,296,1,0,0,0,308,297,1,0,0,0,308,298,1,0,0,0,308,299,1,0,\n0,0,308,300,1,0,0,0,308,301,1,0,0,0,308,305,1,0,0,0,308,306,1,0,0,0,308,\n307,1,0,0,0,309,37,1,0,0,0,310,312,5,45,0,0,311,313,3,114,57,0,312,311,1,\n0,0,0,312,313,1,0,0,0,313,314,1,0,0,0,314,317,3,106,53,0,315,317,5,45,0,\n0,316,310,1,0,0,0,316,315,1,0,0,0,317,39,1,0,0,0,318,320,5,47,0,0,319,321,\n3,114,57,0,320,319,1,0,0,0,320,321,1,0,0,0,321,322,1,0,0,0,322,325,3,106,\n53,0,323,325,5,47,0,0,324,318,1,0,0,0,324,323,1,0,0,0,325,41,1,0,0,0,326,\n328,5,48,0,0,327,329,3,114,57,0,328,327,1,0,0,0,328,329,1,0,0,0,329,330,\n1,0,0,0,330,333,3,106,53,0,331,333,5,48,0,0,332,326,1,0,0,0,332,331,1,0,\n0,0,333,43,1,0,0,0,334,340,5,49,0,0,335,337,5,33,0,0,336,338,3,112,56,0,\n337,336,1,0,0,0,337,338,1,0,0,0,338,339,1,0,0,0,339,341,5,34,0,0,340,335,\n1,0,0,0,340,341,1,0,0,0,341,342,1,0,0,0,342,346,3,106,53,0,343,346,3,106,\n53,0,344,346,5,49,0,0,345,334,1,0,0,0,345,343,1,0,0,0,345,344,1,0,0,0,346,\n45,1,0,0,0,347,350,3,50,25,0,348,351,5,30,0,0,349,351,3,106,53,0,350,348,\n1,0,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,47,1,0,0,0,352,353,5,50,0,0,\n353,354,5,33,0,0,354,364,3,20,10,0,355,359,5,31,0,0,356,358,3,20,10,0,357,\n356,1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,359,360,1,0,0,0,360,363,1,0,\n0,0,361,359,1,0,0,0,362,355,1,0,0,0,363,366,1,0,0,0,364,362,1,0,0,0,364,\n365,1,0,0,0,365,367,1,0,0,0,366,364,1,0,0,0,367,369,5,34,0,0,368,370,5,30,\n0,0,369,368,1,0,0,0,369,370,1,0,0,0,370,49,1,0,0,0,371,373,3,68,34,0,372,\n371,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,374,375,5,44,0,0,375,381,3,74,\n37,0,376,378,5,33,0,0,377,379,3,82,41,0,378,377,1,0,0,0,378,379,1,0,0,0,\n379,380,1,0,0,0,380,382,5,34,0,0,381,376,1,0,0,0,381,382,1,0,0,0,382,388,\n1,0,0,0,383,385,3,68,34,0,384,383,1,0,0,0,384,385,1,0,0,0,385,386,1,0,0,\n0,386,388,5,44,0,0,387,372,1,0,0,0,387,384,1,0,0,0,388,51,1,0,0,0,389,392,\n3,54,27,0,390,393,5,30,0,0,391,393,3,106,53,0,392,390,1,0,0,0,392,391,1,\n0,0,0,392,393,1,0,0,0,393,53,1,0,0,0,394,400,3,68,34,0,395,397,3,56,28,0,\n396,398,3,58,29,0,397,396,1,0,0,0,397,398,1,0,0,0,398,401,1,0,0,0,399,401,\n3,58,29,0,400,395,1,0,0,0,400,399,1,0,0,0,400,401,1,0,0,0,401,408,1,0,0,\n0,402,404,3,56,28,0,403,405,3,58,29,0,404,403,1,0,0,0,404,405,1,0,0,0,405,\n408,1,0,0,0,406,408,3,58,29,0,407,394,1,0,0,0,407,402,1,0,0,0,407,406,1,\n0,0,0,408,55,1,0,0,0,409,410,3,60,30,0,410,411,5,11,0,0,411,413,1,0,0,0,\n412,409,1,0,0,0,412,413,1,0,0,0,413,414,1,0,0,0,414,415,3,62,31,0,415,416,\n5,59,0,0,416,57,1,0,0,0,417,422,3,64,32,0,418,419,5,59,0,0,419,421,3,64,\n32,0,420,418,1,0,0,0,421,424,1,0,0,0,422,420,1,0,0,0,422,423,1,0,0,0,423,\n59,1,0,0,0,424,422,1,0,0,0,425,427,3,24,12,0,426,425,1,0,0,0,426,427,1,0,\n0,0,427,428,1,0,0,0,428,429,3,20,10,0,429,61,1,0,0,0,430,432,3,24,12,0,431,\n430,1,0,0,0,431,432,1,0,0,0,432,433,1,0,0,0,433,434,3,20,10,0,434,63,1,0,\n0,0,435,437,3,80,40,0,436,438,3,66,33,0,437,436,1,0,0,0,437,438,1,0,0,0,\n438,65,1,0,0,0,439,441,5,33,0,0,440,442,3,82,41,0,441,440,1,0,0,0,441,442,\n1,0,0,0,442,443,1,0,0,0,443,444,5,34,0,0,444,67,1,0,0,0,445,447,3,76,38,\n0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,449,3,78,39,0,449,\n450,5,32,0,0,450,69,1,0,0,0,451,452,3,60,30,0,452,453,5,11,0,0,453,455,1,\n0,0,0,454,451,1,0,0,0,454,455,1,0,0,0,455,456,1,0,0,0,456,457,3,62,31,0,\n457,459,5,7,0,0,458,460,3,72,36,0,459,458,1,0,0,0,459,460,1,0,0,0,460,467,\n1,0,0,0,461,462,3,60,30,0,462,464,7,3,0,0,463,465,3,62,31,0,464,463,1,0,\n0,0,464,465,1,0,0,0,465,467,1,0,0,0,466,454,1,0,0,0,466,461,1,0,0,0,467,\n71,1,0,0,0,468,469,5,72,0,0,469,73,1,0,0,0,470,471,3,20,10,0,471,75,1,0,\n0,0,472,473,3,20,10,0,473,77,1,0,0,0,474,487,3,112,56,0,475,480,7,4,0,0,\n476,477,5,31,0,0,477,479,7,4,0,0,478,476,1,0,0,0,479,482,1,0,0,0,480,478,\n1,0,0,0,480,481,1,0,0,0,481,487,1,0,0,0,482,480,1,0,0,0,483,487,5,66,0,0,\n484,487,5,67,0,0,485,487,5,44,0,0,486,474,1,0,0,0,486,475,1,0,0,0,486,483,\n1,0,0,0,486,484,1,0,0,0,486,485,1,0,0,0,487,79,1,0,0,0,488,490,3,24,12,0,\n489,488,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492,3,20,10,0,492,81,\n1,0,0,0,493,498,3,84,42,0,494,495,5,31,0,0,495,497,3,84,42,0,496,494,1,0,\n0,0,497,500,1,0,0,0,498,496,1,0,0,0,498,499,1,0,0,0,499,502,1,0,0,0,500,\n498,1,0,0,0,501,503,5,31,0,0,502,501,1,0,0,0,502,503,1,0,0,0,503,83,1,0,\n0,0,504,508,3,86,43,0,505,508,3,88,44,0,506,508,3,110,55,0,507,504,1,0,0,\n0,507,505,1,0,0,0,507,506,1,0,0,0,508,85,1,0,0,0,509,510,7,4,0,0,510,512,\n5,32,0,0,511,513,3,110,55,0,512,511,1,0,0,0,512,513,1,0,0,0,513,87,1,0,0,\n0,514,515,3,76,38,0,515,516,7,4,0,0,516,89,1,0,0,0,517,521,3,92,46,0,518,\n520,3,94,47,0,519,518,1,0,0,0,520,523,1,0,0,0,521,519,1,0,0,0,521,522,1,\n0,0,0,522,525,1,0,0,0,523,521,1,0,0,0,524,526,3,96,48,0,525,524,1,0,0,0,\n525,526,1,0,0,0,526,91,1,0,0,0,527,528,5,52,0,0,528,529,3,106,53,0,529,93,\n1,0,0,0,530,532,5,53,0,0,531,533,3,66,33,0,532,531,1,0,0,0,532,533,1,0,0,\n0,533,534,1,0,0,0,534,535,3,106,53,0,535,95,1,0,0,0,536,537,5,54,0,0,537,\n538,3,106,53,0,538,97,1,0,0,0,539,543,3,100,50,0,540,542,3,102,51,0,541,\n540,1,0,0,0,542,545,1,0,0,0,543,541,1,0,0,0,543,544,1,0,0,0,544,547,1,0,\n0,0,545,543,1,0,0,0,546,548,3,104,52,0,547,546,1,0,0,0,547,548,1,0,0,0,548,\n99,1,0,0,0,549,550,5,40,0,0,550,551,3,114,57,0,551,552,3,106,53,0,552,101,\n1,0,0,0,553,554,5,41,0,0,554,555,5,40,0,0,555,556,3,114,57,0,556,557,3,106,\n53,0,557,103,1,0,0,0,558,559,5,41,0,0,559,560,3,106,53,0,560,105,1,0,0,0,\n561,563,5,35,0,0,562,564,3,26,13,0,563,562,1,0,0,0,563,564,1,0,0,0,564,565,\n1,0,0,0,565,566,5,36,0,0,566,107,1,0,0,0,567,569,5,42,0,0,568,570,3,114,\n57,0,569,568,1,0,0,0,569,570,1,0,0,0,570,572,1,0,0,0,571,573,3,106,53,0,\n572,571,1,0,0,0,572,573,1,0,0,0,573,109,1,0,0,0,574,575,6,55,-1,0,575,595,\n3,112,56,0,576,577,5,24,0,0,577,595,3,110,55,13,578,579,5,29,0,0,579,595,\n3,110,55,12,580,581,3,62,31,0,581,582,5,59,0,0,582,584,1,0,0,0,583,580,1,\n0,0,0,583,584,1,0,0,0,584,585,1,0,0,0,585,595,3,58,29,0,586,595,3,46,23,\n0,587,588,5,33,0,0,588,589,3,110,55,0,589,590,5,34,0,0,590,595,1,0,0,0,591,\n592,3,68,34,0,592,593,3,110,55,1,593,595,1,0,0,0,594,574,1,0,0,0,594,576,\n1,0,0,0,594,578,1,0,0,0,594,583,1,0,0,0,594,586,1,0,0,0,594,587,1,0,0,0,\n594,591,1,0,0,0,595,619,1,0,0,0,596,597,10,11,0,0,597,598,7,5,0,0,598,618,\n3,110,55,12,599,600,10,10,0,0,600,601,7,6,0,0,601,618,3,110,55,11,602,603,\n10,9,0,0,603,604,7,7,0,0,604,618,3,110,55,10,605,606,10,8,0,0,606,607,7,\n8,0,0,607,618,3,110,55,9,608,609,10,7,0,0,609,610,5,16,0,0,610,618,3,110,\n55,8,611,612,10,6,0,0,612,613,5,15,0,0,613,618,3,110,55,7,614,615,10,5,0,\n0,615,616,5,23,0,0,616,618,3,110,55,6,617,596,1,0,0,0,617,599,1,0,0,0,617,\n602,1,0,0,0,617,605,1,0,0,0,617,608,1,0,0,0,617,611,1,0,0,0,617,614,1,0,\n0,0,618,621,1,0,0,0,619,617,1,0,0,0,619,620,1,0,0,0,620,111,1,0,0,0,621,\n619,1,0,0,0,622,631,7,9,0,0,623,631,5,64,0,0,624,631,5,63,0,0,625,631,7,\n10,0,0,626,631,5,60,0,0,627,631,5,65,0,0,628,631,7,11,0,0,629,631,5,39,0,\n0,630,622,1,0,0,0,630,623,1,0,0,0,630,624,1,0,0,0,630,625,1,0,0,0,630,626,\n1,0,0,0,630,627,1,0,0,0,630,628,1,0,0,0,630,629,1,0,0,0,631,113,1,0,0,0,\n632,634,5,33,0,0,633,635,3,116,58,0,634,633,1,0,0,0,634,635,1,0,0,0,635,\n637,1,0,0,0,636,638,5,34,0,0,637,636,1,0,0,0,637,638,1,0,0,0,638,115,1,0,\n0,0,639,644,3,112,56,0,640,644,3,110,55,0,641,644,3,118,59,0,642,644,3,120,\n60,0,643,639,1,0,0,0,643,640,1,0,0,0,643,641,1,0,0,0,643,642,1,0,0,0,644,\n117,1,0,0,0,645,646,7,4,0,0,646,647,5,55,0,0,647,648,7,4,0,0,648,119,1,0,\n0,0,649,651,7,12,0,0,650,649,1,0,0,0,651,652,1,0,0,0,652,650,1,0,0,0,652,\n653,1,0,0,0,653,121,1,0,0,0,100,123,127,133,136,141,145,148,152,154,158,\n160,164,168,174,178,180,185,188,191,196,199,202,206,209,212,216,225,229,\n231,236,249,254,258,261,266,270,272,279,284,286,303,308,312,316,320,324,\n328,332,337,340,345,350,359,364,369,372,378,381,384,387,392,397,400,404,\n407,412,422,426,431,437,441,446,454,459,464,466,480,486,489,498,502,507,\n512,521,525,532,543,547,563,569,572,583,594,617,619,630,634,637,643,652];\n\n\nconst atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nconst decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );\n\nconst sharedContextCache = new antlr4.PredictionContextCache();\n\nexport default class sequenceParser extends antlr4.Parser {\n\n    static grammarFileName = \"java-escape\";\n    static literalNames = [ null, null, \"'const'\", \"'readonly'\", \"'static'\", \n                            \"'await'\", null, \"':'\", \"'<<'\", \"'>>'\", \"'-->'\", \n                            \"'->'\", null, \"'['\", \"']'\", \"'||'\", \"'&&'\", \n                            \"'=='\", \"'!='\", \"'>'\", \"'<'\", \"'>='\", \"'<='\", \n                            \"'+'\", \"'-'\", \"'*'\", \"'/'\", \"'%'\", \"'^'\", \"'!'\", \n                            \"';'\", \"','\", \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \n                            \"'true'\", \"'false'\", null, \"'if'\", \"'else'\", \n                            null, \"'return'\", \"'new'\", \"'par'\", \"'group'\", \n                            \"'opt'\", \"'critical'\", null, \"'ref'\", \"'as'\", \n                            \"'try'\", \"'catch'\", \"'finally'\", \"'in'\", null, \n                            null, null, \"'.'\" ];\n    static symbolicNames = [ null, \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \n                             \"AWAIT\", \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \n                             \"RETURN_ARROW\", \"ARROW\", \"COLOR\", \"LBRACKET\", \n                             \"RBRACKET\", \"OR\", \"AND\", \"EQ\", \"NEQ\", \"GT\", \n                             \"LT\", \"GTEQ\", \"LTEQ\", \"PLUS\", \"MINUS\", \"MULT\", \n                             \"DIV\", \"MOD\", \"POW\", \"NOT\", \"SCOL\", \"COMMA\", \n                             \"ASSIGN\", \"OPAR\", \"CPAR\", \"OBRACE\", \"CBRACE\", \n                             \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \"ELSE\", \"WHILE\", \n                             \"RETURN\", \"NEW\", \"PAR\", \"GROUP\", \"OPT\", \"CRITICAL\", \n                             \"SECTION\", \"REF\", \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \n                             \"IN\", \"STARTER_LXR\", \"ANNOTATION_RET\", \"ANNOTATION\", \n                             \"DOT\", \"ID\", \"INT\", \"FLOAT\", \"MONEY\", \"NUMBER_UNIT\", \n                             \"DIGIT_LEADING_NAME\", \"CSTRING\", \"USTRING\", \n                             \"CR\", \"COMMENT\", \"OTHER\", \"DIVIDER\", \"EVENT_PAYLOAD_LXR\", \n                             \"EVENT_END\", \"TITLE_CONTENT\", \"TITLE_END\", \n                             \"EMOJI_SHORTCODE\" ];\n    static ruleNames = [ \"prog\", \"title\", \"head\", \"group\", \"starterExp\", \n                         \"starter\", \"participant\", \"stereotype\", \"label\", \n                         \"participantType\", \"name\", \"width\", \"emoji\", \"block\", \n                         \"ret\", \"returnAsyncMessage\", \"divider\", \"dividerNote\", \n                         \"stat\", \"par\", \"opt\", \"critical\", \"section\", \"creation\", \n                         \"ref\", \"creationBody\", \"message\", \"messageBody\", \n                         \"fromTo\", \"func\", \"from\", \"to\", \"signature\", \"invocation\", \n                         \"assignment\", \"asyncMessage\", \"content\", \"construct\", \n                         \"type\", \"assignee\", \"methodName\", \"parameters\", \n                         \"parameter\", \"namedParameter\", \"declaration\", \"tcf\", \n                         \"tryBlock\", \"catchBlock\", \"finallyBlock\", \"alt\", \n                         \"ifBlock\", \"elseIfBlock\", \"elseBlock\", \"braceBlock\", \n                         \"loop\", \"expr\", \"atom\", \"parExpr\", \"condition\", \n                         \"inExpr\", \"textExpr\" ];\n\n    constructor(input) {\n        super(input);\n        this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);\n        this.ruleNames = sequenceParser.ruleNames;\n        this.literalNames = sequenceParser.literalNames;\n        this.symbolicNames = sequenceParser.symbolicNames;\n    }\n\n    get atn() {\n        return atn;\n    }\n\n    sempred(localctx, ruleIndex, predIndex) {\n    \tswitch(ruleIndex) {\n    \tcase 55:\n    \t    \t\treturn this.expr_sempred(localctx, predIndex);\n        default:\n            throw \"No predicate with index:\" + ruleIndex;\n       }\n    }\n\n    expr_sempred(localctx, predIndex) {\n    \tswitch(predIndex) {\n    \t\tcase 0:\n    \t\t\treturn this.precpred(this._ctx, 11);\n    \t\tcase 1:\n    \t\t\treturn this.precpred(this._ctx, 10);\n    \t\tcase 2:\n    \t\t\treturn this.precpred(this._ctx, 9);\n    \t\tcase 3:\n    \t\t\treturn this.precpred(this._ctx, 8);\n    \t\tcase 4:\n    \t\t\treturn this.precpred(this._ctx, 7);\n    \t\tcase 5:\n    \t\t\treturn this.precpred(this._ctx, 6);\n    \t\tcase 6:\n    \t\t\treturn this.precpred(this._ctx, 5);\n    \t\tdefault:\n    \t\t\tthrow \"No predicate with index:\" + predIndex;\n    \t}\n    };\n\n\n\n\n\tprog() {\n\t    let localctx = new ProgContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 0, sequenceParser.RULE_prog);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 141;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,4,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 123;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===6) {\n\t                this.state = 122;\n\t                this.title();\n\t            }\n\n\t            this.state = 125;\n\t            this.match(sequenceParser.EOF);\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 127;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===6) {\n\t                this.state = 126;\n\t                this.title();\n\t            }\n\n\t            this.state = 129;\n\t            this.head();\n\t            this.state = 130;\n\t            this.match(sequenceParser.EOF);\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 133;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===6) {\n\t                this.state = 132;\n\t                this.title();\n\t            }\n\n\t            this.state = 136;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,3,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 135;\n\t                this.head();\n\n\t            }\n\t            this.state = 138;\n\t            this.block();\n\t            this.state = 139;\n\t            this.match(sequenceParser.EOF);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\ttitle() {\n\t    let localctx = new TitleContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 2, sequenceParser.RULE_title);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 143;\n\t        this.match(sequenceParser.TITLE);\n\t        this.state = 145;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===74) {\n\t            this.state = 144;\n\t            this.match(sequenceParser.TITLE_CONTENT);\n\t        }\n\n\t        this.state = 148;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===75) {\n\t            this.state = 147;\n\t            this.match(sequenceParser.TITLE_END);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\thead() {\n\t    let localctx = new HeadContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 4, sequenceParser.RULE_head);\n\t    try {\n\t        this.state = 164;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 152; \n\t            this._errHandler.sync(this);\n\t            var _alt = 1;\n\t            do {\n\t            \tswitch (_alt) {\n\t            \tcase 1:\n\t            \t\tthis.state = 152;\n\t            \t\tthis._errHandler.sync(this);\n\t            \t\tswitch(this._input.LA(1)) {\n\t            \t\tcase 46:\n\t            \t\t    this.state = 150;\n\t            \t\t    this.group();\n\t            \t\t    break;\n\t            \t\tcase 8:\n\t            \t\tcase 13:\n\t            \t\tcase 20:\n\t            \t\tcase 58:\n\t            \t\tcase 60:\n\t            \t\tcase 65:\n\t            \t\tcase 66:\n\t            \t\tcase 67:\n\t            \t\tcase 76:\n\t            \t\t    this.state = 151;\n\t            \t\t    this.participant();\n\t            \t\t    break;\n\t            \t\tdefault:\n\t            \t\t    throw new antlr4.error.NoViableAltException(this);\n\t            \t\t}\n\t            \t\tbreak;\n\t            \tdefault:\n\t            \t\tthrow new antlr4.error.NoViableAltException(this);\n\t            \t}\n\t            \tthis.state = 154; \n\t            \tthis._errHandler.sync(this);\n\t            \t_alt = this._interp.adaptivePredict(this._input,8, this._ctx);\n\t            } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 160;\n\t            this._errHandler.sync(this);\n\t            var _alt = this._interp.adaptivePredict(this._input,10,this._ctx)\n\t            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t                if(_alt===1) {\n\t                    this.state = 158;\n\t                    this._errHandler.sync(this);\n\t                    switch(this._input.LA(1)) {\n\t                    case 46:\n\t                        this.state = 156;\n\t                        this.group();\n\t                        break;\n\t                    case 8:\n\t                    case 13:\n\t                    case 20:\n\t                    case 58:\n\t                    case 60:\n\t                    case 65:\n\t                    case 66:\n\t                    case 67:\n\t                    case 76:\n\t                        this.state = 157;\n\t                        this.participant();\n\t                        break;\n\t                    default:\n\t                        throw new antlr4.error.NoViableAltException(this);\n\t                    } \n\t                }\n\t                this.state = 162;\n\t                this._errHandler.sync(this);\n\t                _alt = this._interp.adaptivePredict(this._input,10,this._ctx);\n\t            }\n\n\t            this.state = 163;\n\t            this.starterExp();\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tgroup() {\n\t    let localctx = new GroupContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 6, sequenceParser.RULE_group);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 166;\n\t        this.match(sequenceParser.GROUP);\n\t        this.state = 168;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,12,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 167;\n\t            this.name();\n\n\t        }\n\t        this.state = 180;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 170;\n\t            this.match(sequenceParser.OBRACE);\n\t            this.state = 174;\n\t            this._errHandler.sync(this);\n\t            var _alt = this._interp.adaptivePredict(this._input,13,this._ctx)\n\t            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t                if(_alt===1) {\n\t                    this.state = 171;\n\t                    this.participant(); \n\t                }\n\t                this.state = 176;\n\t                this._errHandler.sync(this);\n\t                _alt = this._interp.adaptivePredict(this._input,13,this._ctx);\n\t            }\n\n\t            this.state = 178;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===36) {\n\t                this.state = 177;\n\t                this.match(sequenceParser.CBRACE);\n\t            }\n\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tstarterExp() {\n\t    let localctx = new StarterExpContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 8, sequenceParser.RULE_starterExp);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 191;\n\t        this._errHandler.sync(this);\n\t        switch(this._input.LA(1)) {\n\t        case 56:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 182;\n\t            this.match(sequenceParser.STARTER_LXR);\n\t            this.state = 188;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===33) {\n\t                this.state = 183;\n\t                this.match(sequenceParser.OPAR);\n\t                this.state = 185;\n\t                this._errHandler.sync(this);\n\t                _la = this._input.LA(1);\n\t                if(((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 225) !== 0)) {\n\t                    this.state = 184;\n\t                    this.starter();\n\t                }\n\n\t                this.state = 187;\n\t                this.match(sequenceParser.CPAR);\n\t            }\n\n\t            break;\n\t        case 58:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 190;\n\t            this.match(sequenceParser.ANNOTATION);\n\t            break;\n\t        default:\n\t            throw new antlr4.error.NoViableAltException(this);\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tstarter() {\n\t    let localctx = new StarterContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 10, sequenceParser.RULE_starter);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 193;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tparticipant() {\n\t    let localctx = new ParticipantContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 12, sequenceParser.RULE_participant);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 216;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,25,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 196;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===58) {\n\t                this.state = 195;\n\t                this.participantType();\n\t            }\n\n\t            this.state = 199;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===8 || _la===20) {\n\t                this.state = 198;\n\t                this.stereotype();\n\t            }\n\n\t            this.state = 202;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===13 || _la===76) {\n\t                this.state = 201;\n\t                this.emoji();\n\t            }\n\n\t            this.state = 204;\n\t            this.name();\n\t            this.state = 206;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,22,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 205;\n\t                this.width();\n\n\t            }\n\t            this.state = 209;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===51) {\n\t                this.state = 208;\n\t                this.label();\n\t            }\n\n\t            this.state = 212;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===12) {\n\t                this.state = 211;\n\t                this.match(sequenceParser.COLOR);\n\t            }\n\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 214;\n\t            this.stereotype();\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 215;\n\t            this.participantType();\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tstereotype() {\n\t    let localctx = new StereotypeContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 14, sequenceParser.RULE_stereotype);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 231;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 218;\n\t            this.match(sequenceParser.SOPEN);\n\t            this.state = 219;\n\t            this.name();\n\t            this.state = 220;\n\t            this.match(sequenceParser.SCLOSE);\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 222;\n\t            this.match(sequenceParser.SOPEN);\n\t            this.state = 223;\n\t            this.name();\n\t            this.state = 225;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===19) {\n\t                this.state = 224;\n\t                this.match(sequenceParser.GT);\n\t            }\n\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 227;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===8 || _la===20)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            this.state = 229;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===9 || _la===19) {\n\t                this.state = 228;\n\t                _la = this._input.LA(1);\n\t                if(!(_la===9 || _la===19)) {\n\t                this._errHandler.recoverInline(this);\n\t                }\n\t                else {\n\t                \tthis._errHandler.reportMatch(this);\n\t                    this.consume();\n\t                }\n\t            }\n\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tlabel() {\n\t    let localctx = new LabelContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 16, sequenceParser.RULE_label);\n\t    try {\n\t        this.state = 236;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,29,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 233;\n\t            this.match(sequenceParser.AS);\n\t            this.state = 234;\n\t            this.name();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 235;\n\t            this.match(sequenceParser.AS);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tparticipantType() {\n\t    let localctx = new ParticipantTypeContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 18, sequenceParser.RULE_participantType);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 238;\n\t        this.match(sequenceParser.ANNOTATION);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tname() {\n\t    let localctx = new NameContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 20, sequenceParser.RULE_name);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 240;\n\t        _la = this._input.LA(1);\n\t        if(!(((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 225) !== 0))) {\n\t        this._errHandler.recoverInline(this);\n\t        }\n\t        else {\n\t        \tthis._errHandler.reportMatch(this);\n\t            this.consume();\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\twidth() {\n\t    let localctx = new WidthContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 22, sequenceParser.RULE_width);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 242;\n\t        this.match(sequenceParser.INT);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\temoji() {\n\t    let localctx = new EmojiContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 24, sequenceParser.RULE_emoji);\n\t    try {\n\t        this.state = 249;\n\t        this._errHandler.sync(this);\n\t        switch(this._input.LA(1)) {\n\t        case 13:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 244;\n\t            this.match(sequenceParser.LBRACKET);\n\t            this.state = 245;\n\t            this.name();\n\t            this.state = 246;\n\t            this.match(sequenceParser.RBRACKET);\n\t            break;\n\t        case 76:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 248;\n\t            this.match(sequenceParser.EMOJI_SHORTCODE);\n\t            break;\n\t        default:\n\t            throw new antlr4.error.NoViableAltException(this);\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tblock() {\n\t    let localctx = new BlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 26, sequenceParser.RULE_block);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 252; \n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        do {\n\t            this.state = 251;\n\t            this.stat();\n\t            this.state = 254; \n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t        } while(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 4013948929) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 2222952637) !== 0));\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tret() {\n\t    let localctx = new RetContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 28, sequenceParser.RULE_ret);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 272;\n\t        this._errHandler.sync(this);\n\t        switch(this._input.LA(1)) {\n\t        case 43:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 256;\n\t            this.match(sequenceParser.RETURN);\n\t            this.state = 258;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,32,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 257;\n\t                this.expr(0);\n\n\t            }\n\t            this.state = 261;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===30) {\n\t                this.state = 260;\n\t                this.match(sequenceParser.SCOL);\n\t            }\n\n\t            break;\n\t        case 57:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 263;\n\t            this.match(sequenceParser.ANNOTATION_RET);\n\t            this.state = 264;\n\t            this.asyncMessage();\n\t            this.state = 266;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===73) {\n\t                this.state = 265;\n\t                this.match(sequenceParser.EVENT_END);\n\t            }\n\n\t            break;\n\t        case 13:\n\t        case 60:\n\t        case 65:\n\t        case 66:\n\t        case 67:\n\t        case 76:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 268;\n\t            this.returnAsyncMessage();\n\t            this.state = 270;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===73) {\n\t                this.state = 269;\n\t                this.match(sequenceParser.EVENT_END);\n\t            }\n\n\t            break;\n\t        default:\n\t            throw new antlr4.error.NoViableAltException(this);\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\treturnAsyncMessage() {\n\t    let localctx = new ReturnAsyncMessageContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 30, sequenceParser.RULE_returnAsyncMessage);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 286;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,39,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 274;\n\t            this.from();\n\t            this.state = 275;\n\t            this.match(sequenceParser.RETURN_ARROW);\n\t            this.state = 276;\n\t            this.to();\n\t            this.state = 277;\n\t            this.match(sequenceParser.COL);\n\t            this.state = 279;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===72) {\n\t                this.state = 278;\n\t                this.content();\n\t            }\n\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 281;\n\t            this.from();\n\t            this.state = 282;\n\t            this.match(sequenceParser.RETURN_ARROW);\n\t            this.state = 284;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,38,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 283;\n\t                this.to();\n\n\t            }\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tdivider() {\n\t    let localctx = new DividerContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 32, sequenceParser.RULE_divider);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 288;\n\t        this.dividerNote();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tdividerNote() {\n\t    let localctx = new DividerNoteContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 34, sequenceParser.RULE_dividerNote);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 290;\n\t        this.match(sequenceParser.DIVIDER);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tstat() {\n\t    let localctx = new StatContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 36, sequenceParser.RULE_stat);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 308;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,41,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 292;\n\t            this.alt();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 293;\n\t            this.par();\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 294;\n\t            this.opt();\n\t            break;\n\n\t        case 4:\n\t            this.enterOuterAlt(localctx, 4);\n\t            this.state = 295;\n\t            this.critical();\n\t            break;\n\n\t        case 5:\n\t            this.enterOuterAlt(localctx, 5);\n\t            this.state = 296;\n\t            this.section();\n\t            break;\n\n\t        case 6:\n\t            this.enterOuterAlt(localctx, 6);\n\t            this.state = 297;\n\t            this.ref();\n\t            break;\n\n\t        case 7:\n\t            this.enterOuterAlt(localctx, 7);\n\t            this.state = 298;\n\t            this.loop();\n\t            break;\n\n\t        case 8:\n\t            this.enterOuterAlt(localctx, 8);\n\t            this.state = 299;\n\t            this.creation();\n\t            break;\n\n\t        case 9:\n\t            this.enterOuterAlt(localctx, 9);\n\t            this.state = 300;\n\t            this.message();\n\t            break;\n\n\t        case 10:\n\t            this.enterOuterAlt(localctx, 10);\n\t            this.state = 301;\n\t            this.asyncMessage();\n\t            this.state = 303;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===73) {\n\t                this.state = 302;\n\t                this.match(sequenceParser.EVENT_END);\n\t            }\n\n\t            break;\n\n\t        case 11:\n\t            this.enterOuterAlt(localctx, 11);\n\t            this.state = 305;\n\t            this.ret();\n\t            break;\n\n\t        case 12:\n\t            this.enterOuterAlt(localctx, 12);\n\t            this.state = 306;\n\t            this.divider();\n\t            break;\n\n\t        case 13:\n\t            this.enterOuterAlt(localctx, 13);\n\t            this.state = 307;\n\t            this.tcf();\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tpar() {\n\t    let localctx = new ParContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 38, sequenceParser.RULE_par);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 316;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 310;\n\t            this.match(sequenceParser.PAR);\n\t            this.state = 312;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===33) {\n\t                this.state = 311;\n\t                this.parExpr();\n\t            }\n\n\t            this.state = 314;\n\t            this.braceBlock();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 315;\n\t            this.match(sequenceParser.PAR);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\topt() {\n\t    let localctx = new OptContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 40, sequenceParser.RULE_opt);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 324;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 318;\n\t            this.match(sequenceParser.OPT);\n\t            this.state = 320;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===33) {\n\t                this.state = 319;\n\t                this.parExpr();\n\t            }\n\n\t            this.state = 322;\n\t            this.braceBlock();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 323;\n\t            this.match(sequenceParser.OPT);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcritical() {\n\t    let localctx = new CriticalContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 42, sequenceParser.RULE_critical);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 332;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,47,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 326;\n\t            this.match(sequenceParser.CRITICAL);\n\t            this.state = 328;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===33) {\n\t                this.state = 327;\n\t                this.parExpr();\n\t            }\n\n\t            this.state = 330;\n\t            this.braceBlock();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 331;\n\t            this.match(sequenceParser.CRITICAL);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tsection() {\n\t    let localctx = new SectionContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 44, sequenceParser.RULE_section);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 345;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,50,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 334;\n\t            this.match(sequenceParser.SECTION);\n\t            this.state = 340;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===33) {\n\t                this.state = 335;\n\t                this.match(sequenceParser.OPAR);\n\t                this.state = 337;\n\t                this._errHandler.sync(this);\n\t                _la = this._input.LA(1);\n\t                if(((((_la - 37)) & ~0x1f) == 0 && ((1 << (_la - 37)) & 2139095047) !== 0)) {\n\t                    this.state = 336;\n\t                    this.atom();\n\t                }\n\n\t                this.state = 339;\n\t                this.match(sequenceParser.CPAR);\n\t            }\n\n\t            this.state = 342;\n\t            this.braceBlock();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 343;\n\t            this.braceBlock();\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 344;\n\t            this.match(sequenceParser.SECTION);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcreation() {\n\t    let localctx = new CreationContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 46, sequenceParser.RULE_creation);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 347;\n\t        this.creationBody();\n\t        this.state = 350;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,51,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 348;\n\t            this.match(sequenceParser.SCOL);\n\n\t        } else if(la_===2) {\n\t            this.state = 349;\n\t            this.braceBlock();\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tref() {\n\t    let localctx = new RefContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 48, sequenceParser.RULE_ref);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 352;\n\t        this.match(sequenceParser.REF);\n\t        this.state = 353;\n\t        this.match(sequenceParser.OPAR);\n\n\t        this.state = 354;\n\t        this.name();\n\t        this.state = 364;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        while(_la===31) {\n\t            this.state = 355;\n\t            this.match(sequenceParser.COMMA);\n\t            this.state = 359;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            while(((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 225) !== 0)) {\n\t                this.state = 356;\n\t                this.name();\n\t                this.state = 361;\n\t                this._errHandler.sync(this);\n\t                _la = this._input.LA(1);\n\t            }\n\t            this.state = 366;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t        }\n\t        this.state = 367;\n\t        this.match(sequenceParser.CPAR);\n\t        this.state = 369;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===30) {\n\t            this.state = 368;\n\t            this.match(sequenceParser.SCOL);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcreationBody() {\n\t    let localctx = new CreationBodyContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 50, sequenceParser.RULE_creationBody);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 387;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,59,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 372;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 371;\n\t                this.assignment();\n\n\t            }\n\t            this.state = 374;\n\t            this.match(sequenceParser.NEW);\n\t            this.state = 375;\n\t            this.construct();\n\t            this.state = 381;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,57,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 376;\n\t                this.match(sequenceParser.OPAR);\n\t                this.state = 378;\n\t                this._errHandler.sync(this);\n\t                _la = this._input.LA(1);\n\t                if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 2266040321) !== 0) || ((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 65791) !== 0)) {\n\t                    this.state = 377;\n\t                    this.parameters();\n\t                }\n\n\t                this.state = 380;\n\t                this.match(sequenceParser.CPAR);\n\n\t            }\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 384;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,58,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 383;\n\t                this.assignment();\n\n\t            }\n\t            this.state = 386;\n\t            this.match(sequenceParser.NEW);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tmessage() {\n\t    let localctx = new MessageContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 52, sequenceParser.RULE_message);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 389;\n\t        this.messageBody();\n\t        this.state = 392;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,60,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 390;\n\t            this.match(sequenceParser.SCOL);\n\n\t        } else if(la_===2) {\n\t            this.state = 391;\n\t            this.braceBlock();\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tmessageBody() {\n\t    let localctx = new MessageBodyContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 54, sequenceParser.RULE_messageBody);\n\t    try {\n\t        this.state = 407;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,64,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 394;\n\t            this.assignment();\n\t            this.state = 400;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,62,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 395;\n\t                this.fromTo();\n\t                this.state = 397;\n\t                this._errHandler.sync(this);\n\t                var la_ = this._interp.adaptivePredict(this._input,61,this._ctx);\n\t                if(la_===1) {\n\t                    this.state = 396;\n\t                    this.func();\n\n\t                }\n\n\t            } else if(la_===2) {\n\t                this.state = 399;\n\t                this.func();\n\n\t            }\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 402;\n\t            this.fromTo();\n\t            this.state = 404;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,63,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 403;\n\t                this.func();\n\n\t            }\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 406;\n\t            this.func();\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tfromTo() {\n\t    let localctx = new FromToContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 56, sequenceParser.RULE_fromTo);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 412;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,65,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 409;\n\t            this.from();\n\t            this.state = 410;\n\t            this.match(sequenceParser.ARROW);\n\n\t        }\n\t        this.state = 414;\n\t        this.to();\n\t        this.state = 415;\n\t        this.match(sequenceParser.DOT);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tfunc() {\n\t    let localctx = new FuncContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 58, sequenceParser.RULE_func);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 417;\n\t        this.signature();\n\t        this.state = 422;\n\t        this._errHandler.sync(this);\n\t        var _alt = this._interp.adaptivePredict(this._input,66,this._ctx)\n\t        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t            if(_alt===1) {\n\t                this.state = 418;\n\t                this.match(sequenceParser.DOT);\n\t                this.state = 419;\n\t                this.signature(); \n\t            }\n\t            this.state = 424;\n\t            this._errHandler.sync(this);\n\t            _alt = this._interp.adaptivePredict(this._input,66,this._ctx);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tfrom() {\n\t    let localctx = new FromContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 60, sequenceParser.RULE_from);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 426;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===13 || _la===76) {\n\t            this.state = 425;\n\t            this.emoji();\n\t        }\n\n\t        this.state = 428;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tto() {\n\t    let localctx = new ToContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 62, sequenceParser.RULE_to);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 431;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===13 || _la===76) {\n\t            this.state = 430;\n\t            this.emoji();\n\t        }\n\n\t        this.state = 433;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tsignature() {\n\t    let localctx = new SignatureContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 64, sequenceParser.RULE_signature);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 435;\n\t        this.methodName();\n\t        this.state = 437;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,69,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 436;\n\t            this.invocation();\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tinvocation() {\n\t    let localctx = new InvocationContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 66, sequenceParser.RULE_invocation);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 439;\n\t        this.match(sequenceParser.OPAR);\n\t        this.state = 441;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 2266040321) !== 0) || ((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 65791) !== 0)) {\n\t            this.state = 440;\n\t            this.parameters();\n\t        }\n\n\t        this.state = 443;\n\t        this.match(sequenceParser.CPAR);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tassignment() {\n\t    let localctx = new AssignmentContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 68, sequenceParser.RULE_assignment);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 446;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,71,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 445;\n\t            this.type();\n\n\t        }\n\t        this.state = 448;\n\t        this.assignee();\n\t        this.state = 449;\n\t        this.match(sequenceParser.ASSIGN);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tasyncMessage() {\n\t    let localctx = new AsyncMessageContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 70, sequenceParser.RULE_asyncMessage);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 466;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,75,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 454;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,72,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 451;\n\t                this.from();\n\t                this.state = 452;\n\t                this.match(sequenceParser.ARROW);\n\n\t            }\n\t            this.state = 456;\n\t            this.to();\n\t            this.state = 457;\n\t            this.match(sequenceParser.COL);\n\t            this.state = 459;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            if(_la===72) {\n\t                this.state = 458;\n\t                this.content();\n\t            }\n\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 461;\n\t            this.from();\n\t            this.state = 462;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===11 || _la===24)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            this.state = 464;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,74,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 463;\n\t                this.to();\n\n\t            }\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcontent() {\n\t    let localctx = new ContentContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 72, sequenceParser.RULE_content);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 468;\n\t        this.match(sequenceParser.EVENT_PAYLOAD_LXR);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tconstruct() {\n\t    let localctx = new ConstructContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 74, sequenceParser.RULE_construct);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 470;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\ttype() {\n\t    let localctx = new TypeContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 76, sequenceParser.RULE_type);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 472;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tassignee() {\n\t    let localctx = new AssigneeContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 78, sequenceParser.RULE_assignee);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 486;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,77,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 474;\n\t            this.atom();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 475;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===60 || _la===65)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            this.state = 480;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t            while(_la===31) {\n\t                this.state = 476;\n\t                this.match(sequenceParser.COMMA);\n\t                this.state = 477;\n\t                _la = this._input.LA(1);\n\t                if(!(_la===60 || _la===65)) {\n\t                this._errHandler.recoverInline(this);\n\t                }\n\t                else {\n\t                \tthis._errHandler.reportMatch(this);\n\t                    this.consume();\n\t                }\n\t                this.state = 482;\n\t                this._errHandler.sync(this);\n\t                _la = this._input.LA(1);\n\t            }\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 483;\n\t            this.match(sequenceParser.CSTRING);\n\t            break;\n\n\t        case 4:\n\t            this.enterOuterAlt(localctx, 4);\n\t            this.state = 484;\n\t            this.match(sequenceParser.USTRING);\n\t            break;\n\n\t        case 5:\n\t            this.enterOuterAlt(localctx, 5);\n\t            this.state = 485;\n\t            this.match(sequenceParser.NEW);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tmethodName() {\n\t    let localctx = new MethodNameContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 80, sequenceParser.RULE_methodName);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 489;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===13 || _la===76) {\n\t            this.state = 488;\n\t            this.emoji();\n\t        }\n\n\t        this.state = 491;\n\t        this.name();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tparameters() {\n\t    let localctx = new ParametersContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 82, sequenceParser.RULE_parameters);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 493;\n\t        this.parameter();\n\t        this.state = 498;\n\t        this._errHandler.sync(this);\n\t        var _alt = this._interp.adaptivePredict(this._input,79,this._ctx)\n\t        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t            if(_alt===1) {\n\t                this.state = 494;\n\t                this.match(sequenceParser.COMMA);\n\t                this.state = 495;\n\t                this.parameter(); \n\t            }\n\t            this.state = 500;\n\t            this._errHandler.sync(this);\n\t            _alt = this._interp.adaptivePredict(this._input,79,this._ctx);\n\t        }\n\n\t        this.state = 502;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===31) {\n\t            this.state = 501;\n\t            this.match(sequenceParser.COMMA);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tparameter() {\n\t    let localctx = new ParameterContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 84, sequenceParser.RULE_parameter);\n\t    try {\n\t        this.state = 507;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,81,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 504;\n\t            this.namedParameter();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 505;\n\t            this.declaration();\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 506;\n\t            this.expr(0);\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tnamedParameter() {\n\t    let localctx = new NamedParameterContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 86, sequenceParser.RULE_namedParameter);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 509;\n\t        _la = this._input.LA(1);\n\t        if(!(_la===60 || _la===65)) {\n\t        this._errHandler.recoverInline(this);\n\t        }\n\t        else {\n\t        \tthis._errHandler.reportMatch(this);\n\t            this.consume();\n\t        }\n\t        this.state = 510;\n\t        this.match(sequenceParser.ASSIGN);\n\t        this.state = 512;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 2266040321) !== 0) || ((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 65791) !== 0)) {\n\t            this.state = 511;\n\t            this.expr(0);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tdeclaration() {\n\t    let localctx = new DeclarationContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 88, sequenceParser.RULE_declaration);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 514;\n\t        this.type();\n\t        this.state = 515;\n\t        _la = this._input.LA(1);\n\t        if(!(_la===60 || _la===65)) {\n\t        this._errHandler.recoverInline(this);\n\t        }\n\t        else {\n\t        \tthis._errHandler.reportMatch(this);\n\t            this.consume();\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\ttcf() {\n\t    let localctx = new TcfContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 90, sequenceParser.RULE_tcf);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 517;\n\t        this.tryBlock();\n\t        this.state = 521;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        while(_la===53) {\n\t            this.state = 518;\n\t            this.catchBlock();\n\t            this.state = 523;\n\t            this._errHandler.sync(this);\n\t            _la = this._input.LA(1);\n\t        }\n\t        this.state = 525;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===54) {\n\t            this.state = 524;\n\t            this.finallyBlock();\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\ttryBlock() {\n\t    let localctx = new TryBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 92, sequenceParser.RULE_tryBlock);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 527;\n\t        this.match(sequenceParser.TRY);\n\t        this.state = 528;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcatchBlock() {\n\t    let localctx = new CatchBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 94, sequenceParser.RULE_catchBlock);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 530;\n\t        this.match(sequenceParser.CATCH);\n\t        this.state = 532;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===33) {\n\t            this.state = 531;\n\t            this.invocation();\n\t        }\n\n\t        this.state = 534;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tfinallyBlock() {\n\t    let localctx = new FinallyBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 96, sequenceParser.RULE_finallyBlock);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 536;\n\t        this.match(sequenceParser.FINALLY);\n\t        this.state = 537;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\talt() {\n\t    let localctx = new AltContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 98, sequenceParser.RULE_alt);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 539;\n\t        this.ifBlock();\n\t        this.state = 543;\n\t        this._errHandler.sync(this);\n\t        var _alt = this._interp.adaptivePredict(this._input,86,this._ctx)\n\t        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t            if(_alt===1) {\n\t                this.state = 540;\n\t                this.elseIfBlock(); \n\t            }\n\t            this.state = 545;\n\t            this._errHandler.sync(this);\n\t            _alt = this._interp.adaptivePredict(this._input,86,this._ctx);\n\t        }\n\n\t        this.state = 547;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===41) {\n\t            this.state = 546;\n\t            this.elseBlock();\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tifBlock() {\n\t    let localctx = new IfBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 100, sequenceParser.RULE_ifBlock);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 549;\n\t        this.match(sequenceParser.IF);\n\t        this.state = 550;\n\t        this.parExpr();\n\t        this.state = 551;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\telseIfBlock() {\n\t    let localctx = new ElseIfBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 102, sequenceParser.RULE_elseIfBlock);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 553;\n\t        this.match(sequenceParser.ELSE);\n\t        this.state = 554;\n\t        this.match(sequenceParser.IF);\n\t        this.state = 555;\n\t        this.parExpr();\n\t        this.state = 556;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\telseBlock() {\n\t    let localctx = new ElseBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 104, sequenceParser.RULE_elseBlock);\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 558;\n\t        this.match(sequenceParser.ELSE);\n\t        this.state = 559;\n\t        this.braceBlock();\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tbraceBlock() {\n\t    let localctx = new BraceBlockContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 106, sequenceParser.RULE_braceBlock);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 561;\n\t        this.match(sequenceParser.OBRACE);\n\t        this.state = 563;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 4013948929) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 2222952637) !== 0)) {\n\t            this.state = 562;\n\t            this.block();\n\t        }\n\n\t        this.state = 565;\n\t        this.match(sequenceParser.CBRACE);\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tloop() {\n\t    let localctx = new LoopContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 108, sequenceParser.RULE_loop);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 567;\n\t        this.match(sequenceParser.WHILE);\n\t        this.state = 569;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===33) {\n\t            this.state = 568;\n\t            this.parExpr();\n\t        }\n\n\t        this.state = 572;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,90,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 571;\n\t            this.braceBlock();\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\texpr(_p) {\n\t\tif(_p===undefined) {\n\t\t    _p = 0;\n\t\t}\n\t    const _parentctx = this._ctx;\n\t    const _parentState = this.state;\n\t    let localctx = new ExprContext(this, this._ctx, _parentState);\n\t    let _prevctx = localctx;\n\t    const _startState = 110;\n\t    this.enterRecursionRule(localctx, 110, sequenceParser.RULE_expr, _p);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 594;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,92,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            localctx = new AtomExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\n\t            this.state = 575;\n\t            this.atom();\n\t            break;\n\n\t        case 2:\n\t            localctx = new UnaryMinusExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 576;\n\t            this.match(sequenceParser.MINUS);\n\t            this.state = 577;\n\t            this.expr(13);\n\t            break;\n\n\t        case 3:\n\t            localctx = new NotExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 578;\n\t            this.match(sequenceParser.NOT);\n\t            this.state = 579;\n\t            this.expr(12);\n\t            break;\n\n\t        case 4:\n\t            localctx = new FuncExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 583;\n\t            this._errHandler.sync(this);\n\t            var la_ = this._interp.adaptivePredict(this._input,91,this._ctx);\n\t            if(la_===1) {\n\t                this.state = 580;\n\t                this.to();\n\t                this.state = 581;\n\t                this.match(sequenceParser.DOT);\n\n\t            }\n\t            this.state = 585;\n\t            this.func();\n\t            break;\n\n\t        case 5:\n\t            localctx = new CreationExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 586;\n\t            this.creation();\n\t            break;\n\n\t        case 6:\n\t            localctx = new ParenthesizedExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 587;\n\t            this.match(sequenceParser.OPAR);\n\t            this.state = 588;\n\t            this.expr(0);\n\t            this.state = 589;\n\t            this.match(sequenceParser.CPAR);\n\t            break;\n\n\t        case 7:\n\t            localctx = new AssignmentExprContext(this, localctx);\n\t            this._ctx = localctx;\n\t            _prevctx = localctx;\n\t            this.state = 591;\n\t            this.assignment();\n\t            this.state = 592;\n\t            this.expr(1);\n\t            break;\n\n\t        }\n\t        this._ctx.stop = this._input.LT(-1);\n\t        this.state = 619;\n\t        this._errHandler.sync(this);\n\t        var _alt = this._interp.adaptivePredict(this._input,94,this._ctx)\n\t        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t            if(_alt===1) {\n\t                if(this._parseListeners!==null) {\n\t                    this.triggerExitRuleEvent();\n\t                }\n\t                _prevctx = localctx;\n\t                this.state = 617;\n\t                this._errHandler.sync(this);\n\t                var la_ = this._interp.adaptivePredict(this._input,93,this._ctx);\n\t                switch(la_) {\n\t                case 1:\n\t                    localctx = new MultiplicationExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 596;\n\t                    if (!( this.precpred(this._ctx, 11))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 11)\");\n\t                    }\n\t                    this.state = 597;\n\t                    localctx.op = this._input.LT(1);\n\t                    _la = this._input.LA(1);\n\t                    if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & 234881024) !== 0))) {\n\t                        localctx.op = this._errHandler.recoverInline(this);\n\t                    }\n\t                    else {\n\t                    \tthis._errHandler.reportMatch(this);\n\t                        this.consume();\n\t                    }\n\t                    this.state = 598;\n\t                    this.expr(12);\n\t                    break;\n\n\t                case 2:\n\t                    localctx = new AdditiveExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 599;\n\t                    if (!( this.precpred(this._ctx, 10))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 10)\");\n\t                    }\n\t                    this.state = 600;\n\t                    localctx.op = this._input.LT(1);\n\t                    _la = this._input.LA(1);\n\t                    if(!(_la===23 || _la===24)) {\n\t                        localctx.op = this._errHandler.recoverInline(this);\n\t                    }\n\t                    else {\n\t                    \tthis._errHandler.reportMatch(this);\n\t                        this.consume();\n\t                    }\n\t                    this.state = 601;\n\t                    this.expr(11);\n\t                    break;\n\n\t                case 3:\n\t                    localctx = new RelationalExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 602;\n\t                    if (!( this.precpred(this._ctx, 9))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 9)\");\n\t                    }\n\t                    this.state = 603;\n\t                    localctx.op = this._input.LT(1);\n\t                    _la = this._input.LA(1);\n\t                    if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & 7864320) !== 0))) {\n\t                        localctx.op = this._errHandler.recoverInline(this);\n\t                    }\n\t                    else {\n\t                    \tthis._errHandler.reportMatch(this);\n\t                        this.consume();\n\t                    }\n\t                    this.state = 604;\n\t                    this.expr(10);\n\t                    break;\n\n\t                case 4:\n\t                    localctx = new EqualityExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 605;\n\t                    if (!( this.precpred(this._ctx, 8))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 8)\");\n\t                    }\n\t                    this.state = 606;\n\t                    localctx.op = this._input.LT(1);\n\t                    _la = this._input.LA(1);\n\t                    if(!(_la===17 || _la===18)) {\n\t                        localctx.op = this._errHandler.recoverInline(this);\n\t                    }\n\t                    else {\n\t                    \tthis._errHandler.reportMatch(this);\n\t                        this.consume();\n\t                    }\n\t                    this.state = 607;\n\t                    this.expr(9);\n\t                    break;\n\n\t                case 5:\n\t                    localctx = new AndExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 608;\n\t                    if (!( this.precpred(this._ctx, 7))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 7)\");\n\t                    }\n\t                    this.state = 609;\n\t                    this.match(sequenceParser.AND);\n\t                    this.state = 610;\n\t                    this.expr(8);\n\t                    break;\n\n\t                case 6:\n\t                    localctx = new OrExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 611;\n\t                    if (!( this.precpred(this._ctx, 6))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 6)\");\n\t                    }\n\t                    this.state = 612;\n\t                    this.match(sequenceParser.OR);\n\t                    this.state = 613;\n\t                    this.expr(7);\n\t                    break;\n\n\t                case 7:\n\t                    localctx = new PlusExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t                    this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t                    this.state = 614;\n\t                    if (!( this.precpred(this._ctx, 5))) {\n\t                        throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 5)\");\n\t                    }\n\t                    this.state = 615;\n\t                    this.match(sequenceParser.PLUS);\n\t                    this.state = 616;\n\t                    this.expr(6);\n\t                    break;\n\n\t                } \n\t            }\n\t            this.state = 621;\n\t            this._errHandler.sync(this);\n\t            _alt = this._interp.adaptivePredict(this._input,94,this._ctx);\n\t        }\n\n\t    } catch( error) {\n\t        if(error instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = error;\n\t\t        this._errHandler.reportError(this, error);\n\t\t        this._errHandler.recover(this, error);\n\t\t    } else {\n\t\t    \tthrow error;\n\t\t    }\n\t    } finally {\n\t        this.unrollRecursionContexts(_parentctx)\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tatom() {\n\t    let localctx = new AtomContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 112, sequenceParser.RULE_atom);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.state = 630;\n\t        this._errHandler.sync(this);\n\t        switch(this._input.LA(1)) {\n\t        case 61:\n\t        case 62:\n\t            localctx = new NumberAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 622;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===61 || _la===62)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            break;\n\t        case 64:\n\t            localctx = new NumberUnitAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 623;\n\t            this.match(sequenceParser.NUMBER_UNIT);\n\t            break;\n\t        case 63:\n\t            localctx = new MoneyAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 624;\n\t            this.match(sequenceParser.MONEY);\n\t            break;\n\t        case 37:\n\t        case 38:\n\t            localctx = new BooleanAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 4);\n\t            this.state = 625;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===37 || _la===38)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            break;\n\t        case 60:\n\t            localctx = new IdAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 5);\n\t            this.state = 626;\n\t            this.match(sequenceParser.ID);\n\t            break;\n\t        case 65:\n\t            localctx = new DigitLeadingNameAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 6);\n\t            this.state = 627;\n\t            this.match(sequenceParser.DIGIT_LEADING_NAME);\n\t            break;\n\t        case 66:\n\t        case 67:\n\t            localctx = new StringAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 7);\n\t            this.state = 628;\n\t            _la = this._input.LA(1);\n\t            if(!(_la===66 || _la===67)) {\n\t            this._errHandler.recoverInline(this);\n\t            }\n\t            else {\n\t            \tthis._errHandler.reportMatch(this);\n\t                this.consume();\n\t            }\n\t            break;\n\t        case 39:\n\t            localctx = new NilAtomContext(this, localctx);\n\t            this.enterOuterAlt(localctx, 8);\n\t            this.state = 629;\n\t            this.match(sequenceParser.NIL);\n\t            break;\n\t        default:\n\t            throw new antlr4.error.NoViableAltException(this);\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tparExpr() {\n\t    let localctx = new ParExprContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 114, sequenceParser.RULE_parExpr);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 632;\n\t        this.match(sequenceParser.OPAR);\n\t        this.state = 634;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,96,this._ctx);\n\t        if(la_===1) {\n\t            this.state = 633;\n\t            this.condition();\n\n\t        }\n\t        this.state = 637;\n\t        this._errHandler.sync(this);\n\t        _la = this._input.LA(1);\n\t        if(_la===34) {\n\t            this.state = 636;\n\t            this.match(sequenceParser.CPAR);\n\t        }\n\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tcondition() {\n\t    let localctx = new ConditionContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 116, sequenceParser.RULE_condition);\n\t    try {\n\t        this.state = 643;\n\t        this._errHandler.sync(this);\n\t        var la_ = this._interp.adaptivePredict(this._input,98,this._ctx);\n\t        switch(la_) {\n\t        case 1:\n\t            this.enterOuterAlt(localctx, 1);\n\t            this.state = 639;\n\t            this.atom();\n\t            break;\n\n\t        case 2:\n\t            this.enterOuterAlt(localctx, 2);\n\t            this.state = 640;\n\t            this.expr(0);\n\t            break;\n\n\t        case 3:\n\t            this.enterOuterAlt(localctx, 3);\n\t            this.state = 641;\n\t            this.inExpr();\n\t            break;\n\n\t        case 4:\n\t            this.enterOuterAlt(localctx, 4);\n\t            this.state = 642;\n\t            this.textExpr();\n\t            break;\n\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\tinExpr() {\n\t    let localctx = new InExprContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 118, sequenceParser.RULE_inExpr);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 645;\n\t        _la = this._input.LA(1);\n\t        if(!(_la===60 || _la===65)) {\n\t        this._errHandler.recoverInline(this);\n\t        }\n\t        else {\n\t        \tthis._errHandler.reportMatch(this);\n\t            this.consume();\n\t        }\n\t        this.state = 646;\n\t        this.match(sequenceParser.IN);\n\t        this.state = 647;\n\t        _la = this._input.LA(1);\n\t        if(!(_la===60 || _la===65)) {\n\t        this._errHandler.recoverInline(this);\n\t        }\n\t        else {\n\t        \tthis._errHandler.reportMatch(this);\n\t            this.consume();\n\t        }\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n\n\ttextExpr() {\n\t    let localctx = new TextExprContext(this, this._ctx, this.state);\n\t    this.enterRule(localctx, 120, sequenceParser.RULE_textExpr);\n\t    var _la = 0; // Token type\n\t    try {\n\t        this.enterOuterAlt(localctx, 1);\n\t        this.state = 650; \n\t        this._errHandler.sync(this);\n\t        var _alt = 1;\n\t        do {\n\t        \tswitch (_alt) {\n\t        \tcase 1:\n\t        \t\tthis.state = 649;\n\t        \t\t_la = this._input.LA(1);\n\t        \t\tif(!(((((_la - 60)) & ~0x1f) == 0 && ((1 << (_la - 60)) & 49) !== 0))) {\n\t        \t\tthis._errHandler.recoverInline(this);\n\t        \t\t}\n\t        \t\telse {\n\t        \t\t\tthis._errHandler.reportMatch(this);\n\t        \t\t    this.consume();\n\t        \t\t}\n\t        \t\tbreak;\n\t        \tdefault:\n\t        \t\tthrow new antlr4.error.NoViableAltException(this);\n\t        \t}\n\t        \tthis.state = 652; \n\t        \tthis._errHandler.sync(this);\n\t        \t_alt = this._interp.adaptivePredict(this._input,99, this._ctx);\n\t        } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );\n\t    } catch (re) {\n\t    \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t        localctx.exception = re;\n\t\t        this._errHandler.reportError(this, re);\n\t\t        this._errHandler.recover(this, re);\n\t\t    } else {\n\t\t    \tthrow re;\n\t\t    }\n\t    } finally {\n\t        this.exitRule();\n\t    }\n\t    return localctx;\n\t}\n\n\n}\n\nsequenceParser.EOF = antlr4.Token.EOF;\nsequenceParser.WS = 1;\nsequenceParser.CONSTANT = 2;\nsequenceParser.READONLY = 3;\nsequenceParser.STATIC = 4;\nsequenceParser.AWAIT = 5;\nsequenceParser.TITLE = 6;\nsequenceParser.COL = 7;\nsequenceParser.SOPEN = 8;\nsequenceParser.SCLOSE = 9;\nsequenceParser.RETURN_ARROW = 10;\nsequenceParser.ARROW = 11;\nsequenceParser.COLOR = 12;\nsequenceParser.LBRACKET = 13;\nsequenceParser.RBRACKET = 14;\nsequenceParser.OR = 15;\nsequenceParser.AND = 16;\nsequenceParser.EQ = 17;\nsequenceParser.NEQ = 18;\nsequenceParser.GT = 19;\nsequenceParser.LT = 20;\nsequenceParser.GTEQ = 21;\nsequenceParser.LTEQ = 22;\nsequenceParser.PLUS = 23;\nsequenceParser.MINUS = 24;\nsequenceParser.MULT = 25;\nsequenceParser.DIV = 26;\nsequenceParser.MOD = 27;\nsequenceParser.POW = 28;\nsequenceParser.NOT = 29;\nsequenceParser.SCOL = 30;\nsequenceParser.COMMA = 31;\nsequenceParser.ASSIGN = 32;\nsequenceParser.OPAR = 33;\nsequenceParser.CPAR = 34;\nsequenceParser.OBRACE = 35;\nsequenceParser.CBRACE = 36;\nsequenceParser.TRUE = 37;\nsequenceParser.FALSE = 38;\nsequenceParser.NIL = 39;\nsequenceParser.IF = 40;\nsequenceParser.ELSE = 41;\nsequenceParser.WHILE = 42;\nsequenceParser.RETURN = 43;\nsequenceParser.NEW = 44;\nsequenceParser.PAR = 45;\nsequenceParser.GROUP = 46;\nsequenceParser.OPT = 47;\nsequenceParser.CRITICAL = 48;\nsequenceParser.SECTION = 49;\nsequenceParser.REF = 50;\nsequenceParser.AS = 51;\nsequenceParser.TRY = 52;\nsequenceParser.CATCH = 53;\nsequenceParser.FINALLY = 54;\nsequenceParser.IN = 55;\nsequenceParser.STARTER_LXR = 56;\nsequenceParser.ANNOTATION_RET = 57;\nsequenceParser.ANNOTATION = 58;\nsequenceParser.DOT = 59;\nsequenceParser.ID = 60;\nsequenceParser.INT = 61;\nsequenceParser.FLOAT = 62;\nsequenceParser.MONEY = 63;\nsequenceParser.NUMBER_UNIT = 64;\nsequenceParser.DIGIT_LEADING_NAME = 65;\nsequenceParser.CSTRING = 66;\nsequenceParser.USTRING = 67;\nsequenceParser.CR = 68;\nsequenceParser.COMMENT = 69;\nsequenceParser.OTHER = 70;\nsequenceParser.DIVIDER = 71;\nsequenceParser.EVENT_PAYLOAD_LXR = 72;\nsequenceParser.EVENT_END = 73;\nsequenceParser.TITLE_CONTENT = 74;\nsequenceParser.TITLE_END = 75;\nsequenceParser.EMOJI_SHORTCODE = 76;\n\nsequenceParser.RULE_prog = 0;\nsequenceParser.RULE_title = 1;\nsequenceParser.RULE_head = 2;\nsequenceParser.RULE_group = 3;\nsequenceParser.RULE_starterExp = 4;\nsequenceParser.RULE_starter = 5;\nsequenceParser.RULE_participant = 6;\nsequenceParser.RULE_stereotype = 7;\nsequenceParser.RULE_label = 8;\nsequenceParser.RULE_participantType = 9;\nsequenceParser.RULE_name = 10;\nsequenceParser.RULE_width = 11;\nsequenceParser.RULE_emoji = 12;\nsequenceParser.RULE_block = 13;\nsequenceParser.RULE_ret = 14;\nsequenceParser.RULE_returnAsyncMessage = 15;\nsequenceParser.RULE_divider = 16;\nsequenceParser.RULE_dividerNote = 17;\nsequenceParser.RULE_stat = 18;\nsequenceParser.RULE_par = 19;\nsequenceParser.RULE_opt = 20;\nsequenceParser.RULE_critical = 21;\nsequenceParser.RULE_section = 22;\nsequenceParser.RULE_creation = 23;\nsequenceParser.RULE_ref = 24;\nsequenceParser.RULE_creationBody = 25;\nsequenceParser.RULE_message = 26;\nsequenceParser.RULE_messageBody = 27;\nsequenceParser.RULE_fromTo = 28;\nsequenceParser.RULE_func = 29;\nsequenceParser.RULE_from = 30;\nsequenceParser.RULE_to = 31;\nsequenceParser.RULE_signature = 32;\nsequenceParser.RULE_invocation = 33;\nsequenceParser.RULE_assignment = 34;\nsequenceParser.RULE_asyncMessage = 35;\nsequenceParser.RULE_content = 36;\nsequenceParser.RULE_construct = 37;\nsequenceParser.RULE_type = 38;\nsequenceParser.RULE_assignee = 39;\nsequenceParser.RULE_methodName = 40;\nsequenceParser.RULE_parameters = 41;\nsequenceParser.RULE_parameter = 42;\nsequenceParser.RULE_namedParameter = 43;\nsequenceParser.RULE_declaration = 44;\nsequenceParser.RULE_tcf = 45;\nsequenceParser.RULE_tryBlock = 46;\nsequenceParser.RULE_catchBlock = 47;\nsequenceParser.RULE_finallyBlock = 48;\nsequenceParser.RULE_alt = 49;\nsequenceParser.RULE_ifBlock = 50;\nsequenceParser.RULE_elseIfBlock = 51;\nsequenceParser.RULE_elseBlock = 52;\nsequenceParser.RULE_braceBlock = 53;\nsequenceParser.RULE_loop = 54;\nsequenceParser.RULE_expr = 55;\nsequenceParser.RULE_atom = 56;\nsequenceParser.RULE_parExpr = 57;\nsequenceParser.RULE_condition = 58;\nsequenceParser.RULE_inExpr = 59;\nsequenceParser.RULE_textExpr = 60;\n\nclass ProgContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_prog;\n    }\n\n\tEOF() {\n\t    return this.getToken(sequenceParser.EOF, 0);\n\t};\n\n\ttitle() {\n\t    return this.getTypedRuleContext(TitleContext,0);\n\t};\n\n\thead() {\n\t    return this.getTypedRuleContext(HeadContext,0);\n\t};\n\n\tblock() {\n\t    return this.getTypedRuleContext(BlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterProg(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitProg(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TitleContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_title;\n    }\n\n\tTITLE() {\n\t    return this.getToken(sequenceParser.TITLE, 0);\n\t};\n\n\tTITLE_CONTENT() {\n\t    return this.getToken(sequenceParser.TITLE_CONTENT, 0);\n\t};\n\n\tTITLE_END() {\n\t    return this.getToken(sequenceParser.TITLE_END, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterTitle(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitTitle(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass HeadContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_head;\n    }\n\n\tgroup = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(GroupContext);\n\t    } else {\n\t        return this.getTypedRuleContext(GroupContext,i);\n\t    }\n\t};\n\n\tparticipant = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ParticipantContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ParticipantContext,i);\n\t    }\n\t};\n\n\tstarterExp() {\n\t    return this.getTypedRuleContext(StarterExpContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterHead(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitHead(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass GroupContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_group;\n    }\n\n\tGROUP() {\n\t    return this.getToken(sequenceParser.GROUP, 0);\n\t};\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tOBRACE() {\n\t    return this.getToken(sequenceParser.OBRACE, 0);\n\t};\n\n\tparticipant = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ParticipantContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ParticipantContext,i);\n\t    }\n\t};\n\n\tCBRACE() {\n\t    return this.getToken(sequenceParser.CBRACE, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterGroup(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitGroup(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StarterExpContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_starterExp;\n    }\n\n\tSTARTER_LXR() {\n\t    return this.getToken(sequenceParser.STARTER_LXR, 0);\n\t};\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tstarter() {\n\t    return this.getTypedRuleContext(StarterContext,0);\n\t};\n\n\tANNOTATION() {\n\t    return this.getToken(sequenceParser.ANNOTATION, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterStarterExp(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitStarterExp(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StarterContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_starter;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterStarter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitStarter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParticipantContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_participant;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tparticipantType() {\n\t    return this.getTypedRuleContext(ParticipantTypeContext,0);\n\t};\n\n\tstereotype() {\n\t    return this.getTypedRuleContext(StereotypeContext,0);\n\t};\n\n\temoji() {\n\t    return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\twidth() {\n\t    return this.getTypedRuleContext(WidthContext,0);\n\t};\n\n\tlabel() {\n\t    return this.getTypedRuleContext(LabelContext,0);\n\t};\n\n\tCOLOR() {\n\t    return this.getToken(sequenceParser.COLOR, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParticipant(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParticipant(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StereotypeContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_stereotype;\n    }\n\n\tSOPEN() {\n\t    return this.getToken(sequenceParser.SOPEN, 0);\n\t};\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tSCLOSE() {\n\t    return this.getToken(sequenceParser.SCLOSE, 0);\n\t};\n\n\tGT() {\n\t    return this.getToken(sequenceParser.GT, 0);\n\t};\n\n\tLT() {\n\t    return this.getToken(sequenceParser.LT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterStereotype(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitStereotype(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass LabelContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_label;\n    }\n\n\tAS() {\n\t    return this.getToken(sequenceParser.AS, 0);\n\t};\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterLabel(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitLabel(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParticipantTypeContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_participantType;\n    }\n\n\tANNOTATION() {\n\t    return this.getToken(sequenceParser.ANNOTATION, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParticipantType(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParticipantType(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass NameContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_name;\n    }\n\n\tID() {\n\t    return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tDIGIT_LEADING_NAME() {\n\t    return this.getToken(sequenceParser.DIGIT_LEADING_NAME, 0);\n\t};\n\n\tCSTRING() {\n\t    return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t    return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterName(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitName(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass WidthContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_width;\n    }\n\n\tINT() {\n\t    return this.getToken(sequenceParser.INT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterWidth(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitWidth(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass EmojiContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_emoji;\n    }\n\n\tLBRACKET() {\n\t    return this.getToken(sequenceParser.LBRACKET, 0);\n\t};\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tRBRACKET() {\n\t    return this.getToken(sequenceParser.RBRACKET, 0);\n\t};\n\n\tEMOJI_SHORTCODE() {\n\t    return this.getToken(sequenceParser.EMOJI_SHORTCODE, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterEmoji(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitEmoji(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass BlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_block;\n    }\n\n\tstat = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(StatContext);\n\t    } else {\n\t        return this.getTypedRuleContext(StatContext,i);\n\t    }\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass RetContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_ret;\n    }\n\n\tRETURN() {\n\t    return this.getToken(sequenceParser.RETURN, 0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tSCOL() {\n\t    return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tANNOTATION_RET() {\n\t    return this.getToken(sequenceParser.ANNOTATION_RET, 0);\n\t};\n\n\tasyncMessage() {\n\t    return this.getTypedRuleContext(AsyncMessageContext,0);\n\t};\n\n\tEVENT_END() {\n\t    return this.getToken(sequenceParser.EVENT_END, 0);\n\t};\n\n\treturnAsyncMessage() {\n\t    return this.getTypedRuleContext(ReturnAsyncMessageContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterRet(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitRet(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ReturnAsyncMessageContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_returnAsyncMessage;\n    }\n\n\tfrom() {\n\t    return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tRETURN_ARROW() {\n\t    return this.getToken(sequenceParser.RETURN_ARROW, 0);\n\t};\n\n\tto() {\n\t    return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tCOL() {\n\t    return this.getToken(sequenceParser.COL, 0);\n\t};\n\n\tcontent() {\n\t    return this.getTypedRuleContext(ContentContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterReturnAsyncMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitReturnAsyncMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DividerContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_divider;\n    }\n\n\tdividerNote() {\n\t    return this.getTypedRuleContext(DividerNoteContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterDivider(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitDivider(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DividerNoteContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_dividerNote;\n    }\n\n\tDIVIDER() {\n\t    return this.getToken(sequenceParser.DIVIDER, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterDividerNote(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitDividerNote(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StatContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_stat;\n    }\n\n\talt() {\n\t    return this.getTypedRuleContext(AltContext,0);\n\t};\n\n\tpar() {\n\t    return this.getTypedRuleContext(ParContext,0);\n\t};\n\n\topt() {\n\t    return this.getTypedRuleContext(OptContext,0);\n\t};\n\n\tcritical() {\n\t    return this.getTypedRuleContext(CriticalContext,0);\n\t};\n\n\tsection() {\n\t    return this.getTypedRuleContext(SectionContext,0);\n\t};\n\n\tref() {\n\t    return this.getTypedRuleContext(RefContext,0);\n\t};\n\n\tloop() {\n\t    return this.getTypedRuleContext(LoopContext,0);\n\t};\n\n\tcreation() {\n\t    return this.getTypedRuleContext(CreationContext,0);\n\t};\n\n\tmessage() {\n\t    return this.getTypedRuleContext(MessageContext,0);\n\t};\n\n\tasyncMessage() {\n\t    return this.getTypedRuleContext(AsyncMessageContext,0);\n\t};\n\n\tEVENT_END() {\n\t    return this.getToken(sequenceParser.EVENT_END, 0);\n\t};\n\n\tret() {\n\t    return this.getTypedRuleContext(RetContext,0);\n\t};\n\n\tdivider() {\n\t    return this.getTypedRuleContext(DividerContext,0);\n\t};\n\n\ttcf() {\n\t    return this.getTypedRuleContext(TcfContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterStat(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitStat(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_par;\n    }\n\n\tPAR() {\n\t    return this.getToken(sequenceParser.PAR, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterPar(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitPar(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass OptContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_opt;\n    }\n\n\tOPT() {\n\t    return this.getToken(sequenceParser.OPT, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterOpt(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitOpt(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CriticalContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_critical;\n    }\n\n\tCRITICAL() {\n\t    return this.getToken(sequenceParser.CRITICAL, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCritical(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCritical(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass SectionContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_section;\n    }\n\n\tSECTION() {\n\t    return this.getToken(sequenceParser.SECTION, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tatom() {\n\t    return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterSection(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitSection(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CreationContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_creation;\n    }\n\n\tcreationBody() {\n\t    return this.getTypedRuleContext(CreationBodyContext,0);\n\t};\n\n\tSCOL() {\n\t    return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCreation(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCreation(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass RefContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_ref;\n    }\n\n\tREF() {\n\t    return this.getToken(sequenceParser.REF, 0);\n\t};\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tname = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(NameContext);\n\t    } else {\n\t        return this.getTypedRuleContext(NameContext,i);\n\t    }\n\t};\n\n\tSCOL() {\n\t    return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.COMMA);\n\t    } else {\n\t        return this.getToken(sequenceParser.COMMA, i);\n\t    }\n\t};\n\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterRef(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitRef(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CreationBodyContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_creationBody;\n    }\n\n\tNEW() {\n\t    return this.getToken(sequenceParser.NEW, 0);\n\t};\n\n\tconstruct() {\n\t    return this.getTypedRuleContext(ConstructContext,0);\n\t};\n\n\tassignment() {\n\t    return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tparameters() {\n\t    return this.getTypedRuleContext(ParametersContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCreationBody(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCreationBody(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MessageContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_message;\n    }\n\n\tmessageBody() {\n\t    return this.getTypedRuleContext(MessageBodyContext,0);\n\t};\n\n\tSCOL() {\n\t    return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MessageBodyContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_messageBody;\n    }\n\n\tassignment() {\n\t    return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\tfromTo() {\n\t    return this.getTypedRuleContext(FromToContext,0);\n\t};\n\n\tfunc() {\n\t    return this.getTypedRuleContext(FuncContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterMessageBody(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitMessageBody(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FromToContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_fromTo;\n    }\n\n\tto() {\n\t    return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tDOT() {\n\t    return this.getToken(sequenceParser.DOT, 0);\n\t};\n\n\tfrom() {\n\t    return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tARROW() {\n\t    return this.getToken(sequenceParser.ARROW, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterFromTo(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitFromTo(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FuncContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_func;\n    }\n\n\tsignature = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(SignatureContext);\n\t    } else {\n\t        return this.getTypedRuleContext(SignatureContext,i);\n\t    }\n\t};\n\n\tDOT = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.DOT);\n\t    } else {\n\t        return this.getToken(sequenceParser.DOT, i);\n\t    }\n\t};\n\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterFunc(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitFunc(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FromContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_from;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t    return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterFrom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitFrom(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ToContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_to;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t    return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterTo(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitTo(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass SignatureContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_signature;\n    }\n\n\tmethodName() {\n\t    return this.getTypedRuleContext(MethodNameContext,0);\n\t};\n\n\tinvocation() {\n\t    return this.getTypedRuleContext(InvocationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterSignature(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitSignature(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass InvocationContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_invocation;\n    }\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tparameters() {\n\t    return this.getTypedRuleContext(ParametersContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterInvocation(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitInvocation(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AssignmentContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_assignment;\n    }\n\n\tassignee() {\n\t    return this.getTypedRuleContext(AssigneeContext,0);\n\t};\n\n\tASSIGN() {\n\t    return this.getToken(sequenceParser.ASSIGN, 0);\n\t};\n\n\ttype() {\n\t    return this.getTypedRuleContext(TypeContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAssignment(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAssignment(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AsyncMessageContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_asyncMessage;\n    }\n\n\tto() {\n\t    return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tCOL() {\n\t    return this.getToken(sequenceParser.COL, 0);\n\t};\n\n\tfrom() {\n\t    return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tARROW() {\n\t    return this.getToken(sequenceParser.ARROW, 0);\n\t};\n\n\tcontent() {\n\t    return this.getTypedRuleContext(ContentContext,0);\n\t};\n\n\tMINUS() {\n\t    return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAsyncMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAsyncMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ContentContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_content;\n    }\n\n\tEVENT_PAYLOAD_LXR() {\n\t    return this.getToken(sequenceParser.EVENT_PAYLOAD_LXR, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterContent(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitContent(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ConstructContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_construct;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterConstruct(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitConstruct(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TypeContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_type;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterType(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitType(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AssigneeContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_assignee;\n    }\n\n\tatom() {\n\t    return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.ID);\n\t    } else {\n\t        return this.getToken(sequenceParser.ID, i);\n\t    }\n\t};\n\n\n\tDIGIT_LEADING_NAME = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.DIGIT_LEADING_NAME);\n\t    } else {\n\t        return this.getToken(sequenceParser.DIGIT_LEADING_NAME, i);\n\t    }\n\t};\n\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.COMMA);\n\t    } else {\n\t        return this.getToken(sequenceParser.COMMA, i);\n\t    }\n\t};\n\n\n\tCSTRING() {\n\t    return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t    return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tNEW() {\n\t    return this.getToken(sequenceParser.NEW, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAssignee(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAssignee(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MethodNameContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_methodName;\n    }\n\n\tname() {\n\t    return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t    return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterMethodName(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitMethodName(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParametersContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_parameters;\n    }\n\n\tparameter = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ParameterContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ParameterContext,i);\n\t    }\n\t};\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.COMMA);\n\t    } else {\n\t        return this.getToken(sequenceParser.COMMA, i);\n\t    }\n\t};\n\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParameters(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParameters(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParameterContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_parameter;\n    }\n\n\tnamedParameter() {\n\t    return this.getTypedRuleContext(NamedParameterContext,0);\n\t};\n\n\tdeclaration() {\n\t    return this.getTypedRuleContext(DeclarationContext,0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParameter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParameter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass NamedParameterContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_namedParameter;\n    }\n\n\tASSIGN() {\n\t    return this.getToken(sequenceParser.ASSIGN, 0);\n\t};\n\n\tID() {\n\t    return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tDIGIT_LEADING_NAME() {\n\t    return this.getToken(sequenceParser.DIGIT_LEADING_NAME, 0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterNamedParameter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitNamedParameter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DeclarationContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_declaration;\n    }\n\n\ttype() {\n\t    return this.getTypedRuleContext(TypeContext,0);\n\t};\n\n\tID() {\n\t    return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tDIGIT_LEADING_NAME() {\n\t    return this.getToken(sequenceParser.DIGIT_LEADING_NAME, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterDeclaration(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitDeclaration(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TcfContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_tcf;\n    }\n\n\ttryBlock() {\n\t    return this.getTypedRuleContext(TryBlockContext,0);\n\t};\n\n\tcatchBlock = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(CatchBlockContext);\n\t    } else {\n\t        return this.getTypedRuleContext(CatchBlockContext,i);\n\t    }\n\t};\n\n\tfinallyBlock() {\n\t    return this.getTypedRuleContext(FinallyBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterTcf(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitTcf(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TryBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_tryBlock;\n    }\n\n\tTRY() {\n\t    return this.getToken(sequenceParser.TRY, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterTryBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitTryBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CatchBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_catchBlock;\n    }\n\n\tCATCH() {\n\t    return this.getToken(sequenceParser.CATCH, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tinvocation() {\n\t    return this.getTypedRuleContext(InvocationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCatchBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCatchBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FinallyBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_finallyBlock;\n    }\n\n\tFINALLY() {\n\t    return this.getToken(sequenceParser.FINALLY, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterFinallyBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitFinallyBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AltContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_alt;\n    }\n\n\tifBlock() {\n\t    return this.getTypedRuleContext(IfBlockContext,0);\n\t};\n\n\telseIfBlock = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ElseIfBlockContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ElseIfBlockContext,i);\n\t    }\n\t};\n\n\telseBlock() {\n\t    return this.getTypedRuleContext(ElseBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAlt(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAlt(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass IfBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_ifBlock;\n    }\n\n\tIF() {\n\t    return this.getToken(sequenceParser.IF, 0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterIfBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitIfBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ElseIfBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_elseIfBlock;\n    }\n\n\tELSE() {\n\t    return this.getToken(sequenceParser.ELSE, 0);\n\t};\n\n\tIF() {\n\t    return this.getToken(sequenceParser.IF, 0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterElseIfBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitElseIfBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ElseBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_elseBlock;\n    }\n\n\tELSE() {\n\t    return this.getToken(sequenceParser.ELSE, 0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterElseBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitElseBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass BraceBlockContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_braceBlock;\n    }\n\n\tOBRACE() {\n\t    return this.getToken(sequenceParser.OBRACE, 0);\n\t};\n\n\tCBRACE() {\n\t    return this.getToken(sequenceParser.CBRACE, 0);\n\t};\n\n\tblock() {\n\t    return this.getTypedRuleContext(BlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterBraceBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitBraceBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass LoopContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_loop;\n    }\n\n\tWHILE() {\n\t    return this.getToken(sequenceParser.WHILE, 0);\n\t};\n\n\tparExpr() {\n\t    return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t    return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterLoop(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitLoop(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ExprContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_expr;\n    }\n\n\n\t \n\t\tcopyFrom(ctx) {\n\t\t\tsuper.copyFrom(ctx);\n\t\t}\n\n}\n\n\nclass AssignmentExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tassignment() {\n\t    return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAssignmentExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAssignmentExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AssignmentExprContext = AssignmentExprContext;\n\nclass FuncExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tfunc() {\n\t    return this.getTypedRuleContext(FuncContext,0);\n\t};\n\n\tto() {\n\t    return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tDOT() {\n\t    return this.getToken(sequenceParser.DOT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterFuncExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitFuncExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.FuncExprContext = FuncExprContext;\n\nclass AtomExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tatom() {\n\t    return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAtomExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAtomExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AtomExprContext = AtomExprContext;\n\nclass OrExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tOR() {\n\t    return this.getToken(sequenceParser.OR, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterOrExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitOrExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.OrExprContext = OrExprContext;\n\nclass AdditiveExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        this.op = null; // Token;\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tPLUS() {\n\t    return this.getToken(sequenceParser.PLUS, 0);\n\t};\n\n\tMINUS() {\n\t    return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAdditiveExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAdditiveExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AdditiveExprContext = AdditiveExprContext;\n\nclass RelationalExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        this.op = null; // Token;\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tLTEQ() {\n\t    return this.getToken(sequenceParser.LTEQ, 0);\n\t};\n\n\tGTEQ() {\n\t    return this.getToken(sequenceParser.GTEQ, 0);\n\t};\n\n\tLT() {\n\t    return this.getToken(sequenceParser.LT, 0);\n\t};\n\n\tGT() {\n\t    return this.getToken(sequenceParser.GT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterRelationalExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitRelationalExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.RelationalExprContext = RelationalExprContext;\n\nclass PlusExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tPLUS() {\n\t    return this.getToken(sequenceParser.PLUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterPlusExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitPlusExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.PlusExprContext = PlusExprContext;\n\nclass NotExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tNOT() {\n\t    return this.getToken(sequenceParser.NOT, 0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterNotExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitNotExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NotExprContext = NotExprContext;\n\nclass UnaryMinusExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tMINUS() {\n\t    return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterUnaryMinusExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitUnaryMinusExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.UnaryMinusExprContext = UnaryMinusExprContext;\n\nclass CreationExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tcreation() {\n\t    return this.getTypedRuleContext(CreationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCreationExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCreationExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.CreationExprContext = CreationExprContext;\n\nclass ParenthesizedExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParenthesizedExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParenthesizedExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.ParenthesizedExprContext = ParenthesizedExprContext;\n\nclass MultiplicationExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        this.op = null; // Token;\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tMULT() {\n\t    return this.getToken(sequenceParser.MULT, 0);\n\t};\n\n\tDIV() {\n\t    return this.getToken(sequenceParser.DIV, 0);\n\t};\n\n\tMOD() {\n\t    return this.getToken(sequenceParser.MOD, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterMultiplicationExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitMultiplicationExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.MultiplicationExprContext = MultiplicationExprContext;\n\nclass EqualityExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        this.op = null; // Token;\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tEQ() {\n\t    return this.getToken(sequenceParser.EQ, 0);\n\t};\n\n\tNEQ() {\n\t    return this.getToken(sequenceParser.NEQ, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterEqualityExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitEqualityExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.EqualityExprContext = EqualityExprContext;\n\nclass AndExprContext extends ExprContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\texpr = function(i) {\n\t    if(i===undefined) {\n\t        i = null;\n\t    }\n\t    if(i===null) {\n\t        return this.getTypedRuleContexts(ExprContext);\n\t    } else {\n\t        return this.getTypedRuleContext(ExprContext,i);\n\t    }\n\t};\n\n\tAND() {\n\t    return this.getToken(sequenceParser.AND, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterAndExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitAndExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AndExprContext = AndExprContext;\n\nclass AtomContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_atom;\n    }\n\n\n\t \n\t\tcopyFrom(ctx) {\n\t\t\tsuper.copyFrom(ctx);\n\t\t}\n\n}\n\n\nclass BooleanAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tTRUE() {\n\t    return this.getToken(sequenceParser.TRUE, 0);\n\t};\n\n\tFALSE() {\n\t    return this.getToken(sequenceParser.FALSE, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterBooleanAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitBooleanAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.BooleanAtomContext = BooleanAtomContext;\n\nclass IdAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tID() {\n\t    return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterIdAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitIdAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.IdAtomContext = IdAtomContext;\n\nclass MoneyAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tMONEY() {\n\t    return this.getToken(sequenceParser.MONEY, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterMoneyAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitMoneyAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.MoneyAtomContext = MoneyAtomContext;\n\nclass StringAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tCSTRING() {\n\t    return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t    return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterStringAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitStringAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.StringAtomContext = StringAtomContext;\n\nclass NilAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tNIL() {\n\t    return this.getToken(sequenceParser.NIL, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterNilAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitNilAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NilAtomContext = NilAtomContext;\n\nclass NumberAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tINT() {\n\t    return this.getToken(sequenceParser.INT, 0);\n\t};\n\n\tFLOAT() {\n\t    return this.getToken(sequenceParser.FLOAT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterNumberAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitNumberAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NumberAtomContext = NumberAtomContext;\n\nclass NumberUnitAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tNUMBER_UNIT() {\n\t    return this.getToken(sequenceParser.NUMBER_UNIT, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterNumberUnitAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitNumberUnitAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NumberUnitAtomContext = NumberUnitAtomContext;\n\nclass DigitLeadingNameAtomContext extends AtomContext {\n\n    constructor(parser, ctx) {\n        super(parser);\n        super.copyFrom(ctx);\n    }\n\n\tDIGIT_LEADING_NAME() {\n\t    return this.getToken(sequenceParser.DIGIT_LEADING_NAME, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterDigitLeadingNameAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitDigitLeadingNameAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.DigitLeadingNameAtomContext = DigitLeadingNameAtomContext;\n\nclass ParExprContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_parExpr;\n    }\n\n\tOPAR() {\n\t    return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tcondition() {\n\t    return this.getTypedRuleContext(ConditionContext,0);\n\t};\n\n\tCPAR() {\n\t    return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterParExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitParExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ConditionContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_condition;\n    }\n\n\tatom() {\n\t    return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\texpr() {\n\t    return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tinExpr() {\n\t    return this.getTypedRuleContext(InExprContext,0);\n\t};\n\n\ttextExpr() {\n\t    return this.getTypedRuleContext(TextExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterCondition(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitCondition(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass InExprContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_inExpr;\n    }\n\n\tIN() {\n\t    return this.getToken(sequenceParser.IN, 0);\n\t};\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.ID);\n\t    } else {\n\t        return this.getToken(sequenceParser.ID, i);\n\t    }\n\t};\n\n\n\tDIGIT_LEADING_NAME = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.DIGIT_LEADING_NAME);\n\t    } else {\n\t        return this.getToken(sequenceParser.DIGIT_LEADING_NAME, i);\n\t    }\n\t};\n\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterInExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitInExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TextExprContext extends antlr4.ParserRuleContext {\n\n    constructor(parser, parent, invokingState) {\n        if(parent===undefined) {\n            parent = null;\n        }\n        if(invokingState===undefined || invokingState===null) {\n            invokingState = -1;\n        }\n        super(parent, invokingState);\n        this.parser = parser;\n        this.ruleIndex = sequenceParser.RULE_textExpr;\n    }\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.ID);\n\t    } else {\n\t        return this.getToken(sequenceParser.ID, i);\n\t    }\n\t};\n\n\n\tDIGIT_LEADING_NAME = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.DIGIT_LEADING_NAME);\n\t    } else {\n\t        return this.getToken(sequenceParser.DIGIT_LEADING_NAME, i);\n\t    }\n\t};\n\n\n\tNUMBER_UNIT = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t    if(i===null) {\n\t        return this.getTokens(sequenceParser.NUMBER_UNIT);\n\t    } else {\n\t        return this.getToken(sequenceParser.NUMBER_UNIT, i);\n\t    }\n\t};\n\n\n\tenterRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.enterTextExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t    if(listener instanceof sequenceParserListener ) {\n\t        listener.exitTextExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\n\nsequenceParser.ProgContext = ProgContext; \nsequenceParser.TitleContext = TitleContext; \nsequenceParser.HeadContext = HeadContext; \nsequenceParser.GroupContext = GroupContext; \nsequenceParser.StarterExpContext = StarterExpContext; \nsequenceParser.StarterContext = StarterContext; \nsequenceParser.ParticipantContext = ParticipantContext; \nsequenceParser.StereotypeContext = StereotypeContext; \nsequenceParser.LabelContext = LabelContext; \nsequenceParser.ParticipantTypeContext = ParticipantTypeContext; \nsequenceParser.NameContext = NameContext; \nsequenceParser.WidthContext = WidthContext; \nsequenceParser.EmojiContext = EmojiContext; \nsequenceParser.BlockContext = BlockContext; \nsequenceParser.RetContext = RetContext; \nsequenceParser.ReturnAsyncMessageContext = ReturnAsyncMessageContext; \nsequenceParser.DividerContext = DividerContext; \nsequenceParser.DividerNoteContext = DividerNoteContext; \nsequenceParser.StatContext = StatContext; \nsequenceParser.ParContext = ParContext; \nsequenceParser.OptContext = OptContext; \nsequenceParser.CriticalContext = CriticalContext; \nsequenceParser.SectionContext = SectionContext; \nsequenceParser.CreationContext = CreationContext; \nsequenceParser.RefContext = RefContext; \nsequenceParser.CreationBodyContext = CreationBodyContext; \nsequenceParser.MessageContext = MessageContext; \nsequenceParser.MessageBodyContext = MessageBodyContext; \nsequenceParser.FromToContext = FromToContext; \nsequenceParser.FuncContext = FuncContext; \nsequenceParser.FromContext = FromContext; \nsequenceParser.ToContext = ToContext; \nsequenceParser.SignatureContext = SignatureContext; \nsequenceParser.InvocationContext = InvocationContext; \nsequenceParser.AssignmentContext = AssignmentContext; \nsequenceParser.AsyncMessageContext = AsyncMessageContext; \nsequenceParser.ContentContext = ContentContext; \nsequenceParser.ConstructContext = ConstructContext; \nsequenceParser.TypeContext = TypeContext; \nsequenceParser.AssigneeContext = AssigneeContext; \nsequenceParser.MethodNameContext = MethodNameContext; \nsequenceParser.ParametersContext = ParametersContext; \nsequenceParser.ParameterContext = ParameterContext; \nsequenceParser.NamedParameterContext = NamedParameterContext; \nsequenceParser.DeclarationContext = DeclarationContext; \nsequenceParser.TcfContext = TcfContext; \nsequenceParser.TryBlockContext = TryBlockContext; \nsequenceParser.CatchBlockContext = CatchBlockContext; \nsequenceParser.FinallyBlockContext = FinallyBlockContext; \nsequenceParser.AltContext = AltContext; \nsequenceParser.IfBlockContext = IfBlockContext; \nsequenceParser.ElseIfBlockContext = ElseIfBlockContext; \nsequenceParser.ElseBlockContext = ElseBlockContext; \nsequenceParser.BraceBlockContext = BraceBlockContext; \nsequenceParser.LoopContext = LoopContext; \nsequenceParser.ExprContext = ExprContext; \nsequenceParser.AtomContext = AtomContext; \nsequenceParser.ParExprContext = ParExprContext; \nsequenceParser.ConditionContext = ConditionContext; \nsequenceParser.InExprContext = InExprContext; \nsequenceParser.TextExprContext = TextExprContext; \n","export type Position = [number, number];\n\ninterface ParticipantOptions {\n  isStarter?: boolean;\n  stereotype?: string;\n  width?: number;\n  groupId?: number | string;\n  label?: string;\n  explicit?: boolean;\n  type?: string;\n  color?: string;\n  comment?: string;\n  assignee?: string;\n  emoji?: string;\n  position?: Position;\n  assigneePosition?: Position;\n}\n\nexport const blankParticipant = {\n  name: \"\",\n  color: undefined,\n  comment: undefined,\n  explicit: undefined,\n  groupId: undefined,\n  isStarter: undefined,\n  label: undefined,\n  stereotype: undefined,\n  type: undefined,\n  width: undefined,\n  assignee: undefined,\n  emoji: undefined,\n  positions: new Set(),\n  assigneePositions: new Set(),\n};\n\nexport class Participant {\n  name: string;\n  private stereotype: string | undefined;\n  private width: number | undefined;\n  private groupId: number | string | undefined;\n  explicit: boolean | undefined;\n  isStarter: boolean | undefined;\n  label: string | undefined;\n  private type: string | undefined;\n  private color: string | undefined;\n  private comment: string | undefined;\n  private assignee: string | undefined;\n  private emoji: string | undefined;\n  positions: Set<Position> = new Set();\n  assigneePositions: Set<Position> = new Set();\n\n  constructor(name: string, options: ParticipantOptions) {\n    this.name = name;\n    this.mergeOptions(options);\n  }\n\n  public mergeOptions(options: ParticipantOptions) {\n    const {\n      stereotype,\n      width,\n      groupId,\n      label,\n      explicit,\n      isStarter,\n      type,\n      color,\n      comment,\n      assignee,\n      emoji,\n    } = options;\n    this.stereotype ||= stereotype;\n    this.width ||= width;\n    this.groupId ||= groupId;\n    this.explicit ||= explicit;\n    this.isStarter ||= isStarter;\n    this.label ||= label;\n    this.type ||= type;\n    this.color ||= color;\n    this.comment ||= comment;\n    this.assignee ||= assignee;\n    this.emoji ||= emoji;\n  }\n  public AddPosition(position: Position) {\n    this.positions.add(position);\n  }\n\n  public ToValue() {\n    return {\n      name: this.name,\n      stereotype: this.stereotype,\n      width: this.width,\n      groupId: this.groupId,\n      explicit: this.explicit,\n      isStarter: this.isStarter,\n      label: this.label,\n      type: this.type,\n      color: this.color,\n      comment: this.comment,\n      assignee: this.assignee,\n      emoji: this.emoji,\n      positions: this.positions,\n      assigneePositions: this.assigneePositions,\n    };\n  }\n}\n\nexport class Participants {\n  private participants = new Map<string, Participant>();\n\n  public Add(name: string, options: ParticipantOptions = {}): void {\n    if (!name) {\n      throw new Error(\"Participant name is required\");\n    }\n    let participant = this.Get(name);\n    if (!participant) {\n      participant = new Participant(name, options);\n      this.participants.set(name, participant);\n    } else {\n      participant?.mergeOptions(options);\n    }\n\n    // Add positions\n    const { position, assigneePosition } = options;\n    if (position) {\n      participant.AddPosition(position);\n    }\n    if (assigneePosition) {\n      participant.assigneePositions.add(assigneePosition);\n    }\n  }\n\n  // Returns an array of participants that are deduced from messages\n  // It does not include the Starter.\n  ImplicitArray() {\n    return this.Array().filter((p) => !this.Get(p.name)?.explicit);\n  }\n\n  // Items in entries are in the order of entry insertion:\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n  private Array() {\n    return Array.from(this.participants.entries()).map((entry) => entry[1]);\n  }\n\n  Names() {\n    return Array.from(this.participants.keys());\n  }\n\n  First() {\n    return this.participants.values().next().value;\n  }\n\n  Get(name: string) {\n    return this.participants.get(name);\n  }\n\n  Size() {\n    return this.participants.size;\n  }\n\n  Starter() {\n    for (const participant of this.participants.values()) {\n      if (participant.isStarter) {\n        return participant;\n      }\n    }\n    return undefined;\n  }\n\n  GetPositions(name: string) {\n    return this.participants.get(name)?.positions;\n  }\n\n  GetAssigneePositions(name: string) {\n    return this.participants.get(name)?.assigneePositions;\n  }\n}\n","import { Participants } from \"./Participants\";\nimport antlr4 from \"antlr4\";\nimport { default as sequenceParserListener } from \"../generated-parser/sequenceParserListener\";\n\nlet participants = undefined;\nlet isBlind = false;\nlet groupId = undefined;\nconst ToCollector = new sequenceParserListener();\n\n// Rules:\n// 1. Later declaration win\n// 2. Participant declaration overwrite cannot be overwritten by To or Starter\nconst onParticipant = function (ctx) {\n  // if(!(ctx?.name())) return;\n  if (isBlind) return;\n  const type = ctx?.participantType()?.getFormattedText().replace(\"@\", \"\");\n  const participant =\n    ctx?.name()?.getFormattedText() || \"Missing `Participant`\";\n  const stereotype = ctx.stereotype()?.name()?.getFormattedText();\n  const emoji = ctx.emoji?.()?.name?.()?.getFormattedText();\n  const width =\n    (ctx.width && ctx.width() && Number.parseInt(ctx.width().getText())) ||\n    undefined;\n  const labelCtx = ctx.label && ctx.label();\n  const label = labelCtx?.name()?.getFormattedText();\n  const explicit = true;\n  const color = ctx.COLOR()?.getText();\n  const comment = ctx.getComment();\n  const nameCtx = ctx.name();\n  let start, end;\n\n  // When label is present, it means we edit label in diagram and update its code regardless of the occurrence of the participant name\n  if (labelCtx) {\n    const labelNameCtx = labelCtx.name();\n    if (labelNameCtx) {\n      start = labelNameCtx.start.start;\n      end = labelNameCtx.stop.stop + 1;\n    }\n  } else if (nameCtx) {\n    start = nameCtx.start.start;\n    end = nameCtx.stop.stop + 1;\n  }\n\n  participants.Add(participant, {\n    isStarter: false,\n    type,\n    stereotype,\n    emoji,\n    width,\n    groupId,\n    label,\n    explicit,\n    color,\n    comment,\n    position: [start, end],\n  });\n};\nToCollector.enterParticipant = onParticipant;\n\nconst onTo = function (ctx) {\n  if (isBlind) return;\n  let participant = ctx.name?.()?.getFormattedText() || ctx.getFormattedText();\n  const emoji = ctx.emoji?.()?.name?.()?.getFormattedText();\n  const participantInstance = participants.Get(participant);\n\n  // Skip adding participant position if label is present\n  if (participantInstance?.label) {\n    participants.Add(participant, { isStarter: false, emoji });\n  } else if (participantInstance?.assignee) {\n    // If the participant has an assignee, calculate the position of the ctor and store it only.\n    // Let's say the participant name is `\"${assignee}:${type}\"`, we need to get the position of ${type}\n    // e.g. ret = new A() \"ret:A\".method()\n    const start = ctx.start.start + participantInstance.assignee.length + 2;\n    const position = [start, ctx.stop.stop];\n    const assigneePosition = [\n      ctx.start.start + 1,\n      ctx.start.start + participantInstance.assignee.length + 1,\n    ];\n    participants.Add(participant, {\n      isStarter: false,\n      emoji,\n      position: position,\n      assigneePosition: assigneePosition,\n    });\n  } else {\n    participants.Add(participant, {\n      isStarter: false,\n      emoji,\n      position: [ctx.start.start, ctx.stop.stop + 1],\n    });\n  }\n};\n\nToCollector.enterFrom = onTo;\nToCollector.enterTo = onTo;\n\nToCollector.enterStarter = function (ctx) {\n  let participant = ctx.getFormattedText();\n  participants.Add(participant, {\n    isStarter: true,\n    position: [ctx.start.start, ctx.stop.stop + 1],\n  });\n};\n\nToCollector.enterCreation = function (ctx) {\n  if (isBlind) return;\n  const participant = ctx.Owner();\n  const ctor = ctx?.creationBody()?.construct();\n  const participantInstance = participants.Get(participant);\n  // Skip adding participant constructor position if label is present\n  if (ctor && !participantInstance?.label) {\n    const assignee = ctx.Assignee();\n    const assigneePosition = ctx.AssigneePosition();\n    participants.Add(participant, {\n      isStarter: false,\n      position: [ctor.start.start, ctor.stop.stop + 1],\n      assignee: assignee,\n      assigneePosition: assigneePosition,\n    });\n  } else {\n    participants.Add(participant, {\n      isStarter: false,\n    });\n  }\n};\n\nToCollector.enterRef = function (ctx) {\n  ctx.Participants().forEach((participant) => {\n    participants.Add(participant.getText(), {\n      isStarter: false,\n      position: [participant.start.start, participant.stop.stop + 1],\n    });\n  });\n};\n\nToCollector.enterParameters = function () {\n  isBlind = true;\n};\n\nToCollector.exitParameters = function () {\n  isBlind = false;\n};\n\nToCollector.enterCondition = function () {\n  isBlind = true;\n};\n\nToCollector.exitCondition = function () {\n  isBlind = false;\n};\n\nToCollector.enterGroup = function (ctx) {\n  // group { A } => groupId = undefined\n  // group group1 { A } => groupId = \"group1\"\n  groupId = ctx.name()?.getFormattedText();\n};\n\nToCollector.exitGroup = function () {\n  groupId = undefined;\n};\n\nToCollector.enterRet = function (ctx) {\n  if (ctx.asyncMessage()) {\n    // it will visit the asyncMessage later\n    return;\n  }\n  const returnFrom = ctx.From();\n  returnFrom && participants.Add(returnFrom);\n  const returnTo = ctx.ReturnTo();\n  returnTo && participants.Add(returnTo);\n};\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nToCollector.getParticipants = function (context) {\n  participants = new Participants();\n  if (context) walker.walk(this, context);\n  return participants;\n};\n\nexport default ToCollector;\n","import antlr4 from \"antlr4\";\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nlet ChildFragmentDetector = new sequenceParserListener();\n\nlet cursor = 0;\nlet max = 0;\n\nChildFragmentDetector.enterTcf = function () {\n  cursor++;\n};\nChildFragmentDetector.enterOpt = function () {\n  cursor++;\n};\nChildFragmentDetector.enterPar = function () {\n  cursor++;\n};\nChildFragmentDetector.enterAlt = function () {\n  cursor++;\n};\nChildFragmentDetector.enterLoop = function () {\n  cursor++;\n};\nChildFragmentDetector.enterSection = function () {\n  cursor++;\n};\nChildFragmentDetector.enterCritical = function () {\n  cursor++;\n};\n\nChildFragmentDetector.exitTcf = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitOpt = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitPar = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitAlt = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitLoop = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitSection = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\nChildFragmentDetector.exitCritical = function () {\n  max = Math.max(max, cursor);\n  cursor--;\n};\n\nChildFragmentDetector.depth = function (me) {\n  return function (context) {\n    cursor = 0;\n    max = 0;\n    context.children.map(function (child) {\n      walker.walk(me, child);\n    });\n    return max;\n  };\n};\n\nexport default ChildFragmentDetector;\n","import sequenceParser from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst TitleContext = seqParser.TitleContext;\nTitleContext.prototype.content = function () {\n  if (this.children.length < 2) {\n    return \"\";\n  } else {\n    return this.children[1].getText().trim();\n  }\n};\n\nexport default TitleContext;\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nconst seqParser = sequenceParser;\n\nconst CreationContext = seqParser.CreationContext;\nCreationContext.prototype.Body = CreationContext.prototype.creationBody;\nCreationContext.prototype.isCurrent = function (cursor) {\n  return isCurrent.bind(this)(cursor);\n};\n\nconst MessageContext = seqParser.MessageContext;\nMessageContext.prototype.Body = MessageContext.prototype.messageBody;\nMessageContext.prototype.isCurrent = function (cursor) {\n  return isCurrent.bind(this)(cursor);\n};\n\nfunction isCurrent(cursor) {\n  try {\n    if (cursor === null || cursor === undefined) return false;\n    const start = this.start.start;\n    const stop = this.Body().stop.stop + 1;\n\n    return cursor >= start && cursor <= stop;\n  } catch (e) {\n    return false;\n  }\n}\n","/**\n * Owner is the receiver of the message.\n * For example, in `S -> A.m1 {B.m2 {C.m3}} D->E:m4`,\n *                       |     |     |         |\n * Owner of              m1    m2    m3        m4\n */\n\nimport { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst MessageContext = seqParser.MessageContext;\nconst AsyncMessageContext = seqParser.AsyncMessageContext;\nconst ReturnAsyncMessageContext = seqParser.ReturnAsyncMessageContext;\nconst RetMessageContext = seqParser.RetContext;\n\nCreationContext.prototype.Assignee = function () {\n  return this.creationBody()?.assignment()?.assignee()?.getFormattedText();\n};\n\nCreationContext.prototype.AssigneePosition = function () {\n  const assignee = this.creationBody()?.assignment()?.assignee();\n  if (!assignee) {\n    return undefined;\n  }\n  return [assignee.start.start, assignee.stop.stop + 1];\n};\n\nCreationContext.prototype.Constructor = function () {\n  return this.creationBody()?.construct()?.getFormattedText();\n};\n\nCreationContext.prototype.To = function () {\n  return this.Constructor();\n};\n\nCreationContext.prototype.Owner = function () {\n  if (!this.Constructor()) {\n    return \"Missing Constructor\";\n  }\n  const assignee = this.Assignee();\n  const type = this.Constructor();\n  return assignee ? `${assignee}:${type}` : type;\n};\n\nMessageContext.prototype.To = function () {\n  const toCtx = this.messageBody()?.fromTo()?.to();\n  return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nMessageContext.prototype.Owner = function () {\n  return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nfunction getOwnerFromAncestor(ctx) {\n  while (ctx) {\n    if (ctx instanceof CreationContext || ctx instanceof MessageContext) {\n      return ctx.Owner();\n    }\n    ctx = ctx.parentCtx;\n  }\n  return undefined;\n}\n\nAsyncMessageContext.prototype.To = function () {\n  const toCtx = this.to();\n  return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nAsyncMessageContext.prototype.Owner = function () {\n  return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nReturnAsyncMessageContext.prototype.To = function () {\n  const toCtx = this.to();\n  return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nReturnAsyncMessageContext.prototype.Owner = function () {\n  return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nRetMessageContext.prototype.To = function () {\n  return this.ReturnTo();\n};\n\nRetMessageContext.prototype.Owner = function () {\n  return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst ProgContext = sequenceParser.ProgContext;\n\n/**\n * When does Starter need to be treated differently?\n *\n * 0. \"\". A default starter CAN be rendered as otherwise the diagram is empty.\n *\n * 1. A.method\n * There is no starter indicated in the code at all. _STARTER_ is used.\n *\n * 2. A->B.method\n * There seems no need to even consider a starter and all messages have a provided sender.\n *\n * 3. if(x) { A.method }.\n * Similar to #1\n *\n * 4. if(x) { A->B.method }.\n * Similar to #2\n *\n * 5. @Starter(A).\n * Starter is clearly defined. It must be used anywhere a sender is not provided\n * and not inferrable.\n *\n * 6. A B.\n * Only the participants are defined. There is no need to consider a starter.\n *\n * From the above analysis, it is clear that whether we should consider a starter is base on\n * messages only. Thus, the following rules are established:\n *\n * For the ProgContext, if there is `@starter(x)` then Starter returns x, otherwise it returns undefined.\n * It is left to the LifelineLayer to determine whether a default starter is rendered based on the messages.\n *\n * The ToCollector should not be concerned with the default starter.\n *\n * _STARTER_ is of the renderer's concern. It is not a concern of the parser.\n */\n\nProgContext.prototype.Starter = function () {\n  return this.head()?.starterExp()?.starter()?.getFormattedText();\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst RetContext = seqParser.RetContext;\nconst ProgContext = seqParser.ProgContext;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\n\nRetContext.prototype.Signature = function () {\n  return (\n    this.asyncMessage()?.content()?.getFormattedText() ||\n    this.returnAsyncMessage()?.content()?.getFormattedText() ||\n    this.expr()?.getFormattedText()\n  );\n};\n\nRetContext.prototype.ReturnTo = function () {\n  // Check asyncMessage 'to' first\n  const asyncToCtx = this.asyncMessage()?.to() || this.returnAsyncMessage()?.to();\n  const asyncTo = asyncToCtx?.name?.()?.getFormattedText() || asyncToCtx?.getFormattedText();\n  if (asyncTo) {\n    return asyncTo;\n  }\n\n  const stat = this.parentCtx;\n  const block = stat.parentCtx;\n  const blockParent = block.parentCtx;\n  if (blockParent instanceof ProgContext) {\n    return blockParent.Starter();\n  } else {\n    let ctx = blockParent;\n    while (\n      ctx &&\n      !(ctx instanceof MessageContext) &&\n      !(ctx instanceof CreationContext)\n    ) {\n      if (ctx instanceof ProgContext) {\n        return ctx.Starter();\n      }\n      ctx = ctx.parentCtx;\n    }\n    if (ctx instanceof MessageContext) {\n      return (\n        ctx.messageBody()?.fromTo()?.from()?.name?.()?.getFormattedText() ||\n        ctx.messageBody()?.fromTo()?.from()?.getFormattedText() ||\n        ctx.ClosestAncestorStat().Origin()\n      );\n    }\n    return ctx.ClosestAncestorStat().Origin();\n  }\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst RefContext = seqParser.RefContext;\n\n// @ts-expect-error -- ANTLR generated code\nRefContext.prototype.Content = function () {\n  return this.name()[0];\n};\n\n// @ts-expect-error -- ANTLR generated code\nRefContext.prototype.Participants = function () {\n  return this.name().slice(1) ?? [];\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nimport { default as antlr4 } from \"antlr4\";\nconst ParserRuleContext = antlr4.ParserRuleContext;\nconst StatContext = sequenceParser.StatContext;\nconst ProgContext = sequenceParser.ProgContext;\nconst MessageContext = sequenceParser.MessageContext;\nconst CreationContext = sequenceParser.CreationContext;\n\nParserRuleContext.prototype.Origin = function () {\n  let ctx = this.parentCtx;\n  while (ctx && !(ctx instanceof StatContext || ctx instanceof ProgContext)) {\n    ctx = this.parentCtx;\n  }\n  return ctx.Origin();\n};\n// Origin is essentially the 'from' of a message.\n// For example, in `S -> A.m1 {B.m2 {C.m3}}`,\n//                  |    |     |\n// Origin of        m1   m2    m3\nStatContext.prototype.Origin = function () {\n  let ctx = this.parentCtx;\n  while (ctx) {\n    if (ctx instanceof ProgContext) {\n      return ctx.Starter();\n    }\n    if (ctx instanceof MessageContext || ctx instanceof CreationContext) {\n      const receiver = ctx.Owner();\n      if (receiver) {\n        return receiver;\n      }\n    }\n    ctx = ctx.parentCtx;\n  }\n  return undefined;\n};\n\nProgContext.prototype.Origin = function () {\n  return this.Starter();\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst DividerContext = seqParser.DividerContext;\n\n// @ts-expect-error -- ANTLR generated code\nDividerContext.prototype.Note = function () {\n  // @ts-expect-error -- ANTLR generated code\n  const formattedText = this.dividerNote()?.getFormattedText().trim();\n  // throw error if formattedText does not start with '=='\n  if (!formattedText.startsWith(\"==\")) {\n    throw new Error(\"Divider note must start with ==\");\n  }\n  // trim leading and trailing '=' characters\n  return formattedText?.replace(/^=+|=+$/g, \"\");\n};\n","import sequenceParser from \"../generated-parser/sequenceParser\";\nimport type { AsyncMessageContext, CreationContext, MessageContext, Parameter, RetContext } from \"./Parser.types\";\n\n// Helper function to format a single parameter\nfunction formatParameter(param: Parameter): string {\n  if (param.namedParameter?.()) {\n    const namedParam = param.namedParameter();\n    if (namedParam) {\n      const expr = namedParam.expr();\n      const value = expr ? expr.getFormattedText() : \"\";\n      return `${namedParam.ID().getText()}=${value}`;\n    }\n  }\n  \n  if (param.declaration?.()) {\n    const decl = param.declaration();\n    if (decl) {\n      return `${decl.type().getText()} ${decl.ID().getText()}`;\n    }\n  }\n  \n  if (param.expr?.()) {\n    return param.expr().getFormattedText();\n  }\n  \n  return param.getFormattedText();\n}\n\n// Helper function to format parameters list\nfunction formatParameters(params: Parameter[]): string {\n  return params.map(formatParameter).join(\",\");\n}\n\n// Get the parser contexts and assert their types\nconst MessageContext = sequenceParser.MessageContext as any as {\n  new (): MessageContext;\n  prototype: MessageContext;\n};\nconst ParametersContext = sequenceParser.ParametersContext as any as {\n  new (): any;\n  prototype: any;\n};\nconst AsyncMessageContext = sequenceParser.AsyncMessageContext as any as {\n  new (): AsyncMessageContext;\n  prototype: AsyncMessageContext;\n};\nconst CreationContext = sequenceParser.CreationContext as any as {\n  new (): CreationContext;\n  prototype: CreationContext;\n};\nconst RetContext = sequenceParser.RetContext as any as {\n  new (): RetContext;\n  prototype: RetContext;\n};\n\n// Now we can safely extend the prototypes with proper typing\nMessageContext.prototype.SignatureText = function (\n  this: MessageContext,\n): string {\n  return (\n    this.messageBody()\n      ?.func()\n      ?.signature()\n      ?.map((s) => s?.getFormattedText())\n      .join(\".\") ?? \"\"\n  );\n};\n\nAsyncMessageContext.prototype.SignatureText = function (\n  this: AsyncMessageContext,\n): string {\n  return this.content()?.getFormattedText() ?? \"\";\n};\n\nCreationContext.prototype.ParametersText = function (\n  this: CreationContext,\n): string {\n  const params = this.creationBody().parameters();\n  return params?.parameter()?.length > 0\n    ? formatParameters(params.parameter())\n    : \"\";\n};\n\nCreationContext.prototype.SignatureText = function (\n  this: CreationContext,\n): string {\n  const text = this.ParametersText() || \"create\";\n  return `«${text}»`;\n};\n\nCreationContext.prototype.isParamValid = function (\n  this: CreationContext,\n): boolean {\n  return (this.creationBody().parameters()?.parameter()?.length ?? 0) > 0;\n};\n\nRetContext.prototype.SignatureText = function (this: RetContext): string {\n  return (\n    this.asyncMessage()?.content()?.getFormattedText() ??\n    this.returnAsyncMessage()?.content()?.getFormattedText() ??\n    this.expr()?.getFormattedText() ??\n    \"\"\n  );\n};\n\nsequenceParser.ReturnAsyncMessageContext.prototype.SignatureText = function (): string {\n  return this.content()?.getFormattedText() ?? \"\";\n};\n\n// Enhance ParametersContext to properly format named parameters\nParametersContext.prototype.getFormattedText = function (): string {\n  const params = this.parameter();\n  if (!params || params.length === 0) {\n    return \"\";\n  }\n  return formatParameters(params);\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\n\ninterface IAssignment {\n  assignee: string | undefined;\n  type: string | undefined;\n  labelPosition: [number, number];\n  assigneePosition: [number, number];\n  typePosition: [number, number];\n}\n\nexport class Assignment implements IAssignment {\n  assignee: string;\n  type: string;\n  labelPosition: [number, number];\n  assigneePosition: [number, number];\n  typePosition: [number, number];\n  constructor(\n    assignee: string | undefined, \n    type: string | undefined, \n    assigneePosition: [number, number],\n    typePosition: [number, number]\n  ) {\n    // check if type is defined, assignee must be defined\n    if (type && !assignee) {\n      throw new Error(\"assignee must be defined if type is defined\");\n    }\n    this.assignee = assignee || \"\";\n    this.type = type || \"\";\n    // For backward compatibility, labelPosition is the assigneePosition\n    this.labelPosition = assigneePosition;\n    this.assigneePosition = assigneePosition;\n    this.typePosition = typePosition;\n  }\n\n  getText() {\n    return [this.assignee, this.type].filter(Boolean).join(\":\");\n  }\n}\n\nfunction extractAssignmentFromContext(assignmentContext: any): Assignment | undefined {\n  if (!assignmentContext) {\n    return undefined;\n  }\n  // @ts-expect-error -- ANTLR generated code\n  const assignee = assignmentContext?.assignee()?.getFormattedText();\n  // @ts-expect-error -- ANTLR generated code\n  const type = assignmentContext?.type()?.getFormattedText();\n  // @ts-expect-error -- ANTLR generated code\n  const assigneeCtx = assignmentContext?.assignee();\n  const assigneePosition: [number, number] = assigneeCtx\n    ? [assigneeCtx.start.start, assigneeCtx.stop.stop]\n    : [-1, -1];\n  // @ts-expect-error -- ANTLR generated code\n  const typeCtx = assignmentContext?.type();\n  const typePosition: [number, number] = typeCtx\n    ? [typeCtx.start.start, typeCtx.stop.stop]\n    : [-1, -1];\n  if (assignee) {\n    return new Assignment(assignee, type, assigneePosition, typePosition);\n  }\n  return undefined;\n}\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.Assignment = function () {\n  return extractAssignmentFromContext(this.messageBody().assignment());\n};\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.Assignment = function () {\n  return extractAssignmentFromContext(this.creationBody()?.assignment());\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\nimport \"./Assignment\";\n\nconst seqParser = sequenceParser;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\nconst IfBlockContext = seqParser.IfBlockContext;\nconst LoopContext = seqParser.LoopContext;\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.Statements = function () {\n  return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.Statements = function () {\n  return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nIfBlockContext.prototype.Statements = function () {\n  return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nLoopContext.prototype.Statements = function () {\n  return this.braceBlock()?.block()?.stat() || [];\n};\n","import sequenceParser from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst StatContext = seqParser.StatContext;\nconst MessageContext = seqParser.MessageContext;\nconst AsyncMessageContext = seqParser.AsyncMessageContext;\nconst ReturnAsyncMessageContext = seqParser.ReturnAsyncMessageContext;\nconst RetContext = seqParser.RetContext;\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.From = function () {\n  // @ts-expect-error -- ANTLR generated code\n  if (this.parentCtx instanceof StatContext) {\n    // @ts-expect-error -- ANTLR generated code\n    return this.ClosestAncestorStat().Origin();\n  }\n  return undefined;\n};\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.ProvidedFrom = function () {\n  // @ts-expect-error -- ANTLR generated code\n  const fromCtx = this.messageBody()?.fromTo()?.from();\n  return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.From = function () {\n  // @ts-expect-error -- ANTLR generated code\n  return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nAsyncMessageContext.prototype.ProvidedFrom = function () {\n  // @ts-expect-error -- ANTLR generated code\n  const fromCtx = this.from();\n  return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n\n// @ts-expect-error -- ANTLR generated code\nAsyncMessageContext.prototype.From = function () {\n  // @ts-expect-error -- ANTLR generated code\n  return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nReturnAsyncMessageContext.prototype.ProvidedFrom = function () {\n  // @ts-expect-error -- ANTLR generated code\n  const fromCtx = this.from();\n  return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n\n// @ts-expect-error -- ANTLR generated code\nReturnAsyncMessageContext.prototype.From = function () {\n  // @ts-expect-error -- ANTLR generated code\n  return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nRetContext.prototype.From = function () {\n  // @ts-expect-error -- ANTLR generated code\n  return this.asyncMessage()?.From() || this.returnAsyncMessage()?.From() || this.ClosestAncestorStat().Origin();\n};\nexport {};\n","import { default as antlr4 } from \"antlr4\";\n\nantlr4.ParserRuleContext.prototype.Key = function () {\n  return `${this.start.start}:${this.stop.stop}`;\n};\n","import { default as antlr4 } from \"antlr4\";\nimport { default as sequenceParser } from \"../../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst StatContext = seqParser.StatContext;\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorStat = function () {\n  if (this instanceof StatContext) {\n    return this;\n  }\n  let current = this.parentCtx;\n  while (current && !(current instanceof StatContext)) {\n    current = current.parentCtx;\n  }\n  if (current instanceof StatContext) {\n    return current;\n  }\n  return undefined;\n};\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorBlock = function () {\n  const parentCtx = this.ClosestAncestorStat()?.parentCtx;\n  // if parent is a block, return it\n  if (parentCtx instanceof seqParser.BlockContext) {\n    return parentCtx;\n  }\n  console.warn(\"Cannot find closest ancestor block for context:\", this);\n  return undefined;\n};\n\nexport {};\n","import { default as antlr4 } from \"antlr4\";\n\n// TypeScript cannot infer that the method exists on the prototype chain\n(antlr4.ParserRuleContext.prototype as any).getAncestors = function (\n  predicate?: (ctx: antlr4.ParserRuleContext) => boolean,\n): antlr4.ParserRuleContext[] {\n  const ancestors = [];\n  if (!predicate || predicate(this)) {\n    ancestors.push(this);\n  }\n  let current = this.parentCtx;\n  while (current) {\n    if (!predicate || predicate(current)) {\n      ancestors.push(current);\n    }\n    current = current.parentCtx;\n  }\n  return ancestors;\n};\n","export const formatText = (text: string): string =>\n  text\n    .replace(/[\\n\\r]/g, \" \")\n    .replace(/\\s+/g, \" \")\n    .replace(/\\s*([,;.])\\s*/g, \"$1\")\n    .replace(/\\s*(\\()\\s*|\\s*(\\))/g, \"$1$2\")\n    .replace(/\\s+$/g, \"\")\n    .replace(/^\"(.*)\"$/, \"$1\");\n\nexport const getLineHead = (code: string, position: number) => {\n  let i = position;\n  if (code[i] === \"\\n\") i--;\n  while (i >= 0) {\n    if (code[i] === \"\\n\") return i + 1;\n    i--;\n  }\n  return 0;\n};\nexport const getPrevLineHead = (code: string, position: number) => {\n  const lineHead = getLineHead(code, position);\n  if (lineHead === 0) return 0;\n  let i = lineHead - 2;\n  while (i >= 0) {\n    if (code[i] === \"\\n\") return i + 1;\n    i--;\n  }\n  return 0;\n};\nexport const getPrevLine = (code: string, position: number) => {\n  const lineHead = getLineHead(code, position);\n  if (lineHead === 0) return \"\";\n  const prevLineHead = getPrevLineHead(code, position);\n  return code.slice(prevLineHead, lineHead);\n};\n","import antlr4 from \"antlr4\";\nimport { default as sequenceLexer } from \"../generated-parser/sequenceLexer\";\nimport { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nimport ToCollector from \"./ToCollector\";\nimport ChildFragmentDetector from \"./ChildFragmentDetecotr\";\nimport \"./TitleContext\";\nimport \"./IsCurrent\";\nimport \"./Owner\";\nimport \"./ProgContext\";\nimport \"./RetContext\";\nimport \"./RefContext\";\nimport \"./Origin\";\nimport \"./Divider/DividerContext\";\nimport \"./SignatureText\";\nimport \"./Messages/MessageContext\";\nimport \"./From\";\nimport \"./key/Key\";\nimport \"./utils/cloest-ancestor/ClosestAncestor\";\nimport \"./AncestorPath\";\nimport { formatText } from \"@/utils/StringUtil\";\n\nconst errors = [];\nconst errorDetails = [];\nclass SeqErrorListener extends antlr4.error.ErrorListener {\n  syntaxError(recognizer, offendingSymbol, line, column, msg) {\n    errors.push(`${offendingSymbol} line ${line}, col ${column}: ${msg}`);\n    errorDetails.push({\n      line,\n      column,\n      msg,\n    });\n  }\n}\n\nfunction rootContext(code) {\n  const chars = new antlr4.InputStream(code);\n  const lexer = new sequenceLexer(chars);\n  const tokens = new antlr4.CommonTokenStream(lexer);\n  const parser = new sequenceParser(tokens);\n  parser.addErrorListener(new SeqErrorListener());\n  return parser._syntaxErrors ? null : parser.prog();\n}\n\nantlr4.ParserRuleContext.prototype.getFormattedText = function () {\n  const code = this.parser.getTokenStream().getText(this.getSourceInterval());\n  // remove extra quotes, spaces and new lines\n  return formatText(code);\n};\n\n// Comment is where users have the most flexibility. The parser should make minimal assumptions about\n// the content and the style including change of line, indentation, etc.\nantlr4.ParserRuleContext.prototype.getComment = function () {\n  let tokenIndex = this.start.tokenIndex;\n  let channel = sequenceLexer.channelNames.indexOf(\"COMMENT_CHANNEL\");\n  if (this.constructor.name === \"BraceBlockContext\") {\n    tokenIndex = this.stop.tokenIndex;\n  }\n  let hiddenTokensToLeft = this.parser\n    .getTokenStream()\n    .getHiddenTokensToLeft(tokenIndex, channel);\n  return (\n    hiddenTokensToLeft &&\n    hiddenTokensToLeft\n      .map((t) => t.text.substring(2)) // skip '//'\n      .join(\"\\n\")\n  );\n};\n\nantlr4.ParserRuleContext.prototype.returnedValue = function () {\n  return this.braceBlock().block().ret().value();\n};\n\nexport const ProgContext = sequenceParser.ProgContext;\nexport const RootContext = rootContext;\nexport const GroupContext = sequenceParser.GroupContext;\nexport const ParticipantContext = sequenceParser.ParticipantContext;\nexport const Depth = function (ctx) {\n  const childFragmentDetector = ChildFragmentDetector;\n  return childFragmentDetector.depth(childFragmentDetector)(ctx);\n};\nexport const Participants = function (ctx) {\n  const toCollector = ToCollector;\n  return toCollector.getParticipants(ctx);\n};\n\nexport default {\n  RootContext: rootContext,\n  ProgContext: sequenceParser.ProgContext,\n  GroupContext: sequenceParser.GroupContext,\n  ParticipantContext: sequenceParser.ParticipantContext,\n  Participants: function (ctx) {\n    const toCollector = ToCollector;\n    return toCollector.getParticipants(ctx);\n  },\n  Errors: errors,\n  ErrorDetails: errorDetails,\n  /**\n   * @return {number} how many levels of embedded fragments\n   */\n  Depth: function (ctx) {\n    const childFragmentDetector = ChildFragmentDetector;\n    return childFragmentDetector.depth(childFragmentDetector)(ctx);\n  },\n};\n","export enum TextType {\n  MessageContent,\n  ParticipantName,\n}\n\nexport interface WidthFunc {\n  (text: string, type: TextType): number;\n}\n","let dic: Record<string, any> = {};\nconst persistDic: Record<string, any> = {};\n\nexport const getCache = (key: string | undefined): any => {\n  if (key != null) {\n    const cacheValue = dic[key] ?? persistDic[key];\n    return cacheValue !== undefined ? cacheValue : null;\n  }\n  return null;\n};\n\nexport const setCache = (key: string, value: any, persist: boolean = false) => {\n  dic[key] = value;\n  if (persist) {\n    persistDic[key] = value;\n  }\n};\n\n//Need call clearCache before rendering.\nexport const clearCache = () => {\n  dic = {};\n};\n","import { TextType } from \"@/positioning/Coordinate\";\nimport { getCache, setCache } from \"./../utils/RenderingCache\";\nimport logger from \"@/logger/logger\";\n\nconst FONT_FAMILY = \"Helvetica, Verdana, serif\";\nconst FONT_SIZE_PARTICIPANT = \"16px\"; // 1rem — used for ALL measurements (see getFontSpec comment)\nconst FONT_SIZE_FRAGMENT = \"14px\";\n\nfunction getFontSpec(): string {\n  // WidthProviderOnBrowser has a latent bug: it creates a hidden div with\n  // fontSize set once on the first call (always 16px for participant names,\n  // since withParticipantGaps runs before withMessageGaps in Coordinates).\n  // The div is reused for all subsequent calls without updating fontSize,\n  // so ALL measurements effectively happen at 16px.\n  // To match HTML Coordinates output, we always use 16px here too.\n  return `${FONT_SIZE_PARTICIPANT} ${FONT_FAMILY}`;\n}\n\nlet canvasCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null = null;\n\n/** Inject a custom canvas context (e.g., from @napi-rs/canvas for accurate text measurement in Node/Bun). */\nexport function setCanvasContext(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null): void {\n  canvasCtx = ctx;\n}\n\nfunction getCanvasContext(): CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null {\n  if (canvasCtx) return canvasCtx;\n  try {\n    if (typeof OffscreenCanvas !== \"undefined\") {\n      canvasCtx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n      logger.debug(\"[ZenUML] WidthProviderOnCanvas: using OffscreenCanvas\");\n    } else if (typeof document !== \"undefined\") {\n      canvasCtx = document.createElement(\"canvas\").getContext(\"2d\");\n      logger.debug(\"[ZenUML] WidthProviderOnCanvas: using <canvas> element\");\n    } else {\n      logger.debug(\"[ZenUML] WidthProviderOnCanvas: no canvas available, using character estimate fallback\");\n    }\n  } catch {\n    logger.debug(\"[ZenUML] WidthProviderOnCanvas: canvas creation failed, using character estimate fallback\");\n  }\n  return canvasCtx;\n}\n\nexport function WidthProviderOnCanvas(\n  text: string,\n  type: TextType,\n): number {\n  // Trim whitespace to match browser behavior: DOM scrollWidth (used by\n  // WidthProviderOnBrowser) ignores leading/trailing spaces because the hidden\n  // div has display:inline + width:0px.  Canvas measureText includes them,\n  // so we trim to keep both providers consistent.\n  const measured = text.trim();\n  const cacheKey = `WidthProviderOnCanvas_${measured}_${type}`;\n  const cacheValue = getCache(cacheKey);\n  if (cacheValue != null) {\n    return cacheValue;\n  }\n\n  const ctx = getCanvasContext();\n  if (!ctx) {\n    // Fallback: estimate based on character count (always 16px to match browser)\n    const width = Math.ceil(measured.length * 16 * 0.6);\n    setCache(cacheKey, width, true);\n    return width;\n  }\n\n  ctx.font = getFontSpec();\n  const width = Math.round(ctx.measureText(measured).width);\n  setCache(cacheKey, width, true);\n  return width;\n}\n\n// eslint-disable-next-line no-misleading-character-class\nconst EMOJI_PATTERN = /[\\u{1F300}-\\u{1FAFF}\\u{2600}-\\u{27BF}\\u{FE00}-\\u{FE0F}\\u{200D}]/u;\n\n/**\n * Measure text width using SVG <text> element (accurate for emoji).\n * Canvas measureText returns wider values for emoji than SVG actually renders.\n */\nfunction measureWithSvg(text: string, fontSize: string): number | null {\n  if (typeof document === \"undefined\") return null;\n  const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n  svg.setAttribute(\"style\", \"position:absolute;left:-9999px;top:-9999px\");\n  const textEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n  textEl.setAttribute(\"font-family\", FONT_FAMILY);\n  textEl.setAttribute(\"font-size\", fontSize);\n  textEl.textContent = text;\n  svg.appendChild(textEl);\n  document.body.appendChild(svg);\n  const width = textEl.getBBox().width;\n  document.body.removeChild(svg);\n  return width;\n}\n\nexport function measureTextWithFont(text: string, fontSize: string): number {\n  const measured = text.trim();\n  if (!measured) return 0;\n\n  // Use SVG measurement for text containing emoji — canvas measureText\n  // returns wider values for emoji glyphs than SVG <text> actually renders.\n  const hasEmoji = EMOJI_PATTERN.test(measured);\n  const cacheKey = hasEmoji\n    ? `measureTextWithFont_svg_${fontSize}_${measured}`\n    : `measureTextWithFont_${fontSize}_${measured}`;\n  const cacheValue = getCache(cacheKey);\n  if (cacheValue != null) {\n    return cacheValue;\n  }\n\n  if (hasEmoji) {\n    const svgWidth = measureWithSvg(measured, fontSize);\n    if (svgWidth != null) {\n      setCache(cacheKey, svgWidth, true);\n      return svgWidth;\n    }\n  }\n\n  const ctx = getCanvasContext();\n  if (!ctx) {\n    const px = Number.parseFloat(fontSize) || 14;\n    const width = Math.ceil(measured.length * px * 0.6);\n    setCache(cacheKey, width, true);\n    return width;\n  }\n\n  ctx.font = `${fontSize} ${FONT_FAMILY}`;\n  const width = ctx.measureText(measured).width;\n  setCache(cacheKey, width, true);\n  return width;\n}\n\nexport function measureSvgFragmentLabelWidth(text: string): number {\n  return measureTextWithFont(text, FONT_SIZE_FRAGMENT);\n}\n\nexport function measureSvgParticipantLabelWidth(text: string): number {\n  return measureTextWithFont(text, FONT_SIZE_PARTICIPANT);\n}\n\nexport default function WidthProviderOnBrowser(\n  text: string,\n  type: TextType,\n): number {\n  const cacheKey = `WidthProviderOnBrowser_${text}_${type}`;\n  const cacheValue = getCache(cacheKey);\n  if (cacheValue != null) {\n    return cacheValue;\n  }\n  let hiddenDiv = document.querySelector(\n    \".textarea-hidden-div\",\n  ) as HTMLDivElement;\n  if (!hiddenDiv) {\n    const newDiv = document.createElement(\"div\");\n    newDiv.className = \"textarea-hidden-div \";\n    newDiv.style.fontSize =\n      type === TextType.MessageContent ? \"0.875rem\" : \"1rem\";\n    newDiv.style.fontFamily = \"Helvetica, Verdana, serif\";\n    newDiv.style.display = \"inline\";\n    // newDiv.style.zIndex = '-9999';\n    newDiv.style.whiteSpace = \"nowrap\";\n    newDiv.style.visibility = \"hidden\";\n    newDiv.style.position = \"absolute\";\n    newDiv.style.top = \"0\";\n    newDiv.style.left = \"0\";\n    newDiv.style.overflow = \"hidden\";\n    newDiv.style.width = \"0px\";\n    // newDiv.style.height = '0px';\n    newDiv.style.paddingLeft = \"0px\";\n    newDiv.style.paddingRight = \"0px\";\n    newDiv.style.margin = \"0px\";\n    newDiv.style.border = \"0px\";\n    document.body.appendChild(newDiv);\n    hiddenDiv = newDiv;\n  }\n  // hiddenDiv.className = 'textarea-hidden-div ' + (type === TextType.ParticipantName ? 'participant' : 'message');\n\n  hiddenDiv.textContent = text;\n  const scrollWidth = hiddenDiv.scrollWidth;\n  setCache(cacheKey, scrollWidth, true);\n  return scrollWidth;\n}\n","export const FRAGMENT_PADDING_X = 10;\nexport const FRAGMENT_MIN_WIDTH = 100;\nexport const MARGIN = 20;\nexport const ARROW_HEAD_WIDTH = 10;\nexport const OCCURRENCE_WIDTH = 15;\nexport const OCCURRENCE_BAR_SIDE_WIDTH = (OCCURRENCE_WIDTH - 1) / 2; // Width of each side of the occurrence bar\n\n// also used in css `.zenuml .participant { min-width: 88px; }`\nexport const MIN_PARTICIPANT_WIDTH = 80;\nexport const PARTICIPANT_HEIGHT = 70;\n// Width allocated for the icon column on the left of an iconed participant.\nexport const PARTICIPANT_ICON_WIDTH = 40;\n\nexport const LIFELINE_WIDTH = 1;\n\n// Height constants for calculated positioning\nexport const STATEMENT_CONTAINER_MARGIN = 16; // my-4 class = margin-y: 1rem\nexport const COMMENT_LINE_HEIGHT = 20;\nexport const MESSAGE_HEIGHT = 16; // sync/async/return messages\nexport const CREATION_MESSAGE_HEIGHT = 62; // creation message total height\nexport const SELF_INVOCATION_SYNC_HEIGHT = 55; // 16px message + 24px SVG\nexport const SELF_INVOCATION_ASYNC_HEIGHT = 54; // 20px message + 34px SVG\nexport const FRAGMENT_HEADER_HEIGHT = 25;\nexport const FRAGMENT_BORDER_WIDTH = 1;\nexport const FRAGMENT_MARGIN = 16;\nexport const FRAGMENT_PADDING_BOTTOM = 10;\nexport const PARTICIPANT_TOP_SPACE_FOR_GROUP = 20;\nexport const CREATION_LIFELINE_OFFSET = 48;\nexport const OCCURRENCE_WITH_CHILDREN_HEIGHT = 20;\nexport const OCCURRENCE_EMPTY_HEIGHT = 24;\n","export enum OwnableMessageType {\n  SyncMessage = 0,\n  AsyncMessage = 1,\n  CreationMessage = 2,\n  ReturnMessage = 3,\n}\n\nexport interface OwnableMessage {\n  from: string;\n  to: string;\n  signature: string;\n  type: OwnableMessageType;\n}\n","import { OwnableMessage, OwnableMessageType } from \"./OwnableMessage\";\nimport antlr4 from \"antlr4\";\n\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\n\nexport class MessageCollector extends sequenceParserListener {\n  private isBlind = false;\n  private ownableMessages: Array<OwnableMessage> = [];\n\n  enterMessage = (ctx: any) =>\n    this._addOwnedMessage(OwnableMessageType.SyncMessage)(ctx);\n  enterAsyncMessage = (ctx: any) =>\n    this._addOwnedMessage(OwnableMessageType.AsyncMessage)(ctx);\n  enterCreation = (ctx: any) =>\n    this._addOwnedMessage(OwnableMessageType.CreationMessage)(ctx);\n  enterReturnAsyncMessage = (ctx: any) =>\n    this._addOwnedMessage(OwnableMessageType.ReturnMessage)(ctx);\n  enterRet = (ctx: any) => {\n    if (ctx.asyncMessage() || ctx.returnAsyncMessage()) {\n      // it will visit the asyncMessage/returnAsyncMessage later\n      return;\n    }\n    this._addOwnedMessage(OwnableMessageType.ReturnMessage)(ctx);\n  };\n\n  private _addOwnedMessage = (type: OwnableMessageType) => (ctx: any) => {\n    if (this.isBlind) {\n      return;\n    }\n    const from = ctx.From();\n    const owner = ctx?.Owner();\n    let signature = ctx?.SignatureText();\n    if (from === owner && ctx.Assignment) {\n      // @ts-expect-error -- ANTLR generated code\n      const assignment = ctx.Assignment();\n      if (assignment) {\n        signature = `${assignment.getText()} = ${signature}`;\n      }\n    }\n    this.ownableMessages.push({\n      from: from,\n      signature: signature,\n      type,\n      to: owner,\n    });\n  };\n\n  enterParameters() {\n    this.isBlind = true;\n  }\n\n  exitParameters() {\n    this.isBlind = false;\n  }\n\n  result() {\n    return this.ownableMessages;\n  }\n}\n\n// Returns all messages grouped by owner participant\nexport function AllMessages(ctx: any) {\n  if (!ctx) return [];\n  const walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\n  const listener = new MessageCollector();\n  walker.walk(listener, ctx);\n  return listener.result();\n}\n","import ToCollector from \"@/parser/ToCollector\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport { blankParticipant } from \"@/parser/Participants\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\n\nexport const _STARTER_ = \"_STARTER_\";\n\n// Define a class that implements IParticipantModel\nclass Participant implements IParticipantModel {\n  name: string;\n  left: string;\n  label?: string;\n  type?: string;\n  stereotype?: string;\n  color?: string;\n  emoji?: string;\n  groupId?: string | number;\n\n  constructor(name: string, left: string, label?: string, type?: string, stereotype?: string, color?: string, groupId?: string | number, emoji?: string) {\n    this.name = name;\n    this.left = left;\n    this.label = label;\n    this.type = type;\n    this.stereotype = stereotype;\n    this.color = color;\n    this.groupId = groupId;\n    this.emoji = emoji;\n  }\n\n  getDisplayName(): string {\n    return this.label || this.name;\n  }\n\n  hasIcon(): boolean {\n    // Only participants with a defined type property have icons\n    return this.type !== undefined;\n  }\n}\n\nexport function OrderedParticipants(rootContext: any): IParticipantModel[] {\n  if (!rootContext) return [];\n  // @ts-expect-error type\n  const participants = ToCollector.getParticipants(rootContext);\n  const participantEntries = Array.from(participants.participants.entries());\n\n  const allMessages = AllMessages(rootContext);\n\n  const emptyContext =\n    allMessages.length === 0 && participantEntries.length === 0;\n  const someMessagesMissFrom = allMessages.some((m) => !m.from);\n  const needDefaultStarter = emptyContext || someMessagesMissFrom;\n  if (needDefaultStarter) {\n    participantEntries.unshift([\n      _STARTER_,\n      { ...blankParticipant, name: _STARTER_, isStarter: true },\n    ]);\n  }\n  return participantEntries.map((entry: any, index: number, entries: any) => {\n    const participant = entry[1];\n    const previousName = index > 0 ? entries[index - 1][1].name : \"\";\n\n    return new Participant(\n      participant.name,\n      previousName,\n      participant.label,\n      participant.type,\n      participant.stereotype,\n      participant.color,\n      participant.groupId,\n      participant.emoji,\n    );\n  });\n}\n","interface IDual {\n  position: number;\n  velocity: number;\n}\n\n// Dual numbers represent linear functions of time.\nfunction Dual(p: number, v: number) {\n  return { position: p, velocity: v };\n}\n\n// Adds dual numbers x and y.\nfunction dualPlus(x: IDual, y: IDual) {\n  return Dual(x.position + y.position, x.velocity + y.velocity);\n}\n\nconst epsilon = Math.sqrt(Number.EPSILON);\n\n// Compares dual numbers x and y by their position at a time infinitesimally\n// after now.\nfunction dualLessThan(x: IDual, y: IDual) {\n  const d = x.position - y.position;\n  return d < -epsilon || (Math.abs(d) <= epsilon && x.velocity < y.velocity);\n}\n\n// Tracks delta, the length of time for which every pair of arguments to\n// .dualLessThan() maintains the present relation.\nfunction DeltaTracker() {\n  return {\n    delta: Infinity,\n    dualLessThan: function (x: IDual, y: IDual) {\n      const lessThan = dualLessThan(x, y);\n      if (lessThan) {\n        [x, y] = [y, x];\n      }\n      if (x.velocity < y.velocity) {\n        this.delta = Math.min(\n          this.delta,\n          (x.position - y.position) / (y.velocity - x.velocity),\n        );\n      }\n      return lessThan;\n    },\n  };\n}\n\n// Converts the adjacency matrix to an adjacency list representation.\nfunction graphFromMatrix(n: number, matrix: Array<Array<number>>) {\n  const graph = Array<any>();\n  for (let j = 0; j < n; j++) {\n    graph.push([]);\n    for (let i = 0; i < j; i++) {\n      if (matrix[i][j] > 0) {\n        graph[j].push({ i: i, length: Dual(matrix[i][j], 0) });\n      }\n    }\n  }\n  return graph;\n}\n\n// Essentially the usual algorithm for longest path, but tracks delta.\nfunction longestPathTable(graph: any, gaps: Array<any>): any {\n  const tracker = DeltaTracker();\n  let maximum = Dual(0, 0);\n  const table = [];\n  for (let j = 0; j < graph.length; j++) {\n    let argument = null;\n    if (j > 0) {\n      maximum = dualPlus(maximum, gaps[j - 1]);\n    }\n    for (const edge of graph[j]) {\n      const x = dualPlus(table[edge.i].maximum, edge.length);\n      if (tracker.dualLessThan(maximum, x)) {\n        argument = edge.i;\n        maximum = x;\n      }\n    }\n    table.push({ argument: argument, maximum: maximum });\n  }\n  return [tracker.delta, table];\n}\n\n// Essentially the usual algorithm for decoding the longest path from the\n// dynamic program table.\nfunction freezeCriticalGaps(table: any, graph: any, gaps: Array<any>) {\n  let j = table.length - 1;\n  while (j > 0) {\n    const argument = table[j].argument;\n    if (argument !== null) {\n      j = argument;\n    } else {\n      j--;\n      gaps[j].velocity = 0;\n    }\n  }\n}\n\n// Changes the time from now to now + delta.\nfunction advanceGaps(gaps: Array<IDual>, delta: number) {\n  for (let i = 0; i < gaps.length; i++) {\n    gaps[i].position += gaps[i].velocity * delta;\n  }\n}\n\n// Extracts the final result from the dynamic program table.\nfunction positionsFromTable(table: any) {\n  const positions = [];\n  for (const entry of table) {\n    positions.push(entry.maximum.position);\n  }\n  return positions;\n}\n\n// Entry point for the layout algorithm.\nfunction find_optimal(matrix: Array<Array<number>>) {\n  const n = matrix.length;\n  const graph = graphFromMatrix(n, matrix);\n  const gaps = [];\n  for (let j = 1; j < n; j++) {\n    gaps.push(Dual(0, 1));\n  }\n   \n  while (true) {\n    const [delta, table] = longestPathTable(graph, gaps);\n    if (delta == Infinity) {\n      return positionsFromTable(table);\n    }\n    if (table[n - 1].maximum.velocity > 0) {\n      freezeCriticalGaps(table, graph, gaps);\n    } else {\n      advanceGaps(gaps, delta);\n    }\n  }\n}\n\nexport { find_optimal };\n","import {\n  ARROW_HEAD_WIDTH,\n  MARGIN,\n  MIN_PARTICIPANT_WIDTH,\n  OCCURRENCE_WIDTH,\n  PARTICIPANT_ICON_WIDTH,\n} from \"./Constants\";\nimport { TextType } from \"./Coordinate\";\nimport type { WidthFunc } from \"./Coordinate\";\nimport { _STARTER_, OrderedParticipants } from \"@/parser/OrderedParticipants\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\nimport logger from \"@/logger/logger\";\nimport { find_optimal } from \"./david/DavidEisenstat\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport { OwnableMessageType } from \"@/parser/OwnableMessage\";\nimport type { OwnableMessage } from \"@/parser/OwnableMessage\";\nimport { clearCache, getCache, setCache } from \"@/utils/RenderingCache\";\n\nexport class Coordinates {\n  private m: Array<Array<number>> = [];\n  private readonly widthProvider: WidthFunc;\n  private readonly participantModels: IParticipantModel[];\n  private readonly ownableMessages: OwnableMessage[];\n\n  constructor(ctx: any, widthProvider: WidthFunc) {\n    clearCache();\n    this.participantModels = OrderedParticipants(ctx);\n    this.ownableMessages = AllMessages(ctx);\n\n    this.widthProvider = widthProvider;\n    this.walkThrough();\n  }\n\n  orderedParticipantNames(): string[] {\n    return this.participantModels.map((p) => p.name);\n  }\n\n  getPosition(participantName: string | undefined): number {\n    if (!participantName) return 0;\n\n    const participant = this.getParticipantModel(participantName);\n    if (!participant) {\n      console.warn(`Participant ${participantName} not found`);\n      return 0;\n    }\n\n    const cacheKey = `getPosition_${participantName}`;\n    const cachedPosition = getCache(cacheKey);\n    if (cachedPosition != null) {\n      return cachedPosition;\n    }\n\n    const pIndex = this.participantModels.findIndex(\n      (p) => p.name === participantName,\n    );\n    const leftGap = this.getParticipantGap(this.participantModels[0]);\n    // const leftGap = 0;\n    const position = leftGap + find_optimal(this.m)[pIndex];\n    setCache(cacheKey, position);\n    logger.debug(`Position of ${participantName} is ${position}`);\n    return position;\n  }\n\n  walkThrough() {\n    this.withParticipantGaps(this.participantModels);\n    this.withMessageGaps(this.ownableMessages, this.participantModels);\n  }\n\n  half(participantName: string): number {\n    const participant = this.getParticipantModel(participantName);\n    return participant ? this._getParticipantWidth(participant) / 2 : 0;\n  }\n\n  left(participantName: string): number {\n    return this.getPosition(participantName) - this.half(participantName);\n  }\n\n  right(participantName: string): number {\n    return this.getPosition(participantName) + this.half(participantName);\n  }\n\n  getWidth(): number {\n    const lastParticipant =\n      this.participantModels[this.participantModels.length - 1].name;\n    const calculatedWidth =\n      this.getPosition(lastParticipant) + this.half(lastParticipant);\n    return Math.max(calculatedWidth, 200);\n  }\n\n  distance(left: string, right: string) {\n    return this.getPosition(right) - this.getPosition(left);\n  }\n\n  getMessageWidth(message: OwnableMessage) {\n    const halfSelf = this.half(message.to);\n    let messageWidth = this.widthProvider(\n      message.signature,\n      TextType.MessageContent,\n    );\n    // hack for creation message\n    if (message.type === OwnableMessageType.CreationMessage) {\n      messageWidth += halfSelf;\n    }\n    return messageWidth;\n  }\n\n  private withMessageGaps(\n    ownableMessages: OwnableMessage[],\n    participantModels: IParticipantModel[],\n  ) {\n    for (const message of ownableMessages) {\n      if (!message.from) {\n        message.from = _STARTER_;\n      }\n      const indexFrom = participantModels.findIndex(\n        (p) => p.name === message.from,\n      );\n      const indexTo = participantModels.findIndex((p) => p.name === message.to);\n      if (indexFrom === -1 || indexTo === -1) {\n        console.warn(`Participant ${message.from} or ${message.to} not found`);\n        continue;\n      }\n      const leftIndex = Math.min(indexFrom, indexTo);\n      const rightIndex = Math.max(indexFrom, indexTo);\n      try {\n        const messageWidth = this.getMessageWidth(message);\n        this.m[leftIndex][rightIndex] = Math.max(\n          messageWidth + ARROW_HEAD_WIDTH + OCCURRENCE_WIDTH,\n          this.m[leftIndex][rightIndex],\n        );\n      } catch {\n        console.warn(\n          `Could not set message gap between ${message.from} and ${message.to}`,\n        );\n      }\n    }\n  }\n  private withParticipantGaps(participantModels: IParticipantModel[]) {\n    this.m = participantModels.map((_, i) => {\n      return participantModels.map((v, j) => {\n        return j - i === 1 ? this.getParticipantGap(v) : 0;\n      });\n    });\n  }\n\n  private getParticipantGap(p: IParticipantModel) {\n    return this.half(p.left) + this.half(p.name);\n  }\n\n  private getParticipantModel(name: string): IParticipantModel | undefined {\n    return this.participantModels.find((p) => p.name === name);\n  }\n\n  private _getParticipantWidth(participant: IParticipantModel) {\n    const cacheKey = `getParticipantWidth_${participant.name}`;\n    const cachedWidth = getCache(cacheKey);\n    if (cachedWidth != null) {\n      return cachedWidth;\n    }\n\n    // Calculate base width from participant display name or minimum width\n    // Add icon width if the participant has an icon\n    // Icon's total width is 32px (24px for icon + 8px for margin)\n    const hasIcon = participant.hasIcon();\n    const iconWidth = hasIcon ? PARTICIPANT_ICON_WIDTH : 0;\n    // Emoji character (~16px glyph + em-space) adds width when present\n    const emojiWidth = participant.emoji ? 24 : 0;\n\n    const labelWidth = this.widthProvider(\n      participant.getDisplayName(),\n      TextType.ParticipantName,\n    );\n    const participantWidth =\n      Math.max(labelWidth + iconWidth + emojiWidth, MIN_PARTICIPANT_WIDTH) + MARGIN;\n\n    setCache(cacheKey, participantWidth);\n    logger.debug(\n      `Width of ${participant.name} is ${participantWidth}; labelWidth: ${labelWidth}`,\n    );\n    return participantWidth;\n  }\n}\n","export const createStatementKey = (statement: any): string => {\n  if (!statement?.start || !statement?.stop) {\n    return \"\";\n  }\n  return `${statement.start.start}-${statement.stop.stop}`;\n};\n","import { BlockVM } from \"./BlockVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport type { StatementKind } from \"../StatementTypes\";\n\nexport abstract class NodeVM {\n  constructor(\n    protected readonly context: any,\n    protected readonly runtime: LayoutRuntime,\n  ) {}\n\n  protected layoutBlock(\n    blockContext: any,\n    origin: string,\n    startTop: number,\n    parentKind?: StatementKind,\n  ): number {\n    if (!blockContext) {\n      return startTop;\n    }\n    return new BlockVM(blockContext, this.runtime).layout(\n      origin,\n      startTop,\n      parentKind,\n    );\n  }\n}\n","import { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { Participants } from \"@/parser\";\n\n/**\n * Returns the names of the local participants.\n * Given the following code:\n * A B C.method { D->E.method }\n * The local participants of\n * D.method { E.method }: [_STARTER_, D, E]\n * E.method:              [D, E]\n * @param ctx\n */\nexport function getLocalParticipantNames(ctx: any): string[] {\n  if (!ctx) return [];\n  return [ctx.Origin() || _STARTER_, ...Participants(ctx).Names()];\n}\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n  return {\n    async: false,\n    baseUrl: null,\n    breaks: false,\n    extensions: null,\n    gfm: true,\n    headerIds: true,\n    headerPrefix: '',\n    highlight: null,\n    hooks: null,\n    langPrefix: 'language-',\n    mangle: true,\n    pedantic: false,\n    renderer: null,\n    sanitize: false,\n    sanitizer: null,\n    silent: false,\n    smartypants: false,\n    tokenizer: null,\n    walkTokens: null,\n    xhtml: false\n  };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n  defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n  if (encode) {\n    if (escapeTest.test(html)) {\n      return html.replace(escapeReplace, getEscapeReplacement);\n    }\n  } else {\n    if (escapeTestNoEncode.test(html)) {\n      return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n    }\n  }\n\n  return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n  // explicitly match decimal, hex, and named HTML entities\n  return html.replace(unescapeTest, (_, n) => {\n    n = n.toLowerCase();\n    if (n === 'colon') return ':';\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n    return '';\n  });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n  regex = typeof regex === 'string' ? regex : regex.source;\n  opt = opt || '';\n  const obj = {\n    replace: (name, val) => {\n      val = val.source || val;\n      val = val.replace(caret, '$1');\n      regex = regex.replace(name, val);\n      return obj;\n    },\n    getRegex: () => {\n      return new RegExp(regex, opt);\n    }\n  };\n  return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n  if (sanitize) {\n    let prot;\n    try {\n      prot = decodeURIComponent(unescape(href))\n        .replace(nonWordAndColonTest, '')\n        .toLowerCase();\n    } catch (e) {\n      return null;\n    }\n    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n      return null;\n    }\n  }\n  if (base && !originIndependentUrl.test(href)) {\n    href = resolveUrl(base, href);\n  }\n  try {\n    href = encodeURI(href).replace(/%25/g, '%');\n  } catch (e) {\n    return null;\n  }\n  return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n  if (!baseUrls[' ' + base]) {\n    // we can ignore everything in base after the last slash of its path component,\n    // but we might need to add _that_\n    // https://tools.ietf.org/html/rfc3986#section-3\n    if (justDomain.test(base)) {\n      baseUrls[' ' + base] = base + '/';\n    } else {\n      baseUrls[' ' + base] = rtrim(base, '/', true);\n    }\n  }\n  base = baseUrls[' ' + base];\n  const relativeBase = base.indexOf(':') === -1;\n\n  if (href.substring(0, 2) === '//') {\n    if (relativeBase) {\n      return href;\n    }\n    return base.replace(protocol, '$1') + href;\n  } else if (href.charAt(0) === '/') {\n    if (relativeBase) {\n      return href;\n    }\n    return base.replace(domain, '$1') + href;\n  } else {\n    return base + href;\n  }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n  // ensure that every cell-delimiting pipe has a space\n  // before it to distinguish it from an escaped pipe\n  const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n      let escaped = false,\n        curr = offset;\n      while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n      if (escaped) {\n        // odd number of slashes means | is escaped\n        // so we leave it alone\n        return '|';\n      } else {\n        // add space before unescaped |\n        return ' |';\n      }\n    }),\n    cells = row.split(/ \\|/);\n  let i = 0;\n\n  // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n  if (!cells[0].trim()) { cells.shift(); }\n  if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n  if (cells.length > count) {\n    cells.splice(count);\n  } else {\n    while (cells.length < count) cells.push('');\n  }\n\n  for (; i < cells.length; i++) {\n    // leading or trailing whitespace is ignored per the gfm spec\n    cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n  }\n  return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n  const l = str.length;\n  if (l === 0) {\n    return '';\n  }\n\n  // Length of suffix matching the invert condition.\n  let suffLen = 0;\n\n  // Step left until we fail to match the invert condition.\n  while (suffLen < l) {\n    const currChar = str.charAt(l - suffLen - 1);\n    if (currChar === c && !invert) {\n      suffLen++;\n    } else if (currChar !== c && invert) {\n      suffLen++;\n    } else {\n      break;\n    }\n  }\n\n  return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n  if (str.indexOf(b[1]) === -1) {\n    return -1;\n  }\n  const l = str.length;\n  let level = 0,\n    i = 0;\n  for (; i < l; i++) {\n    if (str[i] === '\\\\') {\n      i++;\n    } else if (str[i] === b[0]) {\n      level++;\n    } else if (str[i] === b[1]) {\n      level--;\n      if (level < 0) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n  if (opt && opt.sanitize && !opt.silent) {\n    console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n  }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n  if (count < 1) {\n    return '';\n  }\n  let result = '';\n  while (count > 1) {\n    if (count & 1) {\n      result += pattern;\n    }\n    count >>= 1;\n    pattern += pattern;\n  }\n  return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n  const href = link.href;\n  const title = link.title ? escape(link.title) : null;\n  const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n  if (cap[0].charAt(0) !== '!') {\n    lexer.state.inLink = true;\n    const token = {\n      type: 'link',\n      raw,\n      href,\n      title,\n      text,\n      tokens: lexer.inlineTokens(text)\n    };\n    lexer.state.inLink = false;\n    return token;\n  }\n  return {\n    type: 'image',\n    raw,\n    href,\n    title,\n    text: escape(text)\n  };\n}\n\nfunction indentCodeCompensation(raw, text) {\n  const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n  if (matchIndentToCode === null) {\n    return text;\n  }\n\n  const indentToCode = matchIndentToCode[1];\n\n  return text\n    .split('\\n')\n    .map(node => {\n      const matchIndentInNode = node.match(/^\\s+/);\n      if (matchIndentInNode === null) {\n        return node;\n      }\n\n      const [indentInNode] = matchIndentInNode;\n\n      if (indentInNode.length >= indentToCode.length) {\n        return node.slice(indentToCode.length);\n      }\n\n      return node;\n    })\n    .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  space(src) {\n    const cap = this.rules.block.newline.exec(src);\n    if (cap && cap[0].length > 0) {\n      return {\n        type: 'space',\n        raw: cap[0]\n      };\n    }\n  }\n\n  code(src) {\n    const cap = this.rules.block.code.exec(src);\n    if (cap) {\n      const text = cap[0].replace(/^ {1,4}/gm, '');\n      return {\n        type: 'code',\n        raw: cap[0],\n        codeBlockStyle: 'indented',\n        text: !this.options.pedantic\n          ? rtrim(text, '\\n')\n          : text\n      };\n    }\n  }\n\n  fences(src) {\n    const cap = this.rules.block.fences.exec(src);\n    if (cap) {\n      const raw = cap[0];\n      const text = indentCodeCompensation(raw, cap[3] || '');\n\n      return {\n        type: 'code',\n        raw,\n        lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n        text\n      };\n    }\n  }\n\n  heading(src) {\n    const cap = this.rules.block.heading.exec(src);\n    if (cap) {\n      let text = cap[2].trim();\n\n      // remove trailing #s\n      if (/#$/.test(text)) {\n        const trimmed = rtrim(text, '#');\n        if (this.options.pedantic) {\n          text = trimmed.trim();\n        } else if (!trimmed || / $/.test(trimmed)) {\n          // CommonMark requires space before trailing #s\n          text = trimmed.trim();\n        }\n      }\n\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[1].length,\n        text,\n        tokens: this.lexer.inline(text)\n      };\n    }\n  }\n\n  hr(src) {\n    const cap = this.rules.block.hr.exec(src);\n    if (cap) {\n      return {\n        type: 'hr',\n        raw: cap[0]\n      };\n    }\n  }\n\n  blockquote(src) {\n    const cap = this.rules.block.blockquote.exec(src);\n    if (cap) {\n      const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n      const top = this.lexer.state.top;\n      this.lexer.state.top = true;\n      const tokens = this.lexer.blockTokens(text);\n      this.lexer.state.top = top;\n      return {\n        type: 'blockquote',\n        raw: cap[0],\n        tokens,\n        text\n      };\n    }\n  }\n\n  list(src) {\n    let cap = this.rules.block.list.exec(src);\n    if (cap) {\n      let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n        line, nextLine, rawLine, itemContents, endEarly;\n\n      let bull = cap[1].trim();\n      const isordered = bull.length > 1;\n\n      const list = {\n        type: 'list',\n        raw: '',\n        ordered: isordered,\n        start: isordered ? +bull.slice(0, -1) : '',\n        loose: false,\n        items: []\n      };\n\n      bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n      if (this.options.pedantic) {\n        bull = isordered ? bull : '[*+-]';\n      }\n\n      // Get next list item\n      const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n      // Check if current bullet point can start a new List Item\n      while (src) {\n        endEarly = false;\n        if (!(cap = itemRegex.exec(src))) {\n          break;\n        }\n\n        if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n          break;\n        }\n\n        raw = cap[0];\n        src = src.substring(raw.length);\n\n        line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n        nextLine = src.split('\\n', 1)[0];\n\n        if (this.options.pedantic) {\n          indent = 2;\n          itemContents = line.trimLeft();\n        } else {\n          indent = cap[2].search(/[^ ]/); // Find first non-space char\n          indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n          itemContents = line.slice(indent);\n          indent += cap[1].length;\n        }\n\n        blankLine = false;\n\n        if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n          raw += nextLine + '\\n';\n          src = src.substring(nextLine.length + 1);\n          endEarly = true;\n        }\n\n        if (!endEarly) {\n          const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n          const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n          const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n          const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n          // Check if following lines should be included in List Item\n          while (src) {\n            rawLine = src.split('\\n', 1)[0];\n            nextLine = rawLine;\n\n            // Re-align to follow commonmark nesting rules\n            if (this.options.pedantic) {\n              nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n            }\n\n            // End list item if found code fences\n            if (fencesBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new heading\n            if (headingBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new bullet\n            if (nextBulletRegex.test(nextLine)) {\n              break;\n            }\n\n            // Horizontal rule found\n            if (hrRegex.test(src)) {\n              break;\n            }\n\n            if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n              itemContents += '\\n' + nextLine.slice(indent);\n            } else {\n              // not enough indentation\n              if (blankLine) {\n                break;\n              }\n\n              // paragraph continuation unless last line was a different block level element\n              if (line.search(/[^ ]/) >= 4) { // indented code block\n                break;\n              }\n              if (fencesBeginRegex.test(line)) {\n                break;\n              }\n              if (headingBeginRegex.test(line)) {\n                break;\n              }\n              if (hrRegex.test(line)) {\n                break;\n              }\n\n              itemContents += '\\n' + nextLine;\n            }\n\n            if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n              blankLine = true;\n            }\n\n            raw += rawLine + '\\n';\n            src = src.substring(rawLine.length + 1);\n            line = nextLine.slice(indent);\n          }\n        }\n\n        if (!list.loose) {\n          // If the previous item ended with a blank line, the list is loose\n          if (endsWithBlankLine) {\n            list.loose = true;\n          } else if (/\\n *\\n *$/.test(raw)) {\n            endsWithBlankLine = true;\n          }\n        }\n\n        // Check for task list items\n        if (this.options.gfm) {\n          istask = /^\\[[ xX]\\] /.exec(itemContents);\n          if (istask) {\n            ischecked = istask[0] !== '[ ] ';\n            itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n          }\n        }\n\n        list.items.push({\n          type: 'list_item',\n          raw,\n          task: !!istask,\n          checked: ischecked,\n          loose: false,\n          text: itemContents\n        });\n\n        list.raw += raw;\n      }\n\n      // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n      list.items[list.items.length - 1].raw = raw.trimRight();\n      list.items[list.items.length - 1].text = itemContents.trimRight();\n      list.raw = list.raw.trimRight();\n\n      const l = list.items.length;\n\n      // Item child tokens handled here at end because we needed to have the final item to trim it first\n      for (i = 0; i < l; i++) {\n        this.lexer.state.top = false;\n        list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n        if (!list.loose) {\n          // Check if list should be loose\n          const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n          const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n          list.loose = hasMultipleLineBreaks;\n        }\n      }\n\n      // Set all items to loose if list is loose\n      if (list.loose) {\n        for (i = 0; i < l; i++) {\n          list.items[i].loose = true;\n        }\n      }\n\n      return list;\n    }\n  }\n\n  html(src) {\n    const cap = this.rules.block.html.exec(src);\n    if (cap) {\n      const token = {\n        type: 'html',\n        raw: cap[0],\n        pre: !this.options.sanitizer\n          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n        text: cap[0]\n      };\n      if (this.options.sanitize) {\n        const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n        token.type = 'paragraph';\n        token.text = text;\n        token.tokens = this.lexer.inline(text);\n      }\n      return token;\n    }\n  }\n\n  def(src) {\n    const cap = this.rules.block.def.exec(src);\n    if (cap) {\n      const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n      const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n      const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n      return {\n        type: 'def',\n        tag,\n        raw: cap[0],\n        href,\n        title\n      };\n    }\n  }\n\n  table(src) {\n    const cap = this.rules.block.table.exec(src);\n    if (cap) {\n      const item = {\n        type: 'table',\n        header: splitCells(cap[1]).map(c => { return { text: c }; }),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n      };\n\n      if (item.header.length === item.align.length) {\n        item.raw = cap[0];\n\n        let l = item.align.length;\n        let i, j, k, row;\n        for (i = 0; i < l; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        l = item.rows.length;\n        for (i = 0; i < l; i++) {\n          item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n        }\n\n        // parse child tokens inside headers and cells\n\n        // header child tokens\n        l = item.header.length;\n        for (j = 0; j < l; j++) {\n          item.header[j].tokens = this.lexer.inline(item.header[j].text);\n        }\n\n        // cell child tokens\n        l = item.rows.length;\n        for (j = 0; j < l; j++) {\n          row = item.rows[j];\n          for (k = 0; k < row.length; k++) {\n            row[k].tokens = this.lexer.inline(row[k].text);\n          }\n        }\n\n        return item;\n      }\n    }\n  }\n\n  lheading(src) {\n    const cap = this.rules.block.lheading.exec(src);\n    if (cap) {\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[2].charAt(0) === '=' ? 1 : 2,\n        text: cap[1],\n        tokens: this.lexer.inline(cap[1])\n      };\n    }\n  }\n\n  paragraph(src) {\n    const cap = this.rules.block.paragraph.exec(src);\n    if (cap) {\n      const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n        ? cap[1].slice(0, -1)\n        : cap[1];\n      return {\n        type: 'paragraph',\n        raw: cap[0],\n        text,\n        tokens: this.lexer.inline(text)\n      };\n    }\n  }\n\n  text(src) {\n    const cap = this.rules.block.text.exec(src);\n    if (cap) {\n      return {\n        type: 'text',\n        raw: cap[0],\n        text: cap[0],\n        tokens: this.lexer.inline(cap[0])\n      };\n    }\n  }\n\n  escape(src) {\n    const cap = this.rules.inline.escape.exec(src);\n    if (cap) {\n      return {\n        type: 'escape',\n        raw: cap[0],\n        text: escape(cap[1])\n      };\n    }\n  }\n\n  tag(src) {\n    const cap = this.rules.inline.tag.exec(src);\n    if (cap) {\n      if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n        this.lexer.state.inLink = true;\n      } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n        this.lexer.state.inLink = false;\n      }\n      if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.lexer.state.inRawBlock = true;\n      } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.lexer.state.inRawBlock = false;\n      }\n\n      return {\n        type: this.options.sanitize\n          ? 'text'\n          : 'html',\n        raw: cap[0],\n        inLink: this.lexer.state.inLink,\n        inRawBlock: this.lexer.state.inRawBlock,\n        text: this.options.sanitize\n          ? (this.options.sanitizer\n            ? this.options.sanitizer(cap[0])\n            : escape(cap[0]))\n          : cap[0]\n      };\n    }\n  }\n\n  link(src) {\n    const cap = this.rules.inline.link.exec(src);\n    if (cap) {\n      const trimmedUrl = cap[2].trim();\n      if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n        // commonmark requires matching angle brackets\n        if (!(/>$/.test(trimmedUrl))) {\n          return;\n        }\n\n        // ending angle bracket cannot be escaped\n        const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n        if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n          return;\n        }\n      } else {\n        // find closing parenthesis\n        const lastParenIndex = findClosingBracket(cap[2], '()');\n        if (lastParenIndex > -1) {\n          const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n          const linkLen = start + cap[1].length + lastParenIndex;\n          cap[2] = cap[2].substring(0, lastParenIndex);\n          cap[0] = cap[0].substring(0, linkLen).trim();\n          cap[3] = '';\n        }\n      }\n      let href = cap[2];\n      let title = '';\n      if (this.options.pedantic) {\n        // split pedantic href and title\n        const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n        if (link) {\n          href = link[1];\n          title = link[3];\n        }\n      } else {\n        title = cap[3] ? cap[3].slice(1, -1) : '';\n      }\n\n      href = href.trim();\n      if (/^</.test(href)) {\n        if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n          // pedantic allows starting angle bracket without ending angle bracket\n          href = href.slice(1);\n        } else {\n          href = href.slice(1, -1);\n        }\n      }\n      return outputLink(cap, {\n        href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n        title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n      }, cap[0], this.lexer);\n    }\n  }\n\n  reflink(src, links) {\n    let cap;\n    if ((cap = this.rules.inline.reflink.exec(src))\n        || (cap = this.rules.inline.nolink.exec(src))) {\n      let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n      link = links[link.toLowerCase()];\n      if (!link) {\n        const text = cap[0].charAt(0);\n        return {\n          type: 'text',\n          raw: text,\n          text\n        };\n      }\n      return outputLink(cap, link, cap[0], this.lexer);\n    }\n  }\n\n  emStrong(src, maskedSrc, prevChar = '') {\n    let match = this.rules.inline.emStrong.lDelim.exec(src);\n    if (!match) return;\n\n    // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n    if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n    const nextChar = match[1] || match[2] || '';\n\n    if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n      const lLength = match[0].length - 1;\n      let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n      const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n      endReg.lastIndex = 0;\n\n      // Clip maskedSrc to same section of string as src (move to lexer?)\n      maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n      while ((match = endReg.exec(maskedSrc)) != null) {\n        rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n        if (!rDelim) continue; // skip single * in __abc*abc__\n\n        rLength = rDelim.length;\n\n        if (match[3] || match[4]) { // found another Left Delim\n          delimTotal += rLength;\n          continue;\n        } else if (match[5] || match[6]) { // either Left or Right Delim\n          if (lLength % 3 && !((lLength + rLength) % 3)) {\n            midDelimTotal += rLength;\n            continue; // CommonMark Emphasis Rules 9-10\n          }\n        }\n\n        delimTotal -= rLength;\n\n        if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n        // Remove extra characters. *a*** -> *a*\n        rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n        const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n        // Create `em` if smallest delimiter has odd char count. *a***\n        if (Math.min(lLength, rLength) % 2) {\n          const text = raw.slice(1, -1);\n          return {\n            type: 'em',\n            raw,\n            text,\n            tokens: this.lexer.inlineTokens(text)\n          };\n        }\n\n        // Create 'strong' if smallest delimiter has even char count. **a***\n        const text = raw.slice(2, -2);\n        return {\n          type: 'strong',\n          raw,\n          text,\n          tokens: this.lexer.inlineTokens(text)\n        };\n      }\n    }\n  }\n\n  codespan(src) {\n    const cap = this.rules.inline.code.exec(src);\n    if (cap) {\n      let text = cap[2].replace(/\\n/g, ' ');\n      const hasNonSpaceChars = /[^ ]/.test(text);\n      const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n      if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n        text = text.substring(1, text.length - 1);\n      }\n      text = escape(text, true);\n      return {\n        type: 'codespan',\n        raw: cap[0],\n        text\n      };\n    }\n  }\n\n  br(src) {\n    const cap = this.rules.inline.br.exec(src);\n    if (cap) {\n      return {\n        type: 'br',\n        raw: cap[0]\n      };\n    }\n  }\n\n  del(src) {\n    const cap = this.rules.inline.del.exec(src);\n    if (cap) {\n      return {\n        type: 'del',\n        raw: cap[0],\n        text: cap[2],\n        tokens: this.lexer.inlineTokens(cap[2])\n      };\n    }\n  }\n\n  autolink(src, mangle) {\n    const cap = this.rules.inline.autolink.exec(src);\n    if (cap) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n        href = 'mailto:' + text;\n      } else {\n        text = escape(cap[1]);\n        href = text;\n      }\n\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text\n          }\n        ]\n      };\n    }\n  }\n\n  url(src, mangle) {\n    let cap;\n    if (cap = this.rules.inline.url.exec(src)) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n        href = 'mailto:' + text;\n      } else {\n        // do extended autolink path validation\n        let prevCapZero;\n        do {\n          prevCapZero = cap[0];\n          cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n        } while (prevCapZero !== cap[0]);\n        text = escape(cap[0]);\n        if (cap[1] === 'www.') {\n          href = 'http://' + cap[0];\n        } else {\n          href = cap[0];\n        }\n      }\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text\n          }\n        ]\n      };\n    }\n  }\n\n  inlineText(src, smartypants) {\n    const cap = this.rules.inline.text.exec(src);\n    if (cap) {\n      let text;\n      if (this.lexer.state.inRawBlock) {\n        text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n      } else {\n        text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n      }\n      return {\n        type: 'text',\n        raw: cap[0],\n        text\n      };\n    }\n  }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n  newline: /^(?: *(?:\\n|$))+/,\n  code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n  fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n  hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n  heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n  blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n  list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n  html: '^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')',\n  def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n  table: noopTest,\n  lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n  // regex template, placeholders will be replaced according to different paragraph\n  // interruption rules of commonmark and the original markdown spec:\n  _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n  text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n  .replace('label', block._label)\n  .replace('title', block._title)\n  .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n  .replace('bull', block.bullet)\n  .getRegex();\n\nblock.list = edit(block.list)\n  .replace(/bull/g, block.bullet)\n  .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n  .replace('def', '\\\\n+(?=' + block.def.source + ')')\n  .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n  + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n  .replace('comment', block._comment)\n  .replace('tag', block._tag)\n  .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n  .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('|table', '')\n  .replace('blockquote', ' {0,3}>')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n  .replace('paragraph', block.paragraph)\n  .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n  ...block.normal,\n  table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n    + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('blockquote', ' {0,3}>')\n  .replace('code', ' {4}[^\\\\n]')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n  .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('table', block.gfm.table) // interrupt paragraphs with table\n  .replace('blockquote', ' {0,3}>')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n  ...block.normal,\n  html: edit(\n    '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n    + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n    .replace('comment', block._comment)\n    .replace(/tag/g, '(?!(?:'\n      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n      + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n    .getRegex(),\n  def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n  heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n  fences: noopTest, // fences not supported\n  lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n  paragraph: edit(block.normal._paragraph)\n    .replace('hr', block.hr)\n    .replace('heading', ' *#{1,6} *[^\\n]')\n    .replace('lheading', block.lheading)\n    .replace('blockquote', ' {0,3}>')\n    .replace('|fences', '')\n    .replace('|list', '')\n    .replace('|html', '')\n    .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n  escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n  autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n  url: noopTest,\n  tag: '^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n  link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n  reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n  nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n  reflinkSearch: 'reflink|nolink(?!\\\\()',\n  emStrong: {\n    lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n    //        (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n    //          () Skip orphan inside strong                                      () Consume to delim     (1) #***                (2) a***#, a***                             (3) #***a, ***a                 (4) ***#              (5) #***#                 (6) a***a\n    rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n    rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n  },\n  code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n  br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n  del: noopTest,\n  text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n  punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n  .replace('scheme', inline._scheme)\n  .replace('email', inline._email)\n  .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n  .replace('comment', inline._comment)\n  .replace('attribute', inline._attribute)\n  .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n  .replace('label', inline._label)\n  .replace('href', inline._href)\n  .replace('title', inline._title)\n  .getRegex();\n\ninline.reflink = edit(inline.reflink)\n  .replace('label', inline._label)\n  .replace('ref', block._label)\n  .getRegex();\n\ninline.nolink = edit(inline.nolink)\n  .replace('ref', block._label)\n  .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n  .replace('reflink', inline.reflink)\n  .replace('nolink', inline.nolink)\n  .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n  ...inline.normal,\n  strong: {\n    start: /^__|\\*\\*/,\n    middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n    endAst: /\\*\\*(?!\\*)/g,\n    endUnd: /__(?!_)/g\n  },\n  em: {\n    start: /^_|\\*/,\n    middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n    endAst: /\\*(?!\\*)/g,\n    endUnd: /_(?!_)/g\n  },\n  link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n    .replace('label', inline._label)\n    .getRegex(),\n  reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n    .replace('label', inline._label)\n    .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n  ...inline.normal,\n  escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n  _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n  url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n  _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n  del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n  text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n  .replace('email', inline.gfm._extended_email)\n  .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = {\n  ...inline.gfm,\n  br: edit(inline.br).replace('{2,}', '*').getRegex(),\n  text: edit(inline.gfm.text)\n    .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n    .replace(/\\{2,\\}/g, '*')\n    .getRegex()\n};\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n  return text\n    // em-dashes\n    .replace(/---/g, '\\u2014')\n    // en-dashes\n    .replace(/--/g, '\\u2013')\n    // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n    // closing singles & apostrophes\n    .replace(/'/g, '\\u2019')\n    // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n    // closing doubles\n    .replace(/\"/g, '\\u201d')\n    // ellipses\n    .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n  let out = '',\n    i,\n    ch;\n\n  const l = text.length;\n  for (i = 0; i < l; i++) {\n    ch = text.charCodeAt(i);\n    if (Math.random() > 0.5) {\n      ch = 'x' + ch.toString(16);\n    }\n    out += '&#' + ch + ';';\n  }\n\n  return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n  constructor(options) {\n    this.tokens = [];\n    this.tokens.links = Object.create(null);\n    this.options = options || defaults;\n    this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n    this.tokenizer = this.options.tokenizer;\n    this.tokenizer.options = this.options;\n    this.tokenizer.lexer = this;\n    this.inlineQueue = [];\n    this.state = {\n      inLink: false,\n      inRawBlock: false,\n      top: true\n    };\n\n    const rules = {\n      block: block.normal,\n      inline: inline.normal\n    };\n\n    if (this.options.pedantic) {\n      rules.block = block.pedantic;\n      rules.inline = inline.pedantic;\n    } else if (this.options.gfm) {\n      rules.block = block.gfm;\n      if (this.options.breaks) {\n        rules.inline = inline.breaks;\n      } else {\n        rules.inline = inline.gfm;\n      }\n    }\n    this.tokenizer.rules = rules;\n  }\n\n  /**\n   * Expose Rules\n   */\n  static get rules() {\n    return {\n      block,\n      inline\n    };\n  }\n\n  /**\n   * Static Lex Method\n   */\n  static lex(src, options) {\n    const lexer = new Lexer(options);\n    return lexer.lex(src);\n  }\n\n  /**\n   * Static Lex Inline Method\n   */\n  static lexInline(src, options) {\n    const lexer = new Lexer(options);\n    return lexer.inlineTokens(src);\n  }\n\n  /**\n   * Preprocessing\n   */\n  lex(src) {\n    src = src\n      .replace(/\\r\\n|\\r/g, '\\n');\n\n    this.blockTokens(src, this.tokens);\n\n    let next;\n    while (next = this.inlineQueue.shift()) {\n      this.inlineTokens(next.src, next.tokens);\n    }\n\n    return this.tokens;\n  }\n\n  /**\n   * Lexing\n   */\n  blockTokens(src, tokens = []) {\n    if (this.options.pedantic) {\n      src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n    } else {\n      src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n        return leading + '    '.repeat(tabs.length);\n      });\n    }\n\n    let token, lastToken, cutSrc, lastParagraphClipped;\n\n    while (src) {\n      if (this.options.extensions\n        && this.options.extensions.block\n        && this.options.extensions.block.some((extTokenizer) => {\n          if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n        continue;\n      }\n\n      // newline\n      if (token = this.tokenizer.space(src)) {\n        src = src.substring(token.raw.length);\n        if (token.raw.length === 1 && tokens.length > 0) {\n          // if there's a single \\n as a spacer, it's terminating the last line,\n          // so move it there so that we don't get unecessary paragraph tags\n          tokens[tokens.length - 1].raw += '\\n';\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.code(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        // An indented code block cannot interrupt a paragraph.\n        if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // fences\n      if (token = this.tokenizer.fences(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // heading\n      if (token = this.tokenizer.heading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // hr\n      if (token = this.tokenizer.hr(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // blockquote\n      if (token = this.tokenizer.blockquote(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // list\n      if (token = this.tokenizer.list(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // html\n      if (token = this.tokenizer.html(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // def\n      if (token = this.tokenizer.def(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.raw;\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else if (!this.tokens.links[token.tag]) {\n          this.tokens.links[token.tag] = {\n            href: token.href,\n            title: token.title\n          };\n        }\n        continue;\n      }\n\n      // table (gfm)\n      if (token = this.tokenizer.table(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // lheading\n      if (token = this.tokenizer.lheading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // top-level paragraph\n      // prevent paragraph consuming extensions by clipping 'src' to extension start\n      cutSrc = src;\n      if (this.options.extensions && this.options.extensions.startBlock) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startBlock.forEach(function(getStartIndex) {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n        lastToken = tokens[tokens.length - 1];\n        if (lastParagraphClipped && lastToken.type === 'paragraph') {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        lastParagraphClipped = (cutSrc.length !== src.length);\n        src = src.substring(token.raw.length);\n        continue;\n      }\n\n      // text\n      if (token = this.tokenizer.text(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && lastToken.type === 'text') {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    this.state.top = true;\n    return tokens;\n  }\n\n  inline(src, tokens = []) {\n    this.inlineQueue.push({ src, tokens });\n    return tokens;\n  }\n\n  /**\n   * Lexing/Compiling\n   */\n  inlineTokens(src, tokens = []) {\n    let token, lastToken, cutSrc;\n\n    // String with links masked to avoid interference with em and strong\n    let maskedSrc = src;\n    let match;\n    let keepPrevChar, prevChar;\n\n    // Mask out reflinks\n    if (this.tokens.links) {\n      const links = Object.keys(this.tokens.links);\n      if (links.length > 0) {\n        while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n          if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n          }\n        }\n      }\n    }\n    // Mask out other blocks\n    while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n      maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n    }\n\n    // Mask out escaped em & strong delimiters\n    while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n      maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n      this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n    }\n\n    while (src) {\n      if (!keepPrevChar) {\n        prevChar = '';\n      }\n      keepPrevChar = false;\n\n      // extensions\n      if (this.options.extensions\n        && this.options.extensions.inline\n        && this.options.extensions.inline.some((extTokenizer) => {\n          if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n        continue;\n      }\n\n      // escape\n      if (token = this.tokenizer.escape(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // tag\n      if (token = this.tokenizer.tag(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // link\n      if (token = this.tokenizer.link(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // reflink, nolink\n      if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // em & strong\n      if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.codespan(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // br\n      if (token = this.tokenizer.br(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // del (gfm)\n      if (token = this.tokenizer.del(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // autolink\n      if (token = this.tokenizer.autolink(src, mangle)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // url (gfm)\n      if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // text\n      // prevent inlineText consuming extensions by clipping 'src' to extension start\n      cutSrc = src;\n      if (this.options.extensions && this.options.extensions.startInline) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startInline.forEach(function(getStartIndex) {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n        src = src.substring(token.raw.length);\n        if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n          prevChar = token.raw.slice(-1);\n        }\n        keepPrevChar = true;\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    return tokens;\n  }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  code(code, infostring, escaped) {\n    const lang = (infostring || '').match(/\\S*/)[0];\n    if (this.options.highlight) {\n      const out = this.options.highlight(code, lang);\n      if (out != null && out !== code) {\n        escaped = true;\n        code = out;\n      }\n    }\n\n    code = code.replace(/\\n$/, '') + '\\n';\n\n    if (!lang) {\n      return '<pre><code>'\n        + (escaped ? code : escape(code, true))\n        + '</code></pre>\\n';\n    }\n\n    return '<pre><code class=\"'\n      + this.options.langPrefix\n      + escape(lang)\n      + '\">'\n      + (escaped ? code : escape(code, true))\n      + '</code></pre>\\n';\n  }\n\n  /**\n   * @param {string} quote\n   */\n  blockquote(quote) {\n    return `<blockquote>\\n${quote}</blockquote>\\n`;\n  }\n\n  html(html) {\n    return html;\n  }\n\n  /**\n   * @param {string} text\n   * @param {string} level\n   * @param {string} raw\n   * @param {any} slugger\n   */\n  heading(text, level, raw, slugger) {\n    if (this.options.headerIds) {\n      const id = this.options.headerPrefix + slugger.slug(raw);\n      return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n    }\n\n    // ignore IDs\n    return `<h${level}>${text}</h${level}>\\n`;\n  }\n\n  hr() {\n    return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n  }\n\n  list(body, ordered, start) {\n    const type = ordered ? 'ol' : 'ul',\n      startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n    return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n  }\n\n  /**\n   * @param {string} text\n   */\n  listitem(text) {\n    return `<li>${text}</li>\\n`;\n  }\n\n  checkbox(checked) {\n    return '<input '\n      + (checked ? 'checked=\"\" ' : '')\n      + 'disabled=\"\" type=\"checkbox\"'\n      + (this.options.xhtml ? ' /' : '')\n      + '> ';\n  }\n\n  /**\n   * @param {string} text\n   */\n  paragraph(text) {\n    return `<p>${text}</p>\\n`;\n  }\n\n  /**\n   * @param {string} header\n   * @param {string} body\n   */\n  table(header, body) {\n    if (body) body = `<tbody>${body}</tbody>`;\n\n    return '<table>\\n'\n      + '<thead>\\n'\n      + header\n      + '</thead>\\n'\n      + body\n      + '</table>\\n';\n  }\n\n  /**\n   * @param {string} content\n   */\n  tablerow(content) {\n    return `<tr>\\n${content}</tr>\\n`;\n  }\n\n  tablecell(content, flags) {\n    const type = flags.header ? 'th' : 'td';\n    const tag = flags.align\n      ? `<${type} align=\"${flags.align}\">`\n      : `<${type}>`;\n    return tag + content + `</${type}>\\n`;\n  }\n\n  /**\n   * span level renderer\n   * @param {string} text\n   */\n  strong(text) {\n    return `<strong>${text}</strong>`;\n  }\n\n  /**\n   * @param {string} text\n   */\n  em(text) {\n    return `<em>${text}</em>`;\n  }\n\n  /**\n   * @param {string} text\n   */\n  codespan(text) {\n    return `<code>${text}</code>`;\n  }\n\n  br() {\n    return this.options.xhtml ? '<br/>' : '<br>';\n  }\n\n  /**\n   * @param {string} text\n   */\n  del(text) {\n    return `<del>${text}</del>`;\n  }\n\n  /**\n   * @param {string} href\n   * @param {string} title\n   * @param {string} text\n   */\n  link(href, title, text) {\n    href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n    if (href === null) {\n      return text;\n    }\n    let out = '<a href=\"' + href + '\"';\n    if (title) {\n      out += ' title=\"' + title + '\"';\n    }\n    out += '>' + text + '</a>';\n    return out;\n  }\n\n  /**\n   * @param {string} href\n   * @param {string} title\n   * @param {string} text\n   */\n  image(href, title, text) {\n    href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n    if (href === null) {\n      return text;\n    }\n\n    let out = `<img src=\"${href}\" alt=\"${text}\"`;\n    if (title) {\n      out += ` title=\"${title}\"`;\n    }\n    out += this.options.xhtml ? '/>' : '>';\n    return out;\n  }\n\n  text(text) {\n    return text;\n  }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n  // no need for block level renderers\n  strong(text) {\n    return text;\n  }\n\n  em(text) {\n    return text;\n  }\n\n  codespan(text) {\n    return text;\n  }\n\n  del(text) {\n    return text;\n  }\n\n  html(text) {\n    return text;\n  }\n\n  text(text) {\n    return text;\n  }\n\n  link(href, title, text) {\n    return '' + text;\n  }\n\n  image(href, title, text) {\n    return '' + text;\n  }\n\n  br() {\n    return '';\n  }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n  constructor() {\n    this.seen = {};\n  }\n\n  /**\n   * @param {string} value\n   */\n  serialize(value) {\n    return value\n      .toLowerCase()\n      .trim()\n      // remove html tags\n      .replace(/<[!\\/a-z].*?>/ig, '')\n      // remove unwanted chars\n      .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n      .replace(/\\s/g, '-');\n  }\n\n  /**\n   * Finds the next safe (unique) slug to use\n   * @param {string} originalSlug\n   * @param {boolean} isDryRun\n   */\n  getNextSafeSlug(originalSlug, isDryRun) {\n    let slug = originalSlug;\n    let occurenceAccumulator = 0;\n    if (this.seen.hasOwnProperty(slug)) {\n      occurenceAccumulator = this.seen[originalSlug];\n      do {\n        occurenceAccumulator++;\n        slug = originalSlug + '-' + occurenceAccumulator;\n      } while (this.seen.hasOwnProperty(slug));\n    }\n    if (!isDryRun) {\n      this.seen[originalSlug] = occurenceAccumulator;\n      this.seen[slug] = 0;\n    }\n    return slug;\n  }\n\n  /**\n   * Convert string to unique id\n   * @param {object} [options]\n   * @param {boolean} [options.dryrun] Generates the next unique slug without\n   * updating the internal accumulator.\n   */\n  slug(value, options = {}) {\n    const slug = this.serialize(value);\n    return this.getNextSafeSlug(slug, options.dryrun);\n  }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n  constructor(options) {\n    this.options = options || defaults;\n    this.options.renderer = this.options.renderer || new Renderer();\n    this.renderer = this.options.renderer;\n    this.renderer.options = this.options;\n    this.textRenderer = new TextRenderer();\n    this.slugger = new Slugger();\n  }\n\n  /**\n   * Static Parse Method\n   */\n  static parse(tokens, options) {\n    const parser = new Parser(options);\n    return parser.parse(tokens);\n  }\n\n  /**\n   * Static Parse Inline Method\n   */\n  static parseInline(tokens, options) {\n    const parser = new Parser(options);\n    return parser.parseInline(tokens);\n  }\n\n  /**\n   * Parse Loop\n   */\n  parse(tokens, top = true) {\n    let out = '',\n      i,\n      j,\n      k,\n      l2,\n      l3,\n      row,\n      cell,\n      header,\n      body,\n      token,\n      ordered,\n      start,\n      loose,\n      itemBody,\n      item,\n      checked,\n      task,\n      checkbox,\n      ret;\n\n    const l = tokens.length;\n    for (i = 0; i < l; i++) {\n      token = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n        ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n        if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      switch (token.type) {\n        case 'space': {\n          continue;\n        }\n        case 'hr': {\n          out += this.renderer.hr();\n          continue;\n        }\n        case 'heading': {\n          out += this.renderer.heading(\n            this.parseInline(token.tokens),\n            token.depth,\n            unescape(this.parseInline(token.tokens, this.textRenderer)),\n            this.slugger);\n          continue;\n        }\n        case 'code': {\n          out += this.renderer.code(token.text,\n            token.lang,\n            token.escaped);\n          continue;\n        }\n        case 'table': {\n          header = '';\n\n          // header\n          cell = '';\n          l2 = token.header.length;\n          for (j = 0; j < l2; j++) {\n            cell += this.renderer.tablecell(\n              this.parseInline(token.header[j].tokens),\n              { header: true, align: token.align[j] }\n            );\n          }\n          header += this.renderer.tablerow(cell);\n\n          body = '';\n          l2 = token.rows.length;\n          for (j = 0; j < l2; j++) {\n            row = token.rows[j];\n\n            cell = '';\n            l3 = row.length;\n            for (k = 0; k < l3; k++) {\n              cell += this.renderer.tablecell(\n                this.parseInline(row[k].tokens),\n                { header: false, align: token.align[k] }\n              );\n            }\n\n            body += this.renderer.tablerow(cell);\n          }\n          out += this.renderer.table(header, body);\n          continue;\n        }\n        case 'blockquote': {\n          body = this.parse(token.tokens);\n          out += this.renderer.blockquote(body);\n          continue;\n        }\n        case 'list': {\n          ordered = token.ordered;\n          start = token.start;\n          loose = token.loose;\n          l2 = token.items.length;\n\n          body = '';\n          for (j = 0; j < l2; j++) {\n            item = token.items[j];\n            checked = item.checked;\n            task = item.task;\n\n            itemBody = '';\n            if (item.task) {\n              checkbox = this.renderer.checkbox(checked);\n              if (loose) {\n                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                  item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                  if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                    item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                  }\n                } else {\n                  item.tokens.unshift({\n                    type: 'text',\n                    text: checkbox\n                  });\n                }\n              } else {\n                itemBody += checkbox;\n              }\n            }\n\n            itemBody += this.parse(item.tokens, loose);\n            body += this.renderer.listitem(itemBody, task, checked);\n          }\n\n          out += this.renderer.list(body, ordered, start);\n          continue;\n        }\n        case 'html': {\n          // TODO parse inline content if parameter markdown=1\n          out += this.renderer.html(token.text);\n          continue;\n        }\n        case 'paragraph': {\n          out += this.renderer.paragraph(this.parseInline(token.tokens));\n          continue;\n        }\n        case 'text': {\n          body = token.tokens ? this.parseInline(token.tokens) : token.text;\n          while (i + 1 < l && tokens[i + 1].type === 'text') {\n            token = tokens[++i];\n            body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n          }\n          out += top ? this.renderer.paragraph(body) : body;\n          continue;\n        }\n\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n\n    return out;\n  }\n\n  /**\n   * Parse Inline Tokens\n   */\n  parseInline(tokens, renderer) {\n    renderer = renderer || this.renderer;\n    let out = '',\n      i,\n      token,\n      ret;\n\n    const l = tokens.length;\n    for (i = 0; i < l; i++) {\n      token = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n        ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n        if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      switch (token.type) {\n        case 'escape': {\n          out += renderer.text(token.text);\n          break;\n        }\n        case 'html': {\n          out += renderer.html(token.text);\n          break;\n        }\n        case 'link': {\n          out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'image': {\n          out += renderer.image(token.href, token.title, token.text);\n          break;\n        }\n        case 'strong': {\n          out += renderer.strong(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'em': {\n          out += renderer.em(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'codespan': {\n          out += renderer.codespan(token.text);\n          break;\n        }\n        case 'br': {\n          out += renderer.br();\n          break;\n        }\n        case 'del': {\n          out += renderer.del(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'text': {\n          out += renderer.text(token.text);\n          break;\n        }\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n    return out;\n  }\n}\n\nclass Hooks {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  static passThroughHooks = new Set([\n    'preprocess',\n    'postprocess'\n  ]);\n\n  /**\n   * Process markdown before marked\n   */\n  preprocess(markdown) {\n    return markdown;\n  }\n\n  /**\n   * Process HTML after marked is finished\n   */\n  postprocess(html) {\n    return html;\n  }\n}\n\nfunction onError(silent, async, callback) {\n  return (e) => {\n    e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n    if (silent) {\n      const msg = '<p>An error occurred:</p><pre>'\n        + escape(e.message + '', true)\n        + '</pre>';\n      if (async) {\n        return Promise.resolve(msg);\n      }\n      if (callback) {\n        callback(null, msg);\n        return;\n      }\n      return msg;\n    }\n\n    if (async) {\n      return Promise.reject(e);\n    }\n    if (callback) {\n      callback(e);\n      return;\n    }\n    throw e;\n  };\n}\n\nfunction parseMarkdown(lexer, parser) {\n  return (src, opt, callback) => {\n    if (typeof opt === 'function') {\n      callback = opt;\n      opt = null;\n    }\n\n    const origOpt = { ...opt };\n    opt = { ...marked.defaults, ...origOpt };\n    const throwError = onError(opt.silent, opt.async, callback);\n\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      return throwError(new Error('marked(): input parameter is undefined or null'));\n    }\n    if (typeof src !== 'string') {\n      return throwError(new Error('marked(): input parameter is of type '\n        + Object.prototype.toString.call(src) + ', string expected'));\n    }\n\n    checkSanitizeDeprecation(opt);\n\n    if (opt.hooks) {\n      opt.hooks.options = opt;\n    }\n\n    if (callback) {\n      const highlight = opt.highlight;\n      let tokens;\n\n      try {\n        if (opt.hooks) {\n          src = opt.hooks.preprocess(src);\n        }\n        tokens = lexer(src, opt);\n      } catch (e) {\n        return throwError(e);\n      }\n\n      const done = function(err) {\n        let out;\n\n        if (!err) {\n          try {\n            if (opt.walkTokens) {\n              marked.walkTokens(tokens, opt.walkTokens);\n            }\n            out = parser(tokens, opt);\n            if (opt.hooks) {\n              out = opt.hooks.postprocess(out);\n            }\n          } catch (e) {\n            err = e;\n          }\n        }\n\n        opt.highlight = highlight;\n\n        return err\n          ? throwError(err)\n          : callback(null, out);\n      };\n\n      if (!highlight || highlight.length < 3) {\n        return done();\n      }\n\n      delete opt.highlight;\n\n      if (!tokens.length) return done();\n\n      let pending = 0;\n      marked.walkTokens(tokens, function(token) {\n        if (token.type === 'code') {\n          pending++;\n          setTimeout(() => {\n            highlight(token.text, token.lang, function(err, code) {\n              if (err) {\n                return done(err);\n              }\n              if (code != null && code !== token.text) {\n                token.text = code;\n                token.escaped = true;\n              }\n\n              pending--;\n              if (pending === 0) {\n                done();\n              }\n            });\n          }, 0);\n        }\n      });\n\n      if (pending === 0) {\n        done();\n      }\n\n      return;\n    }\n\n    if (opt.async) {\n      return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n        .then(src => lexer(src, opt))\n        .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n        .then(tokens => parser(tokens, opt))\n        .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n        .catch(throwError);\n    }\n\n    try {\n      if (opt.hooks) {\n        src = opt.hooks.preprocess(src);\n      }\n      const tokens = lexer(src, opt);\n      if (opt.walkTokens) {\n        marked.walkTokens(tokens, opt.walkTokens);\n      }\n      let html = parser(tokens, opt);\n      if (opt.hooks) {\n        html = opt.hooks.postprocess(html);\n      }\n      return html;\n    } catch (e) {\n      return throwError(e);\n    }\n  };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n  return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n  marked.defaults = { ...marked.defaults, ...opt };\n  changeDefaults(marked.defaults);\n  return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n  const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n  args.forEach((pack) => {\n    // copy options to new object\n    const opts = { ...pack };\n\n    // set async to true if it was set to true before\n    opts.async = marked.defaults.async || opts.async || false;\n\n    // ==-- Parse \"addon\" extensions --== //\n    if (pack.extensions) {\n      pack.extensions.forEach((ext) => {\n        if (!ext.name) {\n          throw new Error('extension name required');\n        }\n        if (ext.renderer) { // Renderer extensions\n          const prevRenderer = extensions.renderers[ext.name];\n          if (prevRenderer) {\n            // Replace extension with func to run new extension but fall back if false\n            extensions.renderers[ext.name] = function(...args) {\n              let ret = ext.renderer.apply(this, args);\n              if (ret === false) {\n                ret = prevRenderer.apply(this, args);\n              }\n              return ret;\n            };\n          } else {\n            extensions.renderers[ext.name] = ext.renderer;\n          }\n        }\n        if (ext.tokenizer) { // Tokenizer Extensions\n          if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n            throw new Error(\"extension level must be 'block' or 'inline'\");\n          }\n          if (extensions[ext.level]) {\n            extensions[ext.level].unshift(ext.tokenizer);\n          } else {\n            extensions[ext.level] = [ext.tokenizer];\n          }\n          if (ext.start) { // Function to check for start of token\n            if (ext.level === 'block') {\n              if (extensions.startBlock) {\n                extensions.startBlock.push(ext.start);\n              } else {\n                extensions.startBlock = [ext.start];\n              }\n            } else if (ext.level === 'inline') {\n              if (extensions.startInline) {\n                extensions.startInline.push(ext.start);\n              } else {\n                extensions.startInline = [ext.start];\n              }\n            }\n          }\n        }\n        if (ext.childTokens) { // Child tokens to be visited by walkTokens\n          extensions.childTokens[ext.name] = ext.childTokens;\n        }\n      });\n      opts.extensions = extensions;\n    }\n\n    // ==-- Parse \"overwrite\" extensions --== //\n    if (pack.renderer) {\n      const renderer = marked.defaults.renderer || new Renderer();\n      for (const prop in pack.renderer) {\n        const prevRenderer = renderer[prop];\n        // Replace renderer with func to run extension, but fall back if false\n        renderer[prop] = (...args) => {\n          let ret = pack.renderer[prop].apply(renderer, args);\n          if (ret === false) {\n            ret = prevRenderer.apply(renderer, args);\n          }\n          return ret;\n        };\n      }\n      opts.renderer = renderer;\n    }\n    if (pack.tokenizer) {\n      const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n      for (const prop in pack.tokenizer) {\n        const prevTokenizer = tokenizer[prop];\n        // Replace tokenizer with func to run extension, but fall back if false\n        tokenizer[prop] = (...args) => {\n          let ret = pack.tokenizer[prop].apply(tokenizer, args);\n          if (ret === false) {\n            ret = prevTokenizer.apply(tokenizer, args);\n          }\n          return ret;\n        };\n      }\n      opts.tokenizer = tokenizer;\n    }\n\n    // ==-- Parse Hooks extensions --== //\n    if (pack.hooks) {\n      const hooks = marked.defaults.hooks || new Hooks();\n      for (const prop in pack.hooks) {\n        const prevHook = hooks[prop];\n        if (Hooks.passThroughHooks.has(prop)) {\n          hooks[prop] = (arg) => {\n            if (marked.defaults.async) {\n              return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n                return prevHook.call(hooks, ret);\n              });\n            }\n\n            const ret = pack.hooks[prop].call(hooks, arg);\n            return prevHook.call(hooks, ret);\n          };\n        } else {\n          hooks[prop] = (...args) => {\n            let ret = pack.hooks[prop].apply(hooks, args);\n            if (ret === false) {\n              ret = prevHook.apply(hooks, args);\n            }\n            return ret;\n          };\n        }\n      }\n      opts.hooks = hooks;\n    }\n\n    // ==-- Parse WalkTokens extensions --== //\n    if (pack.walkTokens) {\n      const walkTokens = marked.defaults.walkTokens;\n      opts.walkTokens = function(token) {\n        let values = [];\n        values.push(pack.walkTokens.call(this, token));\n        if (walkTokens) {\n          values = values.concat(walkTokens.call(this, token));\n        }\n        return values;\n      };\n    }\n\n    marked.setOptions(opts);\n  });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n  let values = [];\n  for (const token of tokens) {\n    values = values.concat(callback.call(marked, token));\n    switch (token.type) {\n      case 'table': {\n        for (const cell of token.header) {\n          values = values.concat(marked.walkTokens(cell.tokens, callback));\n        }\n        for (const row of token.rows) {\n          for (const cell of row) {\n            values = values.concat(marked.walkTokens(cell.tokens, callback));\n          }\n        }\n        break;\n      }\n      case 'list': {\n        values = values.concat(marked.walkTokens(token.items, callback));\n        break;\n      }\n      default: {\n        if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n          marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n            values = values.concat(marked.walkTokens(token[childTokens], callback));\n          });\n        } else if (token.tokens) {\n          values = values.concat(marked.walkTokens(token.tokens, callback));\n        }\n      }\n    }\n  }\n  return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { CSSProperties } from \"react\";\n\nexport const cssColors = [\n  \"aliceblue\",\n  \"antiquewhite\",\n  \"aqua\",\n  \"aquamarine\",\n  \"azure\",\n  \"beige\",\n  \"bisque\",\n  \"black\",\n  \"blanchedalmond\",\n  \"blue\",\n  \"blueviolet\",\n  \"brown\",\n  \"burlywood\",\n  \"cadetblue\",\n  \"chartreuse\",\n  \"chocolate\",\n  \"coral\",\n  \"cornflowerblue\",\n  \"cornsilk\",\n  \"crimson\",\n  \"cyan\",\n  \"darkblue\",\n  \"darkcyan\",\n  \"darkgoldenrod\",\n  \"darkgray\",\n  \"darkgreen\",\n  \"darkgrey\",\n  \"darkkhaki\",\n  \"darkmagenta\",\n  \"darkolivegreen\",\n  \"darkorange\",\n  \"darkorchid\",\n  \"darkred\",\n  \"darksalmon\",\n  \"darkseagreen\",\n  \"darkslateblue\",\n  \"darkslategray\",\n  \"darkslategrey\",\n  \"darkturquoise\",\n  \"darkviolet\",\n  \"deeppink\",\n  \"deepskyblue\",\n  \"dimgray\",\n  \"dimgrey\",\n  \"dodgerblue\",\n  \"firebrick\",\n  \"floralwhite\",\n  \"forestgreen\",\n  \"fuchsia\",\n  \"gainsboro\",\n  \"ghostwhite\",\n  \"gold\",\n  \"goldenrod\",\n  \"gray\",\n  \"green\",\n  \"greenyellow\",\n  \"grey\",\n  \"honeydew\",\n  \"hotpink\",\n  \"indianred\",\n  \"indigo\",\n  \"ivory\",\n  \"khaki\",\n  \"lavender\",\n  \"lavenderblush\",\n  \"lawngreen\",\n  \"lemonchiffon\",\n  \"lightblue\",\n  \"lightcoral\",\n  \"lightcyan\",\n  \"lightgoldenrodyellow\",\n  \"lightgray\",\n  \"lightgreen\",\n  \"lightgrey\",\n  \"lightpink\",\n  \"lightsalmon\",\n  \"lightseagreen\",\n  \"lightskyblue\",\n  \"lightslategray\",\n  \"lightslategrey\",\n  \"lightsteelblue\",\n  \"lightyellow\",\n  \"lime\",\n  \"limegreen\",\n  \"linen\",\n  \"magenta\",\n  \"maroon\",\n  \"mediumaquamarine\",\n  \"mediumblue\",\n  \"mediumorchid\",\n  \"mediumpurple\",\n  \"mediumseagreen\",\n  \"mediumslateblue\",\n  \"mediumspringgreen\",\n  \"mediumturquoise\",\n  \"mediumvioletred\",\n  \"midnightblue\",\n  \"mintcream\",\n  \"mistyrose\",\n  \"moccasin\",\n  \"navajowhite\",\n  \"navy\",\n  \"oldlace\",\n  \"olive\",\n  \"olivedrab\",\n  \"orange\",\n  \"orangered\",\n  \"orchid\",\n  \"palegoldenrod\",\n  \"palegreen\",\n  \"paleturquoise\",\n  \"palevioletred\",\n  \"papayawhip\",\n  \"peachpuff\",\n  \"peru\",\n  \"pink\",\n  \"plum\",\n  \"powderblue\",\n  \"purple\",\n  \"rebeccapurple\",\n  \"red\",\n  \"rosybrown\",\n  \"royalblue\",\n  \"saddlebrown\",\n  \"salmon\",\n  \"sandybrown\",\n  \"seagreen\",\n  \"seashell\",\n  \"sienna\",\n  \"silver\",\n  \"skyblue\",\n  \"slateblue\",\n  \"slategray\",\n  \"slategrey\",\n  \"snow\",\n  \"springgreen\",\n  \"steelblue\",\n  \"tan\",\n  \"teal\",\n  \"thistle\",\n  \"tomato\",\n  \"turquoise\",\n  \"violet\",\n  \"wheat\",\n  \"white\",\n  \"whitesmoke\",\n  \"yellow\",\n  \"yellowgreen\",\n];\nexport const fontStyles = [\"italic\", \"oblique\"];\nexport const fontWeights = [\"bold\", \"bolder\", \"lighter\"];\nexport const textDecorations = [\"underline\", \"overline\", \"line-through\"];\n\nexport const getStyle = (styles: string[]) => {\n  const textStyle: CSSProperties = {};\n  const classNames: string[] = [];\n  styles.forEach((value) => {\n    switch (true) {\n      case cssColors.includes(value):\n        textStyle.color = value;\n        break;\n      case fontStyles.includes(value):\n        textStyle.fontStyle = value;\n        break;\n      case fontWeights.includes(value):\n        textStyle.fontWeight = value as any;\n        break;\n      case textDecorations.includes(value):\n        textStyle.textDecoration = value;\n        break;\n      default:\n        classNames.push(value);\n    }\n  });\n  return { textStyle, classNames };\n};\n","/**\n * Built-in shortcode → Unicode emoji mapping.\n * Serves as a fallback when the Icon Registry service is not available.\n */\nexport const BUILTIN_EMOJIS: Record<string, string> = {\n  // Status/feedback\n  check: \"✅\",\n  x: \"❌\",\n  warning: \"⚠️\",\n  exclamation: \"❗\",\n  question: \"❓\",\n  bulb: \"💡\",\n  eyes: \"👀\",\n\n  // Actions\n  rocket: \"🚀\",\n  fire: \"🔥\",\n  zap: \"⚡\",\n  boom: \"💥\",\n  sparkles: \"✨\",\n  tada: \"🎉\",\n  confetti_ball: \"🎊\",\n\n  // Objects\n  lock: \"🔒\",\n  unlock: \"🔓\",\n  key: \"🔑\",\n  gear: \"⚙️\",\n  hammer: \"🔨\",\n  wrench: \"🔧\",\n  package: \"📦\",\n  email: \"📧\",\n  link: \"🔗\",\n  clipboard: \"📋\",\n  bookmark: \"🔖\",\n\n  // Communication\n  speech_balloon: \"💬\",\n  thought_balloon: \"💭\",\n  bell: \"🔔\",\n  megaphone: \"📣\",\n\n  // Nature/weather\n  cloud: \"☁️\",\n  sun: \"☀️\",\n  star: \"⭐\",\n  globe: \"🌐\",\n\n  // Arrows\n  arrow_right: \"➡️\",\n  arrow_left: \"⬅️\",\n  arrow_up: \"⬆️\",\n  arrow_down: \"⬇️\",\n\n  // People\n  wave: \"👋\",\n  thumbsup: \"👍\",\n  thumbsdown: \"👎\",\n\n  // Tech / Architecture\n  computer: \"💻\",\n  iphone: \"📱\",\n  robot: \"🤖\",\n  bug: \"🐛\",\n  database: \"🗄️\",\n  server: \"🖥️\",\n  api: \"🔌\",\n  gateway: \"🚪\",\n  queue: \"📬\",\n  cache: \"⚡\",\n  service: \"⚙️\",\n  processor: \"🔄\",\n  store: \"🏪\",\n  worker: \"👷\",\n  container: \"📦\",\n  network: \"🌐\",\n\n  // Data\n  chart: \"📊\",\n  chart_with_upwards_trend: \"📈\",\n  chart_with_downwards_trend: \"📉\",\n\n  // Containers\n  inbox_tray: \"📥\",\n  outbox_tray: \"📤\",\n  file_folder: \"📁\",\n\n  // Time\n  hourglass: \"⏳\",\n  clock: \"🕐\",\n  stopwatch: \"⏱️\",\n\n  // Symbols\n  heavy_check_mark: \"✔️\",\n  heavy_multiplication_x: \"✖️\",\n  red: \"🔴\",\n  red_circle: \"🔴\",\n  green_circle: \"🟢\",\n  blue_circle: \"🔵\",\n  white_circle: \"⚪\",\n  black_circle: \"⚫\",\n  heart: \"❤️\",\n  shield: \"🛡️\",\n\n  // Food/common\n  coffee: \"☕\",\n  pizza: \"🍕\",\n\n  // Transport\n  car: \"🚗\",\n  bus: \"🚌\",\n  airplane: \"✈️\",\n  ship: \"🚢\",\n\n  // Database/infra\n  floppy_disk: \"💾\",\n  cd: \"💿\",\n  satellite: \"🛰️\",\n  factory: \"🏭\",\n  hospital: \"🏥\",\n  bank: \"🏦\",\n\n  // Misc\n  construction: \"🚧\",\n  recycle: \"♻️\",\n  receipt: \"🧾\",\n  cart: \"🛒\",\n  cylinder: \"🪨\",\n  dollar: \"💵\",\n};\n","import { getStyle } from \"@/utils/messageStyling\";\nimport type { EmojiCache, EmojiResolution } from \"./types\";\nimport { BUILTIN_EMOJIS } from \"./builtinEmojis\";\n\nlet knownEmojis: Set<string> = new Set(Object.keys(BUILTIN_EMOJIS));\n\nexport function setKnownEmojis(names: Iterable<string>) {\n  knownEmojis = new Set(names);\n}\n\nfunction isEmojiCandidate(name: string): boolean {\n  if (name.includes(\"-\")) return false;\n  return knownEmojis.has(name);\n}\n\nexport function resolveBracketContent(raw: string): EmojiResolution {\n  const result: EmojiResolution = {\n    classNames: [],\n    style: {},\n    emojis: [],\n    unicodes: [],\n  };\n\n  const values = raw\n    .split(\",\")\n    .map((s) => s.trim())\n    .filter(Boolean);\n\n  for (const value of values) {\n    const colonMatch = value.match(/^:(.+):$/);\n    if (colonMatch) {\n      const name = colonMatch[1];\n      result.classNames.push(name);\n      result.emojis.push(name);\n      continue;\n    }\n\n    result.classNames.push(value);\n\n    const { textStyle } = getStyle([value]);\n    if (Object.keys(textStyle).length > 0) {\n      Object.assign(result.style, textStyle);\n      continue;\n    }\n\n    if (isEmojiCandidate(value)) {\n      result.emojis.push(value);\n    }\n  }\n\n  return result;\n}\n\n/**\n * Get the Unicode character for an emoji shortcode.\n * Checks the runtime cache first, then falls back to the builtin map.\n * Returns the raw shortcode if no mapping is found.\n */\n/**\n * Resolve [shortcode] patterns within free text (messages, conditions).\n * Replaces each [shortcode] with its emoji unicode character.\n */\nexport function resolveEmojiInText(text: string): string {\n  return text.replace(/\\[([^\\]]+)\\]/g, (match, content) => {\n    const resolution = resolveBracketContent(content);\n    if (resolution.emojis.length > 0) {\n      return resolution.emojis\n        .map((name) => getEmojiUnicode(name))\n        .join(\"\");\n    }\n    return match; // Not an emoji — leave bracket text as-is\n  });\n}\n\nexport function getEmojiUnicode(\n  shortcode: string,\n  cache?: EmojiCache,\n): string {\n  const cached = cache?.get(shortcode);\n  if (cached) return cached.unicode;\n  return BUILTIN_EMOJIS[shortcode] || shortcode;\n}\n","import { CSSProperties } from \"react\";\nimport { getStyle } from \"@/utils/messageStyling\";\nimport { resolveBracketContent, getEmojiUnicode } from \"@/emoji/resolveEmoji\";\n\nfunction parseLine(input: string): [string[], string[], string[], string] {\n  // <red> controls comment only;\n  // (red) controls message only;\n  // [red] controls both comment and message.\n  const result = {\n    \"<>\": new Set<string>(),\n    \"()\": new Set<string>(),\n    \"[]\": new Set<string>(),\n  };\n  const pattern = /<([^>]*)>|\\(([^)]*)\\)|\\[([^\\]]*)\\]|([^<>()[\\]\\s]+)/g;\n  let match;\n  let lastMatchIndex: number | undefined;\n  while ((match = pattern.exec(input))) {\n    if (match[4]) {\n      if (lastMatchIndex !== undefined) lastMatchIndex = match.index;\n      // non-empty character outside brackets is encountered\n      break;\n    }\n    lastMatchIndex = match.index + match[0].length;\n    if (match[1]) {\n      match[1].split(\",\").forEach((s) => result[\"<>\"].add(s.trim()));\n    }\n    if (match[2]) {\n      match[2].split(\",\").forEach((s) => result[\"()\"].add(s.trim()));\n    }\n    if (match[3]) {\n      match[3].split(\",\").forEach((s) => result[\"[]\"].add(s.trim()));\n    }\n  }\n\n  return [\n    Array.from(result[\"<>\"]),\n    Array.from(result[\"()\"]),\n    Array.from(result[\"[]\"]),\n    input.slice(lastMatchIndex),\n  ];\n}\nexport default class CommentClass {\n  // define properties color and text\n  public text: string = \"\";\n  /** @deprecated use commentStyle or messageStyle instead */\n  public classNames: string[] = [];\n  /** @deprecated use commentClassNames or messageClassNames instead */\n  public textStyle: CSSProperties = {};\n\n  public commentStyle: CSSProperties = {};\n  public messageStyle: CSSProperties = {};\n  public commentClassNames: string[] = [];\n  public messageClassNames: string[] = [];\n  public emojis: string[] = [];\n\n  // Raw comment contains all spaces and newlines\n  constructor(raw: string) {\n    // Split by newlines, handling both with and without trailing newline\n    const lines = raw.trim().split(\"\\n\");\n    const lastLine = lines[lines.length - 1];\n    const [commentOnlyStyles, messageOnlyStyles, commonStyles, text] =\n      parseLine(lastLine);\n\n    // Resolve emoji from the common ([] bracket) styles\n    const resolved = resolveBracketContent(commonStyles.join(\", \"));\n    this.emojis = resolved.emojis;\n    // Filter emoji-only values from styles passed to getStyle\n    const emojiSet = new Set(this.emojis);\n    const stylesForGetStyle = commonStyles.filter((s) => {\n      // Remove colon-wrapped values (emoji override syntax like :red:)\n      if (/^:.+:$/.test(s)) return false;\n      // Remove values that resolved as emoji but not as CSS\n      return !emojiSet.has(s);\n    });\n\n    const { textStyle: commentStyle, classNames: commentClassNames } =\n      getStyle(commentOnlyStyles);\n    const { textStyle: messageStyle, classNames: messageClassNames } =\n      getStyle(messageOnlyStyles);\n    const { textStyle: commonStyle, classNames: commonClassNames } =\n      getStyle(stylesForGetStyle);\n\n    const baseText = (\n      lines.slice(0, lines.length - 1).join(\"\\n\") +\n      \"\\n\" +\n      text\n    ).trim();\n    const emojiPrefix = this.emojis\n      .map((name) => getEmojiUnicode(name))\n      .join(\"\");\n    this.text =\n      emojiPrefix && baseText\n        ? `${emojiPrefix} ${baseText}`\n        : emojiPrefix || baseText;\n    this.textStyle = { ...commonStyle, ...commentStyle, ...messageStyle };\n    this.classNames = [\n      ...commonClassNames,\n      ...commentClassNames,\n      ...messageClassNames,\n    ];\n    this.commentStyle = { ...commonStyle, ...commentStyle };\n    this.messageStyle = { ...commonStyle, ...messageStyle };\n    this.commentClassNames = [...commonClassNames, ...commentClassNames];\n    this.messageClassNames = [...commonClassNames, ...messageClassNames];\n  }\n}\n","import { marked } from \"marked\";\nimport Comment from \"../../components/Comment/Comment\";\n\nconst defaultTokensOptions = {\n  gfm: true,\n  breaks: true,\n};\n\nexport class MarkdownMeasurer {\n  measure(_text: string | undefined | null): number {\n    if (!_text || !_text.trim()) {\n      return 0;\n    }\n\n    const commentObj = new Comment(_text);\n    const tokens = marked.lexer(commentObj?.text ?? \"\", defaultTokensOptions);\n    if (!tokens.length) {\n      return 0;\n    }\n\n    const lines = _text.trim().split(\"\\n\");\n    // console.info(\n    //   \"MarkdownMeasurer\",\n    //   `commentObj?.text ${commentObj?.text}`,\n    //   `lines.length ${lines.length}`,\n    //   `tokens\", ${JSON.stringify(tokens)}`,\n    // );\n\n    return lines.length * 20;\n  }\n}\n","import { NodeVM } from \"./NodeVM\";\nimport type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport type { StatementKind } from \"@/positioning/vertical/StatementTypes\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { MarkdownMeasurer } from \"@/positioning/vertical/MarkdownMeasurer\";\n\nexport abstract class StatementVM extends NodeVM {\n  abstract readonly kind: StatementKind;\n\n  public abstract measure(top: number, origin: string): StatementCoordinate;\n\n  protected get metrics() {\n    return this.runtime.metrics;\n  }\n\n  protected measureComment(context: any = this.context): number {\n    if (!context?.getComment || !context.getComment()) return 0;\n    return new MarkdownMeasurer().measure(context.getComment());\n  }\n\n  protected resolveFragmentOrigin(fallbackOrigin: string): string {\n    try {\n      const participants = getLocalParticipantNames(this.context) || [];\n      return participants[0] || fallbackOrigin;\n    } catch (error) {\n      console.warn(\"Failed to resolve fragment origin\", error);\n      return fallbackOrigin;\n    }\n  }\n\n  protected findLeftParticipant(\n    ctx: any,\n    fallbackOrigin: string,\n  ): string | undefined {\n    if (!ctx) return undefined;\n    const local = getLocalParticipantNames(ctx) || [];\n    const ordered = this.runtime.participants;\n    return (\n      ordered.find((name) => local.includes(name)) ||\n      local[0] ||\n      fallbackOrigin ||\n      undefined\n    );\n  }\n\n  protected measureOccurrence(\n    context: any,\n    top: number,\n    participant?: string,\n    minHeight = 24, // .occurrence .min-h-6\n    contentInset = 1,\n  ): number {\n    // const enlog = participant === \"c\";\n    const block = context?.braceBlock?.()?.block?.();\n    if (!block) {\n      return minHeight;\n    }\n    const offset = this.metrics.statementMarginY - contentInset;\n    const blockStart = top - offset;\n    const blockEnd = this.layoutBlock(\n      block,\n      participant || this.runtime.originParticipant,\n      blockStart,\n    );\n    const height = blockEnd - blockStart - offset;\n    return Math.max(minHeight, height);\n  }\n\n  protected isRootLevelStatement(statCtx: any): boolean {\n    const block = statCtx?.parentCtx;\n    return block === this.runtime.rootBlock;\n  }\n\n  protected isFirstStatement(statCtx: any): boolean {\n    const block = statCtx?.parentCtx;\n    const statements: any[] = block?.stat?.() || [];\n    return statements.length > 0 && statements[0] === statCtx;\n  }\n\n  protected altHasMultipleBranches(ctx: any): boolean {\n    if (typeof ctx?.alt !== \"function\") {\n      return false;\n    }\n    const altContext = ctx.alt();\n    if (!altContext) {\n      return false;\n    }\n    const elseIfBlocks = altContext?.elseIfBlock?.() || [];\n    const hasElse = Boolean(altContext?.elseBlock?.());\n    return elseIfBlocks.length > 0 || hasElse;\n  }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class AsyncMessageStatementVM extends StatementVM {\n  readonly kind = \"async\" as const;\n\n  constructor(\n    statement: any,\n    private readonly asyncMessage: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, origin: string): StatementCoordinate {\n    const asyncContext = this.asyncMessage;\n    const commentHeight = this.measureComment(asyncContext);\n\n    const source =\n      asyncContext?.From?.() ||\n      asyncContext?.ProvidedFrom?.() ||\n      asyncContext?.Origin?.() ||\n      origin;\n\n    const target =\n      asyncContext?.Owner?.() ||\n      asyncContext?.to?.()?.getFormattedText?.() ||\n      source;\n\n    const isSelf = source === target;\n    const messageHeight = isSelf ? 44 : 16;\n\n    return {\n      top,\n      height: commentHeight + messageHeight,\n      kind: this.kind,\n    };\n  }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport logger from \"@/logger/logger\";\n\nconst CREATION_MESSAGE_HEIGHT = 40; // [data-type=\"creation\"], .h-10\n\nexport class CreationStatementVM extends StatementVM {\n  readonly kind = \"creation\" as const;\n\n  constructor(\n    statement: any,\n    private readonly creation: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, originParticipant: string): StatementCoordinate {\n    const participant = this.creation?.Owner?.() || originParticipant;\n\n    const commentHeight = this.measureComment(this.creation);\n    if (participant) {\n      this.runtime.updateCreationTop(participant, top + commentHeight);\n    }\n\n    let cursor = top + commentHeight + CREATION_MESSAGE_HEIGHT;\n    // console.info(\n    //   `creation::${participant}::start cursor:${cursor} commentHeight:${commentHeight}`,\n    // );\n\n    const block = this.creation?.braceBlock?.()?.block?.();\n    if (block) {\n      const fragmentOrigin =\n        this.findLeftParticipant(this.creation, originParticipant) || originParticipant;\n      cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n      cursor += 2; // .occurrence.border-2 for bottom\n    } else {\n      cursor += 22; // .occurrence, .min-h-6, .mt-[-2px]\n    }\n\n    const assignment = this.creation?.Assignment?.();\n    if (assignment) {\n      logger.info(`creation::assignment::${participant}`);\n      cursor += 12;\n    }\n\n    const height = cursor - top;\n    // console.info(\n    //   `creation::${participant}::end cursor:${cursor} height:${height}`,\n    // );\n\n    return {\n      top,\n      height,\n      kind: this.kind,\n    };\n  }\n}\n","import { StatementVM } from \"./StatementVM\";\nimport type { StatementCoordinate } from \"../StatementCoordinate\";\n\nexport class DividerStatementVM extends StatementVM {\n  readonly kind = \"divider\" as const;\n\n  public measure(top: number): StatementCoordinate {\n    return { top, height: 40, kind: this.kind };\n  }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\n\nexport class EmptyStatementVM extends StatementVM {\n  readonly kind = \"empty\" as const;\n\n  public measure(top: number): StatementCoordinate {\n    return { top, height: 0, kind: this.kind };\n  }\n}\n","import { StatementVM } from \"./StatementVM\";\n\nexport abstract class FragmentVM extends StatementVM {\n  protected beginFragment(context: any, top: number) {\n    const commentHeight = this.measureComment(context);\n    const headerHeight = this.metrics.fragmentHeaderHeight;\n\n    return {\n      cursor: top + commentHeight + headerHeight,\n      commentHeight,\n      headerHeight,\n    };\n  }\n\n  protected finalizeFragment(top: number, cursor: number) {\n    cursor += this.metrics.fragmentPaddingBottom;\n    return {\n      top,\n      height: cursor - top,\n    } as const;\n  }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class FragmentAltVM extends FragmentVM {\n  readonly kind = \"alt\" as const;\n\n  constructor(\n    statement: any,\n    private readonly alt: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, origin: string): StatementCoordinate {\n    const leftParticipant =\n      this.findLeftParticipant(this.alt, origin) || origin;\n\n    const commentHeight = this.measureComment(this.alt);\n    let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n    // console.info(\"FragmentAltVM::start\", leftParticipant, commentHeight);\n\n    const ifBlock = this.alt?.ifBlock?.();\n    if (ifBlock) {\n      // console.info(\"FragmentAltVM::ifBlock::start\", cursor);\n      cursor += 20; // .text-skin-fragment > label\n      cursor = this.layoutBlock(\n        ifBlock.braceBlock()?.block(),\n        leftParticipant,\n        cursor,\n      );\n      // console.info(\"FragmentAltVM::ifBlock::end\", cursor);\n    }\n    this.alt?.elseIfBlock?.()?.forEach((block: any) => {\n      // console.info(\"FragmentAltVM::elseIfBlock::start\", cursor);\n      cursor += 20; // .text-skin-fragment > label\n      cursor += 8; // .mt-2\n      cursor += 1; // .segment.border-t.border-solid\n      cursor = this.layoutBlock(\n        block?.braceBlock?.()?.block?.(),\n        leftParticipant,\n        cursor,\n      );\n      // console.info(\"FragmentAltVM::elseIfBlock::end\", cursor);\n    });\n    const elseBlock = this.alt?.elseBlock?.()?.braceBlock?.()?.block?.();\n    if (elseBlock) {\n      // console.info(\"FragmentAltVM::elseBlock::start\", cursor);\n      cursor += 20; // .text-skin-fragment > label\n      cursor += 8; // .mt-2\n      cursor += 1; // .segment.border-t.border-solid\n      cursor = this.layoutBlock(elseBlock, leftParticipant, cursor);\n      // console.info(\"FragmentAltVM::elseBlock::end\", cursor);\n    }\n\n    cursor += this.metrics.fragmentPaddingBottom + 1; // .zenuml .fragment =>padding-bottom: 10px\n    // console.info(\"FragmentAltVM::end\", cursor, cursor - top);\n\n    return {\n      top,\n      height: cursor - top,\n      kind: this.kind,\n    };\n  }\n}\n","import type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport type { StatementKind } from \"@/positioning/vertical/StatementTypes\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport abstract class FragmentSingleBlockVM extends FragmentVM {\n  abstract readonly kind: StatementKind;\n\n  constructor(\n    statement: any,\n    protected readonly fragment: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, origin: string): StatementCoordinate {\n    const commentHeight = this.measureComment(this.fragment);\n    let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n\n    const hasCondition = Boolean(this.fragment?.parExpr?.()?.condition?.());\n    if (hasCondition) cursor += 20;\n\n    const block = this.fragment?.braceBlock?.()?.block?.();\n    if (block) {\n      const fragmentOrigin =\n        this.findLeftParticipant(this.fragment, origin) || origin;\n      cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n    }\n\n    cursor += this.metrics.fragmentPaddingBottom + 1;\n\n    return {\n      top,\n      height: cursor - top,\n      kind: this.kind,\n    };\n  }\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentCriticalVM extends FragmentSingleBlockVM {\n  readonly kind = \"critical\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentLoopVM extends FragmentSingleBlockVM {\n  readonly kind = \"loop\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentOptVM extends FragmentSingleBlockVM {\n  readonly kind = \"opt\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentParVM extends FragmentSingleBlockVM {\n  readonly kind = \"par\" as const;\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\n\nexport class FragmentRefVM extends FragmentVM {\n  readonly kind = \"ref\" as const;\n\n  public measure(top: number): StatementCoordinate {\n    const context = this.context?.ref?.() || this.context;\n    const commentHeight = this.measureComment(context);\n    const headerHeight = this.metrics.fragmentHeaderHeight;\n    const height =\n      commentHeight + headerHeight + this.metrics.fragmentPaddingBottom;\n    return { top, height, kind: this.kind };\n  }\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentSectionVM extends FragmentSingleBlockVM {\n  readonly kind = \"section\" as const;\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class FragmentTryCatchVM extends FragmentVM {\n  readonly kind = \"tcf\" as const;\n\n  constructor(\n    statement: any,\n    private readonly tcf: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, origin: string): StatementCoordinate {\n    const leftParticipant =\n      this.findLeftParticipant(this.tcf, origin) || origin;\n\n    const commentHeight = this.measureComment(this.tcf);\n    let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n\n    const tryBlock = this.tcf?.tryBlock?.()?.braceBlock?.()?.block?.();\n    if (tryBlock) {\n      cursor = this.layoutBlock(tryBlock, leftParticipant, cursor);\n    }\n\n    const catchBlocks = this.tcf?.catchBlock?.() || [];\n    catchBlocks.forEach((catchBlock: any) => {\n      cursor += 20; // .text-skin-fragment > label\n      cursor += 8; // .mt-2\n      cursor += 1; // .segment.border-t.border-solid\n      const block = catchBlock?.braceBlock?.()?.block?.();\n      cursor = this.layoutBlock(block, leftParticipant, cursor);\n    });\n\n    const finallyBlock = this.tcf?.finallyBlock?.()?.braceBlock?.()?.block?.();\n    if (finallyBlock) {\n      cursor += 20; // .text-skin-fragment > label\n      cursor += 8; // .mt-2\n      cursor += 1; // .segment.border-t.border-solid\n      cursor = this.layoutBlock(finallyBlock, leftParticipant, cursor);\n    }\n\n    cursor += this.metrics.fragmentPaddingBottom + 1; // .fragment =>padding-bottom: 10px\n    // console.info(\"FragmentTryCatchVM::end\", cursor, cursor - top);\n\n    return {\n      top,\n      height: cursor - top,\n      kind: this.kind,\n    };\n  }\n}\n","import type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\n\nexport class ReturnStatementVM extends StatementVM {\n  readonly kind = \"return\" as const;\n  private readonly returnContext: any;\n\n  constructor(statement: any, runtime: LayoutRuntime) {\n    super(statement, runtime);\n    this.returnContext = statement?.ret?.();\n  }\n\n  public measure(top: number): StatementCoordinate {\n    const context = this.returnContext || this.context;\n    const commentHeight = this.measureComment(context);\n    let cursor = top + commentHeight;\n\n    const ret = this.returnContext;\n    const asyncMessage = ret?.asyncMessage?.();\n    const source = asyncMessage?.From?.() || ret?.From?.() || _STARTER_;\n    const target =\n      asyncMessage?.to?.()?.getFormattedText?.() ||\n      ret?.ReturnTo?.() ||\n      _STARTER_;\n    const isSelf = source === target;\n\n    const messageHeight = isSelf ? 20 : 0;\n    cursor += messageHeight;\n\n    // CSS: .occurrence .block > .statement-container:last-child > .interaction.return\n    // applies margin-bottom: -16px, collapsing the return's bottom space.\n    // The collapse only applies to direct-child returns in the last position AND\n    // only when the block is (directly or indirectly) inside an occurrence element\n    // (i.e. a sync message or creation with a braceBlock body).\n    //\n    // If the return's fragment section block is NOT inside any occurrence, the CSS\n    // ancestor selector `.occurrence .block` does not match, so the return occupies\n    // its full 16px height in HTML.\n    if (!isSelf) {\n      const block = this.context?.parentCtx;\n      const siblings = block?.stat?.() || [];\n      const isLast = siblings[siblings.length - 1] === this.context;\n      // Walk up to check if any ancestor context is a message/creation (occurrence body).\n      // `message` context has a `messageBody()` method; `creation` has `creationBody()`.\n      // Root-level or fragment-only contexts (alt/tcf/loop/etc.) have neither.\n      const isInsideOccurrence = (() => {\n        let ctx = block?.parentCtx; // start from braceBlock upward\n        while (ctx) {\n          if (typeof ctx.messageBody === \"function\" || typeof ctx.creationBody === \"function\") {\n            return true;\n          }\n          ctx = ctx.parentCtx;\n        }\n        return false;\n      })();\n      if (!isLast || !isInsideOccurrence) {\n        cursor += 16;\n      }\n    }\n\n    const height = cursor - top;\n    // console.info(\"returnVM::\", top, commentHeight, source, target, height);\n\n    return { top, height, kind: this.kind };\n  }\n}\n","import { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class SyncMessageStatementVM extends StatementVM {\n  readonly kind = \"sync\" as const;\n\n  constructor(\n    statement: any,\n    private readonly message: any,\n    runtime: LayoutRuntime,\n  ) {\n    super(statement, runtime);\n  }\n\n  public measure(top: number, origin: string): StatementCoordinate {\n    const commentHeight = this.measureComment(this.message);\n    let cursor = top + commentHeight;\n\n    const source = this.message.From?.() || _STARTER_;\n    const target = this.message.Owner?.() || _STARTER_;\n    const block = this.message.braceBlock?.()?.block?.();\n\n    const assignee = this.message.Assignment?.();\n\n    const isSelf = source === target;\n    const messageHeight = isSelf ? 30 : 16;\n    cursor += messageHeight;\n\n    if (block) {\n      const fragmentOrigin =\n        this.findLeftParticipant(this.message, origin) || origin;\n      cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n      cursor += 2; // .occurrence.border-2 for bottom\n\n    } else {\n      cursor += 22; // .occurrence, .min-h-6, .mt-[-2px]\n    }\n\n    if (assignee && !isSelf) {\n      cursor += 12;\n    }\n\n    const height = cursor - top;\n    // console.info(\"syncMessageVM::end\", height, commentHeight, messageHeight);\n\n    return { top, height, kind: this.kind };\n  }\n}\n","import { AsyncMessageStatementVM } from \"./AsyncMessageStatementVM\";\nimport { CreationStatementVM } from \"./CreationStatementVM\";\nimport { DividerStatementVM } from \"./DividerStatementVM\";\nimport { EmptyStatementVM } from \"./EmptyStatementVM\";\nimport { FragmentAltVM } from \"./FragmentAltVM\";\nimport { FragmentCriticalVM } from \"./FragmentCriticalVM\";\nimport { FragmentLoopVM } from \"./FragmentLoopVM\";\nimport { FragmentOptVM } from \"./FragmentOptVM\";\nimport { FragmentParVM } from \"./FragmentParVM\";\nimport { FragmentRefVM } from \"./FragmentRefVM\";\nimport { FragmentSectionVM } from \"./FragmentSectionVM\";\nimport { FragmentTryCatchVM } from \"./FragmentTryCatchVM\";\nimport { ReturnStatementVM } from \"./ReturnStatementVM\";\nimport type { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { SyncMessageStatementVM } from \"./SyncMessageStatementVM\";\n\nexport const createStatementVM = (\n  statement: any,\n  runtime: LayoutRuntime,\n): StatementVM => {\n  const creation = statement.creation?.();\n  if (creation) {\n    return new CreationStatementVM(statement, creation, runtime);\n  }\n\n  const message = statement.message?.();\n  if (message) {\n    return new SyncMessageStatementVM(statement, message, runtime);\n  }\n\n  const asyncMessage = statement.asyncMessage?.();\n  if (asyncMessage) {\n    return new AsyncMessageStatementVM(statement, asyncMessage, runtime);\n  }\n\n  if (statement.ret?.()) {\n    return new ReturnStatementVM(statement, runtime);\n  }\n\n  if (statement.divider?.()) {\n    return new DividerStatementVM(statement, runtime);\n  }\n\n  const loop = statement.loop?.();\n  if (loop) {\n    return new FragmentLoopVM(statement, loop, runtime);\n  }\n\n  const opt = statement.opt?.();\n  if (opt) {\n    return new FragmentOptVM(statement, opt, runtime);\n  }\n\n  const par = statement.par?.();\n  if (par) {\n    return new FragmentParVM(statement, par, runtime);\n  }\n\n  const section = statement.section?.();\n  if (section) {\n    return new FragmentSectionVM(statement, section, runtime);\n  }\n\n  const critical = statement.critical?.();\n  if (critical) {\n    return new FragmentCriticalVM(statement, critical, runtime);\n  }\n\n  const tcf = statement.tcf?.();\n  if (tcf) {\n    return new FragmentTryCatchVM(statement, tcf, runtime);\n  }\n\n  const alt = statement.alt?.();\n  if (alt) {\n    return new FragmentAltVM(statement, alt, runtime);\n  }\n\n  if (statement.ref?.()) {\n    return new FragmentRefVM(statement, runtime);\n  }\n\n  return new EmptyStatementVM(statement, runtime);\n};\n","import { NodeVM } from \"./NodeVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { createStatementVM } from \"./createStatementVM\";\nimport type { StatementKind } from \"../StatementTypes\";\n\nexport class BlockVM extends NodeVM {\n  private readonly statements: any[];\n\n  constructor(context: any, runtime: LayoutRuntime) {\n    super(context, runtime);\n    this.statements = context?.stat?.() || [];\n  }\n\n  public layout(\n    originParticipant: string,\n    startTop: number,\n    parentKind?: StatementKind,\n  ): number {\n    if (!this.statements.length) return startTop;\n\n    const metrics = this.runtime.metrics;\n    // console.info(\n    //   `blockVM::start cursor:${startTop} statements.size:${this.statements.length}`,\n    // );\n    let cursor = startTop + metrics.statementMarginY; // .statement-container .my-4\n\n    this.statements.forEach((statement: any, index: number) => {\n      if (parentKind === \"par\" && index !== 0) cursor += 1;\n\n      const statementVM = createStatementVM(statement, this.runtime);\n      // console.info(`statementVM::start::${statementVM.kind} cursor:${cursor}`);\n      const coordinate = statementVM.measure(cursor, originParticipant);\n      this.runtime.recordCoordinate(statement, coordinate);\n      cursor = coordinate.top + coordinate.height + metrics.statementMarginY;\n      // console.info(\n      //   `statementVM::end::${statementVM.kind} height:${coordinate.height} cursor:${cursor}`,\n      // );\n    });\n\n    // console.info(`blockVM::end cursor:${cursor}`);\n    return cursor;\n  }\n}\n","const SPACING_UNIT = 4; // Tailwind spacing scale unit (1 => 0.25rem => 4px)\nconst tw = (value: number) => value * SPACING_UNIT;\n\nexport interface LayoutMetrics {\n  statementMarginY: number;\n  fragmentHeaderHeight: number;\n  fragmentPaddingBottom: number;\n}\n\nexport const DEFAULT_LAYOUT_METRICS: LayoutMetrics = {\n  statementMarginY: tw(4), // .statement-container .my-4\n  fragmentHeaderHeight: 25, // .fragment .leading-4 => line-height: 1rem\n  fragmentPaddingBottom: 10, // .zenuml .fragment =>padding-bottom: 10px\n};\n","import { createStatementKey } from \"@/positioning/vertical/StatementIdentifier\";\nimport type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport { _STARTER_, OrderedParticipants } from \"@/parser/OrderedParticipants\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport type { LayoutRuntime } from \"./vertical/vm/types\";\nimport logger from \"@/logger/logger\";\nimport { BlockVM } from \"./vertical/vm/BlockVM\";\nimport { DEFAULT_LAYOUT_METRICS as metrics } from \"./vertical/LayoutMetrics\";\n\nexport class VerticalCoordinates {\n  private readonly statementMap = new Map<string, StatementCoordinate>();\n  private readonly creationTops = new Map<string, number>();\n  private readonly totalHeight: number;\n\n  constructor(rootContext: any) {\n    const rootBlock = rootContext?.block?.() ?? rootContext;\n\n    const participants = OrderedParticipants(rootContext).map((p) => p.name);\n    // console.info(\"participants\", participants);\n\n    const messages = AllMessages(rootContext);\n    // console.info(\"messages\", JSON.stringify(messages));\n    const originParticipant =\n      messages.length === 0 ? _STARTER_ : messages[0].from || _STARTER_;\n\n    const runtime: LayoutRuntime = {\n      metrics,\n      rootBlock,\n      participants,\n      originParticipant,\n      recordCoordinate: (statement: any, coordinate: StatementCoordinate) => {\n        const key = createStatementKey(statement);\n        this.statementMap.set(key, coordinate);\n      },\n      updateCreationTop: (participant: string, top: number) => {\n        const paddingTop = top - 8; // .life-line-layer, .pt-2\n        logger.info(`[VerticalCoordinates] updateCreationTop participant=\"${participant}\" raw=${top} paddingTop=${paddingTop}`);\n        this.creationTops.set(participant, paddingTop);\n      },\n    };\n\n    const rootBlockVM = new BlockVM(rootBlock, runtime);\n    this.totalHeight = rootBlockVM.layout(originParticipant, 56); // .message-layer, .pt-14 => 56px\n  }\n\n  getCreationTop(participant: string): number | undefined {\n    return this.creationTops.get(participant);\n  }\n\n  getStatementCoordinate(key: string): StatementCoordinate | undefined {\n    return this.statementMap.get(key);\n  }\n\n  getStatementCoordinateFor(statement: any): StatementCoordinate | undefined {\n    return this.statementMap.get(createStatementKey(statement));\n  }\n\n  entries(): Array<[string, StatementCoordinate]> {\n    return Array.from(this.statementMap.entries());\n  }\n\n  getTotalHeight(): number {\n    return this.totalHeight;\n  }\n}\n","import { atom } from \"jotai\";\nimport { atomWithLocalStorage, atomWithFunctionValue } from \"./utils.ts\";\nimport { RootContext, Participants } from \"@/parser\";\nimport WidthProviderOnBrowser, {\n  WidthProviderOnCanvas,\n} from \"../positioning/WidthProviderFunc\";\nimport type { WidthFunc } from \"../positioning/Coordinate\";\nimport { Coordinates } from \"../positioning/Coordinates\";\nimport { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport type { CodeRange } from \"../parser/CodeRange\";\nimport logger from \"@/logger/logger\";\n\ntype VerticalMode = \"html\" | \"legacy\";\nconst resolveVerticalMode = (): VerticalMode => {\n  const mode =\n    import.meta.env.VITE_VERTICAL_MODE === \"legacy\" ? \"legacy\" : \"html\";\n  logger.info(\n    `[VerticalMode] resolved=\"${mode}\" (VITE_VERTICAL_MODE=\"${import.meta.env.VITE_VERTICAL_MODE}\")`,\n  );\n  return mode;\n};\n\nexport const resolveWidthProvider = (): WidthFunc => {\n  const urlParam =\n    typeof location !== \"undefined\"\n      ? new URLSearchParams(location.search).get(\"WIDTH_PROVIDER\")\n      : null;\n  const mode =\n    (urlParam || import.meta.env.VITE_WIDTH_PROVIDER) === \"canvas\"\n      ? \"canvas\"\n      : \"browser\";\n  logger.debug(`[ZenUML] WidthProvider: ${mode}`);\n  return mode === \"canvas\" ? WidthProviderOnCanvas : WidthProviderOnBrowser;\n};\n\n/*\n * RenderMode\n * Static: Compatible with Mermaid which renders once and never update. It also disables sticky participants and hides the footer\n * Dynamic: Render once and update when code changes\n */\nexport const enum RenderMode {\n  Static = \"static\",\n  Dynamic = \"dynamic\",\n}\n\nexport const codeAtom = atom(\"\");\n\nexport const rootContextAtom = atom((get) => {\n  const code = get(codeAtom);\n  if (!code.trim()) return null;\n  return RootContext(code);\n});\n\nexport const titleAtom = atom<string | undefined>((get) => {\n  const titleContext = get(rootContextAtom)?.title();\n  if (!titleContext || typeof (titleContext as any).content !== \"function\") {\n    return undefined;\n  }\n  return (titleContext as any).content();\n});\n\nexport const participantsAtom = atom((get) => {\n  const rootContext = get(rootContextAtom);\n  if (!rootContext) return Participants(null);\n  return Participants(rootContext);\n});\n\nexport const coordinatesAtom = atom(\n  (get) => new Coordinates(get(rootContextAtom), resolveWidthProvider()),\n);\n\nexport const verticalModeAtom = atom<VerticalMode>(resolveVerticalMode());\n\nexport const verticalCoordinatesAtom = atom((get) => {\n  if (get(verticalModeAtom) === \"legacy\") {\n    return null;\n  }\n  const rootContext = get(rootContextAtom);\n  if (!rootContext) {\n    return null;\n  }\n  return new VerticalCoordinates(rootContext);\n});\n\nexport const themeAtom = atom(\"theme-default\");\n\nexport const enableScopedThemingAtom = atom<boolean>(false);\n\nexport const themeIconDotAtom = atomWithLocalStorage(\n  `${location.hostname}-zenuml-theme-icon-dot`,\n  \"1\",\n);\n\nexport const enableMultiThemeAtom = atom(true);\n\nexport const scaleAtom = atom(1);\n\nexport const selectedAtom = atom<string[]>([]);\n\nexport const onSelectAtom = atom(null, (get, set, payload: string) => {\n  const selected = get(selectedAtom);\n  if (selected.includes(payload)) {\n    set(\n      selectedAtom,\n      selected.filter((item) => item !== payload),\n    );\n  } else {\n    set(selectedAtom, [...selected, payload]);\n  }\n});\n\nexport const cursorAtom = atom<number | null | undefined>(null);\n\nexport const showTipsAtom = atom(false);\n\nexport const modeAtom = atom(RenderMode.Dynamic);\n\n// Editing feature flags. Default off so embedders (e.g. mermaid) get safe behavior;\n// embedders opt in per surface. The dev site (main.tsx) enables them explicitly.\nexport const enableParticipantInsertionAtom = atom(false);\nexport const enableMessageInsertionAtom = atom(false);\nexport const enableDividerInsertionAtom = atom(false);\nexport const enableParticipantStyleEditingAtom = atom(false);\n\nexport const enableNumberingAtom = atomWithLocalStorage(\n  `${location.hostname}-zenuml-numbering`,\n  true,\n);\n\nexport const stickyOffsetAtom = atom<number | false>(0);\n\nexport const diagramElementAtom = atom<HTMLElement | null>(null);\n\nexport const onElementClickAtom = atomWithFunctionValue(\n  (codeRange: CodeRange) => {\n    logger.debug(\"Element clicked\", codeRange);\n  },\n);\n\nexport const onMessageClickAtom = atomWithFunctionValue<\n  (context: any, element: HTMLElement) => void\n>(() => {});\n\nexport const selectedMessageAtom = atom<{\n  start: number;\n  end: number;\n  token: number;\n} | null>(null);\n\nexport const onContentChangeAtom = atomWithFunctionValue<\n  (code: string) => void\n>(() => {});\n\nexport const pendingEditableRangeAtom = atom<{\n  start: number;\n  end: number;\n  token: number;\n} | null>(null);\n\nexport const onThemeChangeAtom = atomWithFunctionValue<\n  (data: { theme: string; scoped: boolean }) => void\n>(() => {});\n\nexport const onEventEmitAtom = atomWithFunctionValue<\n  (name: string, data: any) => void\n>(() => {});\n\nexport const createMessageDragAtom = atom<{\n  source: string;\n  sourceX: number;\n  sourceY: number;\n  pointerX: number;\n  pointerY: number;\n  hoverTarget: string | null;\n  insertIndex: number;\n  blockContext: any | null;\n  hostContext?: any;\n} | null>(null);\n\nexport const messageReorderDragAtom = atom<string | null>(null);\n\nexport const messageReorderPendingAtom = atom<{\n  key: string;\n  startX: number;\n  startY: number;\n} | null>(null);\n\nexport const messageReorderDropAtom = atom<{\n  key: string;\n  place: \"before\" | \"after\";\n} | null>(null);\n\nexport const lifelineReadyAtom = atom<string[]>([]);\n\nexport const renderingReadyAtom = atom((get) => {\n  const lifeLineReady = get(lifelineReadyAtom);\n  const { participants } = get(participantsAtom);\n  return lifeLineReady.length === Array.from(participants).length;\n});\n","export function resolveUrl(url, baseUrl) {\n    // url is absolute already\n    if (url.match(/^[a-z]+:\\/\\//i)) {\n        return url;\n    }\n    // url is absolute already, without protocol\n    if (url.match(/^\\/\\//)) {\n        return window.location.protocol + url;\n    }\n    // dataURI, mailto:, tel:, etc.\n    if (url.match(/^[a-z]+:/i)) {\n        return url;\n    }\n    const doc = document.implementation.createHTMLDocument();\n    const base = doc.createElement('base');\n    const a = doc.createElement('a');\n    doc.head.appendChild(base);\n    doc.body.appendChild(a);\n    if (baseUrl) {\n        base.href = baseUrl;\n    }\n    a.href = url;\n    return a.href;\n}\nexport const uuid = (() => {\n    // generate uuid for className of pseudo elements.\n    // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n    let counter = 0;\n    // ref: http://stackoverflow.com/a/6248722/2519373\n    const random = () => \n    // eslint-disable-next-line no-bitwise\n    `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4);\n    return () => {\n        counter += 1;\n        return `u${random()}${counter}`;\n    };\n})();\nexport function delay(ms) {\n    return (args) => new Promise((resolve) => {\n        setTimeout(() => resolve(args), ms);\n    });\n}\nexport function toArray(arrayLike) {\n    const arr = [];\n    for (let i = 0, l = arrayLike.length; i < l; i++) {\n        arr.push(arrayLike[i]);\n    }\n    return arr;\n}\nlet styleProps = null;\nexport function getStyleProperties(options = {}) {\n    if (styleProps) {\n        return styleProps;\n    }\n    if (options.includeStyleProperties) {\n        styleProps = options.includeStyleProperties;\n        return styleProps;\n    }\n    styleProps = toArray(window.getComputedStyle(document.documentElement));\n    return styleProps;\n}\nfunction px(node, styleProperty) {\n    const win = node.ownerDocument.defaultView || window;\n    const val = win.getComputedStyle(node).getPropertyValue(styleProperty);\n    return val ? parseFloat(val.replace('px', '')) : 0;\n}\nfunction getNodeWidth(node) {\n    const leftBorder = px(node, 'border-left-width');\n    const rightBorder = px(node, 'border-right-width');\n    return node.clientWidth + leftBorder + rightBorder;\n}\nfunction getNodeHeight(node) {\n    const topBorder = px(node, 'border-top-width');\n    const bottomBorder = px(node, 'border-bottom-width');\n    return node.clientHeight + topBorder + bottomBorder;\n}\nexport function getImageSize(targetNode, options = {}) {\n    const width = options.width || getNodeWidth(targetNode);\n    const height = options.height || getNodeHeight(targetNode);\n    return { width, height };\n}\nexport function getPixelRatio() {\n    let ratio;\n    let FINAL_PROCESS;\n    try {\n        FINAL_PROCESS = process;\n    }\n    catch (e) {\n        // pass\n    }\n    const val = FINAL_PROCESS && FINAL_PROCESS.env\n        ? FINAL_PROCESS.env.devicePixelRatio\n        : null;\n    if (val) {\n        ratio = parseInt(val, 10);\n        if (Number.isNaN(ratio)) {\n            ratio = 1;\n        }\n    }\n    return ratio || window.devicePixelRatio || 1;\n}\n// @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size\nconst canvasDimensionLimit = 16384;\nexport function checkCanvasDimensions(canvas) {\n    if (canvas.width > canvasDimensionLimit ||\n        canvas.height > canvasDimensionLimit) {\n        if (canvas.width > canvasDimensionLimit &&\n            canvas.height > canvasDimensionLimit) {\n            if (canvas.width > canvas.height) {\n                canvas.height *= canvasDimensionLimit / canvas.width;\n                canvas.width = canvasDimensionLimit;\n            }\n            else {\n                canvas.width *= canvasDimensionLimit / canvas.height;\n                canvas.height = canvasDimensionLimit;\n            }\n        }\n        else if (canvas.width > canvasDimensionLimit) {\n            canvas.height *= canvasDimensionLimit / canvas.width;\n            canvas.width = canvasDimensionLimit;\n        }\n        else {\n            canvas.width *= canvasDimensionLimit / canvas.height;\n            canvas.height = canvasDimensionLimit;\n        }\n    }\n}\nexport function canvasToBlob(canvas, options = {}) {\n    if (canvas.toBlob) {\n        return new Promise((resolve) => {\n            canvas.toBlob(resolve, options.type ? options.type : 'image/png', options.quality ? options.quality : 1);\n        });\n    }\n    return new Promise((resolve) => {\n        const binaryString = window.atob(canvas\n            .toDataURL(options.type ? options.type : undefined, options.quality ? options.quality : undefined)\n            .split(',')[1]);\n        const len = binaryString.length;\n        const binaryArray = new Uint8Array(len);\n        for (let i = 0; i < len; i += 1) {\n            binaryArray[i] = binaryString.charCodeAt(i);\n        }\n        resolve(new Blob([binaryArray], {\n            type: options.type ? options.type : 'image/png',\n        }));\n    });\n}\nexport function createImage(url) {\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => {\n            img.decode().then(() => {\n                requestAnimationFrame(() => resolve(img));\n            });\n        };\n        img.onerror = reject;\n        img.crossOrigin = 'anonymous';\n        img.decoding = 'async';\n        img.src = url;\n    });\n}\nexport async function svgToDataURL(svg) {\n    return Promise.resolve()\n        .then(() => new XMLSerializer().serializeToString(svg))\n        .then(encodeURIComponent)\n        .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);\n}\nexport async function nodeToDataURL(node, width, height) {\n    const xmlns = 'http://www.w3.org/2000/svg';\n    const svg = document.createElementNS(xmlns, 'svg');\n    const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttribute('width', `${width}`);\n    svg.setAttribute('height', `${height}`);\n    svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n    foreignObject.setAttribute('width', '100%');\n    foreignObject.setAttribute('height', '100%');\n    foreignObject.setAttribute('x', '0');\n    foreignObject.setAttribute('y', '0');\n    foreignObject.setAttribute('externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n    foreignObject.appendChild(node);\n    return svgToDataURL(svg);\n}\nexport const isInstanceOfElement = (node, instance) => {\n    if (node instanceof instance)\n        return true;\n    const nodePrototype = Object.getPrototypeOf(node);\n    if (nodePrototype === null)\n        return false;\n    return (nodePrototype.constructor.name === instance.name ||\n        isInstanceOfElement(nodePrototype, instance));\n};\n//# sourceMappingURL=util.js.map","import { uuid, getStyleProperties } from './util';\nfunction formatCSSText(style) {\n    const content = style.getPropertyValue('content');\n    return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`;\n}\nfunction formatCSSProperties(style, options) {\n    return getStyleProperties(options)\n        .map((name) => {\n        const value = style.getPropertyValue(name);\n        const priority = style.getPropertyPriority(name);\n        return `${name}: ${value}${priority ? ' !important' : ''};`;\n    })\n        .join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style, options) {\n    const selector = `.${className}:${pseudo}`;\n    const cssText = style.cssText\n        ? formatCSSText(style)\n        : formatCSSProperties(style, options);\n    return document.createTextNode(`${selector}{${cssText}}`);\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo, options) {\n    const style = window.getComputedStyle(nativeNode, pseudo);\n    const content = style.getPropertyValue('content');\n    if (content === '' || content === 'none') {\n        return;\n    }\n    const className = uuid();\n    try {\n        clonedNode.className = `${clonedNode.className} ${className}`;\n    }\n    catch (err) {\n        return;\n    }\n    const styleElement = document.createElement('style');\n    styleElement.appendChild(getPseudoElementStyle(className, pseudo, style, options));\n    clonedNode.appendChild(styleElement);\n}\nexport function clonePseudoElements(nativeNode, clonedNode, options) {\n    clonePseudoElement(nativeNode, clonedNode, ':before', options);\n    clonePseudoElement(nativeNode, clonedNode, ':after', options);\n}\n//# sourceMappingURL=clone-pseudos.js.map","const WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\nconst mimes = {\n    woff: WOFF,\n    woff2: WOFF,\n    ttf: 'application/font-truetype',\n    eot: 'application/vnd.ms-fontobject',\n    png: 'image/png',\n    jpg: JPEG,\n    jpeg: JPEG,\n    gif: 'image/gif',\n    tiff: 'image/tiff',\n    svg: 'image/svg+xml',\n    webp: 'image/webp',\n};\nfunction getExtension(url) {\n    const match = /\\.([^./]*?)$/g.exec(url);\n    return match ? match[1] : '';\n}\nexport function getMimeType(url) {\n    const extension = getExtension(url).toLowerCase();\n    return mimes[extension] || '';\n}\n//# sourceMappingURL=mimes.js.map","function getContentFromDataUrl(dataURL) {\n    return dataURL.split(/,/)[1];\n}\nexport function isDataUrl(url) {\n    return url.search(/^(data:)/) !== -1;\n}\nexport function makeDataUrl(content, mimeType) {\n    return `data:${mimeType};base64,${content}`;\n}\nexport async function fetchAsDataURL(url, init, process) {\n    const res = await fetch(url, init);\n    if (res.status === 404) {\n        throw new Error(`Resource \"${res.url}\" not found`);\n    }\n    const blob = await res.blob();\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onerror = reject;\n        reader.onloadend = () => {\n            try {\n                resolve(process({ res, result: reader.result }));\n            }\n            catch (error) {\n                reject(error);\n            }\n        };\n        reader.readAsDataURL(blob);\n    });\n}\nconst cache = {};\nfunction getCacheKey(url, contentType, includeQueryParams) {\n    let key = url.replace(/\\?.*/, '');\n    if (includeQueryParams) {\n        key = url;\n    }\n    // font resource\n    if (/ttf|otf|eot|woff2?/i.test(key)) {\n        key = key.replace(/.*\\//, '');\n    }\n    return contentType ? `[${contentType}]${key}` : key;\n}\nexport async function resourceToDataURL(resourceUrl, contentType, options) {\n    const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);\n    if (cache[cacheKey] != null) {\n        return cache[cacheKey];\n    }\n    // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n    if (options.cacheBust) {\n        // eslint-disable-next-line no-param-reassign\n        resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();\n    }\n    let dataURL;\n    try {\n        const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {\n            if (!contentType) {\n                // eslint-disable-next-line no-param-reassign\n                contentType = res.headers.get('Content-Type') || '';\n            }\n            return getContentFromDataUrl(result);\n        });\n        dataURL = makeDataUrl(content, contentType);\n    }\n    catch (error) {\n        dataURL = options.imagePlaceholder || '';\n        let msg = `Failed to fetch resource: ${resourceUrl}`;\n        if (error) {\n            msg = typeof error === 'string' ? error : error.message;\n        }\n        if (msg) {\n            console.warn(msg);\n        }\n    }\n    cache[cacheKey] = dataURL;\n    return dataURL;\n}\n//# sourceMappingURL=dataurl.js.map","import { clonePseudoElements } from './clone-pseudos';\nimport { createImage, toArray, isInstanceOfElement, getStyleProperties, } from './util';\nimport { getMimeType } from './mimes';\nimport { resourceToDataURL } from './dataurl';\nasync function cloneCanvasElement(canvas) {\n    const dataURL = canvas.toDataURL();\n    if (dataURL === 'data:,') {\n        return canvas.cloneNode(false);\n    }\n    return createImage(dataURL);\n}\nasync function cloneVideoElement(video, options) {\n    if (video.currentSrc) {\n        const canvas = document.createElement('canvas');\n        const ctx = canvas.getContext('2d');\n        canvas.width = video.clientWidth;\n        canvas.height = video.clientHeight;\n        ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n        const dataURL = canvas.toDataURL();\n        return createImage(dataURL);\n    }\n    const poster = video.poster;\n    const contentType = getMimeType(poster);\n    const dataURL = await resourceToDataURL(poster, contentType, options);\n    return createImage(dataURL);\n}\nasync function cloneIFrameElement(iframe, options) {\n    var _a;\n    try {\n        if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {\n            return (await cloneNode(iframe.contentDocument.body, options, true));\n        }\n    }\n    catch (_b) {\n        // Failed to clone iframe\n    }\n    return iframe.cloneNode(false);\n}\nasync function cloneSingleNode(node, options) {\n    if (isInstanceOfElement(node, HTMLCanvasElement)) {\n        return cloneCanvasElement(node);\n    }\n    if (isInstanceOfElement(node, HTMLVideoElement)) {\n        return cloneVideoElement(node, options);\n    }\n    if (isInstanceOfElement(node, HTMLIFrameElement)) {\n        return cloneIFrameElement(node, options);\n    }\n    return node.cloneNode(isSVGElement(node));\n}\nconst isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';\nconst isSVGElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SVG';\nasync function cloneChildren(nativeNode, clonedNode, options) {\n    var _a, _b;\n    if (isSVGElement(clonedNode)) {\n        return clonedNode;\n    }\n    let children = [];\n    if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {\n        children = toArray(nativeNode.assignedNodes());\n    }\n    else if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n        ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {\n        children = toArray(nativeNode.contentDocument.body.childNodes);\n    }\n    else {\n        children = toArray(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);\n    }\n    if (children.length === 0 ||\n        isInstanceOfElement(nativeNode, HTMLVideoElement)) {\n        return clonedNode;\n    }\n    await children.reduce((deferred, child) => deferred\n        .then(() => cloneNode(child, options))\n        .then((clonedChild) => {\n        if (clonedChild) {\n            clonedNode.appendChild(clonedChild);\n        }\n    }), Promise.resolve());\n    return clonedNode;\n}\nfunction cloneCSSStyle(nativeNode, clonedNode, options) {\n    const targetStyle = clonedNode.style;\n    if (!targetStyle) {\n        return;\n    }\n    const sourceStyle = window.getComputedStyle(nativeNode);\n    if (sourceStyle.cssText) {\n        targetStyle.cssText = sourceStyle.cssText;\n        targetStyle.transformOrigin = sourceStyle.transformOrigin;\n    }\n    else {\n        getStyleProperties(options).forEach((name) => {\n            let value = sourceStyle.getPropertyValue(name);\n            if (name === 'font-size' && value.endsWith('px')) {\n                const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;\n                value = `${reducedFont}px`;\n            }\n            if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n                name === 'display' &&\n                value === 'inline') {\n                value = 'block';\n            }\n            if (name === 'd' && clonedNode.getAttribute('d')) {\n                value = `path(${clonedNode.getAttribute('d')})`;\n            }\n            targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));\n        });\n    }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n    if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {\n        clonedNode.innerHTML = nativeNode.value;\n    }\n    if (isInstanceOfElement(nativeNode, HTMLInputElement)) {\n        clonedNode.setAttribute('value', nativeNode.value);\n    }\n}\nfunction cloneSelectValue(nativeNode, clonedNode) {\n    if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {\n        const clonedSelect = clonedNode;\n        const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));\n        if (selectedOption) {\n            selectedOption.setAttribute('selected', '');\n        }\n    }\n}\nfunction decorate(nativeNode, clonedNode, options) {\n    if (isInstanceOfElement(clonedNode, Element)) {\n        cloneCSSStyle(nativeNode, clonedNode, options);\n        clonePseudoElements(nativeNode, clonedNode, options);\n        cloneInputValue(nativeNode, clonedNode);\n        cloneSelectValue(nativeNode, clonedNode);\n    }\n    return clonedNode;\n}\nasync function ensureSVGSymbols(clone, options) {\n    const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];\n    if (uses.length === 0) {\n        return clone;\n    }\n    const processedDefs = {};\n    for (let i = 0; i < uses.length; i++) {\n        const use = uses[i];\n        const id = use.getAttribute('xlink:href');\n        if (id) {\n            const exist = clone.querySelector(id);\n            const definition = document.querySelector(id);\n            if (!exist && definition && !processedDefs[id]) {\n                // eslint-disable-next-line no-await-in-loop\n                processedDefs[id] = (await cloneNode(definition, options, true));\n            }\n        }\n    }\n    const nodes = Object.values(processedDefs);\n    if (nodes.length) {\n        const ns = 'http://www.w3.org/1999/xhtml';\n        const svg = document.createElementNS(ns, 'svg');\n        svg.setAttribute('xmlns', ns);\n        svg.style.position = 'absolute';\n        svg.style.width = '0';\n        svg.style.height = '0';\n        svg.style.overflow = 'hidden';\n        svg.style.display = 'none';\n        const defs = document.createElementNS(ns, 'defs');\n        svg.appendChild(defs);\n        for (let i = 0; i < nodes.length; i++) {\n            defs.appendChild(nodes[i]);\n        }\n        clone.appendChild(svg);\n    }\n    return clone;\n}\nexport async function cloneNode(node, options, isRoot) {\n    if (!isRoot && options.filter && !options.filter(node)) {\n        return null;\n    }\n    return Promise.resolve(node)\n        .then((clonedNode) => cloneSingleNode(clonedNode, options))\n        .then((clonedNode) => cloneChildren(node, clonedNode, options))\n        .then((clonedNode) => decorate(node, clonedNode, options))\n        .then((clonedNode) => ensureSVGSymbols(clonedNode, options));\n}\n//# sourceMappingURL=clone-node.js.map","import { resolveUrl } from './util';\nimport { getMimeType } from './mimes';\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl';\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction toRegex(url) {\n    // eslint-disable-next-line no-useless-escape\n    const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n    return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g');\n}\nexport function parseURLs(cssText) {\n    const urls = [];\n    cssText.replace(URL_REGEX, (raw, quotation, url) => {\n        urls.push(url);\n        return raw;\n    });\n    return urls.filter((url) => !isDataUrl(url));\n}\nexport async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {\n    try {\n        const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n        const contentType = getMimeType(resourceURL);\n        let dataURL;\n        if (getContentFromUrl) {\n            const content = await getContentFromUrl(resolvedURL);\n            dataURL = makeDataUrl(content, contentType);\n        }\n        else {\n            dataURL = await resourceToDataURL(resolvedURL, contentType, options);\n        }\n        return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);\n    }\n    catch (error) {\n        // pass\n    }\n    return cssText;\n}\nfunction filterPreferredFontFormat(str, { preferredFontFormat }) {\n    return !preferredFontFormat\n        ? str\n        : str.replace(FONT_SRC_REGEX, (match) => {\n            // eslint-disable-next-line no-constant-condition\n            while (true) {\n                const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];\n                if (!format) {\n                    return '';\n                }\n                if (format === preferredFontFormat) {\n                    return `src: ${src};`;\n                }\n            }\n        });\n}\nexport function shouldEmbed(url) {\n    return url.search(URL_REGEX) !== -1;\n}\nexport async function embedResources(cssText, baseUrl, options) {\n    if (!shouldEmbed(cssText)) {\n        return cssText;\n    }\n    const filteredCSSText = filterPreferredFontFormat(cssText, options);\n    const urls = parseURLs(filteredCSSText);\n    return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));\n}\n//# sourceMappingURL=embed-resources.js.map","import { embedResources } from './embed-resources';\nimport { toArray, isInstanceOfElement } from './util';\nimport { isDataUrl, resourceToDataURL } from './dataurl';\nimport { getMimeType } from './mimes';\nasync function embedProp(propName, node, options) {\n    var _a;\n    const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);\n    if (propValue) {\n        const cssString = await embedResources(propValue, null, options);\n        node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));\n        return true;\n    }\n    return false;\n}\nasync function embedBackground(clonedNode, options) {\n    ;\n    (await embedProp('background', clonedNode, options)) ||\n        (await embedProp('background-image', clonedNode, options));\n    (await embedProp('mask', clonedNode, options)) ||\n        (await embedProp('-webkit-mask', clonedNode, options)) ||\n        (await embedProp('mask-image', clonedNode, options)) ||\n        (await embedProp('-webkit-mask-image', clonedNode, options));\n}\nasync function embedImageNode(clonedNode, options) {\n    const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);\n    if (!(isImageElement && !isDataUrl(clonedNode.src)) &&\n        !(isInstanceOfElement(clonedNode, SVGImageElement) &&\n            !isDataUrl(clonedNode.href.baseVal))) {\n        return;\n    }\n    const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;\n    const dataURL = await resourceToDataURL(url, getMimeType(url), options);\n    await new Promise((resolve, reject) => {\n        clonedNode.onload = resolve;\n        clonedNode.onerror = options.onImageErrorHandler\n            ? (...attributes) => {\n                try {\n                    resolve(options.onImageErrorHandler(...attributes));\n                }\n                catch (error) {\n                    reject(error);\n                }\n            }\n            : reject;\n        const image = clonedNode;\n        if (image.decode) {\n            image.decode = resolve;\n        }\n        if (image.loading === 'lazy') {\n            image.loading = 'eager';\n        }\n        if (isImageElement) {\n            clonedNode.srcset = '';\n            clonedNode.src = dataURL;\n        }\n        else {\n            clonedNode.href.baseVal = dataURL;\n        }\n    });\n}\nasync function embedChildren(clonedNode, options) {\n    const children = toArray(clonedNode.childNodes);\n    const deferreds = children.map((child) => embedImages(child, options));\n    await Promise.all(deferreds).then(() => clonedNode);\n}\nexport async function embedImages(clonedNode, options) {\n    if (isInstanceOfElement(clonedNode, Element)) {\n        await embedBackground(clonedNode, options);\n        await embedImageNode(clonedNode, options);\n        await embedChildren(clonedNode, options);\n    }\n}\n//# sourceMappingURL=embed-images.js.map","export function applyStyle(node, options) {\n    const { style } = node;\n    if (options.backgroundColor) {\n        style.backgroundColor = options.backgroundColor;\n    }\n    if (options.width) {\n        style.width = `${options.width}px`;\n    }\n    if (options.height) {\n        style.height = `${options.height}px`;\n    }\n    const manual = options.style;\n    if (manual != null) {\n        Object.keys(manual).forEach((key) => {\n            style[key] = manual[key];\n        });\n    }\n    return node;\n}\n//# sourceMappingURL=apply-style.js.map","import { toArray } from './util';\nimport { fetchAsDataURL } from './dataurl';\nimport { shouldEmbed, embedResources } from './embed-resources';\nconst cssFetchCache = {};\nasync function fetchCSS(url) {\n    let cache = cssFetchCache[url];\n    if (cache != null) {\n        return cache;\n    }\n    const res = await fetch(url);\n    const cssText = await res.text();\n    cache = { url, cssText };\n    cssFetchCache[url] = cache;\n    return cache;\n}\nasync function embedFonts(data, options) {\n    let cssText = data.cssText;\n    const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g;\n    const fontLocs = cssText.match(/url\\([^)]+\\)/g) || [];\n    const loadFonts = fontLocs.map(async (loc) => {\n        let url = loc.replace(regexUrl, '$1');\n        if (!url.startsWith('https://')) {\n            url = new URL(url, data.url).href;\n        }\n        return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {\n            cssText = cssText.replace(loc, `url(${result})`);\n            return [loc, result];\n        });\n    });\n    return Promise.all(loadFonts).then(() => cssText);\n}\nfunction parseCSS(source) {\n    if (source == null) {\n        return [];\n    }\n    const result = [];\n    const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi;\n    // strip out comments\n    let cssText = source.replace(commentsRegex, '');\n    // eslint-disable-next-line prefer-regex-literals\n    const keyframesRegex = new RegExp('((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})', 'gi');\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        const matches = keyframesRegex.exec(cssText);\n        if (matches === null) {\n            break;\n        }\n        result.push(matches[0]);\n    }\n    cssText = cssText.replace(keyframesRegex, '');\n    const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n    // to match css & media queries together\n    const combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n        '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})';\n    // unified regex\n    const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        let matches = importRegex.exec(cssText);\n        if (matches === null) {\n            matches = unifiedRegex.exec(cssText);\n            if (matches === null) {\n                break;\n            }\n            else {\n                importRegex.lastIndex = unifiedRegex.lastIndex;\n            }\n        }\n        else {\n            unifiedRegex.lastIndex = importRegex.lastIndex;\n        }\n        result.push(matches[0]);\n    }\n    return result;\n}\nasync function getCSSRules(styleSheets, options) {\n    const ret = [];\n    const deferreds = [];\n    // First loop inlines imports\n    styleSheets.forEach((sheet) => {\n        if ('cssRules' in sheet) {\n            try {\n                toArray(sheet.cssRules || []).forEach((item, index) => {\n                    if (item.type === CSSRule.IMPORT_RULE) {\n                        let importIndex = index + 1;\n                        const url = item.href;\n                        const deferred = fetchCSS(url)\n                            .then((metadata) => embedFonts(metadata, options))\n                            .then((cssText) => parseCSS(cssText).forEach((rule) => {\n                            try {\n                                sheet.insertRule(rule, rule.startsWith('@import')\n                                    ? (importIndex += 1)\n                                    : sheet.cssRules.length);\n                            }\n                            catch (error) {\n                                console.error('Error inserting rule from remote css', {\n                                    rule,\n                                    error,\n                                });\n                            }\n                        }))\n                            .catch((e) => {\n                            console.error('Error loading remote css', e.toString());\n                        });\n                        deferreds.push(deferred);\n                    }\n                });\n            }\n            catch (e) {\n                const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];\n                if (sheet.href != null) {\n                    deferreds.push(fetchCSS(sheet.href)\n                        .then((metadata) => embedFonts(metadata, options))\n                        .then((cssText) => parseCSS(cssText).forEach((rule) => {\n                        inline.insertRule(rule, inline.cssRules.length);\n                    }))\n                        .catch((err) => {\n                        console.error('Error loading remote stylesheet', err);\n                    }));\n                }\n                console.error('Error inlining remote css file', e);\n            }\n        }\n    });\n    return Promise.all(deferreds).then(() => {\n        // Second loop parses rules\n        styleSheets.forEach((sheet) => {\n            if ('cssRules' in sheet) {\n                try {\n                    toArray(sheet.cssRules || []).forEach((item) => {\n                        ret.push(item);\n                    });\n                }\n                catch (e) {\n                    console.error(`Error while reading CSS rules from ${sheet.href}`, e);\n                }\n            }\n        });\n        return ret;\n    });\n}\nfunction getWebFontRules(cssRules) {\n    return cssRules\n        .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n        .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));\n}\nasync function parseWebFontRules(node, options) {\n    if (node.ownerDocument == null) {\n        throw new Error('Provided element is not within a Document');\n    }\n    const styleSheets = toArray(node.ownerDocument.styleSheets);\n    const cssRules = await getCSSRules(styleSheets, options);\n    return getWebFontRules(cssRules);\n}\nfunction normalizeFontFamily(font) {\n    return font.trim().replace(/[\"']/g, '');\n}\nfunction getUsedFonts(node) {\n    const fonts = new Set();\n    function traverse(node) {\n        const fontFamily = node.style.fontFamily || getComputedStyle(node).fontFamily;\n        fontFamily.split(',').forEach((font) => {\n            fonts.add(normalizeFontFamily(font));\n        });\n        Array.from(node.children).forEach((child) => {\n            if (child instanceof HTMLElement) {\n                traverse(child);\n            }\n        });\n    }\n    traverse(node);\n    return fonts;\n}\nexport async function getWebFontCSS(node, options) {\n    const rules = await parseWebFontRules(node, options);\n    const usedFonts = getUsedFonts(node);\n    const cssTexts = await Promise.all(rules\n        .filter((rule) => usedFonts.has(normalizeFontFamily(rule.style.fontFamily)))\n        .map((rule) => {\n        const baseUrl = rule.parentStyleSheet\n            ? rule.parentStyleSheet.href\n            : null;\n        return embedResources(rule.cssText, baseUrl, options);\n    }));\n    return cssTexts.join('\\n');\n}\nexport async function embedWebFonts(clonedNode, options) {\n    const cssText = options.fontEmbedCSS != null\n        ? options.fontEmbedCSS\n        : options.skipFonts\n            ? null\n            : await getWebFontCSS(clonedNode, options);\n    if (cssText) {\n        const styleNode = document.createElement('style');\n        const sytleContent = document.createTextNode(cssText);\n        styleNode.appendChild(sytleContent);\n        if (clonedNode.firstChild) {\n            clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n        }\n        else {\n            clonedNode.appendChild(styleNode);\n        }\n    }\n}\n//# sourceMappingURL=embed-webfonts.js.map","import { cloneNode } from './clone-node';\nimport { embedImages } from './embed-images';\nimport { applyStyle } from './apply-style';\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts';\nimport { getImageSize, getPixelRatio, createImage, canvasToBlob, nodeToDataURL, checkCanvasDimensions, } from './util';\nexport async function toSvg(node, options = {}) {\n    const { width, height } = getImageSize(node, options);\n    const clonedNode = (await cloneNode(node, options, true));\n    await embedWebFonts(clonedNode, options);\n    await embedImages(clonedNode, options);\n    applyStyle(clonedNode, options);\n    const datauri = await nodeToDataURL(clonedNode, width, height);\n    return datauri;\n}\nexport async function toCanvas(node, options = {}) {\n    const { width, height } = getImageSize(node, options);\n    const svg = await toSvg(node, options);\n    const img = await createImage(svg);\n    const canvas = document.createElement('canvas');\n    const context = canvas.getContext('2d');\n    const ratio = options.pixelRatio || getPixelRatio();\n    const canvasWidth = options.canvasWidth || width;\n    const canvasHeight = options.canvasHeight || height;\n    canvas.width = canvasWidth * ratio;\n    canvas.height = canvasHeight * ratio;\n    if (!options.skipAutoScale) {\n        checkCanvasDimensions(canvas);\n    }\n    canvas.style.width = `${canvasWidth}`;\n    canvas.style.height = `${canvasHeight}`;\n    if (options.backgroundColor) {\n        context.fillStyle = options.backgroundColor;\n        context.fillRect(0, 0, canvas.width, canvas.height);\n    }\n    context.drawImage(img, 0, 0, canvas.width, canvas.height);\n    return canvas;\n}\nexport async function toPixelData(node, options = {}) {\n    const { width, height } = getImageSize(node, options);\n    const canvas = await toCanvas(node, options);\n    const ctx = canvas.getContext('2d');\n    return ctx.getImageData(0, 0, width, height).data;\n}\nexport async function toPng(node, options = {}) {\n    const canvas = await toCanvas(node, options);\n    return canvas.toDataURL();\n}\nexport async function toJpeg(node, options = {}) {\n    const canvas = await toCanvas(node, options);\n    return canvas.toDataURL('image/jpeg', options.quality || 1);\n}\nexport async function toBlob(node, options = {}) {\n    const canvas = await toCanvas(node, options);\n    const blob = await canvasToBlob(canvas);\n    return blob;\n}\nexport async function getFontEmbedCSS(node, options = {}) {\n    return getWebFontCSS(node, options);\n}\n//# sourceMappingURL=index.js.map","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n  // Pre-allocate for better V8 optimization\n  const combinedArray = new Array(array1.length + array2.length);\n  for (let i = 0; i < array1.length; i++) {\n    combinedArray[i] = array1[i];\n  }\n  for (let i = 0; i < array2.length; i++) {\n    combinedArray[array1.length + i] = array2[i];\n  }\n  return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n  classGroupId,\n  validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n  nextPart,\n  validators,\n  classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n  const classMap = createClassMap(config);\n  const {\n    conflictingClassGroups,\n    conflictingClassGroupModifiers\n  } = config;\n  const getClassGroupId = className => {\n    if (className.startsWith('[') && className.endsWith(']')) {\n      return getGroupIdForArbitraryProperty(className);\n    }\n    const classParts = className.split(CLASS_PART_SEPARATOR);\n    // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n    const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n    return getGroupRecursive(classParts, startIndex, classMap);\n  };\n  const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n    if (hasPostfixModifier) {\n      const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n      const baseConflicts = conflictingClassGroups[classGroupId];\n      if (modifierConflicts) {\n        if (baseConflicts) {\n          // Merge base conflicts with modifier conflicts\n          return concatArrays(baseConflicts, modifierConflicts);\n        }\n        // Only modifier conflicts\n        return modifierConflicts;\n      }\n      // Fall back to without postfix if no modifier conflicts\n      return baseConflicts || EMPTY_CONFLICTS;\n    }\n    return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n  };\n  return {\n    getClassGroupId,\n    getConflictingClassGroupIds\n  };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n  const classPathsLength = classParts.length - startIndex;\n  if (classPathsLength === 0) {\n    return classPartObject.classGroupId;\n  }\n  const currentClassPart = classParts[startIndex];\n  const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n  if (nextClassPartObject) {\n    const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n    if (result) return result;\n  }\n  const validators = classPartObject.validators;\n  if (validators === null) {\n    return undefined;\n  }\n  // Build classRest string efficiently by joining from startIndex onwards\n  const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n  const validatorsLength = validators.length;\n  for (let i = 0; i < validatorsLength; i++) {\n    const validatorObj = validators[i];\n    if (validatorObj.validator(classRest)) {\n      return validatorObj.classGroupId;\n    }\n  }\n  return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n  const content = className.slice(1, -1);\n  const colonIndex = content.indexOf(':');\n  const property = content.slice(0, colonIndex);\n  return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n  const {\n    theme,\n    classGroups\n  } = config;\n  return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n  const classMap = createClassPartObject();\n  for (const classGroupId in classGroups) {\n    const group = classGroups[classGroupId];\n    processClassesRecursively(group, classMap, classGroupId, theme);\n  }\n  return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n  const len = classGroup.length;\n  for (let i = 0; i < len; i++) {\n    const classDefinition = classGroup[i];\n    processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n  }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  if (typeof classDefinition === 'string') {\n    processStringDefinition(classDefinition, classPartObject, classGroupId);\n    return;\n  }\n  if (typeof classDefinition === 'function') {\n    processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n    return;\n  }\n  processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n  const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n  classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  if (isThemeGetter(classDefinition)) {\n    processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n    return;\n  }\n  if (classPartObject.validators === null) {\n    classPartObject.validators = [];\n  }\n  classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  const entries = Object.entries(classDefinition);\n  const len = entries.length;\n  for (let i = 0; i < len; i++) {\n    const [key, value] = entries[i];\n    processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n  }\n};\nconst getPart = (classPartObject, path) => {\n  let current = classPartObject;\n  const parts = path.split(CLASS_PART_SEPARATOR);\n  const len = parts.length;\n  for (let i = 0; i < len; i++) {\n    const part = parts[i];\n    let next = current.nextPart.get(part);\n    if (!next) {\n      next = createClassPartObject();\n      current.nextPart.set(part, next);\n    }\n    current = next;\n  }\n  return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n  if (maxCacheSize < 1) {\n    return {\n      get: () => undefined,\n      set: () => {}\n    };\n  }\n  let cacheSize = 0;\n  let cache = Object.create(null);\n  let previousCache = Object.create(null);\n  const update = (key, value) => {\n    cache[key] = value;\n    cacheSize++;\n    if (cacheSize > maxCacheSize) {\n      cacheSize = 0;\n      previousCache = cache;\n      cache = Object.create(null);\n    }\n  };\n  return {\n    get(key) {\n      let value = cache[key];\n      if (value !== undefined) {\n        return value;\n      }\n      if ((value = previousCache[key]) !== undefined) {\n        update(key, value);\n        return value;\n      }\n    },\n    set(key, value) {\n      if (key in cache) {\n        cache[key] = value;\n      } else {\n        update(key, value);\n      }\n    }\n  };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n  modifiers,\n  hasImportantModifier,\n  baseClassName,\n  maybePostfixModifierPosition,\n  isExternal\n});\nconst createParseClassName = config => {\n  const {\n    prefix,\n    experimentalParseClassName\n  } = config;\n  /**\n   * Parse class name into parts.\n   *\n   * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n   * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n   */\n  let parseClassName = className => {\n    // Use simple array with push for better performance\n    const modifiers = [];\n    let bracketDepth = 0;\n    let parenDepth = 0;\n    let modifierStart = 0;\n    let postfixModifierPosition;\n    const len = className.length;\n    for (let index = 0; index < len; index++) {\n      const currentCharacter = className[index];\n      if (bracketDepth === 0 && parenDepth === 0) {\n        if (currentCharacter === MODIFIER_SEPARATOR) {\n          modifiers.push(className.slice(modifierStart, index));\n          modifierStart = index + 1;\n          continue;\n        }\n        if (currentCharacter === '/') {\n          postfixModifierPosition = index;\n          continue;\n        }\n      }\n      if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n    }\n    const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n    // Inline important modifier check\n    let baseClassName = baseClassNameWithImportantModifier;\n    let hasImportantModifier = false;\n    if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n      baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n      hasImportantModifier = true;\n    } else if (\n    /**\n     * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n     * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n     */\n    baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n      baseClassName = baseClassNameWithImportantModifier.slice(1);\n      hasImportantModifier = true;\n    }\n    const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n    return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n  };\n  if (prefix) {\n    const fullPrefix = prefix + MODIFIER_SEPARATOR;\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n  }\n  if (experimentalParseClassName) {\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => experimentalParseClassName({\n      className,\n      parseClassName: parseClassNameOriginal\n    });\n  }\n  return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n  // Pre-compute weights for all known modifiers for O(1) comparison\n  const modifierWeights = new Map();\n  // Assign weights to sensitive modifiers (highest priority, but preserve order)\n  config.orderSensitiveModifiers.forEach((mod, index) => {\n    modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n  });\n  return modifiers => {\n    const result = [];\n    let currentSegment = [];\n    // Process modifiers in one pass\n    for (let i = 0; i < modifiers.length; i++) {\n      const modifier = modifiers[i];\n      // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n      const isArbitrary = modifier[0] === '[';\n      const isOrderSensitive = modifierWeights.has(modifier);\n      if (isArbitrary || isOrderSensitive) {\n        // Sort and flush current segment alphabetically\n        if (currentSegment.length > 0) {\n          currentSegment.sort();\n          result.push(...currentSegment);\n          currentSegment = [];\n        }\n        result.push(modifier);\n      } else {\n        // Regular modifier - add to current segment for batch sorting\n        currentSegment.push(modifier);\n      }\n    }\n    // Sort and add any remaining segment items\n    if (currentSegment.length > 0) {\n      currentSegment.sort();\n      result.push(...currentSegment);\n    }\n    return result;\n  };\n};\nconst createConfigUtils = config => ({\n  cache: createLruCache(config.cacheSize),\n  parseClassName: createParseClassName(config),\n  sortModifiers: createSortModifiers(config),\n  ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n  const {\n    parseClassName,\n    getClassGroupId,\n    getConflictingClassGroupIds,\n    sortModifiers\n  } = configUtils;\n  /**\n   * Set of classGroupIds in following format:\n   * `{importantModifier}{variantModifiers}{classGroupId}`\n   * @example 'float'\n   * @example 'hover:focus:bg-color'\n   * @example 'md:!pr'\n   */\n  const classGroupsInConflict = [];\n  const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n  let result = '';\n  for (let index = classNames.length - 1; index >= 0; index -= 1) {\n    const originalClassName = classNames[index];\n    const {\n      isExternal,\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    } = parseClassName(originalClassName);\n    if (isExternal) {\n      result = originalClassName + (result.length > 0 ? ' ' + result : result);\n      continue;\n    }\n    let hasPostfixModifier = !!maybePostfixModifierPosition;\n    let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n    if (!classGroupId) {\n      if (!hasPostfixModifier) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      classGroupId = getClassGroupId(baseClassName);\n      if (!classGroupId) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      hasPostfixModifier = false;\n    }\n    // Fast path: skip sorting for empty or single modifier\n    const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n    const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n    const classId = modifierId + classGroupId;\n    if (classGroupsInConflict.indexOf(classId) > -1) {\n      // Tailwind class omitted due to conflict\n      continue;\n    }\n    classGroupsInConflict.push(classId);\n    const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n    for (let i = 0; i < conflictGroups.length; ++i) {\n      const group = conflictGroups[i];\n      classGroupsInConflict.push(modifierId + group);\n    }\n    // Tailwind class not in conflict\n    result = originalClassName + (result.length > 0 ? ' ' + result : result);\n  }\n  return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n  let index = 0;\n  let argument;\n  let resolvedValue;\n  let string = '';\n  while (index < classLists.length) {\n    if (argument = classLists[index++]) {\n      if (resolvedValue = toValue(argument)) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nconst toValue = mix => {\n  // Fast path for strings\n  if (typeof mix === 'string') {\n    return mix;\n  }\n  let resolvedValue;\n  let string = '';\n  for (let k = 0; k < mix.length; k++) {\n    if (mix[k]) {\n      if (resolvedValue = toValue(mix[k])) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n  let configUtils;\n  let cacheGet;\n  let cacheSet;\n  let functionToCall;\n  const initTailwindMerge = classList => {\n    const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n    configUtils = createConfigUtils(config);\n    cacheGet = configUtils.cache.get;\n    cacheSet = configUtils.cache.set;\n    functionToCall = tailwindMerge;\n    return tailwindMerge(classList);\n  };\n  const tailwindMerge = classList => {\n    const cachedResult = cacheGet(classList);\n    if (cachedResult) {\n      return cachedResult;\n    }\n    const result = mergeClassList(classList, configUtils);\n    cacheSet(classList, result);\n    return result;\n  };\n  functionToCall = initTailwindMerge;\n  return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n  const themeGetter = theme => theme[key] || fallbackThemeArr;\n  themeGetter.isThemeGetter = true;\n  return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n  const result = arbitraryValueRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return testValue(result[2]);\n  }\n  return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n  const result = arbitraryVariableRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return shouldMatchNoLabel;\n  }\n  return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n  __proto__: null,\n  isAny,\n  isAnyNonArbitrary,\n  isArbitraryImage,\n  isArbitraryLength,\n  isArbitraryNumber,\n  isArbitraryPosition,\n  isArbitraryShadow,\n  isArbitrarySize,\n  isArbitraryValue,\n  isArbitraryVariable,\n  isArbitraryVariableFamilyName,\n  isArbitraryVariableImage,\n  isArbitraryVariableLength,\n  isArbitraryVariablePosition,\n  isArbitraryVariableShadow,\n  isArbitraryVariableSize,\n  isFraction,\n  isInteger,\n  isNumber,\n  isPercent,\n  isTshirtSize\n}, Symbol.toStringTag, {\n  value: 'Module'\n});\nconst getDefaultConfig = () => {\n  /**\n   * Theme getters for theme variable namespaces\n   * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n   */\n  /***/\n  const themeColor = fromTheme('color');\n  const themeFont = fromTheme('font');\n  const themeText = fromTheme('text');\n  const themeFontWeight = fromTheme('font-weight');\n  const themeTracking = fromTheme('tracking');\n  const themeLeading = fromTheme('leading');\n  const themeBreakpoint = fromTheme('breakpoint');\n  const themeContainer = fromTheme('container');\n  const themeSpacing = fromTheme('spacing');\n  const themeRadius = fromTheme('radius');\n  const themeShadow = fromTheme('shadow');\n  const themeInsetShadow = fromTheme('inset-shadow');\n  const themeTextShadow = fromTheme('text-shadow');\n  const themeDropShadow = fromTheme('drop-shadow');\n  const themeBlur = fromTheme('blur');\n  const themePerspective = fromTheme('perspective');\n  const themeAspect = fromTheme('aspect');\n  const themeEase = fromTheme('ease');\n  const themeAnimate = fromTheme('animate');\n  /**\n   * Helpers to avoid repeating the same scales\n   *\n   * We use functions that create a new array every time they're called instead of static arrays.\n   * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n   */\n  /***/\n  const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n  const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-top', 'top-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-top', 'bottom-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-bottom', 'bottom-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-bottom'];\n  const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n  const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n  const scaleOverscroll = () => ['auto', 'contain', 'none'];\n  const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n  const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartAndEnd = () => ['auto', {\n    span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n  }, isInteger, isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n  const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n  const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n    position: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleBgRepeat = () => ['no-repeat', {\n    repeat: ['', 'x', 'y', 'space', 'round']\n  }];\n  const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n    size: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n  const scaleRadius = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n  const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n  const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n  const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n  const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n  const scaleBlur = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n  const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n  return {\n    cacheSize: 500,\n    theme: {\n      animate: ['spin', 'ping', 'pulse', 'bounce'],\n      aspect: ['video'],\n      blur: [isTshirtSize],\n      breakpoint: [isTshirtSize],\n      color: [isAny],\n      container: [isTshirtSize],\n      'drop-shadow': [isTshirtSize],\n      ease: ['in', 'out', 'in-out'],\n      font: [isAnyNonArbitrary],\n      'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n      'inset-shadow': [isTshirtSize],\n      leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n      perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n      radius: [isTshirtSize],\n      shadow: [isTshirtSize],\n      spacing: ['px', isNumber],\n      text: [isTshirtSize],\n      'text-shadow': [isTshirtSize],\n      tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n    },\n    classGroups: {\n      // --------------\n      // --- Layout ---\n      // --------------\n      /**\n       * Aspect Ratio\n       * @see https://tailwindcss.com/docs/aspect-ratio\n       */\n      aspect: [{\n        aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n      }],\n      /**\n       * Container\n       * @see https://tailwindcss.com/docs/container\n       * @deprecated since Tailwind CSS v4.0.0\n       */\n      container: ['container'],\n      /**\n       * Columns\n       * @see https://tailwindcss.com/docs/columns\n       */\n      columns: [{\n        columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n      }],\n      /**\n       * Break After\n       * @see https://tailwindcss.com/docs/break-after\n       */\n      'break-after': [{\n        'break-after': scaleBreak()\n      }],\n      /**\n       * Break Before\n       * @see https://tailwindcss.com/docs/break-before\n       */\n      'break-before': [{\n        'break-before': scaleBreak()\n      }],\n      /**\n       * Break Inside\n       * @see https://tailwindcss.com/docs/break-inside\n       */\n      'break-inside': [{\n        'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n      }],\n      /**\n       * Box Decoration Break\n       * @see https://tailwindcss.com/docs/box-decoration-break\n       */\n      'box-decoration': [{\n        'box-decoration': ['slice', 'clone']\n      }],\n      /**\n       * Box Sizing\n       * @see https://tailwindcss.com/docs/box-sizing\n       */\n      box: [{\n        box: ['border', 'content']\n      }],\n      /**\n       * Display\n       * @see https://tailwindcss.com/docs/display\n       */\n      display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n      /**\n       * Screen Reader Only\n       * @see https://tailwindcss.com/docs/display#screen-reader-only\n       */\n      sr: ['sr-only', 'not-sr-only'],\n      /**\n       * Floats\n       * @see https://tailwindcss.com/docs/float\n       */\n      float: [{\n        float: ['right', 'left', 'none', 'start', 'end']\n      }],\n      /**\n       * Clear\n       * @see https://tailwindcss.com/docs/clear\n       */\n      clear: [{\n        clear: ['left', 'right', 'both', 'none', 'start', 'end']\n      }],\n      /**\n       * Isolation\n       * @see https://tailwindcss.com/docs/isolation\n       */\n      isolation: ['isolate', 'isolation-auto'],\n      /**\n       * Object Fit\n       * @see https://tailwindcss.com/docs/object-fit\n       */\n      'object-fit': [{\n        object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n      }],\n      /**\n       * Object Position\n       * @see https://tailwindcss.com/docs/object-position\n       */\n      'object-position': [{\n        object: scalePositionWithArbitrary()\n      }],\n      /**\n       * Overflow\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      overflow: [{\n        overflow: scaleOverflow()\n      }],\n      /**\n       * Overflow X\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-x': [{\n        'overflow-x': scaleOverflow()\n      }],\n      /**\n       * Overflow Y\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-y': [{\n        'overflow-y': scaleOverflow()\n      }],\n      /**\n       * Overscroll Behavior\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      overscroll: [{\n        overscroll: scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior X\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-x': [{\n        'overscroll-x': scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior Y\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-y': [{\n        'overscroll-y': scaleOverscroll()\n      }],\n      /**\n       * Position\n       * @see https://tailwindcss.com/docs/position\n       */\n      position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n      /**\n       * Top / Right / Bottom / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      inset: [{\n        inset: scaleInset()\n      }],\n      /**\n       * Right / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-x': [{\n        'inset-x': scaleInset()\n      }],\n      /**\n       * Top / Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-y': [{\n        'inset-y': scaleInset()\n      }],\n      /**\n       * Start\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      start: [{\n        start: scaleInset()\n      }],\n      /**\n       * End\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      end: [{\n        end: scaleInset()\n      }],\n      /**\n       * Top\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      top: [{\n        top: scaleInset()\n      }],\n      /**\n       * Right\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      right: [{\n        right: scaleInset()\n      }],\n      /**\n       * Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      bottom: [{\n        bottom: scaleInset()\n      }],\n      /**\n       * Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      left: [{\n        left: scaleInset()\n      }],\n      /**\n       * Visibility\n       * @see https://tailwindcss.com/docs/visibility\n       */\n      visibility: ['visible', 'invisible', 'collapse'],\n      /**\n       * Z-Index\n       * @see https://tailwindcss.com/docs/z-index\n       */\n      z: [{\n        z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------------\n      // --- Flexbox and Grid ---\n      // ------------------------\n      /**\n       * Flex Basis\n       * @see https://tailwindcss.com/docs/flex-basis\n       */\n      basis: [{\n        basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * Flex Direction\n       * @see https://tailwindcss.com/docs/flex-direction\n       */\n      'flex-direction': [{\n        flex: ['row', 'row-reverse', 'col', 'col-reverse']\n      }],\n      /**\n       * Flex Wrap\n       * @see https://tailwindcss.com/docs/flex-wrap\n       */\n      'flex-wrap': [{\n        flex: ['nowrap', 'wrap', 'wrap-reverse']\n      }],\n      /**\n       * Flex\n       * @see https://tailwindcss.com/docs/flex\n       */\n      flex: [{\n        flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n      }],\n      /**\n       * Flex Grow\n       * @see https://tailwindcss.com/docs/flex-grow\n       */\n      grow: [{\n        grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Flex Shrink\n       * @see https://tailwindcss.com/docs/flex-shrink\n       */\n      shrink: [{\n        shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Order\n       * @see https://tailwindcss.com/docs/order\n       */\n      order: [{\n        order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Grid Template Columns\n       * @see https://tailwindcss.com/docs/grid-template-columns\n       */\n      'grid-cols': [{\n        'grid-cols': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Column Start / End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start-end': [{\n        col: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Column Start\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start': [{\n        'col-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Column End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-end': [{\n        'col-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Template Rows\n       * @see https://tailwindcss.com/docs/grid-template-rows\n       */\n      'grid-rows': [{\n        'grid-rows': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Row Start / End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start-end': [{\n        row: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Row Start\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start': [{\n        'row-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Row End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-end': [{\n        'row-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Auto Flow\n       * @see https://tailwindcss.com/docs/grid-auto-flow\n       */\n      'grid-flow': [{\n        'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n      }],\n      /**\n       * Grid Auto Columns\n       * @see https://tailwindcss.com/docs/grid-auto-columns\n       */\n      'auto-cols': [{\n        'auto-cols': scaleGridAutoColsRows()\n      }],\n      /**\n       * Grid Auto Rows\n       * @see https://tailwindcss.com/docs/grid-auto-rows\n       */\n      'auto-rows': [{\n        'auto-rows': scaleGridAutoColsRows()\n      }],\n      /**\n       * Gap\n       * @see https://tailwindcss.com/docs/gap\n       */\n      gap: [{\n        gap: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap X\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-x': [{\n        'gap-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap Y\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-y': [{\n        'gap-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Justify Content\n       * @see https://tailwindcss.com/docs/justify-content\n       */\n      'justify-content': [{\n        justify: [...scaleAlignPrimaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Items\n       * @see https://tailwindcss.com/docs/justify-items\n       */\n      'justify-items': [{\n        'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Self\n       * @see https://tailwindcss.com/docs/justify-self\n       */\n      'justify-self': [{\n        'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      /**\n       * Align Content\n       * @see https://tailwindcss.com/docs/align-content\n       */\n      'align-content': [{\n        content: ['normal', ...scaleAlignPrimaryAxis()]\n      }],\n      /**\n       * Align Items\n       * @see https://tailwindcss.com/docs/align-items\n       */\n      'align-items': [{\n        items: [...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Align Self\n       * @see https://tailwindcss.com/docs/align-self\n       */\n      'align-self': [{\n        self: ['auto', ...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Place Content\n       * @see https://tailwindcss.com/docs/place-content\n       */\n      'place-content': [{\n        'place-content': scaleAlignPrimaryAxis()\n      }],\n      /**\n       * Place Items\n       * @see https://tailwindcss.com/docs/place-items\n       */\n      'place-items': [{\n        'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Place Self\n       * @see https://tailwindcss.com/docs/place-self\n       */\n      'place-self': [{\n        'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      // Spacing\n      /**\n       * Padding\n       * @see https://tailwindcss.com/docs/padding\n       */\n      p: [{\n        p: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding X\n       * @see https://tailwindcss.com/docs/padding\n       */\n      px: [{\n        px: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Y\n       * @see https://tailwindcss.com/docs/padding\n       */\n      py: [{\n        py: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Start\n       * @see https://tailwindcss.com/docs/padding\n       */\n      ps: [{\n        ps: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding End\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pe: [{\n        pe: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Top\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pt: [{\n        pt: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Right\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pr: [{\n        pr: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Bottom\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pb: [{\n        pb: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Left\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pl: [{\n        pl: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Margin\n       * @see https://tailwindcss.com/docs/margin\n       */\n      m: [{\n        m: scaleMargin()\n      }],\n      /**\n       * Margin X\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mx: [{\n        mx: scaleMargin()\n      }],\n      /**\n       * Margin Y\n       * @see https://tailwindcss.com/docs/margin\n       */\n      my: [{\n        my: scaleMargin()\n      }],\n      /**\n       * Margin Start\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ms: [{\n        ms: scaleMargin()\n      }],\n      /**\n       * Margin End\n       * @see https://tailwindcss.com/docs/margin\n       */\n      me: [{\n        me: scaleMargin()\n      }],\n      /**\n       * Margin Top\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mt: [{\n        mt: scaleMargin()\n      }],\n      /**\n       * Margin Right\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mr: [{\n        mr: scaleMargin()\n      }],\n      /**\n       * Margin Bottom\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mb: [{\n        mb: scaleMargin()\n      }],\n      /**\n       * Margin Left\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ml: [{\n        ml: scaleMargin()\n      }],\n      /**\n       * Space Between X\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x': [{\n        'space-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between X Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x-reverse': ['space-x-reverse'],\n      /**\n       * Space Between Y\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y': [{\n        'space-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between Y Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y-reverse': ['space-y-reverse'],\n      // --------------\n      // --- Sizing ---\n      // --------------\n      /**\n       * Size\n       * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n       */\n      size: [{\n        size: scaleSizing()\n      }],\n      /**\n       * Width\n       * @see https://tailwindcss.com/docs/width\n       */\n      w: [{\n        w: [themeContainer, 'screen', ...scaleSizing()]\n      }],\n      /**\n       * Min-Width\n       * @see https://tailwindcss.com/docs/min-width\n       */\n      'min-w': [{\n        'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Width\n       * @see https://tailwindcss.com/docs/max-width\n       */\n      'max-w': [{\n        'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        {\n          screen: [themeBreakpoint]\n        }, ...scaleSizing()]\n      }],\n      /**\n       * Height\n       * @see https://tailwindcss.com/docs/height\n       */\n      h: [{\n        h: ['screen', 'lh', ...scaleSizing()]\n      }],\n      /**\n       * Min-Height\n       * @see https://tailwindcss.com/docs/min-height\n       */\n      'min-h': [{\n        'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Height\n       * @see https://tailwindcss.com/docs/max-height\n       */\n      'max-h': [{\n        'max-h': ['screen', 'lh', ...scaleSizing()]\n      }],\n      // ------------------\n      // --- Typography ---\n      // ------------------\n      /**\n       * Font Size\n       * @see https://tailwindcss.com/docs/font-size\n       */\n      'font-size': [{\n        text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Font Smoothing\n       * @see https://tailwindcss.com/docs/font-smoothing\n       */\n      'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n      /**\n       * Font Style\n       * @see https://tailwindcss.com/docs/font-style\n       */\n      'font-style': ['italic', 'not-italic'],\n      /**\n       * Font Weight\n       * @see https://tailwindcss.com/docs/font-weight\n       */\n      'font-weight': [{\n        font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Font Stretch\n       * @see https://tailwindcss.com/docs/font-stretch\n       */\n      'font-stretch': [{\n        'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n      }],\n      /**\n       * Font Family\n       * @see https://tailwindcss.com/docs/font-family\n       */\n      'font-family': [{\n        font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n      }],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-normal': ['normal-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-ordinal': ['ordinal'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-slashed-zero': ['slashed-zero'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n      /**\n       * Letter Spacing\n       * @see https://tailwindcss.com/docs/letter-spacing\n       */\n      tracking: [{\n        tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Line Clamp\n       * @see https://tailwindcss.com/docs/line-clamp\n       */\n      'line-clamp': [{\n        'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Line Height\n       * @see https://tailwindcss.com/docs/line-height\n       */\n      leading: [{\n        leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        themeLeading, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * List Style Image\n       * @see https://tailwindcss.com/docs/list-style-image\n       */\n      'list-image': [{\n        'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * List Style Position\n       * @see https://tailwindcss.com/docs/list-style-position\n       */\n      'list-style-position': [{\n        list: ['inside', 'outside']\n      }],\n      /**\n       * List Style Type\n       * @see https://tailwindcss.com/docs/list-style-type\n       */\n      'list-style-type': [{\n        list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Alignment\n       * @see https://tailwindcss.com/docs/text-align\n       */\n      'text-alignment': [{\n        text: ['left', 'center', 'right', 'justify', 'start', 'end']\n      }],\n      /**\n       * Placeholder Color\n       * @deprecated since Tailwind CSS v3.0.0\n       * @see https://v3.tailwindcss.com/docs/placeholder-color\n       */\n      'placeholder-color': [{\n        placeholder: scaleColor()\n      }],\n      /**\n       * Text Color\n       * @see https://tailwindcss.com/docs/text-color\n       */\n      'text-color': [{\n        text: scaleColor()\n      }],\n      /**\n       * Text Decoration\n       * @see https://tailwindcss.com/docs/text-decoration\n       */\n      'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n      /**\n       * Text Decoration Style\n       * @see https://tailwindcss.com/docs/text-decoration-style\n       */\n      'text-decoration-style': [{\n        decoration: [...scaleLineStyle(), 'wavy']\n      }],\n      /**\n       * Text Decoration Thickness\n       * @see https://tailwindcss.com/docs/text-decoration-thickness\n       */\n      'text-decoration-thickness': [{\n        decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n      }],\n      /**\n       * Text Decoration Color\n       * @see https://tailwindcss.com/docs/text-decoration-color\n       */\n      'text-decoration-color': [{\n        decoration: scaleColor()\n      }],\n      /**\n       * Text Underline Offset\n       * @see https://tailwindcss.com/docs/text-underline-offset\n       */\n      'underline-offset': [{\n        'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Transform\n       * @see https://tailwindcss.com/docs/text-transform\n       */\n      'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n      /**\n       * Text Overflow\n       * @see https://tailwindcss.com/docs/text-overflow\n       */\n      'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n      /**\n       * Text Wrap\n       * @see https://tailwindcss.com/docs/text-wrap\n       */\n      'text-wrap': [{\n        text: ['wrap', 'nowrap', 'balance', 'pretty']\n      }],\n      /**\n       * Text Indent\n       * @see https://tailwindcss.com/docs/text-indent\n       */\n      indent: [{\n        indent: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Vertical Alignment\n       * @see https://tailwindcss.com/docs/vertical-align\n       */\n      'vertical-align': [{\n        align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Whitespace\n       * @see https://tailwindcss.com/docs/whitespace\n       */\n      whitespace: [{\n        whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n      }],\n      /**\n       * Word Break\n       * @see https://tailwindcss.com/docs/word-break\n       */\n      break: [{\n        break: ['normal', 'words', 'all', 'keep']\n      }],\n      /**\n       * Overflow Wrap\n       * @see https://tailwindcss.com/docs/overflow-wrap\n       */\n      wrap: [{\n        wrap: ['break-word', 'anywhere', 'normal']\n      }],\n      /**\n       * Hyphens\n       * @see https://tailwindcss.com/docs/hyphens\n       */\n      hyphens: [{\n        hyphens: ['none', 'manual', 'auto']\n      }],\n      /**\n       * Content\n       * @see https://tailwindcss.com/docs/content\n       */\n      content: [{\n        content: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -------------------\n      // --- Backgrounds ---\n      // -------------------\n      /**\n       * Background Attachment\n       * @see https://tailwindcss.com/docs/background-attachment\n       */\n      'bg-attachment': [{\n        bg: ['fixed', 'local', 'scroll']\n      }],\n      /**\n       * Background Clip\n       * @see https://tailwindcss.com/docs/background-clip\n       */\n      'bg-clip': [{\n        'bg-clip': ['border', 'padding', 'content', 'text']\n      }],\n      /**\n       * Background Origin\n       * @see https://tailwindcss.com/docs/background-origin\n       */\n      'bg-origin': [{\n        'bg-origin': ['border', 'padding', 'content']\n      }],\n      /**\n       * Background Position\n       * @see https://tailwindcss.com/docs/background-position\n       */\n      'bg-position': [{\n        bg: scaleBgPosition()\n      }],\n      /**\n       * Background Repeat\n       * @see https://tailwindcss.com/docs/background-repeat\n       */\n      'bg-repeat': [{\n        bg: scaleBgRepeat()\n      }],\n      /**\n       * Background Size\n       * @see https://tailwindcss.com/docs/background-size\n       */\n      'bg-size': [{\n        bg: scaleBgSize()\n      }],\n      /**\n       * Background Image\n       * @see https://tailwindcss.com/docs/background-image\n       */\n      'bg-image': [{\n        bg: ['none', {\n          linear: [{\n            to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n          }, isInteger, isArbitraryVariable, isArbitraryValue],\n          radial: ['', isArbitraryVariable, isArbitraryValue],\n          conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n        }, isArbitraryVariableImage, isArbitraryImage]\n      }],\n      /**\n       * Background Color\n       * @see https://tailwindcss.com/docs/background-color\n       */\n      'bg-color': [{\n        bg: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops From Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from-pos': [{\n        from: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops Via Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via-pos': [{\n        via: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops To Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to-pos': [{\n        to: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops From\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from': [{\n        from: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops Via\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via': [{\n        via: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops To\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to': [{\n        to: scaleColor()\n      }],\n      // ---------------\n      // --- Borders ---\n      // ---------------\n      /**\n       * Border Radius\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      rounded: [{\n        rounded: scaleRadius()\n      }],\n      /**\n       * Border Radius Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-s': [{\n        'rounded-s': scaleRadius()\n      }],\n      /**\n       * Border Radius End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-e': [{\n        'rounded-e': scaleRadius()\n      }],\n      /**\n       * Border Radius Top\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-t': [{\n        'rounded-t': scaleRadius()\n      }],\n      /**\n       * Border Radius Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-r': [{\n        'rounded-r': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-b': [{\n        'rounded-b': scaleRadius()\n      }],\n      /**\n       * Border Radius Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-l': [{\n        'rounded-l': scaleRadius()\n      }],\n      /**\n       * Border Radius Start Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ss': [{\n        'rounded-ss': scaleRadius()\n      }],\n      /**\n       * Border Radius Start End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-se': [{\n        'rounded-se': scaleRadius()\n      }],\n      /**\n       * Border Radius End End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ee': [{\n        'rounded-ee': scaleRadius()\n      }],\n      /**\n       * Border Radius End Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-es': [{\n        'rounded-es': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tl': [{\n        'rounded-tl': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tr': [{\n        'rounded-tr': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-br': [{\n        'rounded-br': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-bl': [{\n        'rounded-bl': scaleRadius()\n      }],\n      /**\n       * Border Width\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w': [{\n        border: scaleBorderWidth()\n      }],\n      /**\n       * Border Width X\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-x': [{\n        'border-x': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Y\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-y': [{\n        'border-y': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Start\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-s': [{\n        'border-s': scaleBorderWidth()\n      }],\n      /**\n       * Border Width End\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-e': [{\n        'border-e': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Top\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-t': [{\n        'border-t': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Right\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-r': [{\n        'border-r': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Bottom\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-b': [{\n        'border-b': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Left\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-l': [{\n        'border-l': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x': [{\n        'divide-x': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x-reverse': ['divide-x-reverse'],\n      /**\n       * Divide Width Y\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y': [{\n        'divide-y': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width Y Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y-reverse': ['divide-y-reverse'],\n      /**\n       * Border Style\n       * @see https://tailwindcss.com/docs/border-style\n       */\n      'border-style': [{\n        border: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Divide Style\n       * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n       */\n      'divide-style': [{\n        divide: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Border Color\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color': [{\n        border: scaleColor()\n      }],\n      /**\n       * Border Color X\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-x': [{\n        'border-x': scaleColor()\n      }],\n      /**\n       * Border Color Y\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-y': [{\n        'border-y': scaleColor()\n      }],\n      /**\n       * Border Color S\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-s': [{\n        'border-s': scaleColor()\n      }],\n      /**\n       * Border Color E\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-e': [{\n        'border-e': scaleColor()\n      }],\n      /**\n       * Border Color Top\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-t': [{\n        'border-t': scaleColor()\n      }],\n      /**\n       * Border Color Right\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-r': [{\n        'border-r': scaleColor()\n      }],\n      /**\n       * Border Color Bottom\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-b': [{\n        'border-b': scaleColor()\n      }],\n      /**\n       * Border Color Left\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-l': [{\n        'border-l': scaleColor()\n      }],\n      /**\n       * Divide Color\n       * @see https://tailwindcss.com/docs/divide-color\n       */\n      'divide-color': [{\n        divide: scaleColor()\n      }],\n      /**\n       * Outline Style\n       * @see https://tailwindcss.com/docs/outline-style\n       */\n      'outline-style': [{\n        outline: [...scaleLineStyle(), 'none', 'hidden']\n      }],\n      /**\n       * Outline Offset\n       * @see https://tailwindcss.com/docs/outline-offset\n       */\n      'outline-offset': [{\n        'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Outline Width\n       * @see https://tailwindcss.com/docs/outline-width\n       */\n      'outline-w': [{\n        outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Outline Color\n       * @see https://tailwindcss.com/docs/outline-color\n       */\n      'outline-color': [{\n        outline: scaleColor()\n      }],\n      // ---------------\n      // --- Effects ---\n      // ---------------\n      /**\n       * Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow\n       */\n      shadow: [{\n        shadow: [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n       */\n      'shadow-color': [{\n        shadow: scaleColor()\n      }],\n      /**\n       * Inset Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n       */\n      'inset-shadow': [{\n        'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Inset Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n       */\n      'inset-shadow-color': [{\n        'inset-shadow': scaleColor()\n      }],\n      /**\n       * Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n       */\n      'ring-w': [{\n        ring: scaleBorderWidth()\n      }],\n      /**\n       * Ring Width Inset\n       * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-w-inset': ['ring-inset'],\n      /**\n       * Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n       */\n      'ring-color': [{\n        ring: scaleColor()\n      }],\n      /**\n       * Ring Offset Width\n       * @see https://v3.tailwindcss.com/docs/ring-offset-width\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-w': [{\n        'ring-offset': [isNumber, isArbitraryLength]\n      }],\n      /**\n       * Ring Offset Color\n       * @see https://v3.tailwindcss.com/docs/ring-offset-color\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-color': [{\n        'ring-offset': scaleColor()\n      }],\n      /**\n       * Inset Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n       */\n      'inset-ring-w': [{\n        'inset-ring': scaleBorderWidth()\n      }],\n      /**\n       * Inset Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n       */\n      'inset-ring-color': [{\n        'inset-ring': scaleColor()\n      }],\n      /**\n       * Text Shadow\n       * @see https://tailwindcss.com/docs/text-shadow\n       */\n      'text-shadow': [{\n        'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Text Shadow Color\n       * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n       */\n      'text-shadow-color': [{\n        'text-shadow': scaleColor()\n      }],\n      /**\n       * Opacity\n       * @see https://tailwindcss.com/docs/opacity\n       */\n      opacity: [{\n        opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Mix Blend Mode\n       * @see https://tailwindcss.com/docs/mix-blend-mode\n       */\n      'mix-blend': [{\n        'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n      }],\n      /**\n       * Background Blend Mode\n       * @see https://tailwindcss.com/docs/background-blend-mode\n       */\n      'bg-blend': [{\n        'bg-blend': scaleBlendMode()\n      }],\n      /**\n       * Mask Clip\n       * @see https://tailwindcss.com/docs/mask-clip\n       */\n      'mask-clip': [{\n        'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }, 'mask-no-clip'],\n      /**\n       * Mask Composite\n       * @see https://tailwindcss.com/docs/mask-composite\n       */\n      'mask-composite': [{\n        mask: ['add', 'subtract', 'intersect', 'exclude']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image-linear-pos': [{\n        'mask-linear': [isNumber]\n      }],\n      'mask-image-linear-from-pos': [{\n        'mask-linear-from': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-to-pos': [{\n        'mask-linear-to': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-from-color': [{\n        'mask-linear-from': scaleColor()\n      }],\n      'mask-image-linear-to-color': [{\n        'mask-linear-to': scaleColor()\n      }],\n      'mask-image-t-from-pos': [{\n        'mask-t-from': scaleMaskImagePosition()\n      }],\n      'mask-image-t-to-pos': [{\n        'mask-t-to': scaleMaskImagePosition()\n      }],\n      'mask-image-t-from-color': [{\n        'mask-t-from': scaleColor()\n      }],\n      'mask-image-t-to-color': [{\n        'mask-t-to': scaleColor()\n      }],\n      'mask-image-r-from-pos': [{\n        'mask-r-from': scaleMaskImagePosition()\n      }],\n      'mask-image-r-to-pos': [{\n        'mask-r-to': scaleMaskImagePosition()\n      }],\n      'mask-image-r-from-color': [{\n        'mask-r-from': scaleColor()\n      }],\n      'mask-image-r-to-color': [{\n        'mask-r-to': scaleColor()\n      }],\n      'mask-image-b-from-pos': [{\n        'mask-b-from': scaleMaskImagePosition()\n      }],\n      'mask-image-b-to-pos': [{\n        'mask-b-to': scaleMaskImagePosition()\n      }],\n      'mask-image-b-from-color': [{\n        'mask-b-from': scaleColor()\n      }],\n      'mask-image-b-to-color': [{\n        'mask-b-to': scaleColor()\n      }],\n      'mask-image-l-from-pos': [{\n        'mask-l-from': scaleMaskImagePosition()\n      }],\n      'mask-image-l-to-pos': [{\n        'mask-l-to': scaleMaskImagePosition()\n      }],\n      'mask-image-l-from-color': [{\n        'mask-l-from': scaleColor()\n      }],\n      'mask-image-l-to-color': [{\n        'mask-l-to': scaleColor()\n      }],\n      'mask-image-x-from-pos': [{\n        'mask-x-from': scaleMaskImagePosition()\n      }],\n      'mask-image-x-to-pos': [{\n        'mask-x-to': scaleMaskImagePosition()\n      }],\n      'mask-image-x-from-color': [{\n        'mask-x-from': scaleColor()\n      }],\n      'mask-image-x-to-color': [{\n        'mask-x-to': scaleColor()\n      }],\n      'mask-image-y-from-pos': [{\n        'mask-y-from': scaleMaskImagePosition()\n      }],\n      'mask-image-y-to-pos': [{\n        'mask-y-to': scaleMaskImagePosition()\n      }],\n      'mask-image-y-from-color': [{\n        'mask-y-from': scaleColor()\n      }],\n      'mask-image-y-to-color': [{\n        'mask-y-to': scaleColor()\n      }],\n      'mask-image-radial': [{\n        'mask-radial': [isArbitraryVariable, isArbitraryValue]\n      }],\n      'mask-image-radial-from-pos': [{\n        'mask-radial-from': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-to-pos': [{\n        'mask-radial-to': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-from-color': [{\n        'mask-radial-from': scaleColor()\n      }],\n      'mask-image-radial-to-color': [{\n        'mask-radial-to': scaleColor()\n      }],\n      'mask-image-radial-shape': [{\n        'mask-radial': ['circle', 'ellipse']\n      }],\n      'mask-image-radial-size': [{\n        'mask-radial': [{\n          closest: ['side', 'corner'],\n          farthest: ['side', 'corner']\n        }]\n      }],\n      'mask-image-radial-pos': [{\n        'mask-radial-at': scalePosition()\n      }],\n      'mask-image-conic-pos': [{\n        'mask-conic': [isNumber]\n      }],\n      'mask-image-conic-from-pos': [{\n        'mask-conic-from': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-to-pos': [{\n        'mask-conic-to': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-from-color': [{\n        'mask-conic-from': scaleColor()\n      }],\n      'mask-image-conic-to-color': [{\n        'mask-conic-to': scaleColor()\n      }],\n      /**\n       * Mask Mode\n       * @see https://tailwindcss.com/docs/mask-mode\n       */\n      'mask-mode': [{\n        mask: ['alpha', 'luminance', 'match']\n      }],\n      /**\n       * Mask Origin\n       * @see https://tailwindcss.com/docs/mask-origin\n       */\n      'mask-origin': [{\n        'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }],\n      /**\n       * Mask Position\n       * @see https://tailwindcss.com/docs/mask-position\n       */\n      'mask-position': [{\n        mask: scaleBgPosition()\n      }],\n      /**\n       * Mask Repeat\n       * @see https://tailwindcss.com/docs/mask-repeat\n       */\n      'mask-repeat': [{\n        mask: scaleBgRepeat()\n      }],\n      /**\n       * Mask Size\n       * @see https://tailwindcss.com/docs/mask-size\n       */\n      'mask-size': [{\n        mask: scaleBgSize()\n      }],\n      /**\n       * Mask Type\n       * @see https://tailwindcss.com/docs/mask-type\n       */\n      'mask-type': [{\n        'mask-type': ['alpha', 'luminance']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image': [{\n        mask: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ---------------\n      // --- Filters ---\n      // ---------------\n      /**\n       * Filter\n       * @see https://tailwindcss.com/docs/filter\n       */\n      filter: [{\n        filter: [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Blur\n       * @see https://tailwindcss.com/docs/blur\n       */\n      blur: [{\n        blur: scaleBlur()\n      }],\n      /**\n       * Brightness\n       * @see https://tailwindcss.com/docs/brightness\n       */\n      brightness: [{\n        brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Contrast\n       * @see https://tailwindcss.com/docs/contrast\n       */\n      contrast: [{\n        contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Drop Shadow\n       * @see https://tailwindcss.com/docs/drop-shadow\n       */\n      'drop-shadow': [{\n        'drop-shadow': [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Drop Shadow Color\n       * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n       */\n      'drop-shadow-color': [{\n        'drop-shadow': scaleColor()\n      }],\n      /**\n       * Grayscale\n       * @see https://tailwindcss.com/docs/grayscale\n       */\n      grayscale: [{\n        grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Hue Rotate\n       * @see https://tailwindcss.com/docs/hue-rotate\n       */\n      'hue-rotate': [{\n        'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Invert\n       * @see https://tailwindcss.com/docs/invert\n       */\n      invert: [{\n        invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Saturate\n       * @see https://tailwindcss.com/docs/saturate\n       */\n      saturate: [{\n        saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Sepia\n       * @see https://tailwindcss.com/docs/sepia\n       */\n      sepia: [{\n        sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Filter\n       * @see https://tailwindcss.com/docs/backdrop-filter\n       */\n      'backdrop-filter': [{\n        'backdrop-filter': [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Blur\n       * @see https://tailwindcss.com/docs/backdrop-blur\n       */\n      'backdrop-blur': [{\n        'backdrop-blur': scaleBlur()\n      }],\n      /**\n       * Backdrop Brightness\n       * @see https://tailwindcss.com/docs/backdrop-brightness\n       */\n      'backdrop-brightness': [{\n        'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Contrast\n       * @see https://tailwindcss.com/docs/backdrop-contrast\n       */\n      'backdrop-contrast': [{\n        'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Grayscale\n       * @see https://tailwindcss.com/docs/backdrop-grayscale\n       */\n      'backdrop-grayscale': [{\n        'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Hue Rotate\n       * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n       */\n      'backdrop-hue-rotate': [{\n        'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Invert\n       * @see https://tailwindcss.com/docs/backdrop-invert\n       */\n      'backdrop-invert': [{\n        'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Opacity\n       * @see https://tailwindcss.com/docs/backdrop-opacity\n       */\n      'backdrop-opacity': [{\n        'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Saturate\n       * @see https://tailwindcss.com/docs/backdrop-saturate\n       */\n      'backdrop-saturate': [{\n        'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Sepia\n       * @see https://tailwindcss.com/docs/backdrop-sepia\n       */\n      'backdrop-sepia': [{\n        'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      // --------------\n      // --- Tables ---\n      // --------------\n      /**\n       * Border Collapse\n       * @see https://tailwindcss.com/docs/border-collapse\n       */\n      'border-collapse': [{\n        border: ['collapse', 'separate']\n      }],\n      /**\n       * Border Spacing\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing': [{\n        'border-spacing': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing X\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-x': [{\n        'border-spacing-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing Y\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-y': [{\n        'border-spacing-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Table Layout\n       * @see https://tailwindcss.com/docs/table-layout\n       */\n      'table-layout': [{\n        table: ['auto', 'fixed']\n      }],\n      /**\n       * Caption Side\n       * @see https://tailwindcss.com/docs/caption-side\n       */\n      caption: [{\n        caption: ['top', 'bottom']\n      }],\n      // ---------------------------------\n      // --- Transitions and Animation ---\n      // ---------------------------------\n      /**\n       * Transition Property\n       * @see https://tailwindcss.com/docs/transition-property\n       */\n      transition: [{\n        transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Behavior\n       * @see https://tailwindcss.com/docs/transition-behavior\n       */\n      'transition-behavior': [{\n        transition: ['normal', 'discrete']\n      }],\n      /**\n       * Transition Duration\n       * @see https://tailwindcss.com/docs/transition-duration\n       */\n      duration: [{\n        duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Timing Function\n       * @see https://tailwindcss.com/docs/transition-timing-function\n       */\n      ease: [{\n        ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Delay\n       * @see https://tailwindcss.com/docs/transition-delay\n       */\n      delay: [{\n        delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Animation\n       * @see https://tailwindcss.com/docs/animation\n       */\n      animate: [{\n        animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------\n      // --- Transforms ---\n      // ------------------\n      /**\n       * Backface Visibility\n       * @see https://tailwindcss.com/docs/backface-visibility\n       */\n      backface: [{\n        backface: ['hidden', 'visible']\n      }],\n      /**\n       * Perspective\n       * @see https://tailwindcss.com/docs/perspective\n       */\n      perspective: [{\n        perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Perspective Origin\n       * @see https://tailwindcss.com/docs/perspective-origin\n       */\n      'perspective-origin': [{\n        'perspective-origin': scalePositionWithArbitrary()\n      }],\n      /**\n       * Rotate\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      rotate: [{\n        rotate: scaleRotate()\n      }],\n      /**\n       * Rotate X\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-x': [{\n        'rotate-x': scaleRotate()\n      }],\n      /**\n       * Rotate Y\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-y': [{\n        'rotate-y': scaleRotate()\n      }],\n      /**\n       * Rotate Z\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-z': [{\n        'rotate-z': scaleRotate()\n      }],\n      /**\n       * Scale\n       * @see https://tailwindcss.com/docs/scale\n       */\n      scale: [{\n        scale: scaleScale()\n      }],\n      /**\n       * Scale X\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-x': [{\n        'scale-x': scaleScale()\n      }],\n      /**\n       * Scale Y\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-y': [{\n        'scale-y': scaleScale()\n      }],\n      /**\n       * Scale Z\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-z': [{\n        'scale-z': scaleScale()\n      }],\n      /**\n       * Scale 3D\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-3d': ['scale-3d'],\n      /**\n       * Skew\n       * @see https://tailwindcss.com/docs/skew\n       */\n      skew: [{\n        skew: scaleSkew()\n      }],\n      /**\n       * Skew X\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-x': [{\n        'skew-x': scaleSkew()\n      }],\n      /**\n       * Skew Y\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-y': [{\n        'skew-y': scaleSkew()\n      }],\n      /**\n       * Transform\n       * @see https://tailwindcss.com/docs/transform\n       */\n      transform: [{\n        transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n      }],\n      /**\n       * Transform Origin\n       * @see https://tailwindcss.com/docs/transform-origin\n       */\n      'transform-origin': [{\n        origin: scalePositionWithArbitrary()\n      }],\n      /**\n       * Transform Style\n       * @see https://tailwindcss.com/docs/transform-style\n       */\n      'transform-style': [{\n        transform: ['3d', 'flat']\n      }],\n      /**\n       * Translate\n       * @see https://tailwindcss.com/docs/translate\n       */\n      translate: [{\n        translate: scaleTranslate()\n      }],\n      /**\n       * Translate X\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-x': [{\n        'translate-x': scaleTranslate()\n      }],\n      /**\n       * Translate Y\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-y': [{\n        'translate-y': scaleTranslate()\n      }],\n      /**\n       * Translate Z\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-z': [{\n        'translate-z': scaleTranslate()\n      }],\n      /**\n       * Translate None\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-none': ['translate-none'],\n      // ---------------------\n      // --- Interactivity ---\n      // ---------------------\n      /**\n       * Accent Color\n       * @see https://tailwindcss.com/docs/accent-color\n       */\n      accent: [{\n        accent: scaleColor()\n      }],\n      /**\n       * Appearance\n       * @see https://tailwindcss.com/docs/appearance\n       */\n      appearance: [{\n        appearance: ['none', 'auto']\n      }],\n      /**\n       * Caret Color\n       * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n       */\n      'caret-color': [{\n        caret: scaleColor()\n      }],\n      /**\n       * Color Scheme\n       * @see https://tailwindcss.com/docs/color-scheme\n       */\n      'color-scheme': [{\n        scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n      }],\n      /**\n       * Cursor\n       * @see https://tailwindcss.com/docs/cursor\n       */\n      cursor: [{\n        cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Field Sizing\n       * @see https://tailwindcss.com/docs/field-sizing\n       */\n      'field-sizing': [{\n        'field-sizing': ['fixed', 'content']\n      }],\n      /**\n       * Pointer Events\n       * @see https://tailwindcss.com/docs/pointer-events\n       */\n      'pointer-events': [{\n        'pointer-events': ['auto', 'none']\n      }],\n      /**\n       * Resize\n       * @see https://tailwindcss.com/docs/resize\n       */\n      resize: [{\n        resize: ['none', '', 'y', 'x']\n      }],\n      /**\n       * Scroll Behavior\n       * @see https://tailwindcss.com/docs/scroll-behavior\n       */\n      'scroll-behavior': [{\n        scroll: ['auto', 'smooth']\n      }],\n      /**\n       * Scroll Margin\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-m': [{\n        'scroll-m': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin X\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mx': [{\n        'scroll-mx': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Y\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-my': [{\n        'scroll-my': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Start\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ms': [{\n        'scroll-ms': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin End\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-me': [{\n        'scroll-me': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Top\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mt': [{\n        'scroll-mt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Right\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mr': [{\n        'scroll-mr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Bottom\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mb': [{\n        'scroll-mb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Left\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ml': [{\n        'scroll-ml': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-p': [{\n        'scroll-p': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding X\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-px': [{\n        'scroll-px': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Y\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-py': [{\n        'scroll-py': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Start\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-ps': [{\n        'scroll-ps': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding End\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pe': [{\n        'scroll-pe': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Top\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pt': [{\n        'scroll-pt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Right\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pr': [{\n        'scroll-pr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Bottom\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pb': [{\n        'scroll-pb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Left\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pl': [{\n        'scroll-pl': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Snap Align\n       * @see https://tailwindcss.com/docs/scroll-snap-align\n       */\n      'snap-align': [{\n        snap: ['start', 'end', 'center', 'align-none']\n      }],\n      /**\n       * Scroll Snap Stop\n       * @see https://tailwindcss.com/docs/scroll-snap-stop\n       */\n      'snap-stop': [{\n        snap: ['normal', 'always']\n      }],\n      /**\n       * Scroll Snap Type\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-type': [{\n        snap: ['none', 'x', 'y', 'both']\n      }],\n      /**\n       * Scroll Snap Type Strictness\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-strictness': [{\n        snap: ['mandatory', 'proximity']\n      }],\n      /**\n       * Touch Action\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      touch: [{\n        touch: ['auto', 'none', 'manipulation']\n      }],\n      /**\n       * Touch Action X\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-x': [{\n        'touch-pan': ['x', 'left', 'right']\n      }],\n      /**\n       * Touch Action Y\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-y': [{\n        'touch-pan': ['y', 'up', 'down']\n      }],\n      /**\n       * Touch Action Pinch Zoom\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-pz': ['touch-pinch-zoom'],\n      /**\n       * User Select\n       * @see https://tailwindcss.com/docs/user-select\n       */\n      select: [{\n        select: ['none', 'text', 'all', 'auto']\n      }],\n      /**\n       * Will Change\n       * @see https://tailwindcss.com/docs/will-change\n       */\n      'will-change': [{\n        'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -----------\n      // --- SVG ---\n      // -----------\n      /**\n       * Fill\n       * @see https://tailwindcss.com/docs/fill\n       */\n      fill: [{\n        fill: ['none', ...scaleColor()]\n      }],\n      /**\n       * Stroke Width\n       * @see https://tailwindcss.com/docs/stroke-width\n       */\n      'stroke-w': [{\n        stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n      }],\n      /**\n       * Stroke\n       * @see https://tailwindcss.com/docs/stroke\n       */\n      stroke: [{\n        stroke: ['none', ...scaleColor()]\n      }],\n      // ---------------------\n      // --- Accessibility ---\n      // ---------------------\n      /**\n       * Forced Color Adjust\n       * @see https://tailwindcss.com/docs/forced-color-adjust\n       */\n      'forced-color-adjust': [{\n        'forced-color-adjust': ['auto', 'none']\n      }]\n    },\n    conflictingClassGroups: {\n      overflow: ['overflow-x', 'overflow-y'],\n      overscroll: ['overscroll-x', 'overscroll-y'],\n      inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n      'inset-x': ['right', 'left'],\n      'inset-y': ['top', 'bottom'],\n      flex: ['basis', 'grow', 'shrink'],\n      gap: ['gap-x', 'gap-y'],\n      p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n      px: ['pr', 'pl'],\n      py: ['pt', 'pb'],\n      m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n      mx: ['mr', 'ml'],\n      my: ['mt', 'mb'],\n      size: ['w', 'h'],\n      'font-size': ['leading'],\n      'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n      'fvn-ordinal': ['fvn-normal'],\n      'fvn-slashed-zero': ['fvn-normal'],\n      'fvn-figure': ['fvn-normal'],\n      'fvn-spacing': ['fvn-normal'],\n      'fvn-fraction': ['fvn-normal'],\n      'line-clamp': ['display', 'overflow'],\n      rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n      'rounded-s': ['rounded-ss', 'rounded-es'],\n      'rounded-e': ['rounded-se', 'rounded-ee'],\n      'rounded-t': ['rounded-tl', 'rounded-tr'],\n      'rounded-r': ['rounded-tr', 'rounded-br'],\n      'rounded-b': ['rounded-br', 'rounded-bl'],\n      'rounded-l': ['rounded-tl', 'rounded-bl'],\n      'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n      'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n      'border-w-x': ['border-w-r', 'border-w-l'],\n      'border-w-y': ['border-w-t', 'border-w-b'],\n      'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n      'border-color-x': ['border-color-r', 'border-color-l'],\n      'border-color-y': ['border-color-t', 'border-color-b'],\n      translate: ['translate-x', 'translate-y', 'translate-none'],\n      'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n      'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n      'scroll-mx': ['scroll-mr', 'scroll-ml'],\n      'scroll-my': ['scroll-mt', 'scroll-mb'],\n      'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n      'scroll-px': ['scroll-pr', 'scroll-pl'],\n      'scroll-py': ['scroll-pt', 'scroll-pb'],\n      touch: ['touch-x', 'touch-y', 'touch-pz'],\n      'touch-x': ['touch'],\n      'touch-y': ['touch'],\n      'touch-pz': ['touch']\n    },\n    conflictingClassGroupModifiers: {\n      'font-size': ['leading']\n    },\n    orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n  };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n  cacheSize,\n  prefix,\n  experimentalParseClassName,\n  extend = {},\n  override = {}\n}) => {\n  overrideProperty(baseConfig, 'cacheSize', cacheSize);\n  overrideProperty(baseConfig, 'prefix', prefix);\n  overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n  overrideConfigProperties(baseConfig.theme, override.theme);\n  overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n  overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n  mergeConfigProperties(baseConfig.theme, extend.theme);\n  mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n  mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n  return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n  if (overrideValue !== undefined) {\n    baseObject[overrideKey] = overrideValue;\n  }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n  if (overrideObject) {\n    for (const key in overrideObject) {\n      overrideProperty(baseObject, key, overrideObject[key]);\n    }\n  }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n  if (mergeObject) {\n    for (const key in mergeObject) {\n      mergeArrayProperties(baseObject, mergeObject, key);\n    }\n  }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n  const mergeValue = mergeObject[key];\n  if (mergeValue !== undefined) {\n    baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n  }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport function waitUntil(\n  condition: () => boolean,\n  callback: () => void,\n): void {\n  if (condition()) {\n    callback();\n  } else {\n    setTimeout(() => waitUntil(condition, callback), 100);\n  }\n}\n\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n  func: T,\n  wait: number,\n): (...args: Parameters<T>) => void {\n  let timer: number | undefined;\n  return (...args: Parameters<T>) => {\n    clearTimeout(timer);\n    timer = setTimeout(() => func(...args), wait) as unknown as number;\n  };\n}\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 24 24\", stroke: \"currentColor\", \"aria-hidden\": \"true\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 2, d: \"M6 18L18 6M6 6l12 12\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgCollapseExpanded = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"miter\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_bgCarrier\", strokeWidth: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_tracerCarrier\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_iconCarrier\" }, /* @__PURE__ */ React.createElement(\"line\", { x1: 14, y1: 10, x2: 21, y2: 3 }), /* @__PURE__ */ React.createElement(\"polyline\", { points: \"20 10 14 10 14 4\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 3, y1: 21, x2: 10, y2: 14 }), /* @__PURE__ */ React.createElement(\"polyline\", { points: \"4 14 10 14 10 20\" })));\nexport default SvgCollapseExpanded;\n","import * as React from \"react\";\nconst SvgCollapseUnexpanded = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_bgCarrier\", strokeWidth: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_tracerCarrier\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"g\", { id: \"SVGRepo_iconCarrier\" }, /* @__PURE__ */ React.createElement(\"title\", null), /* @__PURE__ */ React.createElement(\"g\", { id: \"Complete\" }, /* @__PURE__ */ React.createElement(\"g\", { id: \"expand\" }, /* @__PURE__ */ React.createElement(\"g\", null, /* @__PURE__ */ React.createElement(\"polyline\", { \"data-name\": \"Right\", fill: \"none\", id: \"Right-2\", points: \"3 17.3 3 21 6.7 21\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }), /* @__PURE__ */ React.createElement(\"line\", { fill: \"none\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1, x1: 10, x2: 3.8, y1: 14, y2: 20.2 }), /* @__PURE__ */ React.createElement(\"line\", { fill: \"none\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1, x1: 14, x2: 20.2, y1: 10, y2: 3.8 }), /* @__PURE__ */ React.createElement(\"polyline\", { \"data-name\": \"Right\", fill: \"none\", id: \"Right-3\", points: \"21 6.7 21 3 17.3 3\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 1 }))))));\nexport default SvgCollapseUnexpanded;\n","import * as React from \"react\";\nconst SvgDebug = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", xmlSpace: \"preserve\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"line\", { x1: 6, y1: 3, x2: 6, y2: 15 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 18, cy: 6, r: 3 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 6, cy: 18, r: 3 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 9a9 9 0 0 1-9 9\" }));\nexport default SvgDebug;\n","import * as React from \"react\";\nconst SvgNonSelectedCycle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", xmlSpace: \"preserve\", viewBox: \"0 0 20 20\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 10, cy: 10, r: 10, fill: \"#000\", fillOpacity: 0.1 }));\nexport default SvgNonSelectedCycle;\n","import * as React from \"react\";\nconst SvgNumbering = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 100 100\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.8864 32.0909V67H17.6591V36.5227H17.4545L8.93182 42.1818V37.8864L17.6591 32.0909H21.8864ZM33.5483 67.2159C32.8826 67.2159 32.3113 66.9775 31.8345 66.5007C31.3577 66.0239 31.1193 65.4527 31.1193 64.7869C31.1193 64.1212 31.3577 63.55 31.8345 63.0732C32.3113 62.5964 32.8826 62.358 33.5483 62.358C34.214 62.358 34.7853 62.5964 35.2621 63.0732C35.7389 63.55 35.9773 64.1212 35.9773 64.7869C35.9773 65.2277 35.8648 65.6326 35.6399 66.0014C35.424 66.3703 35.1316 66.6671 34.7628 66.892C34.4029 67.108 33.9981 67.2159 33.5483 67.2159ZM41.7887 67V64.4432L51.391 53.9318C52.5179 52.7008 53.4459 51.6307 54.1751 50.7216C54.9042 49.803 55.444 48.9413 55.7944 48.1364C56.1542 47.322 56.3342 46.4697 56.3342 45.5795C56.3342 44.5568 56.088 43.6714 55.5955 42.9233C55.1126 42.1752 54.4497 41.5975 53.6069 41.1903C52.7641 40.7831 51.8171 40.5795 50.766 40.5795C49.6486 40.5795 48.6732 40.8116 47.8398 41.2756C47.016 41.7301 46.3768 42.3693 45.9222 43.1932C45.4772 44.017 45.2546 44.983 45.2546 46.0909H41.9023C41.9023 44.3864 42.2953 42.8902 43.0813 41.6023C43.8673 40.3144 44.9374 39.3106 46.2915 38.5909C47.6552 37.8712 49.1845 37.5114 50.8796 37.5114C52.5842 37.5114 54.0946 37.8712 55.4109 38.5909C56.7272 39.3106 57.7594 40.2812 58.5075 41.5028C59.2556 42.7244 59.6296 44.0833 59.6296 45.5795C59.6296 46.6496 59.4355 47.696 59.0472 48.7188C58.6684 49.732 58.0056 50.8636 57.0586 52.1136C56.1211 53.3542 54.819 54.8693 53.1523 56.6591L46.6183 63.6477V63.875H60.141V67H41.7887ZM68.2319 67.2159C67.5662 67.2159 66.9949 66.9775 66.5181 66.5007C66.0413 66.0239 65.8029 65.4527 65.8029 64.7869C65.8029 64.1212 66.0413 63.55 66.5181 63.0732C66.9949 62.5964 67.5662 62.358 68.2319 62.358C68.8976 62.358 69.4689 62.5964 69.9457 63.0732C70.4225 63.55 70.6609 64.1212 70.6609 64.7869C70.6609 65.2277 70.5484 65.6326 70.3235 66.0014C70.1076 66.3703 69.8152 66.6671 69.4464 66.892C69.0865 67.108 68.6817 67.2159 68.2319 67.2159ZM83.7337 67.3182C82.2337 67.3182 80.8965 67.0606 79.7223 66.5455C78.5556 66.0303 77.6276 65.3144 76.9382 64.3977C76.2564 63.4735 75.8852 62.4015 75.8246 61.1818H78.6882C78.7488 61.9318 79.0064 62.5795 79.4609 63.125C79.9155 63.6629 80.5102 64.0795 81.245 64.375C81.9799 64.6705 82.7943 64.8182 83.6882 64.8182C84.6882 64.8182 85.5746 64.6439 86.3473 64.2955C87.12 63.947 87.7261 63.4621 88.1655 62.8409C88.6049 62.2197 88.8246 61.5 88.8246 60.6818C88.8246 59.8258 88.6125 59.072 88.1882 58.4205C87.764 57.7614 87.1428 57.2462 86.3246 56.875C85.5064 56.5038 84.5064 56.3182 83.3246 56.3182H81.4609V53.8182H83.3246C84.2488 53.8182 85.0594 53.6515 85.7564 53.3182C86.4609 52.9848 87.0102 52.5152 87.4041 51.9091C87.8056 51.303 88.0064 50.5909 88.0064 49.7727C88.0064 48.9848 87.8322 48.2992 87.4837 47.7159C87.1352 47.1326 86.6428 46.678 86.0064 46.3523C85.3776 46.0265 84.6352 45.8636 83.7791 45.8636C82.9761 45.8636 82.2185 46.0114 81.5064 46.3068C80.8018 46.5947 80.2261 47.0152 79.7791 47.5682C79.3321 48.1136 79.0897 48.7727 79.0518 49.5455H76.3246C76.37 48.3258 76.7375 47.2576 77.4268 46.3409C78.1162 45.4167 79.0178 44.697 80.1314 44.1818C81.2526 43.6667 82.4837 43.4091 83.8246 43.4091C85.264 43.4091 86.4988 43.7008 87.5291 44.2841C88.5594 44.8598 89.3511 45.6212 89.9041 46.5682C90.4572 47.5152 90.7337 48.5379 90.7337 49.6364C90.7337 50.947 90.389 52.0644 89.6996 52.9886C89.0178 53.9129 88.0897 54.553 86.9155 54.9091V55.0909C88.3852 55.3333 89.5329 55.9583 90.3587 56.9659C91.1844 57.9659 91.5973 59.2045 91.5973 60.6818C91.5973 61.947 91.2526 63.0833 90.5632 64.0909C89.8814 65.0909 88.9496 65.8788 87.7678 66.4545C86.5859 67.0303 85.2412 67.3182 83.7337 67.3182Z\", fill: \"black\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.8864 32.0909H22.8864V31.0909H21.8864V32.0909ZM21.8864 67V68H22.8864V67H21.8864ZM17.6591 67H16.6591V68H17.6591V67ZM17.6591 36.5227H18.6591V35.5227H17.6591V36.5227ZM17.4545 36.5227V35.5227H17.1528L16.9014 35.6897L17.4545 36.5227ZM8.93182 42.1818H7.93182V44.0462L9.48498 43.0149L8.93182 42.1818ZM8.93182 37.8864L8.37862 37.0533L7.93182 37.35V37.8864H8.93182ZM17.6591 32.0909V31.0909H17.3573L17.1059 31.2579L17.6591 32.0909ZM20.8864 32.0909V67H22.8864V32.0909H20.8864ZM21.8864 66H17.6591V68H21.8864V66ZM18.6591 67V36.5227H16.6591V67H18.6591ZM17.6591 35.5227H17.4545V37.5227H17.6591V35.5227ZM16.9014 35.6897L8.37866 41.3487L9.48498 43.0149L18.0077 37.3558L16.9014 35.6897ZM9.93182 42.1818V37.8864H7.93182V42.1818H9.93182ZM9.48502 38.7194L18.2123 32.924L17.1059 31.2579L8.37862 37.0533L9.48502 38.7194ZM17.6591 33.0909H21.8864V31.0909H17.6591V33.0909ZM31.8345 66.5007L32.5416 65.7936L32.5416 65.7936L31.8345 66.5007ZM31.8345 63.0732L31.1274 62.366L31.8345 63.0732ZM35.2621 63.0732L35.9692 62.366L35.9692 62.366L35.2621 63.0732ZM35.6399 66.0014L34.7861 65.4808L34.7814 65.4885L34.7769 65.4962L35.6399 66.0014ZM34.7628 66.892L35.2773 67.7496L35.2834 67.7458L34.7628 66.892ZM33.5483 66.2159C33.1516 66.2159 32.8336 66.0856 32.5416 65.7936L31.1274 67.2078C31.789 67.8694 32.6135 68.2159 33.5483 68.2159V66.2159ZM32.5416 65.7936C32.2496 65.5016 32.1193 65.1836 32.1193 64.7869H30.1193C30.1193 65.7217 30.4658 66.5462 31.1274 67.2078L32.5416 65.7936ZM32.1193 64.7869C32.1193 64.3902 32.2496 64.0722 32.5416 63.7803L31.1274 62.366C30.4658 63.0277 30.1193 63.8522 30.1193 64.7869H32.1193ZM32.5416 63.7803C32.8336 63.4883 33.1516 63.358 33.5483 63.358V61.358C32.6135 61.358 31.789 61.7044 31.1274 62.366L32.5416 63.7803ZM33.5483 63.358C33.945 63.358 34.263 63.4883 34.555 63.7803L35.9692 62.366C35.3076 61.7044 34.483 61.358 33.5483 61.358V63.358ZM34.555 63.7803C34.8469 64.0722 34.9773 64.3902 34.9773 64.7869H36.9773C36.9773 63.8522 36.6308 63.0277 35.9692 62.366L34.555 63.7803ZM34.9773 64.7869C34.9773 65.048 34.9134 65.2721 34.7861 65.4808L36.4937 66.522C36.8163 65.993 36.9773 65.4075 36.9773 64.7869H34.9773ZM34.7769 65.4962C34.6455 65.7208 34.4714 65.8985 34.2422 66.0382L35.2834 67.7458C35.7919 67.4358 36.2025 67.0198 36.5029 66.5066L34.7769 65.4962ZM34.2483 66.0346C34.0551 66.1505 33.8304 66.2159 33.5483 66.2159V68.2159C34.1658 68.2159 34.7508 68.0654 35.2773 67.7495L34.2483 66.0346ZM41.7887 67H40.7887V68H41.7887V67ZM41.7887 64.4432L41.0504 63.7687L40.7887 64.0552V64.4432H41.7887ZM51.391 53.9318L50.6534 53.2566L50.6527 53.2574L51.391 53.9318ZM54.1751 50.7216L54.9552 51.3473L54.9583 51.3433L54.1751 50.7216ZM55.7944 48.1364L54.8797 47.7322L54.8775 47.7372L55.7944 48.1364ZM55.5955 42.9233L54.7554 43.4657L54.7602 43.4731L55.5955 42.9233ZM53.6069 41.1903L54.0419 40.2899L54.0419 40.2899L53.6069 41.1903ZM47.8398 41.2756L48.3229 42.1512L48.3263 42.1493L47.8398 41.2756ZM45.9222 43.1932L45.0466 42.7101L45.0424 42.7179L45.9222 43.1932ZM45.2546 46.0909V47.0909H46.2546V46.0909H45.2546ZM41.9023 46.0909H40.9023V47.0909H41.9023V46.0909ZM43.0813 41.6023L43.9349 42.1232L43.9349 42.1232L43.0813 41.6023ZM46.2915 38.5909L45.8248 37.7065L45.8222 37.7079L46.2915 38.5909ZM55.4109 38.5909L55.8906 37.7135L55.8906 37.7135L55.4109 38.5909ZM58.5075 41.5028L57.6547 42.0251L58.5075 41.5028ZM59.0472 48.7188L58.1123 48.3638L58.1105 48.3686L59.0472 48.7188ZM57.0586 52.1136L56.2615 51.5098L56.2608 51.5107L57.0586 52.1136ZM53.1523 56.6591L53.8828 57.342L53.8842 57.3406L53.1523 56.6591ZM46.6183 63.6477L45.8878 62.9648L45.6183 63.2531V63.6477H46.6183ZM46.6183 63.875H45.6183V64.875H46.6183V63.875ZM60.141 63.875H61.141V62.875H60.141V63.875ZM60.141 67V68H61.141V67H60.141ZM42.7887 67V64.4432H40.7887V67H42.7887ZM42.527 65.1176L52.1293 54.6063L50.6527 53.2574L41.0504 63.7687L42.527 65.1176ZM52.1286 54.607C53.2645 53.3661 54.208 52.2788 54.9551 51.3473L53.395 50.0959C52.6838 50.9825 51.7713 52.0354 50.6534 53.2566L52.1286 54.607ZM54.9583 51.3433C55.7246 50.3779 56.3168 49.4417 56.7113 48.5355L54.8775 47.7372C54.5712 48.4409 54.0838 49.2281 53.3918 50.0999L54.9583 51.3433ZM56.7091 48.5405C57.1252 47.5988 57.3342 46.6089 57.3342 45.5795H55.3342C55.3342 46.3305 55.1833 47.0451 54.8797 47.7322L56.7091 48.5405ZM57.3342 45.5795C57.3342 44.3899 57.0454 43.3071 56.4308 42.3735L54.7602 43.4731C55.1305 44.0357 55.3342 44.7237 55.3342 45.5795H57.3342ZM56.4357 42.3809C55.8479 41.4705 55.0412 40.7727 54.0419 40.2899L53.1719 42.0908C53.8582 42.4223 54.3772 42.8799 54.7554 43.4657L56.4357 42.3809ZM54.0419 40.2899C53.0476 39.8095 51.9491 39.5795 50.766 39.5795V41.5795C51.6851 41.5795 52.4806 41.7568 53.1719 42.0908L54.0419 40.2899ZM50.766 39.5795C49.5076 39.5795 48.3592 39.8418 47.3534 40.4019L48.3263 42.1493C48.9872 41.7813 49.7895 41.5795 50.766 41.5795V39.5795ZM47.3568 40.4C46.3677 40.9457 45.5924 41.721 45.0467 42.7101L46.7978 43.6763C47.1612 43.0176 47.6643 42.5145 48.3229 42.1511L47.3568 40.4ZM45.0424 42.7179C44.5052 43.7123 44.2546 44.8474 44.2546 46.0909H46.2546C46.2546 45.1185 46.4491 44.3218 46.8021 43.6685L45.0424 42.7179ZM45.2546 45.0909H41.9023V47.0909H45.2546V45.0909ZM42.9023 46.0909C42.9023 44.5457 43.2567 43.2346 43.9349 42.1232L42.2277 41.0813C41.334 42.5457 40.9023 44.227 40.9023 46.0909H42.9023ZM43.9349 42.1232C44.626 40.9909 45.5622 40.111 46.7609 39.4739L45.8222 37.7079C44.3126 38.5102 43.1087 39.6379 42.2277 41.0813L43.9349 42.1232ZM46.7583 39.4753C47.9642 38.8389 49.3307 38.5114 50.8796 38.5114V36.5114C49.0383 36.5114 47.3462 36.9036 45.8248 37.7065L46.7583 39.4753ZM50.8796 38.5114C52.4396 38.5114 53.781 38.8395 54.9311 39.4683L55.8906 37.7135C54.4082 36.903 52.7287 36.5114 50.8796 36.5114V38.5114ZM54.9311 39.4683C56.1017 40.1084 57.0022 40.9596 57.6547 42.0251L59.3602 40.9806C58.5166 39.6029 57.3526 38.5129 55.8906 37.7135L54.9311 39.4683ZM57.6547 42.0251C58.3021 43.0823 58.6296 44.2591 58.6296 45.5795H60.6296C60.6296 43.9076 60.209 42.3665 59.3602 40.9806L57.6547 42.0251ZM58.6296 45.5795C58.6296 46.5256 58.4585 47.4519 58.1123 48.3638L59.9821 49.0737C60.4124 47.9401 60.6296 46.7736 60.6296 45.5795H58.6296ZM58.1105 48.3686C57.7772 49.2602 57.1737 50.3056 56.2615 51.5098L57.8557 52.7175C58.8374 51.4216 59.5596 50.2038 59.9839 49.0689L58.1105 48.3686ZM56.2608 51.5107C55.3521 52.7131 54.0754 54.2005 52.4205 55.9776L53.8842 57.3406C55.5626 55.5382 56.8901 53.9952 57.8564 52.7166L56.2608 51.5107ZM52.4219 55.9761L45.8878 62.9648L47.3487 64.3307L53.8828 57.342L52.4219 55.9761ZM45.6183 63.6477V63.875H47.6183V63.6477H45.6183ZM46.6183 64.875H60.141V62.875H46.6183V64.875ZM59.141 63.875V67H61.141V63.875H59.141ZM60.141 66H41.7887V68H60.141V66ZM66.5181 66.5007L67.2252 65.7936L67.2252 65.7936L66.5181 66.5007ZM66.5181 63.0732L65.811 62.366L66.5181 63.0732ZM69.9457 63.0732L70.6528 62.366L70.6528 62.366L69.9457 63.0732ZM70.3235 66.0014L69.4697 65.4808L69.465 65.4885L69.4605 65.4962L70.3235 66.0014ZM69.4464 66.892L69.9609 67.7496L69.967 67.7458L69.4464 66.892ZM68.2319 66.2159C67.8352 66.2159 67.5172 66.0856 67.2252 65.7936L65.811 67.2078C66.4726 67.8694 67.2971 68.2159 68.2319 68.2159V66.2159ZM67.2252 65.7936C66.9332 65.5016 66.8029 65.1836 66.8029 64.7869H64.8029C64.8029 65.7217 65.1494 66.5462 65.811 67.2078L67.2252 65.7936ZM66.8029 64.7869C66.8029 64.3902 66.9332 64.0722 67.2252 63.7803L65.811 62.366C65.1494 63.0277 64.8029 63.8522 64.8029 64.7869H66.8029ZM67.2252 63.7803C67.5172 63.4883 67.8352 63.358 68.2319 63.358V61.358C67.2971 61.358 66.4726 61.7044 65.811 62.366L67.2252 63.7803ZM68.2319 63.358C68.6286 63.358 68.9466 63.4883 69.2386 63.7803L70.6528 62.366C69.9912 61.7044 69.1666 61.358 68.2319 61.358V63.358ZM69.2386 63.7803C69.5305 64.0722 69.6609 64.3902 69.6609 64.7869H71.6609C71.6609 63.8522 71.3144 63.0277 70.6528 62.366L69.2386 63.7803ZM69.6609 64.7869C69.6609 65.048 69.597 65.2721 69.4697 65.4808L71.1773 66.522C71.4999 65.993 71.6609 65.4075 71.6609 64.7869H69.6609ZM69.4605 65.4962C69.3291 65.7208 69.155 65.8985 68.9258 66.0382L69.967 67.7458C70.4754 67.4358 70.8861 67.0198 71.1865 66.5066L69.4605 65.4962ZM68.9319 66.0346C68.7386 66.1505 68.514 66.2159 68.2319 66.2159V68.2159C68.8494 68.2159 69.4344 68.0654 69.9609 67.7495L68.9319 66.0346ZM79.7223 66.5455L79.3184 67.4602L79.3206 67.4612L79.7223 66.5455ZM76.9382 64.3977L76.1335 64.9914L76.139 64.9988L76.9382 64.3977ZM75.8246 61.1818V60.1818H74.7737L74.8258 61.2314L75.8246 61.1818ZM78.6882 61.1818L79.685 61.1013L79.6107 60.1818H78.6882V61.1818ZM79.4609 63.125L78.6927 63.7652L78.6971 63.7705L79.4609 63.125ZM81.245 64.375L80.872 65.3028L80.872 65.3028L81.245 64.375ZM88.1655 62.8409L87.3491 62.2634L87.3491 62.2634L88.1655 62.8409ZM88.1882 58.4205L87.3473 58.9617L87.3502 58.9661L88.1882 58.4205ZM86.3246 56.875L85.9114 57.7857L85.9114 57.7857L86.3246 56.875ZM81.4609 56.3182H80.4609V57.3182H81.4609V56.3182ZM81.4609 53.8182V52.8182H80.4609V53.8182H81.4609ZM85.7564 53.3182L85.3287 52.4142L85.3249 52.416L85.7564 53.3182ZM87.4041 51.9091L86.5704 51.3568L86.5657 51.3641L87.4041 51.9091ZM87.4837 47.7159L88.3421 47.2031L88.3421 47.2031L87.4837 47.7159ZM86.0064 46.3523L85.5464 47.2402L85.5507 47.2424L86.0064 46.3523ZM81.5064 46.3068L81.8846 47.2325L81.8896 47.2305L81.5064 46.3068ZM79.7791 47.5682L80.5526 48.202L80.5569 48.1968L79.7791 47.5682ZM79.0518 49.5455V50.5455H80.004L80.0506 49.5944L79.0518 49.5455ZM76.3246 49.5455L75.3253 49.5082L75.2866 50.5455H76.3246V49.5455ZM77.4268 46.3409L78.2261 46.942L78.2284 46.9388L77.4268 46.3409ZM80.1314 44.1818L79.7139 43.2731L79.7116 43.2742L80.1314 44.1818ZM87.5291 44.2841L87.0364 45.1543L87.0413 45.157L87.5291 44.2841ZM89.9041 46.5682L89.0406 47.0725L89.0406 47.0725L89.9041 46.5682ZM89.6996 52.9886L88.898 52.3907L88.8948 52.395L89.6996 52.9886ZM86.9155 54.9091L86.6253 53.9521L85.9155 54.1674V54.9091H86.9155ZM86.9155 55.0909H85.9155V55.9395L86.7527 56.0776L86.9155 55.0909ZM90.3587 56.9659L89.5852 57.5998L89.5876 57.6026L90.3587 56.9659ZM90.5632 64.0909L89.7379 63.5262L89.737 63.5276L90.5632 64.0909ZM87.7678 66.4545L88.2057 67.3535L88.2057 67.3535L87.7678 66.4545ZM83.7337 66.3182C82.3487 66.3182 81.152 66.0807 80.124 65.6297L79.3206 67.4612C80.6411 68.0405 82.1186 68.3182 83.7337 68.3182V66.3182ZM80.1262 65.6307C79.0981 65.1767 78.3129 64.5619 77.7374 63.7967L76.139 64.9988C76.9423 66.0669 78.0132 66.8839 79.3184 67.4602L80.1262 65.6307ZM77.7429 63.8041C77.1854 63.0484 76.8748 62.1685 76.8233 61.1322L74.8258 61.2314C74.8955 62.6346 75.3274 63.8986 76.1335 64.9914L77.7429 63.8041ZM75.8246 62.1818H78.6882V60.1818H75.8246V62.1818ZM77.6915 61.2624C77.7676 62.205 78.098 63.0515 78.6927 63.7652L80.2292 62.4848C79.9148 62.1076 79.73 61.6586 79.685 61.1013L77.6915 61.2624ZM78.6971 63.7705C79.2695 64.4478 80.0049 64.9542 80.872 65.3028L81.6181 63.4472C81.0154 63.2049 80.5615 62.878 80.2247 62.4795L78.6971 63.7705ZM80.872 65.3028C81.7397 65.6517 82.6828 65.8182 83.6882 65.8182V63.8182C82.9057 63.8182 82.22 63.6892 81.6181 63.4472L80.872 65.3028ZM83.6882 65.8182C84.8048 65.8182 85.8353 65.6233 86.7584 65.207L85.9362 63.3839C85.3138 63.6645 84.5716 63.8182 83.6882 63.8182V65.8182ZM86.7584 65.207C87.6746 64.7939 88.4282 64.2012 88.9819 63.4184L87.3491 62.2634C87.024 62.723 86.5655 63.1001 85.9362 63.3839L86.7584 65.207ZM88.9819 63.4184C89.5499 62.6154 89.8246 61.6904 89.8246 60.6818H87.8246C87.8246 61.3096 87.6599 61.824 87.3491 62.2634L88.9819 63.4184ZM89.8246 60.6818C89.8246 59.6524 89.5668 58.7049 89.0262 57.8748L87.3502 58.9661C87.6582 59.439 87.8246 59.9992 87.8246 60.6818H89.8246ZM89.0291 57.8792C88.4862 57.0358 87.7048 56.4031 86.7377 55.9643L85.9114 57.7857C86.5807 58.0893 87.0418 58.487 87.3473 58.9617L89.0291 57.8792ZM86.7377 55.9643C85.7557 55.5188 84.606 55.3182 83.3246 55.3182V57.3182C84.4068 57.3182 85.2571 57.4888 85.9114 57.7857L86.7377 55.9643ZM83.3246 55.3182H81.4609V57.3182H83.3246V55.3182ZM82.4609 56.3182V53.8182H80.4609V56.3182H82.4609ZM81.4609 54.8182H83.3246V52.8182H81.4609V54.8182ZM83.3246 54.8182C84.3692 54.8182 85.3323 54.6295 86.1878 54.2203L85.3249 52.416C84.7866 52.6735 84.1284 52.8182 83.3246 52.8182V54.8182ZM86.1841 54.2221C87.0425 53.816 87.7397 53.2277 88.2426 52.4541L86.5657 51.3641C86.2807 51.8026 85.8794 52.1537 85.3287 52.4142L86.1841 54.2221ZM88.2378 52.4614C88.761 51.6715 89.0064 50.7619 89.0064 49.7727H87.0064C87.0064 50.4199 86.8502 50.9345 86.5705 51.3568L88.2378 52.4614ZM89.0064 49.7727C89.0064 48.8335 88.7972 47.9647 88.3421 47.2031L86.6252 48.2288C86.8671 48.6338 87.0064 49.1362 87.0064 49.7727H89.0064ZM88.3421 47.2031C87.8923 46.4501 87.2563 45.8687 86.4621 45.4621L85.5507 47.2424C86.0292 47.4874 86.378 47.8151 86.6252 48.2288L88.3421 47.2031ZM86.4664 45.4644C85.6687 45.0511 84.7622 44.8636 83.7791 44.8636V46.8636C84.5082 46.8636 85.0865 47.0019 85.5464 47.2402L86.4664 45.4644ZM83.7791 44.8636C82.8501 44.8636 81.9618 45.0352 81.1232 45.3832L81.8896 47.2305C82.4752 46.9875 83.102 46.8636 83.7791 46.8636V44.8636ZM81.1281 45.3811C80.2788 45.7281 79.5618 46.2462 79.0014 46.9396L80.5569 48.1968C80.8904 47.7841 81.3249 47.4612 81.8846 47.2325L81.1281 45.3811ZM79.0056 46.9344C78.4096 47.6618 78.1003 48.5316 78.053 49.4965L80.0506 49.5944C80.0791 49.0138 80.2547 48.5655 80.5526 48.202L79.0056 46.9344ZM79.0518 48.5455H76.3246V50.5455H79.0518V48.5455ZM77.3239 49.5827C77.3622 48.5531 77.6674 47.6848 78.2261 46.942L76.6276 45.7399C75.8075 46.8303 75.3778 48.0984 75.3253 49.5082L77.3239 49.5827ZM78.2284 46.9388C78.8119 46.1565 79.5786 45.5393 80.5512 45.0894L79.7116 43.2742C78.4569 43.8546 77.4205 44.6768 76.6253 45.743L78.2284 46.9388ZM80.5489 45.0905C81.5281 44.6406 82.6151 44.4091 83.8246 44.4091V42.4091C82.3522 42.4091 80.9771 42.6927 79.7139 43.2731L80.5489 45.0905ZM83.8246 44.4091C85.1284 44.4091 86.1857 44.6726 87.0364 45.1543L88.0218 43.4139C86.812 42.7289 85.3996 42.4091 83.8246 42.4091V44.4091ZM87.0413 45.157C87.928 45.6525 88.5845 46.2915 89.0406 47.0725L90.7676 46.0639C90.1177 44.9509 89.1908 44.0671 88.0169 43.4111L87.0413 45.157ZM89.0406 47.0725C89.5041 47.8661 89.7337 48.7148 89.7337 49.6364H91.7337C91.7337 48.361 91.4102 47.1642 90.7676 46.0639L89.0406 47.0725ZM89.7337 49.6364C89.7337 50.7623 89.4413 51.6623 88.898 52.3907L90.5011 53.5865C91.3366 52.4664 91.7337 51.1317 91.7337 49.6364H89.7337ZM88.8948 52.395C88.3499 53.1337 87.6084 53.654 86.6253 53.9521L87.2057 55.8661C88.5711 55.452 89.6856 54.6921 90.5043 53.5823L88.8948 52.395ZM85.9155 54.9091V55.0909H87.9155V54.9091H85.9155ZM86.7527 56.0776C88.0194 56.2865 88.9354 56.8069 89.5852 57.5998L91.1321 56.332C90.1304 55.1097 88.751 54.3802 87.0782 54.1042L86.7527 56.0776ZM89.5876 57.6026C90.245 58.3987 90.5973 59.4027 90.5973 60.6818H92.5973C92.5973 59.0063 92.1239 57.5331 91.1298 56.3292L89.5876 57.6026ZM90.5973 60.6818C90.5973 61.7532 90.3092 62.6913 89.7379 63.5262L91.3885 64.6556C92.196 63.4754 92.5973 62.1407 92.5973 60.6818H90.5973ZM89.737 63.5276C89.1615 64.3716 88.3691 65.0492 87.3298 65.5556L88.2057 67.3535C89.5301 66.7083 90.6013 65.8102 91.3894 64.6542L89.737 63.5276ZM87.3298 65.5556C86.3031 66.0557 85.1118 66.3182 83.7337 66.3182V68.3182C85.3707 68.3182 86.8687 68.0049 88.2057 67.3535L87.3298 65.5556Z\", fill: \"black\" }));\nexport default SvgNumbering;\n","import * as React from \"react\";\nconst SvgPrivacy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", xmlSpace: \"preserve\", viewBox: \"0 0 214.27 214.27\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M196.926 55.171c-.11-5.785-.215-11.25-.215-16.537a7.5 7.5 0 0 0-7.5-7.5c-32.075 0-56.496-9.218-76.852-29.01a7.498 7.498 0 0 0-10.457 0c-20.354 19.792-44.771 29.01-76.844 29.01a7.5 7.5 0 0 0-7.5 7.5c0 5.288-.104 10.755-.215 16.541-1.028 53.836-2.436 127.567 87.331 158.682a7.495 7.495 0 0 0 4.912 0c89.774-31.116 88.368-104.849 87.34-158.686zm-89.795 143.641c-76.987-27.967-75.823-89.232-74.79-143.351.062-3.248.122-6.396.164-9.482 30.04-1.268 54.062-10.371 74.626-28.285 20.566 17.914 44.592 27.018 74.634 28.285.042 3.085.102 6.231.164 9.477 1.032 54.121 2.195 115.388-74.798 143.356z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m132.958 81.082-36.199 36.197-15.447-15.447a7.501 7.501 0 0 0-10.606 10.607l20.75 20.75a7.477 7.477 0 0 0 5.303 2.196 7.477 7.477 0 0 0 5.303-2.196l41.501-41.5a7.498 7.498 0 0 0 .001-10.606 7.5 7.5 0 0 0-10.606-.001z\" }));\nexport default SvgPrivacy;\n","import * as React from \"react\";\nconst SvgSelectedCycle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", xmlSpace: \"preserve\", viewBox: \"0 0 20 20\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { className: \"text-base\", cx: 10, cy: 10, r: 10, fill: \"#4f8cf7\", fillOpacity: 0.2 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6 10l3 3 5-5\", stroke: \"#4f8cf7\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgSelectedCycle;\n","import * as React from \"react\";\nconst SvgTheme = (props) => /* @__PURE__ */ React.createElement(\"svg\", { className: \"grayscale h-4 w-4\", viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M42.666667 512C42.666667 251.733333 251.733333 42.666667 512 42.666667s469.333333 187.733333 469.333333 422.4c0 72.533333-29.866667 145.066667-81.066666 200.533333-51.2 51.2-123.733333 81.066667-200.533334 81.066667h-85.333333c-12.8 0-25.6 12.8-29.866667 25.6 0 8.533333 4.266667 17.066667 8.533334 21.333333 21.333333 21.333333 29.866667 46.933333 29.866666 76.8 0 64-51.2 110.933333-115.2 115.2C251.733333 981.333333 42.666667 772.266667 42.666667 512z m85.333333 0c0 213.333333 170.666667 384 384 384 17.066667 0 29.866667-12.8 29.866667-29.866667 0-4.266667 0-8.533333-4.266667-12.8l-4.266667-4.266666c-17.066667-21.333333-25.6-46.933333-29.866666-76.8 0-64 51.2-110.933333 115.2-110.933334h85.333333c51.2 0 102.4-21.333333 136.533333-55.466666 38.4-38.4 55.466667-85.333333 55.466667-136.533334 0-187.733333-170.666667-341.333333-384-341.333333s-384 170.666667-384 384z m593.066667 21.333333c-21.333333-21.333333-25.6-51.2-17.066667-76.8 12.8-25.6 38.4-42.666667 64-42.666666 38.4 0 68.266667 34.133333 72.533333 72.533333 0 29.866667-17.066667 55.466667-42.666666 64-8.533333 4.266667-17.066667 4.266667-25.6 4.266667-17.066667 0-38.4-8.533333-51.2-21.333334z m-520.533334 0c-21.333333-21.333333-25.6-51.2-17.066666-76.8 12.8-25.6 38.4-42.666667 64-42.666666 38.4 0 68.266667 34.133333 72.533333 72.533333 0 29.866667-17.066667 55.466667-42.666667 64-8.533333 4.266667-17.066667 4.266667-25.6 4.266667-21.333333 0-38.4-8.533333-51.2-21.333334z m379.733334-187.733333c-21.333333-21.333333-25.6-51.2-17.066667-76.8 12.8-25.6 38.4-42.666667 64-42.666667 38.4 0 68.266667 34.133333 72.533333 72.533334 0 29.866667-17.066667 55.466667-42.666666 64-8.533333 4.266667-17.066667 4.266667-25.6 4.266666-21.333333 0-38.4-8.533333-51.2-21.333333zM341.333333 345.6c-17.066667-21.333333-25.6-51.2-12.8-76.8 12.8-25.6 38.4-42.666667 64-42.666667 38.4 0 68.266667 34.133333 72.533334 72.533334 0 29.866667-17.066667 55.466667-42.666667 64l-29.866667 4.266666c-17.066667 0-34.133333-8.533333-51.2-21.333333z\" }));\nexport default SvgTheme;\n","import * as React from \"react\";\nconst SvgTip = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M512 1024C229.248 1024 0 794.752 0 512S229.248 0 512 0s512 229.248 512 512-229.248 512-512 512z m0-938.666667C276.352 85.333333 85.333333 276.352 85.333333 512s191.018667 426.666667 426.666667 426.666667 426.666667-191.018667 426.666667-426.666667A426.666667 426.666667 0 0 0 512 85.333333z m0 682.666667a42.666667 42.666667 0 0 1-42.368-42.666667v-255.573333a42.368 42.368 0 1 1 84.693333 0V725.333333A42.410667 42.410667 0 0 1 512 768z m0-426.666667a42.325333 42.325333 0 1 1-0.085333-84.650666A42.325333 42.325333 0 0 1 512 341.333333z m42.325333-42.666666v0z\", fill: \"currentColor\" }));\nexport default SvgTip;\n","import * as React from \"react\";\nconst SvgZoomIn = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M945.066667 898.133333l-189.866667-189.866666c55.466667-64 87.466667-149.333333 87.466667-241.066667 0-204.8-168.533333-373.333333-373.333334-373.333333S96 264.533333 96 469.333333 264.533333 842.666667 469.333333 842.666667c91.733333 0 174.933333-34.133333 241.066667-87.466667l189.866667 189.866667c6.4 6.4 14.933333 8.533333 23.466666 8.533333s17.066667-2.133333 23.466667-8.533333c8.533333-12.8 8.533333-34.133333-2.133333-46.933334zM469.333333 778.666667C298.666667 778.666667 160 640 160 469.333333S298.666667 160 469.333333 160 778.666667 298.666667 778.666667 469.333333 640 778.666667 469.333333 778.666667z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M597.333333 437.333333h-96V341.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v96H341.333333c-17.066667 0-32 14.933333-32 32s14.933333 32 32 32h96V597.333333c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-96H597.333333c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z\", fill: \"currentColor\" }));\nexport default SvgZoomIn;\n","import * as React from \"react\";\nconst SvgZoomOut = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M921 867L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\" }));\nexport default SvgZoomOut;\n","import * as React from \"react\";\nconst SvgAltFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 8L20 12L12 16L4 12L12 8Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgAltFragment;\n","import * as React from \"react\";\nconst SvgCriticalFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 5L19 12L12 19L5 12L12 5Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 9V13\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 15V15.5\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgCriticalFragment;\n","import * as React from \"react\";\nconst SvgLoopFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { fill: \"currentColor\", width: \"24px\", height: \"24px\", viewBox: \"0 0 1024 1024\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M960 101.84l-896.002.002c-35.344 0-64 28.656-64 64v576c0 35.36 28.656 64 64 64h160c20.496 0 32-26.32 32-31.984v-.016c0-5.824-10.88-32.416-32-32.416h-120.96c-21.376 0-38.72-17.344-38.72-38.72V206.002c0-21.391 17.328-38.72 38.72-38.72l818.272-1.007c21.376 0 38.72 17.328 38.72 38.72V702.69c0 21.376-17.344 38.72-38.72 38.72H518.142l75.984-68.912c9.344-8.944 12.369-23.408 3.025-32.336l-5.472-8.064c-9.376-8.945-24.496-8.945-33.84 0L428.111 750.53c-.192.16-.368.224-.528.368l-8.48 8.096c-4.672 4.431-7.008 10.335-6.976 16.223-.032 5.904 2.288 11.777 6.977 16.288l8.48 8.096c.16.16.368.192.528.336L555.84 915.44c9.344 8.944 24.464 8.944 33.84 0l5.472-8.065c9.344-8.944 6.32-23.44-3.025-32.368l-77.135-69.168H960c35.343 0 64-28.64 64-64v-576c0-35.344-28.657-64-64-64z\" }));\nexport default SvgLoopFragment;\n","import * as React from \"react\";\nconst SvgOptFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 7, stroke: \"currentColor\", strokeWidth: 1.5, strokeDasharray: \"3 2\", strokeLinecap: \"round\" }));\nexport default SvgOptFragment;\n","import * as React from \"react\";\nconst SvgRefFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 6H18C19.1046 6 20 6.89543 20 8V16C20 17.1046 19.1046 18 18 18H10\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 6L6 12L10 18\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgRefFragment;\n","import * as React from \"react\";\nconst SvgParFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5 10H19\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M5 14H19\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgParFragment;\n","import * as React from \"react\";\nconst SvgSectionFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"24px\", height: \"24px\", viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\", fill: \"currentColor\" }));\nexport default SvgSectionFragment;\n","import * as React from \"react\";\nconst SvgTryCatchFragment = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"24px\", height: \"24px\", viewBox: \"0 0 76 76\", xmlns: \"http://www.w3.org/2000/svg\", xmlnsXlink: \"http://www.w3.org/1999/xlink\", baseProfile: \"full\", enableBackground: \"new 0 0 76.00 76.00\", xmlSpace: \"preserve\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", fillOpacity: 1, strokeWidth: 0.2, strokeLinejoin: \"round\", d: \"M 26,22.0001L 27,21.9998L 27,27L 26.0001,27.0003C 23.2386,27.0003 21.0001,29.2389 21.0001,32.0003L 21,46.0002C 21,48.7616 23.2386,51.0002 25.9999,51.0002L 27,51.0002L 27,47L 33.75,53.5L 27,60L 27,56L 26,56C 20.4771,56 16,51.5229 16,46L 16,32.0001C 16,26.4773 20.4771,22.0001 26,22.0001 Z M 33,27L 59,27L 59,32L 33,32L 33,27 Z M 36,35L 59,35L 59,40L 36,40L 36,35 Z M 33,43L 59,43L 59,48L 33,48L 33,43 Z \" }));\nexport default SvgTryCatchFragment;\n","import { cn } from \"@/utils\";\nimport IconClose from \"./icons/close.svg?react\";\nimport IconCollapseExpanded from \"./icons/collapse-expanded.svg?react\";\nimport IconCollapseUnexpanded from \"./icons/collapse-unexpanded.svg?react\";\nimport IconDebug from \"./icons/debug.svg?react\";\nimport IconNonSelectedCycle from \"./icons/non-selected-cycle.svg?react\";\nimport IconNumbering from \"./icons/numbering.svg?react\";\nimport IconPrivacy from \"./icons/privacy.svg?react\";\nimport IconSelectedCycle from \"./icons/selected-cycle.svg?react\";\nimport IconTheme from \"./icons/theme.svg?react\";\nimport IconTip from \"./icons/tip.svg?react\";\nimport IconZoomIn from \"./icons/zoom-in.svg?react\";\nimport IconZoomOut from \"./icons/zoom-out.svg?react\";\nimport IconAltFragment from \"./icons/alt-fragment.svg?react\";\nimport IconCriticalFragment from \"./icons/critical-fragment.svg?react\";\nimport IconLoopFragment from \"./icons/loop-fragment.svg?react\";\nimport IconOptFragment from \"./icons/opt-fragment.svg?react\";\nimport IconRefFragment from \"./icons/ref-fragment.svg?react\";\nimport IconParFragment from \"./icons/par-fragment.svg?react\";\nimport IconSectionFragment from \"./icons/section-fragment.svg?react\";\nimport IconTryCatchFragment from \"./icons/try-catch-fragment.svg?react\";\n\nconst icons = {\n  close: IconClose,\n  \"collapse-expanded\": IconCollapseExpanded,\n  \"collapse-unexpanded\": IconCollapseUnexpanded,\n  debug: IconDebug,\n  \"non-selected-cycle\": IconNonSelectedCycle,\n  numbering: IconNumbering,\n  privacy: IconPrivacy,\n  \"selected-cycle\": IconSelectedCycle,\n  theme: IconTheme,\n  tip: IconTip,\n  \"zoom-in\": IconZoomIn,\n  \"zoom-out\": IconZoomOut,\n  \"alt-fragment\": IconAltFragment,\n  \"critical-fragment\": IconCriticalFragment,\n  \"loop-fragment\": IconLoopFragment,\n  \"opt-fragment\": IconOptFragment,\n  \"ref-fragment\": IconRefFragment,\n  \"par-fragment\": IconParFragment,\n  \"section-fragment\": IconSectionFragment,\n  \"try-catch-fragment\": IconTryCatchFragment,\n};\n\nconst Icon = (props: {\n  name: keyof typeof icons;\n  className?: string;\n  onClick?: () => void;\n}) => {\n  const Component = icons[props.name];\n\n  if (!Component) return null;\n\n  return (\n    <span\n      className={cn(\n        \"flex items-center justify-center w-5 h-4\",\n        props.className,\n      )}\n      onClick={props.onClick}\n    >\n      <Component />\n    </span>\n  );\n};\n\nexport default Icon;\n","import Icon from \"@/components/Icon/Icons\";\nimport { useEffect, useState } from \"react\";\n\nexport const Debug = () => {\n  const [debugEnabled, setDebugEnabled] = useState(false);\n\n  useEffect(() => {\n    const handleKeyPress = (e: KeyboardEvent) => {\n      if (e.key === \"F1\") {\n        e.preventDefault();\n        setDebugEnabled((prev) => !prev);\n      }\n    };\n\n    document.addEventListener(\"keydown\", handleKeyPress);\n    return () => document.removeEventListener(\"keydown\", handleKeyPress);\n  }, []);\n\n  if (!debugEnabled) return null;\n\n  return (\n    <div className=\"text-xs inline-flex items-center font-mono font-medium leading-sm mx-1 px-3 py-1 bg-slate-100 text-slate-500 rounded-sm\">\n      <Icon name=\"debug\" className=\"h-3 w-3\" />\n      <span className=\"inline-block px-2\">\n        {import.meta.env.VITE_APP_GIT_BRANCH}:\n        {import.meta.env.VITE_APP_GIT_HASH}\n      </span>\n    </div>\n  );\n};\n","import Icon from \"@/components/Icon/Icons\";\nimport styles from \"./index.module.css\";\nimport { cn } from \"@/utils\";\n\nexport const Privacy = (props: { className: string }) => {\n  return (\n    <div className={props.className}>\n      <div\n        className={cn(\n          styles.tooltip,\n          styles.bottom,\n          \"privacy whitespace-normal flex items-center\",\n        )}\n        data-tooltip=\"We (the vendor) do not have access to your data. The diagram is generated in this browser.\"\n      >\n        <Icon name=\"privacy\" className=\"fill-current h-6 w-6 m-auto\" />\n      </div>\n    </div>\n  );\n};\n","import {\n  KeyboardEvent,\n  MouseEvent,\n  useEffect,\n  useLayoutEffect,\n  useState,\n  useRef,\n} from \"react\";\nimport \"./EditableSpan.css\";\n\nexport interface EditableSpanProps {\n  text: string;\n  isEditable?: boolean;\n  className?: string;\n  onSave: (newText: string) => void;\n  title?: string;\n  autoEditToken?: number;\n  selectAllOnEdit?: boolean;\n}\n\nexport const EditableSpan = ({\n  text,\n  isEditable = true,\n  className = \"\",\n  onSave,\n  title = \"Click to edit\",\n  autoEditToken,\n  selectAllOnEdit = false,\n}: EditableSpanProps) => {\n  const [editing, setEditing] = useState(false);\n  const [isHovered, setIsHovered] = useState(false);\n  const originalTextRef = useRef(\"\");\n  const spanRef = useRef<HTMLSpanElement>(null);\n  const cancelRef = useRef(false);\n  const pendingFocusRef = useRef<{ x: number; y: number } | null>(null);\n\n  const applyFocus = (clickPoint: { x: number; y: number } | null) => {\n    const target = spanRef.current;\n    if (!target) return;\n\n    target.focus();\n\n    const selection = window.getSelection();\n    if (!selection) return;\n\n    if (!clickPoint) {\n      const range = document.createRange();\n      range.selectNodeContents(target);\n      selection.removeAllRanges();\n      selection.addRange(range);\n      return;\n    }\n\n    let range = document.caretRangeFromPoint?.(clickPoint.x, clickPoint.y);\n\n    if (!range && (document as any).caretPositionFromPoint) {\n      const pos = (document as any).caretPositionFromPoint(\n        clickPoint.x,\n        clickPoint.y,\n      );\n      if (pos) {\n        range = document.createRange();\n        range.setStart(pos.offsetNode, pos.offset);\n      }\n    }\n\n    if (range) {\n      range.collapse(true);\n      selection.removeAllRanges();\n      selection.addRange(range);\n    }\n  };\n\n  // Focus the span synchronously after the DOM is updated with\n  // contentEditable=true. Doing this in a layout effect (rather than a\n  // setTimeout) guarantees focus is established before any keystrokes can\n  // race against it — both for fast typists and for Playwright tests that\n  // start typing as soon as they observe contentEditable=\"true\".\n  useLayoutEffect(() => {\n    if (!editing) return;\n    applyFocus(pendingFocusRef.current);\n  }, [editing]);\n\n  const startEditing = (e: MouseEvent | KeyboardEvent) => {\n    if (!isEditable) return;\n    e.preventDefault();\n    e.stopPropagation();\n\n    cancelRef.current = false;\n    const target = e.target as HTMLElement | null;\n    pendingFocusRef.current =\n      selectAllOnEdit || !(\"clientX\" in e)\n        ? null\n        : { x: (e as MouseEvent).clientX, y: (e as MouseEvent).clientY };\n    if (target) {\n      originalTextRef.current = target.innerText ?? \"\";\n    }\n\n    setEditing(true);\n  };\n\n  const handleClick = (e: MouseEvent) => {\n    if (editing || !isEditable) return;\n    // If inside a message, only start editing when that message is already\n    // selected. Otherwise let the click propagate to select it first.\n    const message = (e.currentTarget as HTMLElement).closest(\".message\");\n    if (message && message.getAttribute(\"data-selected\") !== \"true\") {\n      return;\n    }\n    startEditing(e);\n  };\n\n  const handleMouseEnter = () => {\n    if (!editing && isEditable) {\n      setIsHovered(true);\n    }\n  };\n\n  const handleMouseLeave = () => {\n    setIsHovered(false);\n  };\n\n  const saveText = () => {\n    const newText = spanRef.current?.innerText?.trim() ?? \"\";\n    onSave(newText);\n  };\n\n  const handleBlur = () => {\n    if (!editing) return;\n    if (cancelRef.current) return;\n    \n    setEditing(false);\n    setIsHovered(false);\n    saveText();\n  };\n\n  const handleKeydown = (e: KeyboardEvent) => {\n    if (!isEditable) return;\n    if (!editing) {\n      if (e.key === \"Enter\" || e.key === \" \") {\n        startEditing(e);\n      }\n      return;\n    }\n\n    // Prevent key events from bubbling to parent button elements (e.g. MessageView)\n    // while the span is in edit mode. Without this, space would trigger the outer\n    // button's click handler instead of being inserted into the editable text.\n    e.stopPropagation();\n\n    if (e.key === \"Escape\") {\n      e.preventDefault();\n      e.stopPropagation();\n      cancelRef.current = true;\n      \n      const target = e.target as HTMLElement | null;\n      if (target) {\n        target.innerText = originalTextRef.current;\n      }\n      setEditing(false);\n      setIsHovered(false);\n      return;\n    }\n\n    if (e.key === \"Enter\") {\n      e.preventDefault();\n      e.stopPropagation();\n    }\n  };\n\n  const handleKeyup = (e: KeyboardEvent) => {\n    if (!isEditable) return;\n    if (!editing) return;\n\n    if (e.key === \"Enter\" || e.key === \"Tab\") {\n      // Prevent handleBlur from calling saveText again (stale closure double-save)\n      cancelRef.current = true;\n      setEditing(false);\n      setIsHovered(false);\n      saveText();\n    }\n  };\n\n  const getEditableClasses = () => {\n    const classes = [className, \"editable-span-base\"];\n\n    if (editing) {\n      classes.push(\"editable-span-editing\");\n    } else if (isHovered) {\n      classes.push(\"editable-span-hover\");\n    } else if (isEditable) {\n      classes.push(\"cursor-pointer\");\n    }\n\n    return classes.filter(Boolean).join(\" \");\n  };\n\n  useEffect(() => {\n    if (!autoEditToken || !isEditable) {\n      return;\n    }\n    originalTextRef.current = spanRef.current?.innerText ?? text;\n    cancelRef.current = false;\n    pendingFocusRef.current = null;\n    setEditing(true);\n  }, [autoEditToken, isEditable, text]);\n\n  return (\n    <span\n      ref={spanRef}\n      title={isEditable ? title : undefined}\n      className={getEditableClasses()}\n      contentEditable={editing && isEditable}\n      suppressContentEditableWarning={true}\n      tabIndex={isEditable && !editing ? 0 : undefined}\n      role={isEditable && !editing ? \"button\" : undefined}\n      onClick={handleClick}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      onBlur={handleBlur}\n      onKeyUp={handleKeyup}\n      onKeyDown={handleKeydown}\n    >\n      {text}\n    </span>\n  );\n};\n","import { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { EditableSpan } from \"@/components/common/EditableSpan\";\nimport { codeAtom, modeAtom, onContentChangeAtom, RenderMode } from \"@/store/Store\";\nimport { useAtom, useAtomValue } from \"jotai\";\n\nexport const DiagramTitle = (props: { context: any }) => {\n  const mode = useAtomValue(modeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n\n  const PLACEHOLDER = \"Click to add title\";\n\n  const rawTitle = props.context?.content();\n  const displayTitle = rawTitle ? resolveEmojiInText(rawTitle) : \"\";\n  const isEditable = mode !== RenderMode.Static;\n  const hasTitle = Boolean(displayTitle);\n\n  const handleSave = (newText: string) => {\n    const sanitized = newText === PLACEHOLDER ? \"\" : newText.replace(/[\\r\\n]+/g, \" \");\n    const trimmed = sanitized.trim();\n    if (trimmed === displayTitle || !trimmed) return;\n\n    if (props.context) {\n      const contentStart = props.context.start.start + \"title \".length;\n      const contentEnd = props.context.stop.stop;\n      const newCode =\n        code.slice(0, contentStart) + trimmed + code.slice(contentEnd + 1);\n      setCode(newCode);\n      onContentChange(newCode);\n    } else {\n      const newCode = `title ${trimmed}\\n${code}`;\n      setCode(newCode);\n      onContentChange(newCode);\n    }\n  };\n\n  return (\n    <div className={`title text-skin-title text-base font-semibold${!hasTitle && isEditable ? \" group min-w-[8rem]\" : \"\"}`}>\n      {isEditable ? (\n        <EditableSpan\n          text={hasTitle ? displayTitle : PLACEHOLDER}\n          isEditable={true}\n          onSave={handleSave}\n          title={hasTitle ? \"Click to edit title\" : \"Click to add title\"}\n          className={hasTitle ? \"!p-0\" : \"!p-0 text-gray-400 italic font-normal text-sm opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity\"}\n          selectAllOnEdit={!hasTitle}\n        />\n      ) : (\n        <span>{displayTitle}</span>\n      )}\n    </div>\n  );\n};\n","// Lazy loading icons map\n// Core icons stay as individual imports; cloud icons load from a single barrel chunk\n\nconst coreIcons: Record<string, () => Promise<{ default: string }>> = {\n  \"actor\": () => import(\"../../../assets/actor.svg?raw\"),\n  \"boundary\": () => import(\"../../../assets/Robustness_Diagram_Boundary.svg?raw\"),\n  \"control\": () => import(\"../../../assets/Robustness_Diagram_Control.svg?raw\"),\n  \"database\": () => import(\"../../../assets/database.svg?raw\"),\n  \"entity\": () => import(\"../../../assets/Robustness_Diagram_Entity.svg?raw\"),\n  \"cognito\": () => import(\"../../../assets/Architecture-Service-Icons_09172021/Arch_Security-Identity-Compliance/16/Arch_Amazon-Cognito_16.svg?raw\"),\n  \"elasticbeantalk\": () => import(\"../../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_AWS-Elastic-Beanstalk_16.svg?raw\"),\n  \"kinesis\": () => import(\"../../../assets/Architecture-Service-Icons_09172021/Arch_Analytics/Arch_16/Arch_Amazon-Kinesis_16.svg?raw\"),\n  \"lightsail\": () => import(\"../../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-Lightsail_16.svg?raw\"),\n  \"sagemaker\": () => import(\"../../../assets/Architecture-Service-Icons_09172021/Arch_Machine-Learning/16/Arch_Amazon-SageMaker_16.svg?raw\"),\n};\n\n// Cloud icons: single dynamic import instead of 500+ individual chunks\nconst cloudChunk = () => import(\"./CloudIcons\");\n\nconst cloudLoaders: Record<string, () => Promise<{ default: string }>> = {\n  \"awsiotlora\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotlora\"] })),\n  \"awsiotgreengrasscomponent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrasscomponent\"] })),\n  \"awsiotthingcoffeepot\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingcoffeepot\"] })),\n  \"awsiotlambda\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotlambda\"] })),\n  \"awsiotthingwindfarm\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingwindfarm\"] })),\n  \"awsiotthingvibrationsensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingvibrationsensor\"] })),\n  \"awsiotdevicedefenderjobs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotdevicedefenderjobs\"] })),\n  \"awsiotdevicemanagementfleethub\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotdevicemanagementfleethub\"] })),\n  \"awsiottopic\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiottopic\"] })),\n  \"awsiotcertificate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotcertificate\"] })),\n  \"awsiotthingrelay\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingrelay\"] })),\n  \"awsiotanalyticschannel\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotanalyticschannel\"] })),\n  \"awsiotthingcamera\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingcamera\"] })),\n  \"awsiotthingdoorlock\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingdoorlock\"] })),\n  \"awsiotpolicy\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotpolicy\"] })),\n  \"awsiotthingfreertos\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingfreertos\"] })),\n  \"awsiotsitewiseassetproperties\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsitewiseassetproperties\"] })),\n  \"awsiotthingtempvibrationsensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingtempvibrationsensor\"] })),\n  \"awsiotthingplc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingplc\"] })),\n  \"awsiotaction\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotaction\"] })),\n  \"awsiotalexavoice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotalexavoice\"] })),\n  \"awsiotalexaenabled\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotalexaenabled\"] })),\n  \"awsiotthingutility\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingutility\"] })),\n  \"awsiotactuator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotactuator\"] })),\n  \"awsiotthingtempsensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingtempsensor\"] })),\n  \"awsiothttpprotocol\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiothttpprotocol\"] })),\n  \"awsiotcoredevicelocation\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotcoredevicelocation\"] })),\n  \"awsiotalexaskill\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotalexaskill\"] })),\n  \"awsiotanalyticsnotebook\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotanalyticsnotebook\"] })),\n  \"awsiothardwareboard\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiothardwareboard\"] })),\n  \"awsiotthingcar\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingcar\"] })),\n  \"awsiotthinglightbulb\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthinglightbulb\"] })),\n  \"awsiotsitewiseasset\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsitewiseasset\"] })),\n  \"awsiotsitewisedatastreams\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsitewisedatastreams\"] })),\n  \"awsiotgreengrasscomponentnucleus\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrasscomponentnucleus\"] })),\n  \"awsiotthinghouse\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthinghouse\"] })),\n  \"awsiotoverairupdate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotoverairupdate\"] })),\n  \"awsiotthingbank\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingbank\"] })),\n  \"awsiotsensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsensor\"] })),\n  \"awsiotsitewiseassethierarchy\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsitewiseassethierarchy\"] })),\n  \"awsiotgreengrassartifact\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassartifact\"] })),\n  \"awsiotthingtravel\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingtravel\"] })),\n  \"awsiotmqttprotocol\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotmqttprotocol\"] })),\n  \"awsiotshadow\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotshadow\"] })),\n  \"awsiotfiretv\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotfiretv\"] })),\n  \"awsiotgreengrassconnector\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassconnector\"] })),\n  \"awsiotgreengrassipc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassipc\"] })),\n  \"awsiothttp2protocol\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiothttp2protocol\"] })),\n  \"awsiotfiretvstick\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotfiretvstick\"] })),\n  \"awsiotcoredeviceadvisor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotcoredeviceadvisor\"] })),\n  \"awsiotthingindustrialpc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingindustrialpc\"] })),\n  \"awsiotdesiredstate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotdesiredstate\"] })),\n  \"awsiotecho\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotecho\"] })),\n  \"awsiotgreengrassrecipe\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassrecipe\"] })),\n  \"awsiotgreengrasscomponentprivate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrasscomponentprivate\"] })),\n  \"awsiotgreengrassstreammanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassstreammanager\"] })),\n  \"awsiotthingmedicalemergency\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingmedicalemergency\"] })),\n  \"awsiotthingthermostat\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingthermostat\"] })),\n  \"awsiotsitewiseassetmodel\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsitewiseassetmodel\"] })),\n  \"awsiotthingstacklight\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingstacklight\"] })),\n  \"awsiotthingtemphumiditysensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingtemphumiditysensor\"] })),\n  \"awsiotgreengrasscomponentpublic\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrasscomponentpublic\"] })),\n  \"awsiotsailboat\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsailboat\"] })),\n  \"awsiotrule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotrule\"] })),\n  \"awsiotthingbicycle\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingbicycle\"] })),\n  \"awsiotreportedstate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotreportedstate\"] })),\n  \"awsiotsimulator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotsimulator\"] })),\n  \"awsiotthingpoliceemergency\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingpoliceemergency\"] })),\n  \"awsiotanalyticsdatastore\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotanalyticsdatastore\"] })),\n  \"awsiotdevicetester\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotdevicetester\"] })),\n  \"awsiotanalyticspipeline\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotanalyticspipeline\"] })),\n  \"awsiotthingfactory\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingfactory\"] })),\n  \"awsiotthinghumiditysensor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthinghumiditysensor\"] })),\n  \"awsiotgreengrassprotocol\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassprotocol\"] })),\n  \"awsiotservo\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotservo\"] })),\n  \"awsiotanalyticsdataset\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotanalyticsdataset\"] })),\n  \"awsiotgreengrassmachinelearning\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotgreengrassmachinelearning\"] })),\n  \"awsiotthinggeneric\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthinggeneric\"] })),\n  \"awsiotdevicegateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotdevicegateway\"] })),\n  \"awsiotthingcart\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsiotthingcart\"] })),\n  \"amazonrekognitionvideo\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrekognitionvideo\"] })),\n  \"amazonsagemakermodel\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakermodel\"] })),\n  \"amazonsagemakeranalyzelending\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakeranalyzelending\"] })),\n  \"amazonsagemakershadowtesting\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakershadowtesting\"] })),\n  \"amazondevopsguruinsights\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondevopsguruinsights\"] })),\n  \"amazonsagemakernotebook\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakernotebook\"] })),\n  \"amazonsagemakercanvas\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakercanvas\"] })),\n  \"amazonsagemakertrain\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakertrain\"] })),\n  \"amazonsagemakergeospatialml\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsagemakergeospatialml\"] })),\n  \"amazonrekognitionimage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrekognitionimage\"] })),\n  \"amazonbraketsimulator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketsimulator\"] })),\n  \"amazonbraketnoisesimulator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketnoisesimulator\"] })),\n  \"amazonbraketchip\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketchip\"] })),\n  \"amazonbraketsimulator1\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketsimulator1\"] })),\n  \"amazonbraketmanagedsimulator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketmanagedsimulator\"] })),\n  \"amazonbraketsimulator3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketsimulator3\"] })),\n  \"amazonbraketchandelier\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketchandelier\"] })),\n  \"amazonbrakettensornetwork\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbrakettensornetwork\"] })),\n  \"amazonbraketsimulator4\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketsimulator4\"] })),\n  \"amazonbraketqpu\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketqpu\"] })),\n  \"amazonbraketstatevector\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketstatevector\"] })),\n  \"amazonbraketsimulator2\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonbraketsimulator2\"] })),\n  \"amazonopensearchobservability\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchobservability\"] })),\n  \"amazonredshiftra3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftra3\"] })),\n  \"amazonredshiftstreaming\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftstreaming\"] })),\n  \"amazonemrengine\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonemrengine\"] })),\n  \"amazonredshiftqueryeditor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftqueryeditor\"] })),\n  \"redshift\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"redshift\"] })),\n  \"amazonehrhdfscluster\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonehrhdfscluster\"] })),\n  \"amazonmskconnect\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonmskconnect\"] })),\n  \"awsgluedatacatalog\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsgluedatacatalog\"] })),\n  \"amazondatzonedataportal\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondatzonedataportal\"] })),\n  \"amazondatzonebusinessdatacatalog\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondatzonebusinessdatacatalog\"] })),\n  \"amazondatzonedataprojects\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondatzonedataprojects\"] })),\n  \"amazonredshiftdensestorage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftdensestorage\"] })),\n  \"awsgluedataquality\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsgluedataquality\"] })),\n  \"awsgluecrawler\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsgluecrawler\"] })),\n  \"amazonquicksightreports\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonquicksightreports\"] })),\n  \"awslakeformationdatalake\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awslakeformationdatalake\"] })),\n  \"amazonopensearchultrawarm\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchultrawarm\"] })),\n  \"amazoncloudsearchsearchdocuments\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudsearchsearchdocuments\"] })),\n  \"amazonopensearchingestion\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchingestion\"] })),\n  \"amazonathenadatasource\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonathenadatasource\"] })),\n  \"amazonopensearchadminnode\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchadminnode\"] })),\n  \"amazonopensearchdashboards\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchdashboards\"] })),\n  \"amazonopensearchindex\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchindex\"] })),\n  \"awsglueray\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsglueray\"] })),\n  \"amazonredshiftdatasharing\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftdatasharing\"] })),\n  \"amazonredshiftautocopy\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftautocopy\"] })),\n  \"amazonredshiftdensecompute\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftdensecompute\"] })),\n  \"amazonredshiftml\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonredshiftml\"] })),\n  \"amazonopensearchtraces\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchtraces\"] })),\n  \"amazonemrcluster\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonemrcluster\"] })),\n  \"amazonopensearchdatanode\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonopensearchdatanode\"] })),\n  \"awsdataexchangeapi\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdataexchangeapi\"] })),\n  \"amazonworkspaces\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonworkspaces\"] })),\n  \"amazonworkspacescore\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonworkspacescore\"] })),\n  \"amazonworkspacesweb\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonworkspacesweb\"] })),\n  \"awsdirservicesimplead\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdirservicesimplead\"] })),\n  \"awswafbadbot\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswafbadbot\"] })),\n  \"awsidentityaccesssts\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccesssts\"] })),\n  \"awsidentityaccessaddon\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessaddon\"] })),\n  \"amazoninspectoragent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoninspectoragent\"] })),\n  \"awsidentityaccessdataencryption\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessdataencryption\"] })),\n  \"awsidentityaccessmfatoken\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessmfatoken\"] })),\n  \"awsdirserviceadconnector\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdirserviceadconnector\"] })),\n  \"awsidentityaccesspermissions\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccesspermissions\"] })),\n  \"awswaflabels\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswaflabels\"] })),\n  \"awscertmgrca\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscertmgrca\"] })),\n  \"awsidentityaccessstsalt\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessstsalt\"] })),\n  \"awsdirservicemanagedmsad\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdirservicemanagedmsad\"] })),\n  \"awssecurityhubfinding\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awssecurityhubfinding\"] })),\n  \"awswafrule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswafrule\"] })),\n  \"awsidentityaccessrole\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessrole\"] })),\n  \"awsidentityaccesslongtermcredential\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccesslongtermcredential\"] })),\n  \"awsidentityaccesstempcredential\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccesstempcredential\"] })),\n  \"awswaffilteringrule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswaffilteringrule\"] })),\n  \"awswafbot\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswafbot\"] })),\n  \"awsshieldadvanced\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsshieldadvanced\"] })),\n  \"awsidentityaccessanalyzer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessanalyzer\"] })),\n  \"iam\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"iam\"] })),\n  \"awswafbotcontrol\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswafbotcontrol\"] })),\n  \"awsidentityaccessrolesanywhere\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessrolesanywhere\"] })),\n  \"awsidentityaccessdataencryptionkey\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsidentityaccessdataencryptionkey\"] })),\n  \"awsnetworkfirewallendpoints\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsnetworkfirewallendpoints\"] })),\n  \"awswafmanagedrule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awswafmanagedrule\"] })),\n  \"awskeymanagementexternalkeystore\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awskeymanagementexternalkeystore\"] })),\n  \"amazonblockchain\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonblockchain\"] })),\n  \"amazoneventbridgesaas\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgesaas\"] })),\n  \"amazoneventbridgeschema\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgeschema\"] })),\n  \"amazonmqbroker\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonmqbroker\"] })),\n  \"amazoneventbridgeschemaregistry\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgeschemaregistry\"] })),\n  \"amazoneventbridgedefaultbus\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgedefaultbus\"] })),\n  \"amazonsnsnotification\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsnsnotification\"] })),\n  \"amazoneventbridgeevent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgeevent\"] })),\n  \"amazonnshttpnotification\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonnshttpnotification\"] })),\n  \"amazoneventbridgepipes\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgepipes\"] })),\n  \"amazoneventbridgerule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgerule\"] })),\n  \"amazonapigatewayendpoint\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonapigatewayendpoint\"] })),\n  \"amazoneventbridgescheduler\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgescheduler\"] })),\n  \"amazonsqsqueue\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsqsqueue\"] })),\n  \"sqs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"sqs\"] })),\n  \"amazonsqsmessage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsqsmessage\"] })),\n  \"amazoneventbridgecustomeventbus\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneventbridgecustomeventbus\"] })),\n  \"amazonsnstopic\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonsnstopic\"] })),\n  \"sns\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"sns\"] })),\n  \"awsssmpatchmanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmpatchmanager\"] })),\n  \"awscloudformationtemplate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudformationtemplate\"] })),\n  \"awsopsworkslayers\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworkslayers\"] })),\n  \"amazoncloudwatchmetricsinsights\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchmetricsinsights\"] })),\n  \"amazoncloudwatchdataprotection\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchdataprotection\"] })),\n  \"amazoncloudwatchalarm\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchalarm\"] })),\n  \"awstrustedadvisorchecksecurity\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstrustedadvisorchecksecurity\"] })),\n  \"awstrustedadvisorcheckperformance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstrustedadvisorcheckperformance\"] })),\n  \"amazoncloudwatchrule\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchrule\"] })),\n  \"awsopsworksresources\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksresources\"] })),\n  \"amazoncloudwatcheventtime\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatcheventtime\"] })),\n  \"awsorgsmanagementaccount\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsorgsmanagementaccount\"] })),\n  \"awslicensemanagerlicenseblending\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awslicensemanagerlicenseblending\"] })),\n  \"amazoncloudwatcheventevent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatcheventevent\"] })),\n  \"amazoncloudwatchsynthetics\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchsynthetics\"] })),\n  \"awsssmstatemanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmstatemanager\"] })),\n  \"awscloudformationstack\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudformationstack\"] })),\n  \"awsopsworksinstances\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksinstances\"] })),\n  \"awsssmruncommand\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmruncommand\"] })),\n  \"awsopsworksdeployments\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksdeployments\"] })),\n  \"awsssmautomation\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmautomation\"] })),\n  \"awsssmchangecalendar\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmchangecalendar\"] })),\n  \"awsorgsorganizationalunit\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsorgsorganizationalunit\"] })),\n  \"awsssmsessionmanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmsessionmanager\"] })),\n  \"awstrustedadvisorcheckcost\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstrustedadvisorcheckcost\"] })),\n  \"awsopsworksstack2\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksstack2\"] })),\n  \"awslicensemanagerapplicationdiscovery\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awslicensemanagerapplicationdiscovery\"] })),\n  \"awsssmopscenter\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmopscenter\"] })),\n  \"awsssminventory\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssminventory\"] })),\n  \"awsopsworkspermissions\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworkspermissions\"] })),\n  \"awsopsworksapps\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksapps\"] })),\n  \"awscloudformationchangeset\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudformationchangeset\"] })),\n  \"awsssmdocuments\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmdocuments\"] })),\n  \"awsssmapplicationmanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmapplicationmanager\"] })),\n  \"awsorgsaccount\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsorgsaccount\"] })),\n  \"awscloudtrailcloudtraillake\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudtrailcloudtraillake\"] })),\n  \"awsssmmaintenancewindows\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmmaintenancewindows\"] })),\n  \"awssmmincidentmanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awssmmincidentmanager\"] })),\n  \"amazoncloudwatchevidently\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchevidently\"] })),\n  \"amazoncloudwatchrum\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchrum\"] })),\n  \"awsssmparameterstore\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmparameterstore\"] })),\n  \"amazoncloudwatchlogs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchlogs\"] })),\n  \"cloudwatch\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudwatch\"] })),\n  \"awsssmchangemanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmchangemanager\"] })),\n  \"awsopsworksmonitoring\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsopsworksmonitoring\"] })),\n  \"awsssmcompliance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmcompliance\"] })),\n  \"awsssmdistributor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsssmdistributor\"] })),\n  \"amazoncloudwatchobservability\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudwatchobservability\"] })),\n  \"awstrustedadvisorcheckfault\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstrustedadvisorcheckfault\"] })),\n  \"awstrustedadvisorchecklist\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstrustedadvisorchecklist\"] })),\n  \"amazonroute53routetable\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53routetable\"] })),\n  \"amazoncloudfrontdistribution\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudfrontdistribution\"] })),\n  \"amazonroute53routingcontrols\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53routingcontrols\"] })),\n  \"amazonroute53arc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53arc\"] })),\n  \"amazonvpctrafficmirroring\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpctrafficmirroring\"] })),\n  \"amazonvpcreachabilityanalyzer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcreachabilityanalyzer\"] })),\n  \"awscloudmapnamespace\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudmapnamespace\"] })),\n  \"awstransitgatewayattachment\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstransitgatewayattachment\"] })),\n  \"amazonvpcigw\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcigw\"] })),\n  \"amazoncloudfrontedgelocation\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudfrontedgelocation\"] })),\n  \"awscloudwansegmentnetwork\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudwansegmentnetwork\"] })),\n  \"awscloudmapservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudmapservice\"] })),\n  \"awsappmeshvirtualrouter\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsappmeshvirtualrouter\"] })),\n  \"amazonvpcendpoints\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcendpoints\"] })),\n  \"amazonvpcvpnconnection\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcvpnconnection\"] })),\n  \"amazoncloudfrontstreaming\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudfrontstreaming\"] })),\n  \"amazonvpcpeering\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcpeering\"] })),\n  \"amazonroute53resolverdnsfirewall\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53resolverdnsfirewall\"] })),\n  \"amazonroute53hostedzone\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53hostedzone\"] })),\n  \"amazonvpcvpngateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcvpngateway\"] })),\n  \"amazoncloudfrontfunctions\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoncloudfrontfunctions\"] })),\n  \"cloudfront\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudfront\"] })),\n  \"amazoneaelasticnetworkadapter\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneaelasticnetworkadapter\"] })),\n  \"awsappmeshvirtualgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsappmeshvirtualgateway\"] })),\n  \"amazonroute53resolverlogging\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53resolverlogging\"] })),\n  \"elasticlbclassic\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticlbclassic\"] })),\n  \"amazonroute53resolver\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53resolver\"] })),\n  \"awscloudwancorenetworkedge\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudwancorenetworkedge\"] })),\n  \"awsappmeshvirtualservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsappmeshvirtualservice\"] })),\n  \"amazonvpcflowlogs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcflowlogs\"] })),\n  \"awscloudmapresource\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudmapresource\"] })),\n  \"awsdirectconnectgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdirectconnectgateway\"] })),\n  \"amazonvpcnetworkaccessanalyzer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcnetworkaccessanalyzer\"] })),\n  \"elasticlbapp\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticlbapp\"] })),\n  \"amazonvpcvpc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcvpc\"] })),\n  \"vpc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"vpc\"] })),\n  \"amazonvpccarriergateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpccarriergateway\"] })),\n  \"amazoneaelasticnetworkinterface\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneaelasticnetworkinterface\"] })),\n  \"awscloudwanrouteattachment\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudwanrouteattachment\"] })),\n  \"amazonroute53readiness\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonroute53readiness\"] })),\n  \"awsappmeshvirtualnode\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsappmeshvirtualnode\"] })),\n  \"elasticlbgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticlbgateway\"] })),\n  \"amazonvpcrouter\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcrouter\"] })),\n  \"awsappmeshmesh\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsappmeshmesh\"] })),\n  \"amazonvpcnatgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcnatgateway\"] })),\n  \"amazonvpcnetworkacl\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpcnetworkacl\"] })),\n  \"amazonvpccustomer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpccustomer\"] })),\n  \"elasticlbnetwork\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticlbnetwork\"] })),\n  \"amazons3replication\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3replication\"] })),\n  \"amazons3onezone\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3onezone\"] })),\n  \"awsbackuplegalhold\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackuplegalhold\"] })),\n  \"awsstoragegateaway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsstoragegateaway\"] })),\n  \"amazonefsstandard\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsstandard\"] })),\n  \"efs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"efs\"] })),\n  \"elasticfilesystem\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticfilesystem\"] })),\n  \"amazons3bucket\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3bucket\"] })),\n  \"s3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"s3\"] })),\n  \"awsstoragegateawayfile\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsstoragegateawayfile\"] })),\n  \"awsfsxfile\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsfsxfile\"] })),\n  \"amazons3glacierinstant\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3glacierinstant\"] })),\n  \"amazonfilecache\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonfilecache\"] })),\n  \"amazons3standardia\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3standardia\"] })),\n  \"amazons3generalaccess\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3generalaccess\"] })),\n  \"amazons3lambda\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3lambda\"] })),\n  \"amazons3objectlock\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3objectlock\"] })),\n  \"awsbackupvirtualmachine\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvirtualmachine\"] })),\n  \"amazonec2gp3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2gp3\"] })),\n  \"amazonefsfilesys\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsfilesys\"] })),\n  \"awssnowballimportexport\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awssnowballimportexport\"] })),\n  \"amazons3object\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3object\"] })),\n  \"awsbackupcache\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupcache\"] })),\n  \"amazons3lambdaobject\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3lambdaobject\"] })),\n  \"awsbackupgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupgateway\"] })),\n  \"awsbackuprto\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackuprto\"] })),\n  \"awsbackupvaultlock\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvaultlock\"] })),\n  \"awsbackupvirtualtape\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvirtualtape\"] })),\n  \"amazonebsdatalifecycle\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonebsdatalifecycle\"] })),\n  \"awsbackupplan\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupplan\"] })),\n  \"amazonfilecaches3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonfilecaches3\"] })),\n  \"awsbackupcloudformation\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupcloudformation\"] })),\n  \"awsbackuptapegateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackuptapegateway\"] })),\n  \"awsbackupvmware\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvmware\"] })),\n  \"amazonefsonezoneia\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsonezoneia\"] })),\n  \"amazons3replicationtime\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3replicationtime\"] })),\n  \"awsbackupstorage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupstorage\"] })),\n  \"amazonefsintelligenttiering\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsintelligenttiering\"] })),\n  \"amazons3glacierdeep\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3glacierdeep\"] })),\n  \"amazons3select\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3select\"] })),\n  \"amazons3outposts\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3outposts\"] })),\n  \"awsfilegateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsfilegateway\"] })),\n  \"amazons3glacier\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3glacier\"] })),\n  \"awsbackupvmmonitor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvmmonitor\"] })),\n  \"amazons3multiregion\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3multiregion\"] })),\n  \"awsbackupvault\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupvault\"] })),\n  \"awsbackupauditmanager\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupauditmanager\"] })),\n  \"amazonfilecachehybridnfs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonfilecachehybridnfs\"] })),\n  \"amazonefselasticthroughput\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefselasticthroughput\"] })),\n  \"awsbackupawsbackupfors3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupawsbackupfors3\"] })),\n  \"amazons3standard\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3standard\"] })),\n  \"amazonefsonezone\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsonezone\"] })),\n  \"awsstoragegateawayvolume\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsstoragegateawayvolume\"] })),\n  \"awsbackuprestore\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackuprestore\"] })),\n  \"amazonebsvolumes\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonebsvolumes\"] })),\n  \"amazons3lens\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3lens\"] })),\n  \"awsbackupcompute\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupcompute\"] })),\n  \"amazonvpclogs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonvpclogs\"] })),\n  \"amazons3batch\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3batch\"] })),\n  \"amazonefsinfrequent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonefsinfrequent\"] })),\n  \"amazons3tiering\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3tiering\"] })),\n  \"awsbackuprpo\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackuprpo\"] })),\n  \"awsbackupcompliance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupcompliance\"] })),\n  \"amazonebssnapshot\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonebssnapshot\"] })),\n  \"awsbackupdatabase\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupdatabase\"] })),\n  \"awsbackupfsx\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsbackupfsx\"] })),\n  \"amazons3glacierflex\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3glacierflex\"] })),\n  \"glacier\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"glacier\"] })),\n  \"s3glacier\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"s3glacier\"] })),\n  \"amazons3bucketobject\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3bucketobject\"] })),\n  \"amazonebsvolume\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonebsvolume\"] })),\n  \"ebs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"ebs\"] })),\n  \"amazons3vault\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazons3vault\"] })),\n  \"amazoneksoutposts\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazoneksoutposts\"] })),\n  \"amazonecscontainer2\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecscontainer2\"] })),\n  \"amazonecrimage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecrimage\"] })),\n  \"amazonecstask\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecstask\"] })),\n  \"amazonecsservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecsservice\"] })),\n  \"amazonecscontainer1\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecscontainer1\"] })),\n  \"amazonecrregistry\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecrregistry\"] })),\n  \"amazonecscontainer3\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecscontainer3\"] })),\n  \"ecs\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"ecs\"] })),\n  \"amazonecscopilotcli\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecscopilotcli\"] })),\n  \"amazonecsserviceconnect\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonecsserviceconnect\"] })),\n  \"amazonec2extractor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2extractor\"] })),\n  \"amazonec2ami\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2ami\"] })),\n  \"awselasticbeanstalkdeployment\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awselasticbeanstalkdeployment\"] })),\n  \"awslambdafunction\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awslambdafunction\"] })),\n  \"lambda\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"lambda\"] })),\n  \"amazonec2instance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2instance\"] })),\n  \"ec2\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"ec2\"] })),\n  \"amazonec2autoscaling\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2autoscaling\"] })),\n  \"amazonec2spotinstance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2spotinstance\"] })),\n  \"awselasticbeanstalkapp\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awselasticbeanstalkapp\"] })),\n  \"amazonec2instancecloudwatch\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2instancecloudwatch\"] })),\n  \"amazonec2rescue\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2rescue\"] })),\n  \"amazonec2instances\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2instances\"] })),\n  \"amazonec2dbinstance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2dbinstance\"] })),\n  \"amazonec2elasticip\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonec2elasticip\"] })),\n  \"amazonrdsoptimizedwrites\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsoptimizedwrites\"] })),\n  \"amazondynamodbtblclass\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbtblclass\"] })),\n  \"amazonrdsinstancealternate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsinstancealternate\"] })),\n  \"amazondynamodbattributes\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbattributes\"] })),\n  \"amazonrdsauroramysqlalternative\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsauroramysqlalternative\"] })),\n  \"amazondynamodbitem\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbitem\"] })),\n  \"amazonrdsaurorapgsqlalt\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsaurorapgsqlalt\"] })),\n  \"amazondynamodbitems\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbitems\"] })),\n  \"amazonrdsauroraalternate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsauroraalternate\"] })),\n  \"amazonrdsaurorasqlalt\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsaurorasqlalt\"] })),\n  \"amazonrdsinstance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsinstance\"] })),\n  \"rds\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"rds\"] })),\n  \"amazonrdsmultiaz\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsmultiaz\"] })),\n  \"amazondocdbelasticclusters\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondocdbelasticclusters\"] })),\n  \"amazonrdstrustedextpgsql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdstrustedextpgsql\"] })),\n  \"amazonrdsaurorasql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsaurorasql\"] })),\n  \"amazondynamodbglobal\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbglobal\"] })),\n  \"amazonrdsoracle\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsoracle\"] })),\n  \"amazonrdsoraclealternate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsoraclealternate\"] })),\n  \"amazondynamodbstream\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbstream\"] })),\n  \"amazonrdstrustedpgsql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdstrustedpgsql\"] })),\n  \"amazondax\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondax\"] })),\n  \"amazonelasticache4redis\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonelasticache4redis\"] })),\n  \"elasticache\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticache\"] })),\n  \"amazonrdsproxy\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsproxy\"] })),\n  \"amazondynamodbaccesstable\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbaccesstable\"] })),\n  \"amazonrdsauroramysql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsauroramysql\"] })),\n  \"amazonrdspiops\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdspiops\"] })),\n  \"awsdbmigrationserviceworkflow\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdbmigrationserviceworkflow\"] })),\n  \"amazondynamodbattribute\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbattribute\"] })),\n  \"amazonrdsbluegreendeploy\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsbluegreendeploy\"] })),\n  \"amazondynamodbtable\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazondynamodbtable\"] })),\n  \"dynamodb\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"dynamodb\"] })),\n  \"amazonrdsaurorainstance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsaurorainstance\"] })),\n  \"amazonrdsauroradbinstance\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsauroradbinstance\"] })),\n  \"amazonelasticache4memcached\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonelasticache4memcached\"] })),\n  \"amazonrdsproxyalternate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsproxyalternate\"] })),\n  \"amazonrdsaurorapgsql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsaurorapgsql\"] })),\n  \"amazonrdsauroradbinstancealternate\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsauroradbinstancealternate\"] })),\n  \"amazonelasticachecachenode\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonelasticachecachenode\"] })),\n  \"amazonrdsmultiazcluster\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonrdsmultiazcluster\"] })),\n  \"awstransferfamilyftps\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstransferfamilyftps\"] })),\n  \"awstransferfamilysftp\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstransferfamilysftp\"] })),\n  \"awsmainframemodruntime\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmainframemodruntime\"] })),\n  \"awstransferfamilyftp\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstransferfamilyftp\"] })),\n  \"awsmigrationhubrefactor\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmigrationhubrefactor\"] })),\n  \"awsmainframemoddeveloper\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmainframemoddeveloper\"] })),\n  \"awsdiscoveryagent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdiscoveryagent\"] })),\n  \"awsmainframemodcompiler\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmainframemodcompiler\"] })),\n  \"awsmigrationhubrefactorapp\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmigrationhubrefactorapp\"] })),\n  \"awsdiscoveryagentlesscollector\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdiscoveryagentlesscollector\"] })),\n  \"awsmainframemodanalyzer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmainframemodanalyzer\"] })),\n  \"awsdatasyndiscovery\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdatasyndiscovery\"] })),\n  \"awsmigrationhubrefactorservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmigrationhubrefactorservice\"] })),\n  \"awsdatasyngagent\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdatasyngagent\"] })),\n  \"awsmainframemodconverter\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmainframemodconverter\"] })),\n  \"awstransferfamilyas2\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awstransferfamilyas2\"] })),\n  \"awsdiscoverymigrationevaluator\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsdiscoverymigrationevaluator\"] })),\n  \"awscloudinterface\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloudinterface\"] })),\n  \"awsmediaconnectgateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsmediaconnectgateway\"] })),\n  \"awsrobomakercloudextensions\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsrobomakercloudextensions\"] })),\n  \"awsrobomakersimulation\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsrobomakersimulation\"] })),\n  \"awsrobomakerfleetmanagement\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsrobomakerfleetmanagement\"] })),\n  \"awsrobomakerdevenv\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsrobomakerdevenv\"] })),\n  \"awsamplifystudio\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awsamplifystudio\"] })),\n  \"amazonlocationmap\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonlocationmap\"] })),\n  \"amazonlocationplace\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonlocationplace\"] })),\n  \"amazonlocationtrack\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonlocationtrack\"] })),\n  \"amazonlocationgeofence\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonlocationgeofence\"] })),\n  \"amazonlocationroutes\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonlocationroutes\"] })),\n  \"awscloud9\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"awscloud9\"] })),\n  \"amazonemailservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonemailservice\"] })),\n  \"amazonpinpointjourney\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"amazonpinpointjourney\"] })),\n  \"azureactivedirectory\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azureactivedirectory\"] })),\n  \"azurebackup\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azurebackup\"] })),\n  \"azurecdn\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azurecdn\"] })),\n  \"azuredatafactory\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azuredatafactory\"] })),\n  \"azuredevops\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azuredevops\"] })),\n  \"azurefunction\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azurefunction\"] })),\n  \"azuresql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"azuresql\"] })),\n  \"cosmosdb\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cosmosdb\"] })),\n  \"logicapps\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"logicapps\"] })),\n  \"virtualmachine\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"virtualmachine\"] })),\n  \"bigtable\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"bigtable\"] })),\n  \"bigquery\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"bigquery\"] })),\n  \"cloudcdn\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudcdn\"] })),\n  \"clouddns\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"clouddns\"] })),\n  \"cloudinterconnect\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudinterconnect\"] })),\n  \"cloudloadbalancing\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudloadbalancing\"] })),\n  \"cloudsql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudsql\"] })),\n  \"cloudstorage\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cloudstorage\"] })),\n  \"datalab\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"datalab\"] })),\n  \"dataproc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"dataproc\"] })),\n  \"googleiam\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"googleiam\"] })),\n  \"googlesecurity\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"googlesecurity\"] })),\n  \"googlevpc\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"googlevpc\"] })),\n  \"pubsub\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"pubsub\"] })),\n  \"securityscanner\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"securityscanner\"] })),\n  \"stackdriver\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"stackdriver\"] })),\n  \"visionapi\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"visionapi\"] })),\n  \"client\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"client\"] })),\n  \"server\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"server\"] })),\n  \"browser\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"browser\"] })),\n  \"service\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"service\"] })),\n  \"controller\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"controller\"] })),\n  \"api\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"api\"] })),\n  \"ui\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"ui\"] })),\n  \"mobile\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"mobile\"] })),\n  \"externalsystem\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"externalsystem\"] })),\n  \"application\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"application\"] })),\n  \"loadbalancer\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"loadbalancer\"] })),\n  \"network\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"network\"] })),\n  \"cache\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"cache\"] })),\n  \"webserver\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"webserver\"] })),\n  \"messagequeue\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"messagequeue\"] })),\n  \"scheduler\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"scheduler\"] })),\n  \"gateway\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"gateway\"] })),\n  \"authenticationservice\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"authenticationservice\"] })),\n  \"mailserver\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"mailserver\"] })),\n  \"github\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"github\"] })),\n  \"docker\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"docker\"] })),\n  \"gitlab\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"gitlab\"] })),\n  \"jenkins\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"jenkins\"] })),\n  \"postgresql\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"postgresql\"] })),\n  \"mongodb\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"mongodb\"] })),\n  \"kubernetes\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"kubernetes\"] })),\n  \"apachekafka\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"apachekafka\"] })),\n  \"elasticsearch\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"elasticsearch\"] })),\n  \"auth0\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"auth0\"] })),\n  \"redis\": () => cloudChunk().then(m => ({ default: m.cloudIcons[\"redis\"] })),\n};\n\nconst icons: Record<string, () => Promise<{ default: string }>> = {\n  ...coreIcons,\n  ...cloudLoaders,\n};\n\nexport default icons;\n","import React, { useEffect, useState } from 'react';\nimport lazyIcons from './LazyIcons';\n\ninterface AsyncIconProps {\n    iconKey: string;\n    className?: string;\n    alt?: string;\n}\n\nexport const AsyncIcon: React.FC<AsyncIconProps> = ({ iconKey, className, alt }) => {\n    const [iconContent, setIconContent] = useState<string | null>(null);\n\n    useEffect(() => {\n        const loadIcon = async () => {\n            if (!iconKey || !lazyIcons[iconKey]) {\n                // Try lowercase if exact match fails (legacy behavior support)\n                if (iconKey && lazyIcons[iconKey.toLowerCase()]) {\n                    const module = await lazyIcons[iconKey.toLowerCase()]();\n                    setIconContent(module.default);\n                    return;\n                }\n                return;\n            }\n\n            try {\n                const module = await lazyIcons[iconKey]();\n                setIconContent(module.default);\n            } catch (err) {\n                console.error(`Failed to load icon: ${iconKey}`, err);\n            }\n        };\n\n        loadIcon();\n    }, [iconKey]);\n\n    if (!iconContent) {\n        // Render empty placeholder with same dimensions to prevent layout shift\n        return <div className={className} />;\n    }\n\n    return (\n        <div\n            className={className}\n            aria-description={alt}\n            dangerouslySetInnerHTML={{ __html: iconContent }}\n        />\n    );\n};\n","import { AsyncIcon } from \"./AsyncIcon\";\n\nexport const IconList = (props: { types: string[] }) => {\n  return (\n    <ul\n      role=\"list\"\n      className=\"mt-3 grid grid-cols-4 gap-5 sm:gap-6 sm:grid-cols-6 lg:grid-cols-8\"\n    >\n      {props.types.map((type) => (\n        <li\n          key={type}\n          className=\"col-span-1 flex flex-col shadow-sm rounded-md\"\n        >\n          <div className=\"h-12 flex items-center justify-center bg-gray-50 text-sm font-medium rounded-t-md\">\n            <AsyncIcon\n              iconKey={type?.toLowerCase()}\n              className=\"object-contain h-8 w-8 m-auto [&>svg]:w-full [&>svg]:h-full\"\n            />\n          </div>\n          <div className=\"flex items-center justify-center border-t border-r border-b border-gray-200 bg-white rounded-b-md\">\n            <div className=\"px-2 py-2 text-xs\">\n              <span className=\"text-gray-900 font-medium hover:text-gray-600\">\n                @{type}\n              </span>\n            </div>\n          </div>\n        </li>\n      ))}\n    </ul>\n  );\n};\n","import Icon from \"@/components/Icon/Icons\";\nimport { showTipsAtom } from \"@/store/Store\";\nimport { useSetAtom } from \"jotai\";\nimport { IconList } from \"./IconList\";\n\nconst standardTypes = [\"Actor\", \"Boundary\", \"Control\", \"Database\", \"Entity\"];\nconst awsServices = [\n  \"CloudWatch\",\n  \"CloudFront\",\n  \"Cognito\",\n  \"DynamoDB\",\n  \"EBS\",\n  \"EC2\",\n  \"ECS\",\n  \"EFS\",\n  \"ElastiCache\",\n  \"ElasticBeantalk\",\n  \"ElasticFileSystem\",\n  \"Glacier\",\n  \"IAM\",\n  \"Kinesis\",\n  \"Lambda\",\n  \"LightSail\",\n  \"RDS\",\n  \"Redshift\",\n  \"S3\",\n  \"SNS\",\n  \"SQS\",\n  \"Sagemaker\",\n  \"VPC\",\n];\nconst azureServices = [\n  \"AzureActiveDirectory\",\n  \"AzureBackup\",\n  \"AzureCDN\",\n  \"AzureDataFactory\",\n  \"AzureDevOps\",\n  \"AzureFunction\",\n  \"AzureSQL\",\n  \"CosmosDB\",\n  \"LogicApps\",\n  \"VirtualMachine\",\n];\nconst googleServices = [\n  \"BigTable\",\n  \"BigQuery\",\n  \"CloudCDN\",\n  \"CloudDNS\",\n  \"CloudInterconnect\",\n  \"CloudLoadBalancing\",\n  \"CloudSQL\",\n  \"CloudStorage\",\n  \"DataLab\",\n  \"DataProc\",\n  \"GoogleIAM\",\n  \"GoogleSecurity\",\n  \"GoogleVPC\",\n  \"PubSub\",\n  \"SecurityScanner\",\n  \"StackDriver\",\n  \"VisionAPI\",\n];\n\nconst code1 = `// Define a Starter (optional)\n@Starter(A)\n\n// Show icons\n@EC2 A\n\n// Use 'group' keyword\ngroup GroupName &#123;  B  C &#125;\n\n// Use alias\nS as Service\n\n// Use stereotype\n&lt;&lt;servlet&gt;&gt; ServiceX`;\nconst code2 = `A.method()\n==divider name==\nB.method()\n`;\nconst code3 = `// Alt (AKA if/else)\nif(condition1) {}\nelse if (condition2) {}\nelse {}\n\n// \\`loop\\`, \\`for\\`, \\`forEach\\`, \\`while\\`\n// are treated the same\nforEach(records) {}\n\n// Opt\nopt {}\n\n// Par\npar {}\n\n// Section\nsection(ID) {} / frame(ID) {};\n\n// Critical\ncritical {}\n\n// Try Catch Finally\ntry {} catch() {} finally {}\n`;\nconst code4 = `\n//Creation\nnew ParticipantName()\n\n//Sync Message\nA.method\nA->B.method\n\n//Async Message\nA->B: async message\n\n//Reply Message, three styles\nx = A.method\nA.method() {\n  return x\n}\nA.method() {\n  @return A->B: message\n}`;\n\nexport const TipsDialog = () => {\n  const setShowTips = useSetAtom(showTipsAtom);\n\n  const closeTipsDialog = () => {\n    setShowTips(false);\n    // try {\n    //   this.$gtag?.event(\"close\", {\n    //     event_category: \"help\",\n    //     event_label: \"tips dialog\",\n    //   });\n    // } catch (e) {\n    //   console.error(e);\n    // }\n  };\n\n  return (\n    <div className=\"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block\">\n      <div\n        className=\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\"\n        aria-hidden=\"true\"\n      ></div>\n\n      {/* This element is to trick the browser into centering the modal contents. */}\n      <span\n        className=\"hidden sm:inline-block sm:align-middle sm:h-screen\"\n        aria-hidden=\"true\"\n      >\n        &#8203;\n      </span>\n\n      <div className=\"z-40 inline-block align-bottom bg-white rounded-lg px-4 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:p-2\">\n        <div>\n          <div className=\"bg-white px-4 py-5 border-b border-gray-200 sm:px-6\">\n            <h3 className=\"text-xl leading-6 font-medium text-gray-900 inline-block\">\n              ZenUML Tips\n            </h3>\n            <button\n              type=\"button\"\n              onClick={closeTipsDialog}\n              className=\"float-right bg-white rounded-md inline-flex items-center justify-center text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500\"\n            >\n              <span className=\"sr-only\">Close menu</span>\n              {/* Heroicon name: outline/x */}\n              <Icon name=\"close\" className=\"h-6 w-6 outline-none\" />\n            </button>\n          </div>\n          <div>\n            <div className=\"relative bg-white pb-32 mt-4 overflow-hidden\">\n              <div className=\"relative\">\n                <div className=\"lg:mx-auto lg:max-w-11/12 lg:px-8\">\n                  <div className=\"grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1\">\n                    <div>\n                      <div className=\"px-4 max-w-full mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n                        <h2 className=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">\n                          Declare Participants\n                        </h2>\n                        <pre className=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\">\n                          <code>{code1}</code>\n                        </pre>\n                      </div>\n                      <div className=\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n                        <h2 className=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">\n                          Divider\n                        </h2>\n                        <pre className=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\">\n                          <code>{code2}</code>\n                        </pre>\n                      </div>\n                    </div>\n                    <div className=\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\">\n                      <h2 className=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">\n                        Fragments\n                      </h2>\n                      <pre className=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\">\n                        <code>{code3}</code>\n                      </pre>\n                    </div>\n                    <div className=\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\">\n                      <h2 className=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">\n                        Messages\n                      </h2>\n                      <pre className=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\">\n                        <code>{code4}</code>\n                      </pre>\n                    </div>\n                  </div>\n                  <div className=\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n                    <h2 className=\"mt-8 mb-4 text-lg leading-6 font-medium text-gray-900\">\n                      Builtin Icons\n                    </h2>\n                    <p className=\"text-sm text-gray-500\">\n                      Use\n                      <span className=\"rounded inline-block bg-gray-50 text-gray-600\">\n                        <code className=\"text-xs\">@Actor TheParticipant</code>\n                      </span>\n                      to define the type of the participant.\n                    </p>\n                    <IconList types={standardTypes} />\n                    <hr className=\"mt-4\" />\n                    <IconList types={awsServices} />\n                    <hr className=\"mt-4\" />\n                    <IconList types={azureServices} />\n                    <hr className=\"mt-4\" />\n                    <IconList types={googleServices} />\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport $lmaYr$react, {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nvar $8ae05eaa5c114e9c$var$_React_useInsertionEffect;\n// Use the earliest effect type possible. useInsertionEffect runs during the mutation phase,\n// before all layout effects, but is available only in React 18 and later.\nconst $8ae05eaa5c114e9c$var$useEarlyEffect = ($8ae05eaa5c114e9c$var$_React_useInsertionEffect = (0, $lmaYr$react)['useInsertionEffect']) !== null && $8ae05eaa5c114e9c$var$_React_useInsertionEffect !== void 0 ? $8ae05eaa5c114e9c$var$_React_useInsertionEffect : (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c);\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n    const ref = (0, $lmaYr$useRef)(null);\n    $8ae05eaa5c114e9c$var$useEarlyEffect(()=>{\n        ref.current = fn;\n    }, [\n        fn\n    ]);\n    // @ts-ignore\n    return (0, $lmaYr$useCallback)((...args)=>{\n        const f = ref.current;\n        return f === null || f === void 0 ? void 0 : f(...args);\n    }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n    var _el_ownerDocument;\n    return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n    if (el && 'window' in el && el.window === el) return el;\n    const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n    return doc.defaultView || window;\n};\n/**\n * Type guard that checks if a value is a Node. Verifies the presence and type of the nodeType property.\n */ function $431fbd86ca7dc216$var$isNode(value) {\n    return value !== null && typeof value === 'object' && 'nodeType' in value && typeof value.nodeType === 'number';\n}\nfunction $431fbd86ca7dc216$export$af51f0f06c0f328a(node) {\n    return $431fbd86ca7dc216$var$isNode(node) && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\n}\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow, $431fbd86ca7dc216$export$af51f0f06c0f328a as isShadowRoot};\n//# sourceMappingURL=domHelpers.module.js.map\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ let $f4e2df6bd15f8569$var$_tableNestedRows = false;\nlet $f4e2df6bd15f8569$var$_shadowDOM = false;\nfunction $f4e2df6bd15f8569$export$d9d8a0f82de49530() {\n    $f4e2df6bd15f8569$var$_tableNestedRows = true;\n}\nfunction $f4e2df6bd15f8569$export$1b00cb14a96194e6() {\n    return $f4e2df6bd15f8569$var$_tableNestedRows;\n}\nfunction $f4e2df6bd15f8569$export$12b151d9882e9985() {\n    $f4e2df6bd15f8569$var$_shadowDOM = true;\n}\nfunction $f4e2df6bd15f8569$export$98658e8c59125e6a() {\n    return $f4e2df6bd15f8569$var$_shadowDOM;\n}\n\n\nexport {$f4e2df6bd15f8569$export$d9d8a0f82de49530 as enableTableNestedRows, $f4e2df6bd15f8569$export$1b00cb14a96194e6 as tableNestedRows, $f4e2df6bd15f8569$export$12b151d9882e9985 as enableShadowDOM, $f4e2df6bd15f8569$export$98658e8c59125e6a as shadowDOM};\n//# sourceMappingURL=module.js.map\n","import {isShadowRoot as $431fbd86ca7dc216$export$af51f0f06c0f328a} from \"./domHelpers.mjs\";\nimport {shadowDOM as $lcSu5$shadowDOM} from \"@react-stately/flags\";\n\n// Source: https://github.com/microsoft/tabster/blob/a89fc5d7e332d48f68d03b1ca6e344489d1c3898/src/Shadowdomize/DOMFunctions.ts#L16\n\n\nfunction $d4ee10de306f2510$export$4282f70798064fe0(node, otherNode) {\n    if (!(0, $lcSu5$shadowDOM)()) return otherNode && node ? node.contains(otherNode) : false;\n    if (!node || !otherNode) return false;\n    let currentNode = otherNode;\n    while(currentNode !== null){\n        if (currentNode === node) return true;\n        if (currentNode.tagName === 'SLOT' && currentNode.assignedSlot) // Element is slotted\n        currentNode = currentNode.assignedSlot.parentNode;\n        else if ((0, $431fbd86ca7dc216$export$af51f0f06c0f328a)(currentNode)) // Element is in shadow root\n        currentNode = currentNode.host;\n        else currentNode = currentNode.parentNode;\n    }\n    return false;\n}\nconst $d4ee10de306f2510$export$cd4e5573fbe2b576 = (doc = document)=>{\n    var _activeElement_shadowRoot;\n    if (!(0, $lcSu5$shadowDOM)()) return doc.activeElement;\n    let activeElement = doc.activeElement;\n    while(activeElement && 'shadowRoot' in activeElement && ((_activeElement_shadowRoot = activeElement.shadowRoot) === null || _activeElement_shadowRoot === void 0 ? void 0 : _activeElement_shadowRoot.activeElement))activeElement = activeElement.shadowRoot.activeElement;\n    return activeElement;\n};\nfunction $d4ee10de306f2510$export$e58f029f0fbfdb29(event) {\n    if ((0, $lcSu5$shadowDOM)() && event.target.shadowRoot) {\n        if (event.composedPath) return event.composedPath()[0];\n    }\n    return event.target;\n}\n\n\nexport {$d4ee10de306f2510$export$4282f70798064fe0 as nodeContains, $d4ee10de306f2510$export$cd4e5573fbe2b576 as getActiveElement, $d4ee10de306f2510$export$e58f029f0fbfdb29 as getEventTarget};\n//# sourceMappingURL=DOMFunctions.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n    var _window_navigator_userAgentData;\n    if (typeof window === 'undefined' || window.navigator == null) return false;\n    let brands = (_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands;\n    return Array.isArray(brands) && brands.some((brand)=>re.test(brand.brand)) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n    var _window_navigator_userAgentData;\n    return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n    if (process.env.NODE_ENV === 'test') return fn;\n    let res = null;\n    return ()=>{\n        if (res == null) res = fn();\n        return res;\n    };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n    $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n    return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","import {useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n    let globalListeners = (0, $lPAwt$useRef)(new Map());\n    let addGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n        // Make sure we remove the listener after it is called with the `once` option.\n        let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n            globalListeners.current.delete(listener);\n            listener(...args);\n        } : listener;\n        globalListeners.current.set(listener, {\n            type: type,\n            eventTarget: eventTarget,\n            fn: fn,\n            options: options\n        });\n        eventTarget.addEventListener(type, fn, options);\n    }, []);\n    let removeGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n        var _globalListeners_current_get;\n        let fn = ((_globalListeners_current_get = globalListeners.current.get(listener)) === null || _globalListeners_current_get === void 0 ? void 0 : _globalListeners_current_get.fn) || listener;\n        eventTarget.removeEventListener(type, fn, options);\n        globalListeners.current.delete(listener);\n    }, []);\n    let removeAllGlobalListeners = (0, $lPAwt$useCallback)(()=>{\n        globalListeners.current.forEach((value, key)=>{\n            removeGlobalListener(value.eventTarget, value.type, key, value.options);\n        });\n    }, [\n        removeGlobalListener\n    ]);\n    (0, $lPAwt$useEffect)(()=>{\n        return removeAllGlobalListeners;\n    }, [\n        removeAllGlobalListeners\n    ]);\n    return {\n        addGlobalListener: addGlobalListener,\n        removeGlobalListener: removeGlobalListener,\n        removeAllGlobalListeners: removeAllGlobalListeners\n    };\n}\n\n\nexport {$03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners};\n//# sourceMappingURL=useGlobalListeners.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n    // JAWS/NVDA with Firefox.\n    if (event.pointerType === '' && event.isTrusted) return true;\n    // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n    // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n    // to detect TalkBack virtual clicks.\n    if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n    return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n    // If the pointer size is zero, then we assume it's from a screen reader.\n    // Android TalkBack double tap will sometimes return a event with width and height of 1\n    // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n    // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n    // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n    // Talkback double tap from Windows Firefox touch screen press\n    return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\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.2.3\";\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","import {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent, isFocusable as $6dfIe$isFocusable, getOwnerWindow as $6dfIe$getOwnerWindow, focusWithoutScrolling as $6dfIe$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8a9cb279dc87e130$export$525bc4921d56d4a(nativeEvent) {\n    let event = nativeEvent;\n    event.nativeEvent = nativeEvent;\n    event.isDefaultPrevented = ()=>event.defaultPrevented;\n    // cancelBubble is technically deprecated in the spec, but still supported in all browsers.\n    event.isPropagationStopped = ()=>event.cancelBubble;\n    event.persist = ()=>{};\n    return event;\n}\nfunction $8a9cb279dc87e130$export$c2b7abe5d61ec696(event, target) {\n    Object.defineProperty(event, 'target', {\n        value: target\n    });\n    Object.defineProperty(event, 'currentTarget', {\n        value: target\n    });\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n    let stateRef = (0, $6dfIe$useRef)({\n        isFocused: false,\n        observer: null\n    });\n    // Clean up MutationObserver on unmount. See below.\n    (0, $6dfIe$useLayoutEffect)(()=>{\n        const state = stateRef.current;\n        return ()=>{\n            if (state.observer) {\n                state.observer.disconnect();\n                state.observer = null;\n            }\n        };\n    }, []);\n    let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n        onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n    });\n    // This function is called during a React onFocus event.\n    return (0, $6dfIe$useCallback)((e)=>{\n        // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n        // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n        // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n        // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n        if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n            stateRef.current.isFocused = true;\n            let target = e.target;\n            let onBlurHandler = (e)=>{\n                stateRef.current.isFocused = false;\n                if (target.disabled) {\n                    // For backward compatibility, dispatch a (fake) React synthetic event.\n                    let event = $8a9cb279dc87e130$export$525bc4921d56d4a(e);\n                    dispatchBlur(event);\n                }\n                // We no longer need the MutationObserver once the target is blurred.\n                if (stateRef.current.observer) {\n                    stateRef.current.observer.disconnect();\n                    stateRef.current.observer = null;\n                }\n            };\n            target.addEventListener('focusout', onBlurHandler, {\n                once: true\n            });\n            stateRef.current.observer = new MutationObserver(()=>{\n                if (stateRef.current.isFocused && target.disabled) {\n                    var _stateRef_current_observer;\n                    (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n                    let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n                    target.dispatchEvent(new FocusEvent('blur', {\n                        relatedTarget: relatedTargetEl\n                    }));\n                    target.dispatchEvent(new FocusEvent('focusout', {\n                        bubbles: true,\n                        relatedTarget: relatedTargetEl\n                    }));\n                }\n            });\n            stateRef.current.observer.observe(target, {\n                attributes: true,\n                attributeFilter: [\n                    'disabled'\n                ]\n            });\n        }\n    }, [\n        dispatchBlur\n    ]);\n}\nlet $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\nfunction $8a9cb279dc87e130$export$cabe61c495ee3649(target) {\n    // The browser will focus the nearest focusable ancestor of our target.\n    while(target && !(0, $6dfIe$isFocusable)(target))target = target.parentElement;\n    let window = (0, $6dfIe$getOwnerWindow)(target);\n    let activeElement = window.document.activeElement;\n    if (!activeElement || activeElement === target) return;\n    $8a9cb279dc87e130$export$fda7da73ab5d4c48 = true;\n    let isRefocusing = false;\n    let onBlur = (e)=>{\n        if (e.target === activeElement || isRefocusing) e.stopImmediatePropagation();\n    };\n    let onFocusOut = (e)=>{\n        if (e.target === activeElement || isRefocusing) {\n            e.stopImmediatePropagation();\n            // If there was no focusable ancestor, we don't expect a focus event.\n            // Re-focus the original active element here.\n            if (!target && !isRefocusing) {\n                isRefocusing = true;\n                (0, $6dfIe$focusWithoutScrolling)(activeElement);\n                cleanup();\n            }\n        }\n    };\n    let onFocus = (e)=>{\n        if (e.target === target || isRefocusing) e.stopImmediatePropagation();\n    };\n    let onFocusIn = (e)=>{\n        if (e.target === target || isRefocusing) {\n            e.stopImmediatePropagation();\n            if (!isRefocusing) {\n                isRefocusing = true;\n                (0, $6dfIe$focusWithoutScrolling)(activeElement);\n                cleanup();\n            }\n        }\n    };\n    window.addEventListener('blur', onBlur, true);\n    window.addEventListener('focusout', onFocusOut, true);\n    window.addEventListener('focusin', onFocusIn, true);\n    window.addEventListener('focus', onFocus, true);\n    let cleanup = ()=>{\n        cancelAnimationFrame(raf);\n        window.removeEventListener('blur', onBlur, true);\n        window.removeEventListener('focusout', onFocusOut, true);\n        window.removeEventListener('focusin', onFocusIn, true);\n        window.removeEventListener('focus', onFocus, true);\n        $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\n        isRefocusing = false;\n    };\n    let raf = requestAnimationFrame(cleanup);\n    return cleanup;\n}\n\n\nexport {$8a9cb279dc87e130$export$525bc4921d56d4a as createSyntheticEvent, $8a9cb279dc87e130$export$c2b7abe5d61ec696 as setEventTarget, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent, $8a9cb279dc87e130$export$fda7da73ab5d4c48 as ignoreFocusEvent, $8a9cb279dc87e130$export$cabe61c495ee3649 as preventFocus};\n//# sourceMappingURL=utils.module.js.map\n","import {ignoreFocusEvent as $8a9cb279dc87e130$export$fda7da73ab5d4c48} from \"./utils.mjs\";\nimport {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n    Tab: true,\n    Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n    for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n    // Control and Shift keys trigger when navigating back to the tab with keyboard.\n    return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n    if ($507fabe10e71c6fb$var$isValidKey(e)) {\n        $507fabe10e71c6fb$var$currentModality = 'keyboard';\n        $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n    }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n    $507fabe10e71c6fb$var$currentModality = 'pointer';\n    if (e.type === 'mousedown' || e.type === 'pointerdown') {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n    }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n    if ((0, $28AnR$isVirtualClick)(e)) {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        $507fabe10e71c6fb$var$currentModality = 'virtual';\n    }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n    // Firefox fires two extra focus events when the user first clicks into an iframe:\n    // first on the window, then on the document. We ignore these events so they don't\n    // cause keyboard focus rings to appear.\n    if (e.target === window || e.target === document || (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) || !e.isTrusted) return;\n    // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n    // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n    if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n        $507fabe10e71c6fb$var$currentModality = 'virtual';\n        $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n    }\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n    $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n    if (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) return;\n    // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n    // for example, since a subsequent focus event won't be fired.\n    $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n    $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n    if (typeof window === 'undefined' || typeof document === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n    const windowObject = (0, $28AnR$getOwnerWindow)(element);\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    // Programmatic focus() calls shouldn't affect the current input modality.\n    // However, we need to detect other cases when a focus event occurs without\n    // a preceding user event (e.g. screen reader focus). Overriding the focus\n    // method on HTMLElement.prototype is a bit hacky, but works.\n    let focus = windowObject.HTMLElement.prototype.focus;\n    windowObject.HTMLElement.prototype.focus = function() {\n        $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n        focus.apply(this, arguments);\n    };\n    documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n    // Register focus events on the window so they are sure to happen\n    // before React's event listeners (registered on the document).\n    windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n    windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    } else if (process.env.NODE_ENV === 'test') {\n        documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    }\n    // Add unmount handler\n    windowObject.addEventListener('beforeunload', ()=>{\n        $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n    }, {\n        once: true\n    });\n    $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n        focus: focus\n    });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n    const windowObject = (0, $28AnR$getOwnerWindow)(element);\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n    if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n    windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n    documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n    documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n    windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n    windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    } else if (process.env.NODE_ENV === 'test') {\n        documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n        documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n    }\n    $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n    const documentObject = (0, $28AnR$getOwnerDocument)(element);\n    let loadListener;\n    if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n    else {\n        loadListener = ()=>{\n            $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n        };\n        documentObject.addEventListener('DOMContentLoaded', loadListener);\n    }\n    return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n    return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n    return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n    $507fabe10e71c6fb$var$currentModality = modality;\n    $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n    $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n    let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n    (0, $28AnR$useEffect)(()=>{\n        let handler = ()=>{\n            setModality($507fabe10e71c6fb$var$currentModality);\n        };\n        $507fabe10e71c6fb$var$changeHandlers.add(handler);\n        return ()=>{\n            $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n        };\n    }, []);\n    return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n    let document1 = (0, $28AnR$getOwnerDocument)(e === null || e === void 0 ? void 0 : e.target);\n    const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n    const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n    const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n    const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n    // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n    // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n    isTextInput = isTextInput || document1.activeElement instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(document1.activeElement.type) || document1.activeElement instanceof IHTMLTextAreaElement || document1.activeElement instanceof IHTMLElement && document1.activeElement.isContentEditable;\n    return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n    let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n    let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n    $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n        setFocusVisible(isFocusVisible);\n    }, [\n        isTextInput\n    ], {\n        isTextInput: isTextInput\n    });\n    return {\n        isFocusVisible: isFocusVisibleState\n    };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n    $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n    (0, $28AnR$useEffect)(()=>{\n        let handler = (modality, e)=>{\n            // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n            if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n            fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n        };\n        $507fabe10e71c6fb$var$changeHandlers.add(handler);\n        return ()=>{\n            $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument, getActiveElement as $hf0lj$getActiveElement, getEventTarget as $hf0lj$getEventTarget} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n    let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n    const onBlur = (0, $hf0lj$useCallback)((e)=>{\n        if (e.target === e.currentTarget) {\n            if (onBlurProp) onBlurProp(e);\n            if (onFocusChange) onFocusChange(false);\n            return true;\n        }\n    }, [\n        onBlurProp,\n        onFocusChange\n    ]);\n    const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n    const onFocus = (0, $hf0lj$useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n        const activeElement = ownerDocument ? (0, $hf0lj$getActiveElement)(ownerDocument) : (0, $hf0lj$getActiveElement)();\n        if (e.target === e.currentTarget && activeElement === (0, $hf0lj$getEventTarget)(e.nativeEvent)) {\n            if (onFocusProp) onFocusProp(e);\n            if (onFocusChange) onFocusChange(true);\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusChange,\n        onFocusProp,\n        onSyntheticFocus\n    ]);\n    return {\n        focusProps: {\n            onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n            onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n        }\n    };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {createSyntheticEvent as $8a9cb279dc87e130$export$525bc4921d56d4a, setEventTarget as $8a9cb279dc87e130$export$c2b7abe5d61ec696, useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\nimport {useGlobalListeners as $3b9Q0$useGlobalListeners, getOwnerDocument as $3b9Q0$getOwnerDocument, getActiveElement as $3b9Q0$getActiveElement, getEventTarget as $3b9Q0$getEventTarget, nodeContains as $3b9Q0$nodeContains} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n    let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n    let state = (0, $3b9Q0$useRef)({\n        isFocusWithin: false\n    });\n    let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $3b9Q0$useGlobalListeners)();\n    let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n        // Ignore events bubbling through portals.\n        if (!e.currentTarget.contains(e.target)) return;\n        // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n        // when moving focus inside the element. Only trigger if the currentTarget doesn't\n        // include the relatedTarget (where focus is moving).\n        if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n            state.current.isFocusWithin = false;\n            removeAllGlobalListeners();\n            if (onBlurWithin) onBlurWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(false);\n        }\n    }, [\n        onBlurWithin,\n        onFocusWithinChange,\n        state,\n        removeAllGlobalListeners\n    ]);\n    let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n    let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n        // Ignore events bubbling through portals.\n        if (!e.currentTarget.contains(e.target)) return;\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, $3b9Q0$getOwnerDocument)(e.target);\n        const activeElement = (0, $3b9Q0$getActiveElement)(ownerDocument);\n        if (!state.current.isFocusWithin && activeElement === (0, $3b9Q0$getEventTarget)(e.nativeEvent)) {\n            if (onFocusWithin) onFocusWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(true);\n            state.current.isFocusWithin = true;\n            onSyntheticFocus(e);\n            // Browsers don't fire blur events when elements are removed from the DOM.\n            // However, if a focus event occurs outside the element we're tracking, we\n            // can manually fire onBlur.\n            let currentTarget = e.currentTarget;\n            addGlobalListener(ownerDocument, 'focus', (e)=>{\n                if (state.current.isFocusWithin && !(0, $3b9Q0$nodeContains)(currentTarget, e.target)) {\n                    let nativeEvent = new ownerDocument.defaultView.FocusEvent('blur', {\n                        relatedTarget: e.target\n                    });\n                    (0, $8a9cb279dc87e130$export$c2b7abe5d61ec696)(nativeEvent, currentTarget);\n                    let event = (0, $8a9cb279dc87e130$export$525bc4921d56d4a)(nativeEvent);\n                    onBlur(event);\n                }\n            }, {\n                capture: true\n            });\n        }\n    }, [\n        onFocusWithin,\n        onFocusWithinChange,\n        onSyntheticFocus,\n        addGlobalListener,\n        onBlur\n    ]);\n    if (isDisabled) return {\n        focusWithinProps: {\n            // These cannot be null, that would conflict in mergeProps\n            onFocus: undefined,\n            onBlur: undefined\n        }\n    };\n    return {\n        focusWithinProps: {\n            onFocus: onFocus,\n            onBlur: onBlur\n        }\n    };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","import {useGlobalListeners as $AWxnT$useGlobalListeners, getOwnerDocument as $AWxnT$getOwnerDocument, nodeContains as $AWxnT$nodeContains} from \"@react-aria/utils\";\nimport {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n    $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n    // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n    // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n    // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n    // the distant future because a user previously touched the element.\n    setTimeout(()=>{\n        $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n    }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n    if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n    if (typeof document === 'undefined') return;\n    if ($6179b936705e76d3$var$hoverCount === 0) {\n        if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n        else if (process.env.NODE_ENV === 'test') document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n    }\n    $6179b936705e76d3$var$hoverCount++;\n    return ()=>{\n        $6179b936705e76d3$var$hoverCount--;\n        if ($6179b936705e76d3$var$hoverCount > 0) return;\n        if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n        else if (process.env.NODE_ENV === 'test') document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n    };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n    let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n    let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n    let state = (0, $AWxnT$useRef)({\n        isHovered: false,\n        ignoreEmulatedMouseEvents: false,\n        pointerType: '',\n        target: null\n    }).current;\n    (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n    let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $AWxnT$useGlobalListeners)();\n    let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n        let triggerHoverStart = (event, pointerType)=>{\n            state.pointerType = pointerType;\n            if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n            state.isHovered = true;\n            let target = event.currentTarget;\n            state.target = target;\n            // When an element that is hovered over is removed, no pointerleave event is fired by the browser,\n            // even though the originally hovered target may have shrunk in size so it is no longer hovered.\n            // However, a pointerover event will be fired on the new target the mouse is over.\n            // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.\n            addGlobalListener((0, $AWxnT$getOwnerDocument)(event.target), 'pointerover', (e)=>{\n                if (state.isHovered && state.target && !(0, $AWxnT$nodeContains)(state.target, e.target)) triggerHoverEnd(e, e.pointerType);\n            }, {\n                capture: true\n            });\n            if (onHoverStart) onHoverStart({\n                type: 'hoverstart',\n                target: target,\n                pointerType: pointerType\n            });\n            if (onHoverChange) onHoverChange(true);\n            setHovered(true);\n        };\n        let triggerHoverEnd = (event, pointerType)=>{\n            let target = state.target;\n            state.pointerType = '';\n            state.target = null;\n            if (pointerType === 'touch' || !state.isHovered || !target) return;\n            state.isHovered = false;\n            removeAllGlobalListeners();\n            if (onHoverEnd) onHoverEnd({\n                type: 'hoverend',\n                target: target,\n                pointerType: pointerType\n            });\n            if (onHoverChange) onHoverChange(false);\n            setHovered(false);\n        };\n        let hoverProps = {};\n        if (typeof PointerEvent !== 'undefined') {\n            hoverProps.onPointerEnter = (e)=>{\n                if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n                triggerHoverStart(e, e.pointerType);\n            };\n            hoverProps.onPointerLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n            };\n        } else if (process.env.NODE_ENV === 'test') {\n            hoverProps.onTouchStart = ()=>{\n                state.ignoreEmulatedMouseEvents = true;\n            };\n            hoverProps.onMouseEnter = (e)=>{\n                if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n                state.ignoreEmulatedMouseEvents = false;\n            };\n            hoverProps.onMouseLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n            };\n        }\n        return {\n            hoverProps: hoverProps,\n            triggerHoverEnd: triggerHoverEnd\n        };\n    }, [\n        onHoverStart,\n        onHoverChange,\n        onHoverEnd,\n        isDisabled,\n        state,\n        addGlobalListener,\n        removeAllGlobalListeners\n    ]);\n    (0, $AWxnT$useEffect)(()=>{\n        // Call the triggerHoverEnd as soon as isDisabled changes to true\n        // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n        if (isDisabled) triggerHoverEnd({\n            currentTarget: state.target\n        }, state.pointerType);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        isDisabled\n    ]);\n    return {\n        hoverProps: hoverProps,\n        isHovered: isHovered\n    };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n    let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n    let state = (0, $isWE5$useRef)({\n        isFocused: false,\n        isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n    });\n    let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n    let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n    let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n    let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n        state.current.isFocused = isFocused;\n        setFocused(isFocused);\n        updateState();\n    }, [\n        updateState\n    ]);\n    (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n        state.current.isFocusVisible = isFocusVisible;\n        updateState();\n    }, [], {\n        isTextInput: isTextInput\n    });\n    let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n        isDisabled: within,\n        onFocusChange: onFocusChange\n    });\n    let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n        isDisabled: !within,\n        onFocusWithinChange: onFocusChange\n    });\n    return {\n        isFocused: isFocused,\n        isFocusVisible: isFocusVisibleState,\n        focusProps: within ? focusWithinProps : focusProps\n    };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{env as t}from'./env.js';function l(n){var u;return t.isServer?null:n==null?document:(u=n==null?void 0:n.ownerDocument)!=null?u:document}function r(n){var u,o;return t.isServer?null:n==null?document:(o=(u=n==null?void 0:n.getRootNode)==null?void 0:u.call(n))!=null?o:document}function e(n){var u,o;return(o=(u=r(n))==null?void 0:u.activeElement)!=null?o:null}function d(n){return e(n)===n}export{e as getActiveElement,l as getOwnerDocument,r as getRootNode,d as isActiveElement};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as a}from'./micro-task.js';function o(){let s=[],r={addEventListener(e,t,n,i){return e.addEventListener(t,n,i),r.add(()=>e.removeEventListener(t,n,i))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return a(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,n){let i=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add(()=>{Object.assign(e.style,{[t]:i})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return s.includes(e)||s.push(e),()=>{let t=s.indexOf(e);if(t>=0)for(let n of s.splice(t,1))n()}},dispose(){for(let e of s.splice(0))e()}};return r}export{o as disposables};\n","import{useEffect as s,useState as o}from\"react\";import{disposables as t}from'../utils/disposables.js';function p(){let[e]=o(t);return s(()=>()=>e.dispose(),[e]),e}export{p as useDisposables};\n","import{useEffect as f,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let n=(e,t)=>{i.isServer?f(e,t):c(e,t)};export{n as useIsoMorphicEffect};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useMemo as t}from\"react\";function n(e){return t(()=>e,Object.values(e))}export{n as useSlot};\n","import n,{createContext as r,useContext as i}from\"react\";let e=r(void 0);function a(){return i(e)}function l({value:t,children:o}){return n.createElement(e.Provider,{value:t},o)}export{l as DisabledProvider,a as useDisabled};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import E,{Fragment as j,cloneElement as v,createElement as S,forwardRef as w,isValidElement as k,useCallback as x,useRef as M}from\"react\";import{classNames as N}from'./class-names.js';import{match as O}from'./match.js';var A=(a=>(a[a.None=0]=\"None\",a[a.RenderStrategy=1]=\"RenderStrategy\",a[a.Static=2]=\"Static\",a))(A||{}),C=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(C||{});function K(){let n=$();return x(r=>U({mergeRefs:n,...r}),[n])}function U({ourProps:n,theirProps:r,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:I;let o=P(r,n);if(t)return F(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...u}=o;if(f)return F(u,e,a,l,i)}if(y&1){let{unmount:f=!0,...u}=o;return O(f?0:1,{[0](){return null},[1](){return F({...u,hidden:!0,style:{display:\"none\"}},e,a,l,i)}})}return F(o,e,a,l,i)}function F(n,r={},e,a,s){let{as:t=e,children:l,refName:i=\"ref\",...o}=h(n,[\"unmount\",\"static\"]),y=n.ref!==void 0?{[i]:n.ref}:{},f=typeof l==\"function\"?l(r):l;\"className\"in o&&o.className&&typeof o.className==\"function\"&&(o.className=o.className(r)),o[\"aria-labelledby\"]&&o[\"aria-labelledby\"]===o.id&&(o[\"aria-labelledby\"]=void 0);let u={};if(r){let d=!1,p=[];for(let[c,T]of Object.entries(r))typeof T==\"boolean\"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u[\"data-headlessui-state\"]=p.join(\" \");for(let c of p)u[`data-${c}`]=\"\"}}if(b(t)&&(Object.keys(m(o)).length>0||Object.keys(m(u)).length>0))if(!k(f)||Array.isArray(f)&&f.length>1||D(f)){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${a} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(m(o)).concat(Object.keys(m(u))).map(d=>`  - ${d}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(d=>`  - ${d}`).join(`\n`)].join(`\n`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p==\"function\"?(...R)=>N(p(...R),o.className):N(p,o.className),T=c?{className:c}:{},g=P(f.props,m(h(o,[\"ref\"])));for(let R in u)R in g&&delete u[R];return v(f,Object.assign({},g,u,y,{ref:s(H(f),y.ref)},T))}return S(t,Object.assign({},h(o,[\"ref\"]),!b(t)&&y,!b(t)&&u),f)}function $(){let n=M([]),r=x(e=>{for(let a of n.current)a!=null&&(typeof a==\"function\"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return n.current=e,r}}function I(...n){return n.every(r=>r==null)?void 0:r=>{for(let e of n)e!=null&&(typeof e==\"function\"?e(r):e.current=r)}}function P(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];if(r.disabled||r[\"aria-disabled\"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(r,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return r}function V(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];for(let s in e)Object.assign(r,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return r}function Y(n){var r;return Object.assign(w(n),{displayName:(r=n.displayName)!=null?r:n.name})}function m(n){let r=Object.assign({},n);for(let e in r)r[e]===void 0&&delete r[e];return r}function h(n,r=[]){let e=Object.assign({},n);for(let a of r)a in e&&delete e[a];return e}function H(n){return E.version.split(\".\")[0]>=\"19\"?n.props.ref:n.ref}function b(n){return n===j||n===Symbol.for(\"react.fragment\")}function D(n){return b(n.type)}export{A as RenderFeatures,C as RenderStrategy,m as compact,Y as forwardRefWithAs,b as isFragment,D as isFragmentInstance,V as mergeProps,K as useRender};\n","import{useRef as o,useState as f}from\"react\";import{flushSync as a}from\"react-dom\";import{useEvent as m}from'./use-event.js';function b(l,r,c){let[i,s]=f(c),e=l!==void 0,t=o(e),u=o(!1),d=o(!1);return e&&!t.current&&!u.current?(u.current=!0,t.current=e,console.error(\"A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.\")):!e&&t.current&&!d.current&&(d.current=!0,t.current=e,console.error(\"A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.\")),[e?l:i,m(n=>(e||a(()=>s(n)),r==null?void 0:r(n)))]}export{b as useControllable};\n","import{useState as u}from\"react\";function l(e){let[t]=u(e);return t}export{l as useDefaultValue};\n","import{isValidElement as f}from\"react\";function p(t={},i=null,n=[]){for(let[e,o]of Object.entries(t))s(n,r(i,e),o);return n}function r(t,i){return t?t+\"[\"+i+\"]\":i}function s(t,i,n){if(Array.isArray(n))for(let[e,o]of n.entries())s(t,r(i,e.toString()),o);else n instanceof Date?t.push([i,n.toISOString()]):typeof n==\"boolean\"?t.push([i,n?\"1\":\"0\"]):typeof n==\"string\"?t.push([i,n]):typeof n==\"number\"?t.push([i,`${n}`]):n==null?t.push([i,\"\"]):c(n)&&!f(n)&&p(n,i,t)}function g(t){var n,e;let i=(n=t==null?void 0:t.form)!=null?n:t.closest(\"form\");if(i){for(let o of i.elements)if(o!==t&&(o.tagName===\"INPUT\"&&o.type===\"submit\"||o.tagName===\"BUTTON\"&&o.type===\"submit\"||o.nodeName===\"INPUT\"&&o.type===\"image\")){o.click();return}(e=i.requestSubmit)==null||e.call(i)}}function c(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let i=Object.getPrototypeOf(t);return i===null||Object.getPrototypeOf(i)===null}export{g as attemptSubmit,p as objectToFormEntries};\n","import{forwardRefWithAs as i,useRender as p}from'../utils/render.js';let a=\"span\";var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,\"aria-hidden\":(d&2)===2?!0:(n=e[\"aria-hidden\"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(d&4)===4&&(d&2)!==2&&{display:\"none\"}}};return p()({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:\"Hidden\"})}let f=i(l);export{f as Hidden,s as HiddenFeatures};\n","import o,{createContext as H,useContext as E,useEffect as m,useState as u}from\"react\";import{createPortal as g}from\"react-dom\";import{useDisposables as h}from'../hooks/use-disposables.js';import{objectToFormEntries as x}from'../utils/form.js';import{compact as y}from'../utils/render.js';import{Hidden as l,HiddenFeatures as d}from'./hidden.js';let f=H(null);function W(t){let[e,r]=u(null);return o.createElement(f.Provider,{value:{target:e}},t.children,o.createElement(l,{features:d.Hidden,ref:r}))}function c({children:t}){let e=E(f);if(!e)return o.createElement(o.Fragment,null,t);let{target:r}=e;return r?g(o.createElement(o.Fragment,null,t),r):null}function j({data:t,form:e,disabled:r,onReset:n,overrides:F}){let[i,a]=u(null),p=h();return m(()=>{if(n&&i)return p.addEventListener(i,\"reset\",n)},[i,e,n]),o.createElement(c,null,o.createElement(C,{setForm:a,formId:e}),x(t).map(([s,v])=>o.createElement(l,{features:d.Hidden,...y({key:s,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,form:e,disabled:r,name:s,value:v,...F})})))}function C({setForm:t,formId:e}){return m(()=>{if(e){let r=document.getElementById(e);r&&t(r)}},[t,e]),e?null:o.createElement(l,{features:d.Hidden,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,ref:r=>{if(!r)return;let n=r.closest(\"form\");n&&t(n)}})}export{j as FormFields,W as FormFieldsProvider,c as HoistFormFields};\n","import n,{createContext as d,useContext as i}from\"react\";let e=d(void 0);function u(){return i(e)}function f({id:t,children:r}){return n.createElement(e.Provider,{value:t},r)}export{f as IdProvider,u as useProvidedId};\n","function o(e){return typeof e!=\"object\"||e===null?!1:\"nodeType\"in e}function t(e){return o(e)&&\"tagName\"in e}function n(e){return t(e)&&\"accessKey\"in e}function i(e){return t(e)&&\"tabIndex\"in e}function r(e){return t(e)&&\"style\"in e}function u(e){return n(e)&&e.nodeName===\"IFRAME\"}function l(e){return n(e)&&e.nodeName===\"INPUT\"}function s(e){return n(e)&&e.nodeName===\"TEXTAREA\"}function m(e){return n(e)&&e.nodeName===\"LABEL\"}function a(e){return n(e)&&e.nodeName===\"FIELDSET\"}function E(e){return n(e)&&e.nodeName===\"LEGEND\"}function L(e){return t(e)?e.matches('a[href],audio[controls],button,details,embed,iframe,img[usemap],input:not([type=\"hidden\"]),label,select,textarea,video[controls]'):!1}export{r as hasInlineStyle,t as isElement,n as isHTMLElement,a as isHTMLFieldSetElement,u as isHTMLIframeElement,l as isHTMLInputElement,m as isHTMLLabelElement,E as isHTMLLegendElement,s as isHTMLTextAreaElement,i as isHTMLorSVGElement,L as isInteractiveElement,o as isNode};\n","import*as n from'./dom.js';function s(l){let e=l.parentElement,t=null;for(;e&&!n.isHTMLFieldSetElement(e);)n.isHTMLLegendElement(e)&&(t=e),e=e.parentElement;let i=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return i&&r(t)?!1:i}function r(l){if(!l)return!1;let e=l.previousElementSibling;for(;e!==null;){if(n.isHTMLLegendElement(e))return!1;e=e.previousElementSibling}return!0}export{s as isDisabledReactIssue7711};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","\"use client\";import m,{createContext as D,useContext as d,useMemo as u,useState as T}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as g}from'../../hooks/use-id.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as y}from'../../hooks/use-slot.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,useRender as S}from'../../utils/render.js';let a=D(null);a.displayName=\"DescriptionContext\";function f(){let r=d(a);if(r===null){let e=new Error(\"You used a <Description /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function w(){var r,e;return(e=(r=d(a))==null?void 0:r.value)!=null?e:void 0}function H(){let[r,e]=T([]);return[r.length>0?r.join(\" \"):void 0,u(()=>function(t){let i=P(n=>(e(o=>[...o,n]),()=>e(o=>{let s=o.slice(),p=s.indexOf(n);return p!==-1&&s.splice(p,1),s}))),l=u(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let I=\"p\";function C(r,e){let c=g(),t=v(),{id:i=`headlessui-description-${c}`,...l}=r,n=f(),o=E(e);x(()=>n.register(i),[i,n.register]);let s=y({...n.slot,disabled:t||!1}),p={ref:o,...n.props,id:i};return S()({ourProps:p,theirProps:l,slot:s,defaultTag:I,name:n.name||\"Description\"})}let _=R(C),M=Object.assign(_,{});export{M as Description,w as useDescribedBy,H as useDescriptions};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","\"use client\";import R,{createContext as D,useContext as h,useMemo as v,useState as k}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as S}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as A}from'../../hooks/use-slot.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as M}from'../../internal/id.js';import*as m from'../../utils/dom.js';import{forwardRefWithAs as I,useRender as H}from'../../utils/render.js';let L=D(null);L.displayName=\"LabelContext\";function C(){let n=h(L);if(n===null){let l=new Error(\"You used a <Label /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(l,C),l}return n}function N(n){var a,e,o;let l=(e=(a=h(L))==null?void 0:a.value)!=null?e:void 0;return((o=n==null?void 0:n.length)!=null?o:0)>0?[l,...n].filter(Boolean).join(\" \"):l}function V({inherit:n=!1}={}){let l=N(),[a,e]=k([]),o=n?[l,...a].filter(Boolean):a;return[o.length>0?o.join(\" \"):void 0,v(()=>function(t){let p=P(i=>(e(u=>[...u,i]),()=>e(u=>{let d=u.slice(),f=d.indexOf(i);return f!==-1&&d.splice(f,1),d}))),b=v(()=>({register:p,slot:t.slot,name:t.name,props:t.props,value:t.value}),[p,t.slot,t.name,t.props,t.value]);return R.createElement(L.Provider,{value:b},t.children)},[e])]}let G=\"label\";function U(n,l){var y;let a=_(),e=C(),o=M(),T=F(),{id:t=`headlessui-label-${a}`,htmlFor:p=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:b=!1,...i}=n,u=B(l);S(()=>e.register(t),[t,e.register]);let d=P(s=>{let g=s.currentTarget;if(!(s.target!==s.currentTarget&&m.isInteractiveElement(s.target))&&(m.isHTMLLabelElement(g)&&s.preventDefault(),e.props&&\"onClick\"in e.props&&typeof e.props.onClick==\"function\"&&e.props.onClick(s),m.isHTMLLabelElement(g))){let r=document.getElementById(g.htmlFor);if(r){let E=r.getAttribute(\"disabled\");if(E===\"true\"||E===\"\")return;let x=r.getAttribute(\"aria-disabled\");if(x===\"true\"||x===\"\")return;(m.isHTMLInputElement(r)&&(r.type===\"file\"||r.type===\"radio\"||r.type===\"checkbox\")||r.role===\"radio\"||r.role===\"checkbox\"||r.role===\"switch\")&&r.click(),r.focus({preventScroll:!0})}}}),f=A({...e.slot,disabled:T||!1}),c={ref:u,...e.props,id:t,htmlFor:p,onClick:d};return b&&(\"onClick\"in c&&(delete c.htmlFor,delete c.onClick),\"onClick\"in i&&delete i.onClick),H()({ourProps:c,theirProps:i,slot:f,defaultTag:p?G:\"div\",name:e.name||\"Label\"})}let j=I(U),Z=Object.assign(j,{});export{Z as Label,C as useLabelContext,N as useLabelledBy,V as useLabels};\n","\"use client\";import r,{createContext as n,useContext as i}from\"react\";let e=n(()=>{});function u(){return i(e)}function C({value:t,children:o}){return r.createElement(e.Provider,{value:t},o)}export{C as CloseProvider,u as useClose};\n","import{useCallback as n}from\"react\";function l(e,r){return e!==null&&r!==null&&typeof e==\"object\"&&typeof r==\"object\"&&\"id\"in e&&\"id\"in r?e.id===r.id:e===r}function u(e=l){return n((r,t)=>{if(typeof e==\"string\"){let o=e;return(r==null?void 0:r[o])===(t==null?void 0:t[o])}return e(r,t)},[e])}export{u as useByComparator};\n","class a extends Map{constructor(t){super();this.factory=t}get(t){let e=super.get(t);return e===void 0&&(e=this.factory(t),this.set(t,e)),e}}export{a as DefaultMap};\n","var h=Object.defineProperty;var v=(t,e,r)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var S=(t,e,r)=>(v(t,typeof e!=\"symbol\"?e+\"\":e,r),r),b=(t,e,r)=>{if(!e.has(t))throw TypeError(\"Cannot \"+r)};var i=(t,e,r)=>(b(t,e,\"read from private field\"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(t):e.set(t,r)},u=(t,e,r,s)=>(b(t,e,\"write to private field\"),s?s.call(t,r):e.set(t,r),r);var n,a,o;import{DefaultMap as m}from'./utils/default-map.js';import{disposables as y}from'./utils/disposables.js';import{env as d}from'./utils/env.js';class T{constructor(e){c(this,n,{});c(this,a,new m(()=>new Set));c(this,o,new Set);S(this,\"disposables\",y());u(this,n,e),d.isServer&&this.disposables.microTask(()=>{this.dispose()})}dispose(){this.disposables.dispose()}get state(){return i(this,n)}subscribe(e,r){if(d.isServer)return()=>{};let s={selector:e,callback:r,current:e(i(this,n))};return i(this,o).add(s),this.disposables.add(()=>{i(this,o).delete(s)})}on(e,r){return d.isServer?()=>{}:(i(this,a).get(e).add(r),this.disposables.add(()=>{i(this,a).get(e).delete(r)}))}send(e){let r=this.reduce(i(this,n),e);if(r!==i(this,n)){u(this,n,r);for(let s of i(this,o)){let l=s.selector(i(this,n));j(s.current,l)||(s.current=l,s.callback(l))}for(let s of i(this,a).get(e.type))s(i(this,n),e)}}}n=new WeakMap,a=new WeakMap,o=new WeakMap;function j(t,e){return Object.is(t,e)?!0:typeof t!=\"object\"||t===null||typeof e!=\"object\"||e===null?!1:Array.isArray(t)&&Array.isArray(e)?t.length!==e.length?!1:f(t[Symbol.iterator](),e[Symbol.iterator]()):t instanceof Map&&e instanceof Map||t instanceof Set&&e instanceof Set?t.size!==e.size?!1:f(t.entries(),e.entries()):p(t)&&p(e)?f(Object.entries(t)[Symbol.iterator](),Object.entries(e)[Symbol.iterator]()):!1}function f(t,e){do{let r=t.next(),s=e.next();if(r.done&&s.done)return!0;if(r.done||s.done||!Object.is(r.value,s.value))return!1}while(!0)}function p(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||Object.getPrototypeOf(e)===null}function k(t){let[e,r]=t(),s=y();return(...l)=>{e(...l),s.dispose(),s.microTask(r)}}export{T as Machine,k as batch,j as shallowEqual};\n","var a=Object.defineProperty;var r=(e,c,t)=>c in e?a(e,c,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[c]=t;var p=(e,c,t)=>(r(e,typeof c!=\"symbol\"?c+\"\":c,t),t);import{Machine as d}from'../machine.js';import{DefaultMap as l}from'../utils/default-map.js';import{match as u}from'../utils/match.js';var k=(t=>(t[t.Push=0]=\"Push\",t[t.Pop=1]=\"Pop\",t))(k||{});let y={[0](e,c){let t=c.id,s=e.stack,i=e.stack.indexOf(t);if(i!==-1){let n=e.stack.slice();return n.splice(i,1),n.push(t),s=n,{...e,stack:s}}return{...e,stack:[...e.stack,t]}},[1](e,c){let t=c.id,s=e.stack.indexOf(t);if(s===-1)return e;let i=e.stack.slice();return i.splice(s,1),{...e,stack:i}}};class o extends d{constructor(){super(...arguments);p(this,\"actions\",{push:t=>this.send({type:0,id:t}),pop:t=>this.send({type:1,id:t})});p(this,\"selectors\",{isTop:(t,s)=>t.stack[t.stack.length-1]===s,inStack:(t,s)=>t.stack.includes(s)})}static new(){return new o({stack:[]})}reduce(t,s){return u(s.type,y,t,s)}}const x=new l(()=>o.new());export{k as ActionTypes,x as stackMachines};\n","/**\n * @license React\n * use-sync-external-store-with-selector.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 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,\n  useSyncExternalStore = React.useSyncExternalStore,\n  useRef = React.useRef,\n  useEffect = React.useEffect,\n  useMemo = React.useMemo,\n  useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot,\n  selector,\n  isEqual\n) {\n  var instRef = useRef(null);\n  if (null === instRef.current) {\n    var inst = { hasValue: !1, value: null };\n    instRef.current = inst;\n  } else inst = instRef.current;\n  instRef = useMemo(\n    function () {\n      function memoizedSelector(nextSnapshot) {\n        if (!hasMemo) {\n          hasMemo = !0;\n          memoizedSnapshot = nextSnapshot;\n          nextSnapshot = selector(nextSnapshot);\n          if (void 0 !== isEqual && inst.hasValue) {\n            var currentSelection = inst.value;\n            if (isEqual(currentSelection, nextSnapshot))\n              return (memoizedSelection = currentSelection);\n          }\n          return (memoizedSelection = nextSnapshot);\n        }\n        currentSelection = memoizedSelection;\n        if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n        var nextSelection = selector(nextSnapshot);\n        if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n          return (memoizedSnapshot = nextSnapshot), currentSelection;\n        memoizedSnapshot = nextSnapshot;\n        return (memoizedSelection = nextSelection);\n      }\n      var hasMemo = !1,\n        memoizedSnapshot,\n        memoizedSelection,\n        maybeGetServerSnapshot =\n          void 0 === getServerSnapshot ? null : getServerSnapshot;\n      return [\n        function () {\n          return memoizedSelector(getSnapshot());\n        },\n        null === maybeGetServerSnapshot\n          ? void 0\n          : function () {\n              return memoizedSelector(maybeGetServerSnapshot());\n            }\n      ];\n    },\n    [getSnapshot, getServerSnapshot, selector, isEqual]\n  );\n  var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n  useEffect(\n    function () {\n      inst.hasValue = !0;\n      inst.value = value;\n    },\n    [value]\n  );\n  useDebugValue(value);\n  return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","import{useSyncExternalStoreWithSelector as a}from\"use-sync-external-store/with-selector\";import{useEvent as t}from'./hooks/use-event.js';import{shallowEqual as o}from'./machine.js';function S(e,n,r=o){return a(t(i=>e.subscribe(s,i)),t(()=>e.state),t(()=>e.state),t(n),r)}function s(e){return e}export{S as useSlice};\n","import{useCallback as n,useId as u}from\"react\";import{stackMachines as p}from'../machines/stack-machine.js';import{useSlice as f}from'../react-glue.js';import{useIsoMorphicEffect as a}from'./use-iso-morphic-effect.js';function I(o,s){let t=u(),r=p.get(s),[i,c]=f(r,n(e=>[r.selectors.isTop(e,t),r.selectors.inStack(e,t)],[r,t]));return a(()=>{if(o)return r.actions.push(t),()=>r.actions.pop(t)},[r,o,t]),o?c?i:!0:!1}export{I as useIsTopLayer};\n","import{disposables as M}from'../utils/disposables.js';import{getOwnerDocument as b}from'../utils/owner.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useIsoMorphicEffect as T}from'./use-iso-morphic-effect.js';let f=new Map,u=new Map;function h(t){var e;let r=(e=u.get(t))!=null?e:0;return u.set(t,r+1),r!==0?()=>m(t):(f.set(t,{\"aria-hidden\":t.getAttribute(\"aria-hidden\"),inert:t.inert}),t.setAttribute(\"aria-hidden\",\"true\"),t.inert=!0,()=>m(t))}function m(t){var i;let r=(i=u.get(t))!=null?i:1;if(r===1?u.delete(t):u.set(t,r-1),r!==1)return;let e=f.get(t);e&&(e[\"aria-hidden\"]===null?t.removeAttribute(\"aria-hidden\"):t.setAttribute(\"aria-hidden\",e[\"aria-hidden\"]),t.inert=e.inert,f.delete(t))}function y(t,{allowed:r,disallowed:e}={}){let i=L(t,\"inert-others\");T(()=>{var d,c;if(!i)return;let a=M();for(let n of(d=e==null?void 0:e())!=null?d:[])n&&a.add(h(n));let s=(c=r==null?void 0:r())!=null?c:[];for(let n of s){if(!n)continue;let l=b(n);if(!l)continue;let o=n.parentElement;for(;o&&o!==l.body;){for(let p of o.children)s.some(E=>p.contains(E))||a.add(h(p));o=o.parentElement}}return a.dispose},[i,r,e])}export{y as useInertOthers};\n","import{useEffect as l}from\"react\";import{disposables as u}from'../utils/disposables.js';import*as c from'../utils/dom.js';import{useLatestValue as d}from'./use-latest-value.js';function p(s,n,o){let i=d(t=>{let e=t.getBoundingClientRect();e.x===0&&e.y===0&&e.width===0&&e.height===0&&o()});l(()=>{if(!s)return;let t=n===null?null:c.isHTMLElement(n)?n:n.current;if(!t)return;let e=u();if(typeof ResizeObserver!=\"undefined\"){let r=new ResizeObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}if(typeof IntersectionObserver!=\"undefined\"){let r=new IntersectionObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}return()=>e.dispose()},[n,i,s])}export{p as useOnDisappear};\n","import{disposables as p}from'./disposables.js';import*as y from'./dom.js';import{match as L}from'./match.js';import{getActiveElement as b,getOwnerDocument as F,getRootNode as f}from'./owner.js';let E=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"details>summary\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\"),S=[\"[data-autofocus]\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var T=(o=>(o[o.First=1]=\"First\",o[o.Previous=2]=\"Previous\",o[o.Next=4]=\"Next\",o[o.Last=8]=\"Last\",o[o.WrapAround=16]=\"WrapAround\",o[o.NoScroll=32]=\"NoScroll\",o[o.AutoFocus=64]=\"AutoFocus\",o))(T||{}),A=(n=>(n[n.Error=0]=\"Error\",n[n.Overflow=1]=\"Overflow\",n[n.Success=2]=\"Success\",n[n.Underflow=3]=\"Underflow\",n))(A||{}),O=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(O||{});function x(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(E)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function h(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(S)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var I=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(I||{});function H(e,r=0){var t;return e===((t=F(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(E)},[1](){let l=e;for(;l!==null;){if(l.matches(E))return!0;l=l.parentElement}return!1}})}function K(e){p().nextFrame(()=>{let r=b(e);r&&y.isHTMLorSVGElement(r)&&!H(r,0)&&w(e)})}var g=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(g||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function w(e){e==null||e.focus({preventScroll:!0})}let _=[\"textarea\",\"input\"].join(\",\");function P(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,_))!=null?t:!1}function G(e,r=t=>t){return e.slice().sort((t,l)=>{let n=r(t),a=r(l);if(n===null||a===null)return 0;let u=n.compareDocumentPosition(a);return u&Node.DOCUMENT_POSITION_FOLLOWING?-1:u&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function R(e,r,t=e===null?document.body:f(e)){return v(x(t),r,{relativeTo:e})}function v(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:n=[]}={}){let a=Array.isArray(e)?e.length>0?f(e[0]):document:f(e),u=Array.isArray(e)?t?G(e):e:r&64?h(e):x(e);n.length>0&&u.length>1&&(u=u.filter(i=>!n.some(d=>d!=null&&\"current\"in d?(d==null?void 0:d.current)===i:d===i))),l=l!=null?l:a==null?void 0:a.activeElement;let o=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),M=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,u.indexOf(l))-1;if(r&4)return Math.max(0,u.indexOf(l))+1;if(r&8)return u.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),N=r&32?{preventScroll:!0}:{},m=0,c=u.length,s;do{if(m>=c||m+c<=0)return 0;let i=M+m;if(r&16)i=(i+c)%c;else{if(i<0)return 3;if(i>=c)return 1}s=u[i],s==null||s.focus(N),m+=o}while(s!==b(s));return r&6&&P(s)&&s.select(),2}export{T as Focus,A as FocusResult,I as FocusableMode,w as focusElement,R as focusFrom,v as focusIn,E as focusableSelector,h as getAutoFocusableElements,x as getFocusableElements,H as isFocusableElement,K as restoreFocusIfNecessary,G as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{useEffect as c}from\"react\";import{useLatestValue as a}from'./use-latest-value.js';function i(t,e,o,n){let u=a(o);c(()=>{if(!t)return;function r(m){u.current(m)}return document.addEventListener(e,r,n),()=>document.removeEventListener(e,r,n)},[t,e,n])}export{i as useDocumentEvent};\n","import{useEffect as a}from\"react\";import{useLatestValue as f}from'./use-latest-value.js';function s(t,e,o,n){let i=f(o);a(()=>{if(!t)return;function r(d){i.current(d)}return window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)},[t,e,n])}export{s as useWindowEvent};\n","import{useCallback as T,useRef as E}from\"react\";import*as d from'../utils/dom.js';import{FocusableMode as g,isFocusableElement as y}from'../utils/focus-management.js';import{isMobile as p}from'../utils/platform.js';import{useDocumentEvent as a}from'./use-document-event.js';import{useLatestValue as L}from'./use-latest-value.js';import{useWindowEvent as x}from'./use-window-event.js';const C=30;function k(o,f,h){let m=L(h),s=T(function(e,c){if(e.defaultPrevented)return;let r=c(e);if(r===null||!r.getRootNode().contains(r)||!r.isConnected)return;let M=function u(n){return typeof n==\"function\"?u(n()):Array.isArray(n)||n instanceof Set?n:[n]}(f);for(let u of M)if(u!==null&&(u.contains(r)||e.composed&&e.composedPath().includes(u)))return;return!y(r,g.Loose)&&r.tabIndex!==-1&&e.preventDefault(),m.current(e,r)},[m,f]),i=E(null);a(o,\"pointerdown\",t=>{var e,c;p()||(i.current=((c=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:c[0])||t.target)},!0),a(o,\"pointerup\",t=>{if(p()||!i.current)return;let e=i.current;return i.current=null,s(t,()=>e)},!0);let l=E({x:0,y:0});a(o,\"touchstart\",t=>{l.current.x=t.touches[0].clientX,l.current.y=t.touches[0].clientY},!0),a(o,\"touchend\",t=>{let e={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY};if(!(Math.abs(e.x-l.current.x)>=C||Math.abs(e.y-l.current.y)>=C))return s(t,()=>d.isHTMLorSVGElement(t.target)?t.target:null)},!0),x(o,\"blur\",t=>s(t,()=>d.isHTMLIframeElement(window.document.activeElement)?window.document.activeElement:null),!0)}export{k as useOutsideClick};\n","import{useMemo as o}from\"react\";import{getOwnerDocument as t,getRootNode as r}from'../utils/owner.js';function u(...e){return o(()=>t(...e),[...e])}function c(...e){return o(()=>r(...e),[...e])}export{u as useOwnerDocument,c as useRootDocument};\n","import{useEffect as d}from\"react\";import{useLatestValue as s}from'./use-latest-value.js';function E(n,e,a,t){let i=s(a);d(()=>{n=n!=null?n:window;function r(o){i.current(o)}return n.addEventListener(e,r,t),()=>n.removeEventListener(e,r,t)},[n,e,t])}export{E as useEventListener};\n","import{useSyncExternalStore as e}from\"react\";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","function d(){let r;return{before({doc:e}){var l;let o=e.documentElement,t=(l=e.defaultView)!=null?l:window;r=Math.max(0,t.innerWidth-o.clientWidth)},after({doc:e,d:o}){let t=e.documentElement,l=Math.max(0,t.clientWidth-t.offsetWidth),n=Math.max(0,r-l);o.style(t,\"paddingRight\",`${n}px`)}}}export{d as adjustScrollbarPadding};\n","import{disposables as u}from'../../utils/disposables.js';import*as i from'../../utils/dom.js';import{isIOS as p}from'../../utils/platform.js';function w(){return p()?{before({doc:o,d:r,meta:m}){function a(s){for(let l of m().containers)for(let c of l())if(c.contains(s))return!0;return!1}r.microTask(()=>{var c;if(window.getComputedStyle(o.documentElement).scrollBehavior!==\"auto\"){let t=u();t.style(o.documentElement,\"scrollBehavior\",\"auto\"),r.add(()=>r.microTask(()=>t.dispose()))}let s=(c=window.scrollY)!=null?c:window.pageYOffset,l=null;r.addEventListener(o,\"click\",t=>{if(i.isHTMLorSVGElement(t.target))try{let e=t.target.closest(\"a\");if(!e)return;let{hash:n}=new URL(e.href),f=o.querySelector(n);i.isHTMLorSVGElement(f)&&!a(f)&&(l=f)}catch{}},!0),r.group(t=>{r.addEventListener(o,\"touchstart\",e=>{if(t.dispose(),i.isHTMLorSVGElement(e.target)&&i.hasInlineStyle(e.target))if(a(e.target)){let n=e.target;for(;n.parentElement&&a(n.parentElement);)n=n.parentElement;t.style(n,\"overscrollBehavior\",\"contain\")}else t.style(e.target,\"touchAction\",\"none\")})}),r.addEventListener(o,\"touchmove\",t=>{if(i.isHTMLorSVGElement(t.target)){if(i.isHTMLInputElement(t.target))return;if(a(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),r.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;s!==t&&window.scrollTo(0,s),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{w as handleIOSLocking};\n","function r(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{r as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as d}from'../../utils/store.js';import{adjustScrollbarPadding as i}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as l}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function r(e){let o={};for(let t of e)Object.assign(o,t(o));return o}let c=d(()=>new Map,{PUSH(e,o){var n;let t=(n=this.get(e))!=null?n:{doc:e,count:0,d:s(),meta:new Set,computedMeta:{}};return t.count++,t.meta.add(o),t.computedMeta=r(t.meta),this.set(e,t),this},POP(e,o){let t=this.get(e);return t&&(t.count--,t.meta.delete(o),t.computedMeta=r(t.meta)),this},SCROLL_PREVENT(e){let o={doc:e.doc,d:e.d,meta(){return e.computedMeta}},t=[l(),i(),p()];t.forEach(({before:n})=>n==null?void 0:n(o)),t.forEach(({after:n})=>n==null?void 0:n(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});c.subscribe(()=>{let e=c.getSnapshot(),o=new Map;for(let[t]of e)o.set(t,t.documentElement.style.overflow);for(let t of e.values()){let n=o.get(t.doc)===\"hidden\",a=t.count!==0;(a&&!n||!a&&n)&&c.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&c.dispatch(\"TEARDOWN\",t)}});export{c as overflows};\n","import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch(\"PUSH\",e,n),()=>t.dispatch(\"POP\",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect};\n","import{useDocumentOverflowLockedEffect as l}from'./document-overflow/use-document-overflow.js';import{useIsTopLayer as m}from'./use-is-top-layer.js';function f(e,c,n=()=>[document.body]){let r=m(e,\"scroll-lock\");l(r,c,t=>{var o;return{containers:[...(o=t.containers)!=null?o:[],n]}})}export{f as useScrollLock};\n","import{useCallback as t,useState as b}from\"react\";function c(u=0){let[r,a]=b(u),g=t(e=>a(e),[]),s=t(e=>a(l=>l|e),[]),m=t(e=>(r&e)===e,[r]),n=t(e=>a(l=>l&~e),[]),F=t(e=>a(l=>l^e),[]);return{flags:r,setFlag:g,addFlag:s,hasFlag:m,removeFlag:n,toggleFlag:F}}export{c as useFlags};\n","var T,S;import{useRef as c,useState as b}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useDisposables as g}from'./use-disposables.js';import{useFlags as y}from'./use-flags.js';import{useIsoMorphicEffect as L}from'./use-iso-morphic-effect.js';typeof process!=\"undefined\"&&typeof globalThis!=\"undefined\"&&typeof Element!=\"undefined\"&&((T=process==null?void 0:process.env)==null?void 0:T[\"NODE_ENV\"])===\"test\"&&typeof((S=Element==null?void 0:Element.prototype)==null?void 0:S.getAnimations)==\"undefined\"&&(Element.prototype.getAnimations=function(){return console.warn([\"Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.\",\"Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.\",\"\",\"Example usage:\",\"```js\",\"import { mockAnimationsApi } from 'jsdom-testing-mocks'\",\"mockAnimationsApi()\",\"```\"].join(`\n`)),[]});var A=(i=>(i[i.None=0]=\"None\",i[i.Closed=1]=\"Closed\",i[i.Enter=2]=\"Enter\",i[i.Leave=4]=\"Leave\",i))(A||{});function x(e){let r={};for(let t in e)e[t]===!0&&(r[`data-${t}`]=\"\");return r}function N(e,r,t,n){let[i,a]=b(t),{hasFlag:s,addFlag:o,removeFlag:l}=y(e&&i?3:0),u=c(!1),f=c(!1),E=g();return L(()=>{var d;if(e){if(t&&a(!0),!r){t&&o(3);return}return(d=n==null?void 0:n.start)==null||d.call(n,t),C(r,{inFlight:u,prepare(){f.current?f.current=!1:f.current=u.current,u.current=!0,!f.current&&(t?(o(3),l(4)):(o(4),l(2)))},run(){f.current?t?(l(3),o(4)):(l(4),o(3)):t?l(1):o(1)},done(){var p;f.current&&D(r)||(u.current=!1,l(7),t||a(!1),(p=n==null?void 0:n.end)==null||p.call(n,t))}})}},[e,t,r,E]),e?[i,{closed:s(1),enter:s(2),leave:s(4),transition:s(2)||s(4)}]:[t,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function C(e,{prepare:r,run:t,done:n,inFlight:i}){let a=m();return j(e,{prepare:r,inFlight:i}),a.nextFrame(()=>{t(),a.requestAnimationFrame(()=>{a.add(M(e,n))})}),a.dispose}function M(e,r){var a,s;let t=m();if(!e)return t.dispose;let n=!1;t.add(()=>{n=!0});let i=(s=(a=e.getAnimations)==null?void 0:a.call(e).filter(o=>o instanceof CSSTransition))!=null?s:[];return i.length===0?(r(),t.dispose):(Promise.allSettled(i.map(o=>o.finished)).then(()=>{n||r()}),t.dispose)}function j(e,{inFlight:r,prepare:t}){if(r!=null&&r.current){t();return}let n=e.style.transition;e.style.transition=\"none\",t(),e.offsetHeight,e.style.transition=n}function D(e){var t,n;return((n=(t=e.getAnimations)==null?void 0:t.call(e))!=null?n:[]).some(i=>i instanceof CSSTransition&&i.playState!==\"finished\")}export{x as transitionDataAttributes,N as useTransition};\n","import{useEffect as f,useRef as s}from\"react\";import{useEvent as i}from'./use-event.js';function m(u,t){let e=s([]),r=i(u);f(()=>{let o=[...e.current];for(let[a,l]of t.entries())if(e.current[a]!==l){let n=r(t,o);return e.current=t,n}},[r,...t])}export{m as useWatch};\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n//  `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n//  the entire query to fail, resulting in no nodes found, which will break a lot\n//  of things... so we have to rely on JS to identify nodes inside an inert container\nvar candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n  var _element$getRootNode;\n  return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n  return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n *  see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n *  False if `node` is falsy.\n */\nvar isInert = function isInert(node, lookUp) {\n  var _node$getAttribute;\n  if (lookUp === void 0) {\n    lookUp = true;\n  }\n  // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n  //  JS API property; we have to check the attribute, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's an active element\n  var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n  var inert = inertAtt === '' || inertAtt === 'true';\n\n  // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n  //  if it weren't for `matches()` not being a function on shadow roots; the following\n  //  code works for any kind of node\n  // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n  //  so it likely would not support `:is([inert] *)` either...\n  var result = inert || lookUp && node && isInert(node.parentNode); // recursive\n\n  return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n  var _node$getAttribute2;\n  // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n  //  to use the attribute directly to check for this, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's a non-editable element\n  var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n  return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n  // even if `includeContainer=false`, we still have to check it for inertness because\n  //  if it's inert, all its children are inert\n  if (isInert(el)) {\n    return [];\n  }\n  var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n *  if a function, implies shadow support is enabled and either returns the shadow root of an element\n *  or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n  var candidates = [];\n  var elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    var element = elementsToCheck.shift();\n    if (isInert(element, false)) {\n      // no need to look up since we're drilling down\n      // anything inside this container will also be inert\n      continue;\n    }\n    if (element.tagName === 'SLOT') {\n      // add shadow dom slot scope (slot itself cannot be focusable)\n      var assigned = element.assignedElements();\n      var content = assigned.length ? assigned : element.children;\n      var nestedCandidates = getCandidatesIteratively(content, true, options);\n      if (options.flatten) {\n        candidates.push.apply(candidates, nestedCandidates);\n      } else {\n        candidates.push({\n          scopeParent: element,\n          candidates: nestedCandidates\n        });\n      }\n    } else {\n      // check candidate element\n      var validCandidate = matches.call(element, candidateSelector);\n      if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n        candidates.push(element);\n      }\n\n      // iterate over shadow content if possible\n      var shadowRoot = element.shadowRoot ||\n      // check for an undisclosed shadow\n      typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n      // no inert look up because we're already drilling down and checking for inertness\n      //  on the way down, so all containers to this root node should have already been\n      //  vetted as non-inert\n      var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n      if (shadowRoot && validShadowRoot) {\n        // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n        //  shadow exists, so look at light dom children as fallback BUT create a scope for any\n        //  child candidates found because they're likely slotted elements (elements that are\n        //  children of the web component element (which has the shadow), in the light dom, but\n        //  slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n        //  _after_ we return from this recursive call\n        var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n        if (options.flatten) {\n          candidates.push.apply(candidates, _nestedCandidates);\n        } else {\n          candidates.push({\n            scopeParent: element,\n            candidates: _nestedCandidates\n          });\n        }\n      } else {\n        // there's not shadow so just dig into the element's (light dom) children\n        //  __without__ giving the element special scope treatment\n        elementsToCheck.unshift.apply(elementsToCheck, element.children);\n      }\n    }\n  }\n  return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n  return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (node.tabIndex < 0) {\n    // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n    // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n    // yet they are still part of the regular tab order; in FF, they get a default\n    // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n    // order, consider their tab index to be 0.\n    // Also 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 ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n *  has tabIndex -1, but needs to be sorted by document order in order for its content to be\n *  inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n  var tabIndex = getTabIndex(node);\n  if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n    return 0;\n  }\n  return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n  return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n  return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n  var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n    return child.tagName === 'SUMMARY';\n  });\n  return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n  for (var i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n  if (!node.name) {\n    return true;\n  }\n  var radioScope = node.form || getRootNode(node);\n  var queryRadios = function queryRadios(name) {\n    return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n  };\n  var radioSet;\n  if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n      return false;\n    }\n  }\n  var checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n  return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n  var _nodeRoot;\n  // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n  //  (but NOT _the_ document; see second 'If' comment below for more).\n  // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n  //  is attached, and the one we need to check if it's in the document or not (because the\n  //  shadow, and all nodes it contains, is never considered in the document since shadows\n  //  behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n  //  is hidden, or is not in the document itself but is detached, it will affect the shadow's\n  //  visibility, including all the nodes it contains). The host could be any normal node,\n  //  or a custom element (i.e. web component). Either way, that's the one that is considered\n  //  part of the document, not the shadow root, nor any of its children (i.e. the node being\n  //  tested).\n  // To further complicate things, we have to look all the way up until we find a shadow HOST\n  //  that is attached (or find none) because the node might be in nested shadows...\n  // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n  //  document (per the docs) and while it's a Document-type object, that document does not\n  //  appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n  //  to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n  //  using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n  //  node is actually detached.\n  // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n  //  if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n  //  from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n  //  `ownerDocument` will be `null`, hence the optional chaining on it.\n  var nodeRoot = node && getRootNode(node);\n  var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n  // in some cases, a detached node will return itself as the root instead of a document or\n  //  shadow root object, in which case, we shouldn't try to look further up the host chain\n  var attached = false;\n  if (nodeRoot && nodeRoot !== node) {\n    var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n    attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n    while (!attached && nodeRootHost) {\n      var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n      // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n      //  which means we need to get the host's host and check if that parent host is contained\n      //  in (i.e. attached to) the document\n      nodeRoot = getRootNode(nodeRootHost);\n      nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n      attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n    }\n  }\n  return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n  var _node$getBoundingClie = node.getBoundingClientRect(),\n    width = _node$getBoundingClie.width,\n    height = _node$getBoundingClie.height;\n  return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n  var displayCheck = _ref.displayCheck,\n    getShadowRoot = _ref.getShadowRoot;\n  // NOTE: visibility will be `undefined` if node is detached from the document\n  //  (see notes about this further down), which means we will consider it visible\n  //  (this is legacy behavior from a very long way back)\n  // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n  //  _visibility_ check, not a _display_ check\n  if (getComputedStyle(node).visibility === 'hidden') {\n    return true;\n  }\n  var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n  var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n    return true;\n  }\n  if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {\n    if (typeof getShadowRoot === 'function') {\n      // figure out if we should consider the node to be in an undisclosed shadow and use the\n      //  'non-zero-area' fallback\n      var originalNode = node;\n      while (node) {\n        var parentElement = node.parentElement;\n        var rootNode = getRootNode(node);\n        if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n        ) {\n          // node has an undisclosed shadow which means we can only treat it as a black box, so we\n          //  fall back to a non-zero-area test\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          // iterate up slot\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          // cross shadow boundary\n          node = rootNode.host;\n        } else {\n          // iterate up normal dom\n          node = parentElement;\n        }\n      }\n      node = originalNode;\n    }\n    // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n    //  (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n    //  it might be a falsy value, which means shadow DOM support is disabled\n\n    // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n    //  now we can just test to see if it would normally be visible or not, provided it's\n    //  attached to the main document.\n    // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n    //  `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n    if (isNodeAttached(node)) {\n      // this works wherever the node is: if there's at least one client rect, it's\n      //  somehow displayed; it also covers the CSS 'display: contents' case where the\n      //  node itself is hidden in place of its contents; and there's no need to search\n      //  up the hierarchy either\n      return !node.getClientRects().length;\n    }\n\n    // Else, the node isn't attached to the document, which means the `getClientRects()`\n    //  API will __always__ return zero rects (this can happen, for example, if React\n    //  is used to render nodes onto a detached tree, as confirmed in this thread:\n    //  https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n    //\n    // It also means that even window.getComputedStyle(node).display will return `undefined`\n    //  because styles are only computed for nodes that are in the document.\n    //\n    // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n    //  somehow. Though it was never stated officially, anyone who has ever used tabbable\n    //  APIs on nodes in detached containers has actually implicitly used tabbable in what\n    //  was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n    //  considering __everything__ to be visible because of the innability to determine styles.\n    //\n    // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n    //  nodes as visible with the 'none' fallback.__\n    if (displayCheck !== 'legacy-full') {\n      return true; // hidden\n    }\n    // else, fallback to 'none' mode and consider the node visible\n  } else if (displayCheck === 'non-zero-area') {\n    // NOTE: Even though this tests that the node's client rect is non-zero to determine\n    //  whether it's displayed, and that a detached node will __always__ have a zero-area\n    //  client rect, we don't special-case for whether the node is attached or not. In\n    //  this mode, we do want to consider nodes that have a zero area to be hidden at all\n    //  times, and that includes attached or not.\n    return isZeroArea(node);\n  }\n\n  // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n  //  it's visible\n  return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n//  unless they are in the _first_ <legend> element of the top-most disabled\n//  fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    var parentNode = node.parentElement;\n    // check if `node` is contained in a disabled <fieldset>\n    while (parentNode) {\n      if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n        // look for the first <legend> among the children of the disabled <fieldset>\n        for (var i = 0; i < parentNode.children.length; i++) {\n          var child = parentNode.children.item(i);\n          // when the first <legend> (in document order) is found\n          if (child.tagName === 'LEGEND') {\n            // if its parent <fieldset> is not nested in another disabled <fieldset>,\n            // return whether `node` is a descendant of its first <legend>\n            return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n          }\n        }\n        // the disabled <fieldset> containing `node` has no <legend>\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n\n  // else, node's tabbable/focusable state should not be affected by a fieldset's\n  //  enabled/disabled state\n  return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n  if (node.disabled ||\n  // we must do an inert look up to filter out any elements inside an inert ancestor\n  //  because we're limited in the type of selectors we can use in JSDom (see related\n  //  note related to `candidateSelectors`)\n  isInert(node) || isHiddenInput(node) || isHidden(node, options) ||\n  // For a details element with a summary, the summary element gets the focus\n  isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n    return false;\n  }\n  return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n  if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n    return false;\n  }\n  return true;\n};\nvar isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {\n  var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  // If a custom element has an explicit negative tabindex,\n  // browsers will not allow tab targeting said element's children.\n  return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar sortByOrder = function sortByOrder(candidates) {\n  var regularTabbables = [];\n  var orderedTabbables = [];\n  candidates.forEach(function (item, i) {\n    var isScope = !!item.scopeParent;\n    var element = isScope ? item.scopeParent : item;\n    var candidateTabindex = getSortOrderTabIndex(element, isScope);\n    var elements = isScope ? sortByOrder(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item: item,\n        isScope: isScope,\n        content: elements\n      });\n    }\n  });\n  return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n    sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n    return acc;\n  }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([container], options.includeContainer, {\n      filter: isNodeMatchingSelectorTabbable.bind(null, options),\n      flatten: false,\n      getShadowRoot: options.getShadowRoot,\n      shadowRootFilter: isValidShadowRootTabbable\n    });\n  } else {\n    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n  }\n  return sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([container], options.includeContainer, {\n      filter: isNodeMatchingSelectorFocusable.bind(null, options),\n      flatten: true,\n      getShadowRoot: options.getShadowRoot\n    });\n  } else {\n    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n  }\n  return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');\nvar isFocusable = function isFocusable(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import r,{createContext as l,useContext as d}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function u(){return d(n)}function c({value:o,children:t}){return r.createElement(n.Provider,{value:o},t)}function s({children:o}){return r.createElement(n.Provider,{value:null},o)}export{c as OpenClosedProvider,s as ResetOpenClosedProvider,i as State,u as useOpenClosed};\n","function t(n){function e(){document.readyState!==\"loading\"&&(n(),document.removeEventListener(\"DOMContentLoaded\",e))}typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"DOMContentLoaded\",e),e())}export{t as onDocumentReady};\n","import{onDocumentReady as d}from'./document-ready.js';import*as u from'./dom.js';import{focusableSelector as i}from'./focus-management.js';let n=[];d(()=>{function e(t){if(!u.isHTMLorSVGElement(t.target)||t.target===document.body||n[0]===t.target)return;let r=t.target;r=r.closest(i),n.unshift(r!=null?r:t.target),n=n.filter(o=>o!=null&&o.isConnected),n.splice(10)}window.addEventListener(\"click\",e,{capture:!0}),window.addEventListener(\"mousedown\",e,{capture:!0}),window.addEventListener(\"focus\",e,{capture:!0}),document.body.addEventListener(\"click\",e,{capture:!0}),document.body.addEventListener(\"mousedown\",e,{capture:!0}),document.body.addEventListener(\"focus\",e,{capture:!0})});export{n as history};\n","import{useEffect as u,useRef as n}from\"react\";import{microTask as o}from'../utils/micro-task.js';import{useEvent as f}from'./use-event.js';function c(t){let r=f(t),e=n(!1);u(()=>(e.current=!1,()=>{e.current=!0,o(()=>{e.current&&r()})}),[r])}export{c as useOnUnmount};\n","import t,{createContext as r,useContext as c}from\"react\";let e=r(!1);function a(){return c(e)}function l(o){return t.createElement(e.Provider,{value:o.force},o.children)}export{l as ForcePortalRoot,a as usePortalRoot};\n","\"use client\";import i,{Fragment as R,createContext as E,useContext as P,useEffect as A,useMemo as G,useRef as x,useState as M}from\"react\";import{createPortal as b}from\"react-dom\";import{useDisposables as O}from'../../hooks/use-disposables.js';import{useEvent as L}from'../../hooks/use-event.js';import{useOnUnmount as F}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as H}from'../../hooks/use-owner.js';import{optionalRef as h,useSyncRefs as T}from'../../hooks/use-sync-refs.js';import{usePortalRoot as U}from'../../internal/portal-force-root.js';import{env as N}from'../../utils/env.js';import{forwardRefWithAs as f,useRender as d}from'../../utils/render.js';function W(e){let o=U(),l=P(c),[r,p]=M(()=>{var s;if(!o&&l!==null)return(s=l.current)!=null?s:null;if(N.isServer)return null;let t=e==null?void 0:e.getElementById(\"headlessui-portal-root\");if(t)return t;if(e===null)return null;let n=e.createElement(\"div\");return n.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(n)});return A(()=>{r!==null&&(e!=null&&e.body.contains(r)||e==null||e.body.appendChild(r))},[r,e]),A(()=>{o||l!==null&&p(l.current)},[l,p,o]),r}let _=R,j=f(function(o,l){let{ownerDocument:r=null,...p}=o,t=x(null),n=T(h(a=>{t.current=a}),l),s=H(t.current),C=r!=null?r:s,u=W(C),y=P(m),g=O(),v=d();return F(()=>{var a;u&&u.childNodes.length<=0&&((a=u.parentElement)==null||a.removeChild(u))}),u?b(i.createElement(\"div\",{\"data-headlessui-portal\":\"\",ref:a=>{g.dispose(),y&&a&&g.add(y.register(a))}},v({ourProps:{ref:n},theirProps:p,slot:{},defaultTag:_,name:\"Portal\"})),u):null});function S(e,o){let l=T(o),{enabled:r=!0,ownerDocument:p,...t}=e,n=d();return r?i.createElement(j,{...t,ownerDocument:p,ref:l}):n({ourProps:{ref:l},theirProps:t,slot:{},defaultTag:_,name:\"Portal\"})}let I=R,c=E(null);function D(e,o){let{target:l,...r}=e,t={ref:T(o)},n=d();return i.createElement(c.Provider,{value:l},n({ourProps:t,theirProps:r,defaultTag:I,name:\"Popover.Group\"}))}let m=E(null);function ee(){let e=P(m),o=x([]),l=L(t=>(o.current.push(t),e&&e.register(t),()=>r(t))),r=L(t=>{let n=o.current.indexOf(t);n!==-1&&o.current.splice(n,1),e&&e.unregister(t)}),p=G(()=>({register:l,unregister:r,portals:o}),[l,r,o]);return[o,G(()=>function({children:n}){return i.createElement(m.Provider,{value:p},n)},[p])]}let J=f(S),X=f(D),te=Object.assign(J,{Group:X});export{te as Portal,X as PortalGroup,ee as useNestedPortals};\n","import{Keys as u}from'../components/keyboard.js';import{useEventListener as i}from'./use-event-listener.js';import{useIsTopLayer as f}from'./use-is-top-layer.js';function a(o,r=typeof document!=\"undefined\"?document.defaultView:null,t){let n=f(o,\"escape\");i(r,\"keydown\",e=>{n&&(e.defaultPrevented||e.key===u.Escape&&t(e))})}export{a as useEscape};\n","import{useState as i}from\"react\";import{useIsoMorphicEffect as s}from'./use-iso-morphic-effect.js';function f(){var t;let[e]=i(()=>typeof window!=\"undefined\"&&typeof window.matchMedia==\"function\"?window.matchMedia(\"(pointer: coarse)\"):null),[o,c]=i((t=e==null?void 0:e.matches)!=null?t:!1);return s(()=>{if(!e)return;function n(r){c(r.matches)}return e.addEventListener(\"change\",n),()=>e.removeEventListener(\"change\",n)},[e]),o}export{f as useIsTouchDevice};\n","import s,{createContext as h,useContext as b,useState as p}from\"react\";import{Hidden as M,HiddenFeatures as v}from'../internal/hidden.js';import*as f from'../utils/dom.js';import{getOwnerDocument as a}from'../utils/owner.js';import{useEvent as m}from'./use-event.js';function S({defaultContainers:l=[],portals:n,mainTreeNode:o}={}){let c=m(()=>{var r,u;let i=a(o),t=[];for(let e of l)e!==null&&(f.isElement(e)?t.push(e):\"current\"in e&&f.isElement(e.current)&&t.push(e.current));if(n!=null&&n.current)for(let e of n.current)t.push(e);for(let e of(r=i==null?void 0:i.querySelectorAll(\"html > *, body > *\"))!=null?r:[])e!==document.body&&e!==document.head&&f.isElement(e)&&e.id!==\"headlessui-portal-root\"&&(o&&(e.contains(o)||e.contains((u=o==null?void 0:o.getRootNode())==null?void 0:u.host))||t.some(E=>e.contains(E))||t.push(e));return t});return{resolveContainers:c,contains:m(i=>c().some(t=>t.contains(i)))}}let d=h(null);function j({children:l,node:n}){let[o,c]=p(null),i=x(n!=null?n:o);return s.createElement(d.Provider,{value:i},l,i===null&&s.createElement(M,{features:v.Hidden,ref:t=>{var r,u;if(t){for(let e of(u=(r=a(t))==null?void 0:r.querySelectorAll(\"html > *, body > *\"))!=null?u:[])if(e!==document.body&&e!==document.head&&f.isElement(e)&&e!=null&&e.contains(t)){c(e);break}}}}))}function x(l=null){var n;return(n=b(d))!=null?n:l}export{j as MainTreeProvider,x as useMainTreeNode,S as useRootContainers};\n","import*as t from\"react\";import{env as f}from'../utils/env.js';function s(){let r=typeof document==\"undefined\";return\"useSyncExternalStore\"in t?(o=>o.useSyncExternalStore)(t)(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=t.useState(f.isHandoffComplete);return e&&f.isHandoffComplete===!1&&n(!1),t.useEffect(()=>{e!==!0&&n(!0)},[e]),t.useEffect(()=>f.handoff(),[]),r?!1:e}export{l as useServerHandoffComplete};\n","import{useRef as r}from\"react\";import{useIsoMorphicEffect as t}from'./use-iso-morphic-effect.js';function f(){let e=r(!1);return t(()=>(e.current=!0,()=>{e.current=!1}),[]),e}export{f as useIsMounted};\n","import{useRef as o}from\"react\";import{useWindowEvent as t}from'./use-window-event.js';var a=(r=>(r[r.Forwards=0]=\"Forwards\",r[r.Backwards=1]=\"Backwards\",r))(a||{});function u(){let e=o(0);return t(!0,\"keydown\",r=>{r.key===\"Tab\"&&(e.current=r.shiftKey?1:0)},!0),e}export{a as Direction,u as useTabDirection};\n","\"use client\";import F,{useRef as M}from\"react\";import{useDisposables as W}from'../../hooks/use-disposables.js';import{useEvent as O}from'../../hooks/use-event.js';import{useEventListener as K}from'../../hooks/use-event-listener.js';import{useIsMounted as P}from'../../hooks/use-is-mounted.js';import{useIsTopLayer as C}from'../../hooks/use-is-top-layer.js';import{useOnUnmount as q}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as J}from'../../hooks/use-owner.js';import{useServerHandoffComplete as X}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as z}from'../../hooks/use-sync-refs.js';import{Direction as y,useTabDirection as D}from'../../hooks/use-tab-direction.js';import{useWatch as R}from'../../hooks/use-watch.js';import{Hidden as _,HiddenFeatures as S}from'../../internal/hidden.js';import{history as H}from'../../utils/active-element-history.js';import*as i from'../../utils/dom.js';import{Focus as m,FocusResult as h,focusElement as p,focusIn as d}from'../../utils/focus-management.js';import{match as j}from'../../utils/match.js';import{microTask as U}from'../../utils/micro-task.js';import{isActiveElement as Q}from'../../utils/owner.js';import{forwardRefWithAs as Y,useRender as Z}from'../../utils/render.js';function x(o){if(!o)return new Set;if(typeof o==\"function\")return new Set(o());let t=new Set;for(let e of o.current)i.isElement(e.current)&&t.add(e.current);return t}let $=\"div\";var G=(n=>(n[n.None=0]=\"None\",n[n.InitialFocus=1]=\"InitialFocus\",n[n.TabLock=2]=\"TabLock\",n[n.FocusLock=4]=\"FocusLock\",n[n.RestoreFocus=8]=\"RestoreFocus\",n[n.AutoFocus=16]=\"AutoFocus\",n))(G||{});function w(o,t){let e=M(null),r=z(e,t),{initialFocus:u,initialFocusFallback:a,containers:n,features:s=15,...f}=o;X()||(s=0);let l=J(e.current);re(s,{ownerDocument:l});let T=ne(s,{ownerDocument:l,container:e,initialFocus:u,initialFocusFallback:a});oe(s,{ownerDocument:l,container:e,containers:n,previousActiveElement:T});let g=D(),A=O(c=>{if(!i.isHTMLElement(e.current))return;let E=e.current;(V=>V())(()=>{j(g.current,{[y.Forwards]:()=>{d(E,m.First,{skipElements:[c.relatedTarget,a]})},[y.Backwards]:()=>{d(E,m.Last,{skipElements:[c.relatedTarget,a]})}})})}),v=C(!!(s&2),\"focus-trap#tab-lock\"),N=W(),b=M(!1),k={ref:r,onKeyDown(c){c.key==\"Tab\"&&(b.current=!0,N.requestAnimationFrame(()=>{b.current=!1}))},onBlur(c){if(!(s&4))return;let E=x(n);i.isHTMLElement(e.current)&&E.add(e.current);let L=c.relatedTarget;i.isHTMLorSVGElement(L)&&L.dataset.headlessuiFocusGuard!==\"true\"&&(I(E,L)||(b.current?d(e.current,j(g.current,{[y.Forwards]:()=>m.Next,[y.Backwards]:()=>m.Previous})|m.WrapAround,{relativeTo:c.target}):i.isHTMLorSVGElement(c.target)&&p(c.target)))}},B=Z();return F.createElement(F.Fragment,null,v&&F.createElement(_,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:A,features:S.Focusable}),B({ourProps:k,theirProps:f,defaultTag:$,name:\"FocusTrap\"}),v&&F.createElement(_,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:A,features:S.Focusable}))}let ee=Y(w),ge=Object.assign(ee,{features:G});function te(o=!0){let t=M(H.slice());return R(([e],[r])=>{r===!0&&e===!1&&U(()=>{t.current.splice(0)}),r===!1&&e===!0&&(t.current=H.slice())},[o,H,t]),O(()=>{var e;return(e=t.current.find(r=>r!=null&&r.isConnected))!=null?e:null})}function re(o,{ownerDocument:t}){let e=!!(o&8),r=te(e);R(()=>{e||Q(t==null?void 0:t.body)&&p(r())},[e]),q(()=>{e&&p(r())})}function ne(o,{ownerDocument:t,container:e,initialFocus:r,initialFocusFallback:u}){let a=M(null),n=C(!!(o&1),\"focus-trap#initial-focus\"),s=P();return R(()=>{if(o===0)return;if(!n){u!=null&&u.current&&p(u.current);return}let f=e.current;f&&U(()=>{if(!s.current)return;let l=t==null?void 0:t.activeElement;if(r!=null&&r.current){if((r==null?void 0:r.current)===l){a.current=l;return}}else if(f.contains(l)){a.current=l;return}if(r!=null&&r.current)p(r.current);else{if(o&16){if(d(f,m.First|m.AutoFocus)!==h.Error)return}else if(d(f,m.First)!==h.Error)return;if(u!=null&&u.current&&(p(u.current),(t==null?void 0:t.activeElement)===u.current))return;console.warn(\"There are no focusable elements inside the <FocusTrap />\")}a.current=t==null?void 0:t.activeElement})},[u,n,o]),a}function oe(o,{ownerDocument:t,container:e,containers:r,previousActiveElement:u}){let a=P(),n=!!(o&4);K(t==null?void 0:t.defaultView,\"focus\",s=>{if(!n||!a.current)return;let f=x(r);i.isHTMLElement(e.current)&&f.add(e.current);let l=u.current;if(!l)return;let T=s.target;i.isHTMLElement(T)?I(f,T)?(u.current=T,p(T)):(s.preventDefault(),s.stopPropagation(),p(l)):p(u.current)},!0)}function I(o,t){for(let e of o)if(e.contains(t))return!0;return!1}export{ge as FocusTrap,G as FocusTrapFeatures};\n","\"use client\";import c,{Fragment as k,createContext as ne,useContext as q,useEffect as ge,useMemo as ie,useRef as b,useState as O}from\"react\";import{useDisposables as ve}from'../../hooks/use-disposables.js';import{useEvent as E}from'../../hooks/use-event.js';import{useIsMounted as be}from'../../hooks/use-is-mounted.js';import{useIsoMorphicEffect as D}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as Ee}from'../../hooks/use-latest-value.js';import{useServerHandoffComplete as re}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as oe}from'../../hooks/use-sync-refs.js';import{transitionDataAttributes as Se,useTransition as Re}from'../../hooks/use-transition.js';import{OpenClosedProvider as ye,State as x,useOpenClosed as se}from'../../internal/open-closed.js';import{classNames as Pe}from'../../utils/class-names.js';import{match as le}from'../../utils/match.js';import{RenderFeatures as xe,RenderStrategy as P,compact as Ne,forwardRefWithAs as J,isFragment as _e,useRender as ae}from'../../utils/render.js';function ue(e){var t;return!!(e.enter||e.enterFrom||e.enterTo||e.leave||e.leaveFrom||e.leaveTo)||!_e((t=e.as)!=null?t:de)||c.Children.count(e.children)===1}let V=ne(null);V.displayName=\"TransitionContext\";var De=(n=>(n.Visible=\"visible\",n.Hidden=\"hidden\",n))(De||{});function He(){let e=q(V);if(e===null)throw new Error(\"A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.\");return e}function Ae(){let e=q(w);if(e===null)throw new Error(\"A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.\");return e}let w=ne(null);w.displayName=\"NestingContext\";function M(e){return\"children\"in e?M(e.children):e.current.filter(({el:t})=>t.current!==null).filter(({state:t})=>t===\"visible\").length>0}function Te(e,t){let n=Ee(e),l=b([]),S=be(),R=ve(),d=E((o,i=P.Hidden)=>{let a=l.current.findIndex(({el:s})=>s===o);a!==-1&&(le(i,{[P.Unmount](){l.current.splice(a,1)},[P.Hidden](){l.current[a].state=\"hidden\"}}),R.microTask(()=>{var s;!M(l)&&S.current&&((s=n.current)==null||s.call(n))}))}),y=E(o=>{let i=l.current.find(({el:a})=>a===o);return i?i.state!==\"visible\"&&(i.state=\"visible\"):l.current.push({el:o,state:\"visible\"}),()=>d(o,P.Unmount)}),C=b([]),p=b(Promise.resolve()),h=b({enter:[],leave:[]}),g=E((o,i,a)=>{C.current.splice(0),t&&(t.chains.current[i]=t.chains.current[i].filter(([s])=>s!==o)),t==null||t.chains.current[i].push([o,new Promise(s=>{C.current.push(s)})]),t==null||t.chains.current[i].push([o,new Promise(s=>{Promise.all(h.current[i].map(([r,f])=>f)).then(()=>s())})]),i===\"enter\"?p.current=p.current.then(()=>t==null?void 0:t.wait.current).then(()=>a(i)):a(i)}),v=E((o,i,a)=>{Promise.all(h.current[i].splice(0).map(([s,r])=>r)).then(()=>{var s;(s=C.current.shift())==null||s()}).then(()=>a(i))});return ie(()=>({children:l,register:y,unregister:d,onStart:g,onStop:v,wait:p,chains:h}),[y,d,l,g,v,h,p])}let de=k,fe=xe.RenderStrategy;function Fe(e,t){var ee,te;let{transition:n=!0,beforeEnter:l,afterEnter:S,beforeLeave:R,afterLeave:d,enter:y,enterFrom:C,enterTo:p,entered:h,leave:g,leaveFrom:v,leaveTo:o,...i}=e,[a,s]=O(null),r=b(null),f=ue(e),U=oe(...f?[r,t,s]:t===null?[]:[t]),H=(ee=i.unmount)==null||ee?P.Unmount:P.Hidden,{show:u,appear:z,initial:K}=He(),[m,j]=O(u?\"visible\":\"hidden\"),Q=Ae(),{register:A,unregister:F}=Q;D(()=>A(r),[A,r]),D(()=>{if(H===P.Hidden&&r.current){if(u&&m!==\"visible\"){j(\"visible\");return}return le(m,{[\"hidden\"]:()=>F(r),[\"visible\"]:()=>A(r)})}},[m,r,A,F,u,H]);let G=re();D(()=>{if(f&&G&&m===\"visible\"&&r.current===null)throw new Error(\"Did you forget to passthrough the `ref` to the actual DOM node?\")},[r,m,G,f]);let ce=K&&!z,Y=z&&u&&K,B=b(!1),I=Te(()=>{B.current||(j(\"hidden\"),F(r))},Q),Z=E(W=>{B.current=!0;let L=W?\"enter\":\"leave\";I.onStart(r,L,_=>{_===\"enter\"?l==null||l():_===\"leave\"&&(R==null||R())})}),$=E(W=>{let L=W?\"enter\":\"leave\";B.current=!1,I.onStop(r,L,_=>{_===\"enter\"?S==null||S():_===\"leave\"&&(d==null||d())}),L===\"leave\"&&!M(I)&&(j(\"hidden\"),F(r))});ge(()=>{f&&n||(Z(u),$(u))},[u,f,n]);let pe=(()=>!(!n||!f||!G||ce))(),[,T]=Re(pe,a,u,{start:Z,end:$}),Ce=Ne({ref:U,className:((te=Pe(i.className,Y&&y,Y&&C,T.enter&&y,T.enter&&T.closed&&C,T.enter&&!T.closed&&p,T.leave&&g,T.leave&&!T.closed&&v,T.leave&&T.closed&&o,!T.transition&&u&&h))==null?void 0:te.trim())||void 0,...Se(T)}),N=0;m===\"visible\"&&(N|=x.Open),m===\"hidden\"&&(N|=x.Closed),u&&m===\"hidden\"&&(N|=x.Opening),!u&&m===\"visible\"&&(N|=x.Closing);let he=ae();return c.createElement(w.Provider,{value:I},c.createElement(ye,{value:N},he({ourProps:Ce,theirProps:i,defaultTag:de,features:fe,visible:m===\"visible\",name:\"Transition.Child\"})))}function Ie(e,t){let{show:n,appear:l=!1,unmount:S=!0,...R}=e,d=b(null),y=ue(e),C=oe(...y?[d,t]:t===null?[]:[t]);re();let p=se();if(n===void 0&&p!==null&&(n=(p&x.Open)===x.Open),n===void 0)throw new Error(\"A <Transition /> is used but it is missing a `show={true | false}` prop.\");let[h,g]=O(n?\"visible\":\"hidden\"),v=Te(()=>{n||g(\"hidden\")}),[o,i]=O(!0),a=b([n]);D(()=>{o!==!1&&a.current[a.current.length-1]!==n&&(a.current.push(n),i(!1))},[a,n]);let s=ie(()=>({show:n,appear:l,initial:o}),[n,l,o]);D(()=>{n?g(\"visible\"):!M(v)&&d.current!==null&&g(\"hidden\")},[n,v]);let r={unmount:S},f=E(()=>{var u;o&&i(!1),(u=e.beforeEnter)==null||u.call(e)}),U=E(()=>{var u;o&&i(!1),(u=e.beforeLeave)==null||u.call(e)}),H=ae();return c.createElement(w.Provider,{value:v},c.createElement(V.Provider,{value:s},H({ourProps:{...r,as:k,children:c.createElement(me,{ref:C,...r,...R,beforeEnter:f,beforeLeave:U})},theirProps:{},defaultTag:k,features:fe,visible:h===\"visible\",name:\"Transition\"})))}function Le(e,t){let n=q(V)!==null,l=se()!==null;return c.createElement(c.Fragment,null,!n&&l?c.createElement(X,{ref:t,...e}):c.createElement(me,{ref:t,...e}))}let X=J(Ie),me=J(Fe),Oe=J(Le),Ke=Object.assign(X,{Child:Oe,Root:X});export{Ke as Transition,Oe as TransitionChild};\n","\"use client\";import l,{Fragment as $,createContext as pe,createRef as se,useCallback as de,useContext as ue,useEffect as Te,useMemo as fe,useReducer as ge,useRef as j}from\"react\";import{useEscape as ce}from'../../hooks/use-escape.js';import{useEvent as A}from'../../hooks/use-event.js';import{useId as k}from'../../hooks/use-id.js';import{useInertOthers as me}from'../../hooks/use-inert-others.js';import{useIsTouchDevice as De}from'../../hooks/use-is-touch-device.js';import{useIsoMorphicEffect as Pe}from'../../hooks/use-iso-morphic-effect.js';import{useOnDisappear as ye}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ee}from'../../hooks/use-outside-click.js';import{useOwnerDocument as Ae}from'../../hooks/use-owner.js';import{MainTreeProvider as Y,useMainTreeNode as _e,useRootContainers as Ce}from'../../hooks/use-root-containers.js';import{useScrollLock as Re}from'../../hooks/use-scroll-lock.js';import{useServerHandoffComplete as Fe}from'../../hooks/use-server-handoff-complete.js';import{useSlot as L}from'../../hooks/use-slot.js';import{useSyncRefs as G}from'../../hooks/use-sync-refs.js';import{CloseProvider as be}from'../../internal/close-provider.js';import{ResetOpenClosedProvider as ve,State as x,useOpenClosed as J}from'../../internal/open-closed.js';import{ForcePortalRoot as K}from'../../internal/portal-force-root.js';import{stackMachines as Le}from'../../machines/stack-machine.js';import{useSlice as xe}from'../../react-glue.js';import{match as he}from'../../utils/match.js';import{RenderFeatures as X,forwardRefWithAs as _,useRender as h}from'../../utils/render.js';import{Description as V,useDescriptions as Oe}from'../description/description.js';import{FocusTrap as Se,FocusTrapFeatures as C}from'../focus-trap/focus-trap.js';import{Portal as Ie,PortalGroup as Me,useNestedPortals as ke}from'../portal/portal.js';import{Transition as Ge,TransitionChild as q}from'../transition/transition.js';var we=(o=>(o[o.Open=0]=\"Open\",o[o.Closed=1]=\"Closed\",o))(we||{}),Be=(t=>(t[t.SetTitleId=0]=\"SetTitleId\",t))(Be||{});let Ue={[0](e,t){return e.titleId===t.id?e:{...e,titleId:t.id}}},w=pe(null);w.displayName=\"DialogContext\";function O(e){let t=ue(w);if(t===null){let o=new Error(`<${e} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(o,O),o}return t}function He(e,t){return he(t.type,Ue,e,t)}let z=_(function(t,o){let a=k(),{id:n=`headlessui-dialog-${a}`,open:i,onClose:p,initialFocus:d,role:s=\"dialog\",autoFocus:f=!0,__demoMode:u=!1,unmount:y=!1,...S}=t,R=j(!1);s=function(){return s===\"dialog\"||s===\"alertdialog\"?s:(R.current||(R.current=!0,console.warn(`Invalid role [${s}] passed to <Dialog />. Only \\`dialog\\` and and \\`alertdialog\\` are supported. Using \\`dialog\\` instead.`)),\"dialog\")}();let g=J();i===void 0&&g!==null&&(i=(g&x.Open)===x.Open);let T=j(null),I=G(T,o),F=Ae(T.current),c=i?0:1,[b,Q]=ge(He,{titleId:null,descriptionId:null,panelRef:se()}),m=A(()=>p(!1)),B=A(r=>Q({type:0,id:r})),D=Fe()?c===0:!1,[Z,ee]=ke(),te={get current(){var r;return(r=b.panelRef.current)!=null?r:T.current}},v=_e(),{resolveContainers:M}=Ce({mainTreeNode:v,portals:Z,defaultContainers:[te]}),U=g!==null?(g&x.Closing)===x.Closing:!1;me(u||U?!1:D,{allowed:A(()=>{var r,W;return[(W=(r=T.current)==null?void 0:r.closest(\"[data-headlessui-portal]\"))!=null?W:null]}),disallowed:A(()=>{var r;return[(r=v==null?void 0:v.closest(\"body > *:not(#headlessui-portal-root)\"))!=null?r:null]})});let P=Le.get(null);Pe(()=>{if(D)return P.actions.push(n),()=>P.actions.pop(n)},[P,n,D]);let H=xe(P,de(r=>P.selectors.isTop(r,n),[P,n]));Ee(H,M,r=>{r.preventDefault(),m()}),ce(H,F==null?void 0:F.defaultView,r=>{r.preventDefault(),r.stopPropagation(),document.activeElement&&\"blur\"in document.activeElement&&typeof document.activeElement.blur==\"function\"&&document.activeElement.blur(),m()}),Re(u||U?!1:D,F,M),ye(D,T,m);let[oe,ne]=Oe(),re=fe(()=>[{dialogState:c,close:m,setTitleId:B,unmount:y},b],[c,m,B,y,b]),N=L({open:c===0}),le={ref:I,id:n,role:s,tabIndex:-1,\"aria-modal\":u?void 0:c===0?!0:void 0,\"aria-labelledby\":b.titleId,\"aria-describedby\":oe,unmount:y},ae=!De(),E=C.None;D&&!u&&(E|=C.RestoreFocus,E|=C.TabLock,f&&(E|=C.AutoFocus),ae&&(E|=C.InitialFocus));let ie=h();return l.createElement(ve,null,l.createElement(K,{force:!0},l.createElement(Ie,null,l.createElement(w.Provider,{value:re},l.createElement(Me,{target:T},l.createElement(K,{force:!1},l.createElement(ne,{slot:N},l.createElement(ee,null,l.createElement(Se,{initialFocus:d,initialFocusFallback:T,containers:M,features:E},l.createElement(be,{value:m},ie({ourProps:le,theirProps:S,slot:N,defaultTag:Ne,features:We,visible:c===0,name:\"Dialog\"})))))))))))}),Ne=\"div\",We=X.RenderStrategy|X.Static;function $e(e,t){let{transition:o=!1,open:a,...n}=e,i=J(),p=e.hasOwnProperty(\"open\")||i!==null,d=e.hasOwnProperty(\"onClose\");if(!p&&!d)throw new Error(\"You have to provide an `open` and an `onClose` prop to the `Dialog` component.\");if(!p)throw new Error(\"You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.\");if(!d)throw new Error(\"You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.\");if(!i&&typeof e.open!=\"boolean\")throw new Error(`You provided an \\`open\\` prop to the \\`Dialog\\`, but the value is not a boolean. Received: ${e.open}`);if(typeof e.onClose!=\"function\")throw new Error(`You provided an \\`onClose\\` prop to the \\`Dialog\\`, but the value is not a function. Received: ${e.onClose}`);return(a!==void 0||o)&&!n.static?l.createElement(Y,null,l.createElement(Ge,{show:a,transition:o,unmount:n.unmount},l.createElement(z,{ref:t,...n}))):l.createElement(Y,null,l.createElement(z,{ref:t,open:a,...n}))}let je=\"div\";function Ye(e,t){let o=k(),{id:a=`headlessui-dialog-panel-${o}`,transition:n=!1,...i}=e,[{dialogState:p,unmount:d},s]=O(\"Dialog.Panel\"),f=G(t,s.panelRef),u=L({open:p===0}),y=A(I=>{I.stopPropagation()}),S={ref:f,id:a,onClick:y},R=n?q:$,g=n?{unmount:d}:{},T=h();return l.createElement(R,{...g},T({ourProps:S,theirProps:i,slot:u,defaultTag:je,name:\"Dialog.Panel\"}))}let Je=\"div\";function Ke(e,t){let{transition:o=!1,...a}=e,[{dialogState:n,unmount:i}]=O(\"Dialog.Backdrop\"),p=L({open:n===0}),d={ref:t,\"aria-hidden\":!0},s=o?q:$,f=o?{unmount:i}:{},u=h();return l.createElement(s,{...f},u({ourProps:d,theirProps:a,slot:p,defaultTag:Je,name:\"Dialog.Backdrop\"}))}let Xe=\"h2\";function Ve(e,t){let o=k(),{id:a=`headlessui-dialog-title-${o}`,...n}=e,[{dialogState:i,setTitleId:p}]=O(\"Dialog.Title\"),d=G(t);Te(()=>(p(a),()=>p(null)),[a,p]);let s=L({open:i===0}),f={ref:d,id:a};return h()({ourProps:f,theirProps:n,slot:s,defaultTag:Xe,name:\"Dialog.Title\"})}let qe=_($e),ze=_(Ye),Lt=_(Ke),Qe=_(Ve),xt=V,ht=Object.assign(qe,{Panel:ze,Title:Qe,Description:V});export{ht as Dialog,Lt as DialogBackdrop,xt as DialogDescription,ze as DialogPanel,Qe as DialogTitle};\n","\"use client\";import{useFocusRing as Z}from\"@react-aria/focus\";import{useHover as ee}from\"@react-aria/interactions\";import _,{createContext as te,useCallback as ge,useContext as oe,useMemo as M,useReducer as Oe,useRef as W}from\"react\";import{useByComparator as Pe}from'../../hooks/use-by-comparator.js';import{useControllable as De}from'../../hooks/use-controllable.js';import{useDefaultValue as ve}from'../../hooks/use-default-value.js';import{useEvent as w}from'../../hooks/use-event.js';import{useId as B}from'../../hooks/use-id.js';import{useIsoMorphicEffect as re}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as ne}from'../../hooks/use-latest-value.js';import{useSlot as V}from'../../hooks/use-slot.js';import{useSyncRefs as K}from'../../hooks/use-sync-refs.js';import{useDisabled as ie}from'../../internal/disabled.js';import{FormFields as Ae}from'../../internal/form-fields.js';import{useProvidedId as _e}from'../../internal/id.js';import{isDisabledReactIssue7711 as ae}from'../../utils/bugs.js';import{Focus as H,FocusResult as pe,focusIn as le,sortByDomNode as Ge}from'../../utils/focus-management.js';import{attemptSubmit as Ee}from'../../utils/form.js';import{match as xe}from'../../utils/match.js';import{isActiveElement as $}from'../../utils/owner.js';import{forwardRefWithAs as j,mergeProps as se,useRender as J}from'../../utils/render.js';import{Description as Ce,useDescribedBy as he,useDescriptions as de}from'../description/description.js';import{Keys as C}from'../keyboard.js';import{Label as Le,useLabelledBy as ke,useLabels as ue}from'../label/label.js';var Ie=(e=>(e[e.RegisterOption=0]=\"RegisterOption\",e[e.UnregisterOption=1]=\"UnregisterOption\",e))(Ie||{});let Fe={[0](o,t){let e=[...o.options,{id:t.id,element:t.element,propsRef:t.propsRef}];return{...o,options:Ge(e,n=>n.element.current)}},[1](o,t){let e=o.options.slice(),n=o.options.findIndex(P=>P.id===t.id);return n===-1?o:(e.splice(n,1),{...o,options:e})}},X=te(null);X.displayName=\"RadioGroupDataContext\";function z(o){let t=oe(X);if(t===null){let e=new Error(`<${o} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,z),e}return t}let q=te(null);q.displayName=\"RadioGroupActionsContext\";function Q(o){let t=oe(q);if(t===null){let e=new Error(`<${o} /> is missing a parent <RadioGroup /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Q),e}return t}function Ue(o,t){return xe(t.type,Fe,o,t)}let we=\"div\";function Se(o,t){let e=B(),n=ie(),{id:P=`headlessui-radiogroup-${e}`,value:R,form:D,name:i,onChange:c,by:d,disabled:a=n||!1,defaultValue:h,tabIndex:f=0,...L}=o,T=Pe(d),[v,y]=Oe(Ue,{options:[]}),p=v.options,[k,G]=ue(),[I,F]=de(),E=W(null),m=K(E,t),b=ve(h),[s,x]=De(R,c,b),g=M(()=>p.find(r=>!r.propsRef.current.disabled),[p]),O=M(()=>p.some(r=>T(r.propsRef.current.value,s)),[p,s]),l=w(r=>{var U;if(a||T(r,s))return!1;let S=(U=p.find(u=>T(u.propsRef.current.value,r)))==null?void 0:U.propsRef.current;return S!=null&&S.disabled?!1:(x==null||x(r),!0)}),ce=w(r=>{if(!E.current)return;let U=p.filter(u=>u.propsRef.current.disabled===!1).map(u=>u.element.current);switch(r.key){case C.Enter:Ee(r.currentTarget);break;case C.ArrowLeft:case C.ArrowUp:if(r.preventDefault(),r.stopPropagation(),le(U,H.Previous|H.WrapAround)===pe.Success){let A=p.find(N=>$(N.element.current));A&&l(A.propsRef.current.value)}break;case C.ArrowRight:case C.ArrowDown:if(r.preventDefault(),r.stopPropagation(),le(U,H.Next|H.WrapAround)===pe.Success){let A=p.find(N=>$(N.element.current));A&&l(A.propsRef.current.value)}break;case C.Space:{r.preventDefault(),r.stopPropagation();let u=p.find(A=>$(A.element.current));u&&l(u.propsRef.current.value)}break}}),Y=w(r=>(y({type:0,...r}),()=>y({type:1,id:r.id}))),fe=M(()=>({value:s,firstOption:g,containsCheckedOption:O,disabled:a,compare:T,tabIndex:f,...v}),[s,g,O,a,T,f,v]),Te=M(()=>({registerOption:Y,change:l}),[Y,l]),me={ref:m,id:P,role:\"radiogroup\",\"aria-labelledby\":k,\"aria-describedby\":I,onKeyDown:ce},Re=V({value:s}),ye=ge(()=>{if(b!==void 0)return l(b)},[l,b]),be=J();return _.createElement(F,{name:\"RadioGroup.Description\"},_.createElement(G,{name:\"RadioGroup.Label\"},_.createElement(q.Provider,{value:Te},_.createElement(X.Provider,{value:fe},i!=null&&_.createElement(Ae,{disabled:a,data:{[i]:s||\"on\"},overrides:{type:\"radio\",checked:s!=null},form:D,onReset:ye}),be({ourProps:me,theirProps:L,slot:Re,defaultTag:we,name:\"RadioGroup\"})))))}let Me=\"div\";function He(o,t){var g;let e=z(\"RadioGroup.Option\"),n=Q(\"RadioGroup.Option\"),P=B(),{id:R=`headlessui-radiogroup-option-${P}`,value:D,disabled:i=e.disabled||!1,autoFocus:c=!1,...d}=o,a=W(null),h=K(a,t),[f,L]=ue(),[T,v]=de(),y=ne({value:D,disabled:i});re(()=>n.registerOption({id:R,element:a,propsRef:y}),[R,n,a,y]);let p=w(O=>{var l;if(ae(O.currentTarget))return O.preventDefault();n.change(D)&&((l=a.current)==null||l.focus())}),k=((g=e.firstOption)==null?void 0:g.id)===R,{isFocusVisible:G,focusProps:I}=Z({autoFocus:c}),{isHovered:F,hoverProps:E}=ee({isDisabled:i}),m=e.compare(e.value,D),b=se({ref:h,id:R,role:\"radio\",\"aria-checked\":m?\"true\":\"false\",\"aria-labelledby\":f,\"aria-describedby\":T,\"aria-disabled\":i?!0:void 0,tabIndex:(()=>i?-1:m||!e.containsCheckedOption&&k?e.tabIndex:-1)(),onClick:i?void 0:p,autoFocus:c},I,E),s=V({checked:m,disabled:i,active:G,hover:F,focus:G,autofocus:c}),x=J();return _.createElement(v,{name:\"RadioGroup.Description\"},_.createElement(L,{name:\"RadioGroup.Label\"},x({ourProps:b,theirProps:d,slot:s,defaultTag:Me,name:\"RadioGroup.Option\"})))}let Ne=\"span\";function We(o,t){var g;let e=z(\"Radio\"),n=Q(\"Radio\"),P=B(),R=_e(),D=ie(),{id:i=R||`headlessui-radio-${P}`,value:c,disabled:d=e.disabled||D||!1,autoFocus:a=!1,...h}=o,f=W(null),L=K(f,t),T=ke(),v=he(),y=ne({value:c,disabled:d});re(()=>n.registerOption({id:i,element:f,propsRef:y}),[i,n,f,y]);let p=w(O=>{var l;if(ae(O.currentTarget))return O.preventDefault();n.change(c)&&((l=f.current)==null||l.focus())}),{isFocusVisible:k,focusProps:G}=Z({autoFocus:a}),{isHovered:I,hoverProps:F}=ee({isDisabled:d}),E=((g=e.firstOption)==null?void 0:g.id)===i,m=e.compare(e.value,c),b=se({ref:L,id:i,role:\"radio\",\"aria-checked\":m?\"true\":\"false\",\"aria-labelledby\":T,\"aria-describedby\":v,\"aria-disabled\":d?!0:void 0,tabIndex:(()=>d?-1:m||!e.containsCheckedOption&&E?e.tabIndex:-1)(),autoFocus:a,onClick:d?void 0:p},G,F),s=V({checked:m,disabled:d,hover:I,focus:k,autofocus:a});return J()({ourProps:b,theirProps:h,slot:s,defaultTag:Ne,name:\"Radio\"})}let Be=j(Se),Ve=j(He),Ke=j(We),$e=Le,je=Ce,yt=Object.assign(Be,{Option:Ve,Radio:Ke,Label:$e,Description:je});export{Ke as Radio,yt as RadioGroup,je as RadioGroupDescription,$e as RadioGroupLabel,Ve as RadioGroupOption};\n","import { createStore } from \"jotai\";\nimport { onEventEmitAtom } from \"./store/Store\";\nimport logger from \"@/logger/logger\";\n\ntype Callback = (...args: any[]) => any;\nclass EventEmitter {\n  private events: { [key: string]: Set<Callback> } = {};\n\n  on(event: string, callback: Callback) {\n    if (!this.events[event]) {\n      this.events[event] = new Set<Callback>();\n    }\n    logger.debug(`Event ${event} ${callback} added`);\n    logger.debug(this.events);\n    this.events[event].add(callback);\n  }\n\n  off(event: string, callback: Callback) {\n    logger.debug(`Event ${event} ${callback} removed`);\n    logger.debug(this.events);\n    this.events[event]?.delete(callback);\n  }\n\n  emit(event: string, data?: any) {\n    const callbacks = this.events[event];\n    if (callbacks) {\n      callbacks.forEach((callback) => callback(data));\n    }\n  }\n}\n\nexport const EventBus = new EventEmitter();\n\nexport function CustomEmit(store: ReturnType<typeof createStore> ,event: string, data: any) {\n  const onEventEmit = store.get(onEventEmitAtom);\n  onEventEmit(\"eventEmit\", { event, data });\n  EventBus.emit(event, data);\n}\n\nexport function TrackEvent(store: ReturnType<typeof createStore> ,label: any, action: string, category: string) {\n  const trackData = { label: JSON.stringify(label), action, category };\n  const onEventEmit = store.get(onEventEmitAtom);\n  onEventEmit(\"eventEmit\", { event: \"trackEvent\", data: trackData });\n  EventBus.emit(\"trackEvent\", trackData);\n}\n","export default \"<svg width=\\\"64\\\" height=\\\"42\\\" viewBox=\\\"0 0 64 42\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" fill=\\\"white\\\"/>\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" stroke=\\\"#E6E7EB\\\"/>\\n<rect x=\\\"4\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#F2F4F7\\\"/>\\n<rect x=\\\"44\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#F2F4F7\\\"/>\\n<rect x=\\\"24\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#F2F4F7\\\"/>\\n<path d=\\\"M8 8H16V10H8V8Z\\\" fill=\\\"#D0D5DD\\\"/>\\n<rect x=\\\"28\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#D0D5DD\\\"/>\\n<rect x=\\\"48\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#D0D5DD\\\"/>\\n<rect x=\\\"11\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"20\\\" fill=\\\"#D0D5DD\\\"/>\\n<rect x=\\\"31\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#D0D5DD\\\"/>\\n<rect x=\\\"51\\\" y=\\\"28\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#D0D5DD\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"16.75\\\" x2=\\\"31\\\" y2=\\\"16.75\\\" stroke=\\\"#98A2B3\\\" stroke-width=\\\"0.5\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"30.75\\\" x2=\\\"51\\\" y2=\\\"30.75\\\" stroke=\\\"#98A2B3\\\" stroke-width=\\\"0.5\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"64\\\" height=\\\"42\\\" viewBox=\\\"0 0 64 42\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" fill=\\\"#FCFCFD\\\"/>\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" stroke=\\\"#E6E7EB\\\"/>\\n<rect x=\\\"4\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#D1E0FF\\\"/>\\n<rect x=\\\"44\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#D1E0FF\\\"/>\\n<rect x=\\\"24\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#D1E0FF\\\"/>\\n<rect x=\\\"8\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#475467\\\"/>\\n<rect x=\\\"28\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#475467\\\"/>\\n<rect x=\\\"48\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#475467\\\"/>\\n<rect x=\\\"11\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"20\\\" fill=\\\"#D1E0FF\\\"/>\\n<rect x=\\\"31\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#D1E0FF\\\"/>\\n<rect x=\\\"51\\\" y=\\\"28\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#D1E0FF\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"16.75\\\" x2=\\\"31\\\" y2=\\\"16.75\\\" stroke=\\\"#98A2B3\\\" stroke-width=\\\"0.5\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"30.75\\\" x2=\\\"51\\\" y2=\\\"30.75\\\" stroke=\\\"#98A2B3\\\" stroke-width=\\\"0.5\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"64\\\" height=\\\"42\\\" viewBox=\\\"0 0 64 42\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" fill=\\\"#1F242F\\\"/>\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" stroke=\\\"#E6E7EB\\\"/>\\n<rect x=\\\"4\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#536FFF\\\"/>\\n<rect x=\\\"44\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#536FFF\\\"/>\\n<rect x=\\\"24\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#536FFF\\\"/>\\n<rect x=\\\"8\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#F5F5F6\\\"/>\\n<rect x=\\\"28\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#F5F5F6\\\"/>\\n<rect x=\\\"48\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#F5F5F6\\\"/>\\n<rect x=\\\"11\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"20\\\" fill=\\\"#536FFF\\\"/>\\n<rect x=\\\"31\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#536FFF\\\"/>\\n<rect x=\\\"51\\\" y=\\\"28\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#536FFF\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"16.75\\\" x2=\\\"31\\\" y2=\\\"16.75\\\" stroke=\\\"#EBEBEB\\\" stroke-width=\\\"0.5\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"30.75\\\" x2=\\\"51\\\" y2=\\\"30.75\\\" stroke=\\\"#EBEBEB\\\" stroke-width=\\\"0.5\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"64\\\" height=\\\"42\\\" viewBox=\\\"0 0 64 42\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" fill=\\\"#1F242F\\\"/>\\n<rect x=\\\"0.5\\\" y=\\\"0.5\\\" width=\\\"63\\\" height=\\\"41\\\" rx=\\\"3.5\\\" stroke=\\\"#E6E7EB\\\"/>\\n<rect x=\\\"4\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#34D399\\\"/>\\n<rect x=\\\"44\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#34D399\\\"/>\\n<rect x=\\\"24\\\" y=\\\"6\\\" width=\\\"16\\\" height=\\\"6\\\" fill=\\\"#34D399\\\"/>\\n<rect x=\\\"8\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#08895A\\\"/>\\n<rect x=\\\"28\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#08895A\\\"/>\\n<rect x=\\\"48\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"2\\\" fill=\\\"#08895A\\\"/>\\n<rect x=\\\"11\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"20\\\" fill=\\\"#08895A\\\"/>\\n<rect x=\\\"31\\\" y=\\\"14\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#08895A\\\"/>\\n<rect x=\\\"51\\\" y=\\\"28\\\" width=\\\"2\\\" height=\\\"6\\\" fill=\\\"#08895A\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"16.75\\\" x2=\\\"31\\\" y2=\\\"16.75\\\" stroke=\\\"#34D399\\\" stroke-width=\\\"0.5\\\"/>\\n<line x1=\\\"13\\\" y1=\\\"30.75\\\" x2=\\\"51\\\" y2=\\\"30.75\\\" stroke=\\\"#34D399\\\" stroke-width=\\\"0.5\\\"/>\\n</svg>\\n\"","import { useState } from \"react\";\nimport { useAtom } from \"jotai\";\nimport {\n  Transition,\n  TransitionChild,\n  Dialog,\n  DialogPanel,\n  DialogTitle,\n  RadioGroup,\n  Label,\n  Radio,\n} from \"@headlessui/react\";\nimport {\n  enableScopedThemingAtom,\n  themeAtom,\n  themeIconDotAtom,\n} from \"@/store/Store\";\nimport { TrackEvent } from \"@/EventBus\";\nimport { cn } from \"@/utils\";\nimport Icon from \"../Icon/Icons\";\nimport ThemeLegacy from \"../../assets/theme/theme-legacy.svg?raw\";\nimport ThemeCleanLight from \"../../assets/theme/theme-clean-light.svg?raw\";\nimport ThemeCleanDark from \"../../assets/theme/theme-clean-dark.svg?raw\";\nimport ThemeNeonDark from \"../../assets/theme/theme-neon-dark.svg?raw\";\n\nconst themes = [\n  {\n    name: \"Legacy\",\n    id: \"theme-default\",\n    icon: ThemeLegacy,\n  },\n  {\n    name: \"Clear Light\",\n    id: \"theme-clean-light\",\n    icon: ThemeCleanLight,\n  },\n  {\n    name: \"Clear Dark\",\n    id: \"theme-clean-dark\",\n    icon: ThemeCleanDark,\n  },\n  {\n    name: \"Neon Dark\",\n    id: \"theme-neon\",\n    icon: ThemeNeonDark,\n  },\n];\n\nexport const ThemeSelector = () => {\n  const [isOpen, setIsOpen] = useState(false);\n  const [theme = themes[0].id, setTheme] = useAtom(themeAtom);\n  const [enableScopedTheming, setEnableScopedTheming] = useAtom(\n    enableScopedThemingAtom,\n  );\n  const [themeIconDot, setThemeIconDot] = useAtom(themeIconDotAtom);\n\n  const themeTrackEvent = (action: string) => {\n    TrackEvent(\n      {\n        theme,\n        enableScopedTheming,\n      },\n      action,\n      \"sequence\",\n    );\n  };\n\n  const openModal = () => {\n    setIsOpen(true);\n    setThemeIconDot(\"\");\n    themeTrackEvent(\"theme-open-modal\");\n  };\n  const closeModal = () => {\n    setIsOpen(false);\n    themeTrackEvent(\"theme-close-modal\");\n  };\n  const updateTheme = (theme: string) => {\n    setTheme(theme);\n    themeTrackEvent(\"theme-select\");\n  };\n  const updateEnablescopeTheming = (checked: boolean) => {\n    setEnableScopedTheming(checked);\n    themeTrackEvent(\"theme-enable-scoped\");\n  };\n\n  return (\n    <>\n      <button\n        type=\"button\"\n        className=\"flex items-center relative\"\n        onClick={openModal}\n      >\n        <Icon name=\"theme\" />\n        {themeIconDot && (\n          <span className=\"dot absolute top-0 right-0 w-1 h-1 rounded-full bg-red-500\"></span>\n        )}\n      </button>\n      <Transition show={isOpen}>\n        <Dialog\n          className=\"relative z-10\"\n          onClick={closeModal}\n          onClose={closeModal}\n        >\n          <TransitionChild\n            enter=\"duration-300 ease-out\"\n            enterFrom=\"opacity-0\"\n            enterTo=\"opacity-100\"\n            leave=\"duration-200 ease-in\"\n            leaveFrom=\"opacity-100\"\n            leaveTo=\"opacity-0\"\n          >\n            <div className=\"fixed inset-0 bg-black bg-opacity-25\" />\n          </TransitionChild>\n\n          <div className=\"fixed inset-0 overflow-y-auto\">\n            <div className=\"flex min-h-full items-center justify-center p-4 text-center\">\n              <TransitionChild\n                enter=\"duration-300 ease-out\"\n                enterFrom=\"opacity-0 scale-95\"\n                enterTo=\"opacity-100 scale-100\"\n                leave=\"duration-200 ease-in\"\n                leaveFrom=\"opacity-100 scale-100\"\n                leaveTo=\"opacity-0 scale-95\"\n              >\n                <DialogPanel className=\"w-full max-w-md transform overflow-hidden rounded-2xl bg-white py-6 text-left align-middle shadow-xl transition-all\">\n                  <div className=\"px-6 w-[450px]\">\n                    <DialogTitle\n                      as=\"h3\"\n                      className=\"text-lg font-semibold leading-6 text-gray-900\"\n                    >\n                      Theme\n                    </DialogTitle>\n                    <p className=\"text-gray-500 text-sm\">\n                      Customize your UI theme\n                    </p>\n                    <div className=\"mt-4 ml-[-0.5rem] px-2 max-h-72 overflow-y-auto pb-4\">\n                      <RadioGroup value={theme} onChange={updateTheme}>\n                        <Label className=\"sr-only\">Server size</Label>\n                        <div className=\"space-y-2\">\n                          {themes.map((t) => (\n                            <Radio key={t.id} value={t.id}>\n                              <div\n                                className={\n                                  (cn(\n                                    theme === t.id\n                                      ? \"border-2 text-gray-900 border-primary\"\n                                      : \"border-2 border-transparent\",\n                                  ),\n                                  \"relative flex items-center cursor-pointer rounded-lg px-4 py-3 shadow-md\")\n                                }\n                              >\n                                <div className=\"flex w-full items-center text-sm text-gray-900\">\n                                  {theme === t.id ? (\n                                    <Icon\n                                      name=\"selected-cycle\"\n                                      className=\"h-5 w-5 fill-none\"\n                                    />\n                                  ) : (\n                                    <Icon\n                                      name=\"non-selected-cycle\"\n                                      className=\"h-5 w-5\"\n                                    />\n                                  )}\n                                  <Label\n                                    as=\"p\"\n                                    className={cn(\n                                      theme === t.id\n                                        ? \"text-gray-900\"\n                                        : \"text-gray-900\",\n                                      \"font-medium ml-2\",\n                                    )}\n                                  >\n                                    {t.name}\n                                  </Label>\n                                </div>\n                                <span\n                                  className=\"inline-block w-20 border rounded-md overflow-hidden\"\n                                  dangerouslySetInnerHTML={{\n                                    __html: t.icon,\n                                  }}\n                                />\n                              </div>\n                            </Radio>\n                          ))}\n                        </div>\n                      </RadioGroup>\n                    </div>\n                  </div>\n                  <div className=\"pt-6 px-6 border-t flex items-center gap-2\">\n                    <input\n                      type=\"checkbox\"\n                      id=\"scopeTheming\"\n                      checked={enableScopedTheming}\n                      onChange={(event) =>\n                        updateEnablescopeTheming(event.target.checked)\n                      }\n                    />\n                    <label htmlFor=\"scopeTheming\" className=\"select-none\">\n                      Apply to this diagram only\n                    </label>\n                  </div>\n                </DialogPanel>\n              </TransitionChild>\n            </div>\n          </div>\n        </Dialog>\n      </Transition>\n    </>\n  );\n};\n","import antlr4 from \"antlr4\";\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\nimport { Frame } from \"@/positioning/FrameBorder\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nclass FrameBuilder extends sequenceParserListener {\n  private _orderedParticipants: string[];\n  private frameRoot: Frame | null = null;\n  private parents: Frame[] = [];\n\n  constructor(orderedParticipants: string[]) {\n    super();\n    this._orderedParticipants = orderedParticipants;\n  }\n\n  private getLeft(ctx: any): string {\n    const localParticipants = getLocalParticipantNames(ctx);\n    return (\n      this._orderedParticipants.find((p) => localParticipants.includes(p)) || \"\"\n    );\n  }\n\n  private getRight(ctx: any): string {\n    return (\n      this._orderedParticipants\n        .slice()\n        .reverse()\n        .find((p) => getLocalParticipantNames(ctx).includes(p)) || \"\"\n    );\n  }\n\n  enterFragment(ctx: any, type: string) {\n    // Create a new frame for the current node\n    const frame: Frame = {\n      type,\n      left: this.getLeft(ctx),\n      right: this.getRight(ctx),\n      children: [],\n    };\n\n    // If there's no root, set the current frame as root\n    if (!this.frameRoot) {\n      this.frameRoot = frame;\n    }\n\n    // If there are parents, add the frame to the last parent\n    if (this.parents.length > 0) {\n      this.parents[this.parents.length - 1].children?.push(frame);\n    }\n\n    // Add the current frame to the parent stack\n    this.parents.push(frame);\n  }\n\n  exitFragment() {\n    // Remove the current frame from the parent stack\n    this.parents.pop();\n  }\n\n  enterTcf(ctx: any) {\n    this.enterFragment(ctx, \"tcf\");\n  }\n\n  enterOpt(ctx: any) {\n    this.enterFragment(ctx, \"opt\");\n  }\n\n  enterPar(ctx: any) {\n    this.enterFragment(ctx, \"par\");\n  }\n\n  enterAlt(ctx: any) {\n    this.enterFragment(ctx, \"alt\");\n  }\n\n  enterLoop(ctx: any) {\n    this.enterFragment(ctx, \"loop\");\n  }\n\n  enterSection(ctx: any): void {\n    this.enterFragment(ctx, \"section\");\n  }\n\n  enterCritical(ctx: any): void {\n    this.enterFragment(ctx, \"critical\");\n  }\n\n  enterRef(ctx: any) {\n    this.enterFragment(ctx, \"ref\");\n  }\n\n  exitTcf() {\n    this.exitFragment();\n  }\n  exitOpt() {\n    this.exitFragment();\n  }\n  exitPar() {\n    this.exitFragment();\n  }\n  exitAlt() {\n    this.exitFragment();\n  }\n  exitLoop() {\n    this.exitFragment();\n  }\n  exitSection() {\n    this.exitFragment();\n  }\n  exitCritical() {\n    this.exitFragment();\n  }\n  exitRef() {\n    this.exitFragment();\n  }\n\n  getFrame(context: any) {\n    if (!context) return null;\n    context.children.map((child: any) => {\n      walker.walk(this, child);\n    });\n    return this.frameRoot;\n  }\n}\n\nexport default FrameBuilder;\n","import { FRAGMENT_PADDING_X } from \"@/positioning/Constants\";\n\nexport interface Frame {\n  type?: string;\n  left: string;\n  right: string;\n  children?: Frame[];\n}\n\nenum PathType {\n  LEFT = \"LEFT\",\n  RIGHT = \"RIGHT\",\n}\n\nfunction longestPath(frame: Frame, pathType: PathType): number {\n  if (!frame.children || frame.children.length === 0) {\n    return 1;\n  }\n\n  let maxDepth = 0;\n  for (const child of frame.children) {\n    if (\n      (pathType === PathType.LEFT && child.left !== frame.left) ||\n      (pathType === PathType.RIGHT && child.right !== frame.right)\n    ) {\n      continue;\n    }\n    maxDepth = Math.max(maxDepth, longestPath(child, pathType));\n  }\n\n  return maxDepth + 1;\n}\n\nexport default function FrameBorder(frame: Frame | null) {\n  if (!frame) {\n    return { left: 0, right: 0 };\n  }\n  return {\n    type: frame.type,\n    left: FRAGMENT_PADDING_X * longestPath(frame, PathType.LEFT),\n    right: FRAGMENT_PADDING_X * longestPath(frame, PathType.RIGHT),\n  };\n}\n","import { AllMessages } from \"@/parser/MessageCollector\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder, { Frame } from \"@/positioning/FrameBorder\";\nimport { Coordinates } from \"@/positioning/Coordinates\";\nimport { FRAGMENT_MIN_WIDTH } from \"@/positioning/Constants\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\n\nexport function TotalWidth(ctx: any, coordinates: Coordinates) {\n  const allParticipants = coordinates.orderedParticipantNames();\n  if (!ctx || allParticipants.length === 0) return 0;\n  const localParticipants = getLocalParticipantNames(ctx);\n  const leftParticipant =\n    allParticipants.find((p) => localParticipants.includes(p)) || \"\";\n  const rightParticipant =\n    allParticipants\n      .slice()\n      .reverse()\n      .find((p) => localParticipants.includes(p)) || \"\";\n  const frameBuilder = new FrameBuilder(allParticipants as string[]);\n  const frame = frameBuilder.getFrame(ctx);\n  const border = FrameBorder(frame as Frame);\n  const extraWidth = extraWidthDueToSelfMessage(\n    ctx,\n    rightParticipant,\n    coordinates,\n  );\n  // if (leftParticipant === \"\" || rightParticipant === \"\") {\n  //   return 0;\n  // }\n  const participantWidth =\n    coordinates.distance(leftParticipant, rightParticipant) +\n    coordinates.half(leftParticipant) +\n    coordinates.half(rightParticipant);\n  return (\n    Math.max(participantWidth, FRAGMENT_MIN_WIDTH) +\n    border.left +\n    border.right +\n    extraWidth\n  );\n}\n\nfunction extraWidthDueToSelfMessage(\n  ctx: any,\n  rightParticipant: string,\n  coordinates: Coordinates,\n) {\n  const allMessages = AllMessages(ctx);\n  const widths = allMessages\n    .filter((m) => m.from === m.to)\n    // 37 is arrow width (30) + half occurrence width(7)\n    .map(\n      (m) =>\n        coordinates.getMessageWidth(m) -\n        coordinates.distance(m.from || _STARTER_, rightParticipant) -\n        coordinates.half(rightParticipant),\n    );\n  return Math.max.apply(null, [0, ...widths]);\n}\n","import { useEffect, useState } from \"react\";\n\nexport default function useDocumentScroll() {\n  const [scrollTop, setScrollTop] = useState(0);\n  const [scrollLeft, setScrollLeft] = useState(0);\n  const updateScroll = () => {\n    setScrollTop(document.documentElement.scrollTop);\n    setScrollLeft(document.documentElement.scrollLeft);\n  };\n  useEffect(() => {\n    updateScroll();\n    const ab = new AbortController();\n    document.addEventListener(\"scroll\", updateScroll, { signal: ab.signal });\n    return () => {\n      ab.abort();\n    };\n  }, []);\n  return [scrollTop, scrollLeft];\n}\n","import { useEffect, useRef, useState } from \"react\";\n\nconst DETECTOR_COUNT = 10;\nconst INTERSECTION_ERROR_MARGIN = 1;\nconst SCROLLBAR_WIDTH = 20;\n\nfunction initializeDetectors() {\n  let detectorContainer = document.getElementById(\n    \"zenuml-intersection-detector-container\",\n  );\n  let detectors = Array.from(\n    document.getElementsByClassName(\"zenuml-intersection-detector\"),\n  );\n\n  if (detectorContainer && detectors.length === DETECTOR_COUNT) {\n    return { detectorContainer, detectors };\n  }\n\n  detectorContainer = document.createElement(\"div\");\n  detectorContainer.id = \"zenuml-intersection-detector-container\";\n\n  Object.assign(detectorContainer.style, {\n    position: \"absolute\",\n    top: \"0\",\n    left: \"0\",\n    opacity: \"0\",\n    pointerEvents: \"none\",\n  });\n\n  detectors = new Array(DETECTOR_COUNT).fill(0).map(() => {\n    const detector = document.createElement(\"div\");\n    detector.className = \"zenuml-intersection-detector\";\n    Object.assign(detector.style, {\n      position: \"absolute\",\n      top: \"0\",\n      left: \"0\",\n      width: \"100%\",\n    });\n    detectorContainer?.appendChild(detector);\n    return detector;\n  });\n  document.body.appendChild(detectorContainer);\n\n  return { detectorContainer, detectors };\n}\n\nexport default function useIntersectionTop() {\n  const [top, setTop] = useState(0);\n  const ob = useRef<IntersectionObserver | null>(null);\n\n  useEffect(() => {\n    const { detectorContainer, detectors } = initializeDetectors();\n\n    const scrollHeight =\n      document.documentElement.scrollHeight - SCROLLBAR_WIDTH;\n    const scrollWidth = document.documentElement.scrollWidth - SCROLLBAR_WIDTH;\n    detectorContainer.style.height = scrollHeight + \"px\";\n    detectorContainer.style.width = scrollWidth + \"px\";\n    const detectorHeight = Math.ceil(\n      document.documentElement.scrollHeight / DETECTOR_COUNT,\n    );\n    const threshold = [...Array(detectorHeight + 1).keys()]\n      .map((i) => i / detectorHeight)\n      .filter((i) => i >= 0 && i <= 1);\n    detectors.forEach((detector, index) => {\n      (detector as HTMLElement).style.top = index * detectorHeight + \"px\";\n      (detector as HTMLElement).style.height = detectorHeight + \"px\";\n    });\n    ob.current = new IntersectionObserver(\n      ([entry]) => {\n        const isTopIntersection =\n          entry.intersectionRect.top - entry.boundingClientRect.top >\n            INTERSECTION_ERROR_MARGIN || entry.target === detectors[0];\n        if (isTopIntersection) {\n          setTop(entry.intersectionRect.top);\n        }\n      },\n      {\n        threshold,\n      },\n    );\n    detectors.forEach((detector) => {\n      if (ob.current) {\n        ob.current.observe(detector);\n      }\n    });\n    return () => {\n      ob.current?.disconnect();\n    };\n  }, []);\n  return top;\n}\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseFloat(match[i + 1]);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.toLowerCase().match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/prefer-spread\n\t\trgb = colorNames[match[1]].slice();\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","import colorString from \"color-string\";\n\nexport function brightnessIgnoreAlpha(color: string): number {\n  const c = colorString.get.rgb(color) || [0, 0, 0];\n  // assuming alpha is always 1 (see removeAlpha in Participant.tsx)\n  const [r, g, b] = c;\n  return (r * 299 + g * 587 + b * 114) / 1000;\n}\n\nexport function removeAlpha(color: string): string {\n  const c = colorString.get.rgb(color) || [0, 0, 0];\n  const [r, g, b] = c;\n  return `rgb(${r}, ${g}, ${b})`;\n}\n","export function getElementDistanceToTop(element: HTMLElement) {\n  let distanceToTop = 0;\n  let currentElement: HTMLElement | null = element;\n\n  while (currentElement) {\n    distanceToTop += currentElement.offsetTop;\n    currentElement = currentElement.offsetParent as HTMLElement;\n  }\n\n  return distanceToTop;\n}\n","export const specialCharRegex = /[!@#$%^&*()+-,.?''\":{}|<>/\\s]/;\n\nexport const syncMessageNormalizer = (text: string): string => {\n  let result = text.replace(/\\s+/g, \" \");\n  if (specialCharRegex.test(result)) {\n    result = result.replace(/\"/g, \"\");\n    result = `\"${result}\"`;\n    specialCharRegex.lastIndex = 0;\n  }\n  return result;\n};\n\nexport const asyncMessageNormalizer = (text: string): string => {\n  return text.replace(/\\s+/g, \" \");\n};\n","import {\n  codeAtom,\n  modeAtom,\n  onContentChangeAtom,\n  RenderMode,\n} from \"@/store/Store\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport { Position } from \"@/parser/Participants\";\nimport { specialCharRegex } from \"@/utils/messageNormalizers\";\nimport { cn } from \"@/utils\";\nimport { EditableSpan } from \"@/components/common/EditableSpan\";\n\nconst UneditableText = [\"Missing Constructor\", \"ZenUML\"];\n\nexport const ParticipantLabel = (props: {\n  labelText: string;\n  labelPositions?: Array<[number, number]>;\n  assignee?: string;\n  assigneePositions?: Array<[number, number]>;\n}) => {\n  const mode = useAtomValue(modeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const participantIsEditable =\n    mode === RenderMode.Dynamic &&\n    UneditableText.indexOf(props.labelText) === -1;\n  const assigneeIsEditable = mode === RenderMode.Dynamic;\n  const displayText = props.assignee\n    ? `${props.assignee}:${props.labelText}`\n    : props.labelText;\n\n  const normalizeEditableText = (text: string) => {\n    let processedText = text;\n\n    if (processedText.includes(\" \")) {\n      processedText = processedText.replace(/\\s+/g, \" \");\n    }\n\n    if (specialCharRegex.test(processedText)) {\n      processedText = processedText.replace(/\"/g, \"\");\n      processedText = `\"${processedText}\"`;\n      specialCharRegex.lastIndex = 0;\n    }\n\n    return processedText;\n  };\n\n  const replaceCodeAtPositions = (\n    replacements: Array<{ positions: Array<Position>; text: string }>,\n  ) => {\n    const edits = replacements\n      .flatMap(({ positions, text }) =>\n        positions.map((position) => ({\n          position,\n          text: normalizeEditableText(text),\n        })),\n      )\n      .sort((a, b) => b.position[0] - a.position[0]);\n\n    if (edits.length === 0) return;\n\n    let newCode = code;\n    for (const { position, text } of edits) {\n      const [start, end] = position;\n      newCode = newCode.slice(0, start) + text + newCode.slice(end);\n    }\n\n    setCode(newCode);\n    onContentChange(newCode);\n  };\n\n  const createSaveHandler = (positions: Array<Position>, originalText: string) => {\n    return (newText: string) => {\n      // If text is empty or same as the original label text, bail out\n      if (newText === \"\" || newText === originalText) {\n        return;\n      }\n\n      replaceCodeAtPositions([{ positions, text: newText }]);\n    };\n  };\n\n  const createCombinedSaveHandler = (originalText: string) => {\n    return (newText: string) => {\n      if (newText === \"\" || newText === originalText) {\n        return;\n      }\n\n      let nextAssignee = props.assignee ?? \"\";\n      let nextLabel = newText;\n      const separatorIndex = newText.indexOf(\":\");\n\n      if (separatorIndex >= 0) {\n        const parsedAssignee = newText.slice(0, separatorIndex).trim();\n        const parsedLabel = newText.slice(separatorIndex + 1).trim();\n\n        if (parsedAssignee) {\n          nextAssignee = parsedAssignee;\n        }\n        if (parsedLabel) {\n          nextLabel = parsedLabel;\n        } else {\n          nextLabel = props.labelText;\n        }\n      }\n\n      replaceCodeAtPositions([\n        { positions: props.assigneePositions ?? [], text: nextAssignee },\n        { positions: props.labelPositions ?? [], text: nextLabel },\n      ]);\n    };\n  };\n\n  return (\n    <div className=\"flex items-center justify-center\">\n      <EditableSpan\n        text={displayText}\n        isEditable={props.assignee ? assigneeIsEditable : participantIsEditable}\n        className={cn(\"name leading-4 right px-1\")}\n        onSave={\n          props.assignee\n            ? createCombinedSaveHandler(displayText)\n            : createSaveHandler(props.labelPositions ?? [], props.labelText)\n        }\n        title=\"Double-click to edit\"\n      />\n    </div>\n  );\n};\n","import { getEmojiUnicode } from \"@/emoji/resolveEmoji\";\nimport useDocumentScroll from \"@/functions/useDocumentScroll\";\nimport useIntersectionTop from \"@/functions/useIntersectionTop\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { PARTICIPANT_HEIGHT } from \"@/positioning/Constants\";\nimport {\n  diagramElementAtom,\n  modeAtom,\n  onSelectAtom,\n  participantsAtom,\n  RenderMode,\n  selectedAtom,\n  stickyOffsetAtom,\n} from \"@/store/Store\";\nimport { cn } from \"@/utils\";\nimport { brightnessIgnoreAlpha, removeAlpha } from \"@/utils/Color\";\nimport { getElementDistanceToTop } from \"@/utils/dom\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport { useMemo, useRef } from \"react\";\nimport { ParticipantLabel } from \"./ParticipantLabel\";\nimport { AsyncIcon } from \"../../Tutorial/AsyncIcon\";\n// import iconPath from \"../../Tutorial/Icons\"; // Removed eager import\n\nconst INTERSECTION_ERROR_MARGIN = 10;\nconst PARTICIPANT_DEBUG = Boolean(localStorage.getItem(\"zenumlDebug\"));\n\nexport const Participant = (props: {\n  entity: Record<string, string>;\n  offsetTop2?: number;\n}) => {\n  // ... (hooks remain same)\n  const elRef = useRef<HTMLDivElement>(null);\n  const mode = useAtomValue(modeAtom);\n  const participants = useAtomValue(participantsAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const stickyOffset = useAtomValue(stickyOffsetAtom);\n  const selected = useAtomValue(selectedAtom);\n  const onSelect = useSetAtom(onSelectAtom);\n  const intersectionTop = useIntersectionTop();\n  const [scrollTop] = useDocumentScroll();\n\n  const isDefaultStarter = props.entity.name === _STARTER_;\n\n  const labelPositions = Array.from(\n    (participants.GetPositions(props.entity.name) as [number, number][]) ?? [],\n  ).sort((a, b) => b[0] - a[0]);\n  const assigneePositions = Array.from(\n    (participants.GetAssigneePositions(props.entity.name) as [\n      number,\n      number,\n    ][]) ?? [],\n  ).sort((a, b) => b[0] - a[0]);\n\n  const calcOffset = () => {\n    const participantOffsetTop = props.offsetTop2 || 0;\n    let top = intersectionTop + scrollTop;\n    if (intersectionTop > INTERSECTION_ERROR_MARGIN && stickyOffset !== false)\n      top += stickyOffset;\n    const diagramHeight = diagramElement?.clientHeight || 0;\n    const diagramTop = diagramElement\n      ? getElementDistanceToTop(diagramElement)\n      : 0;\n    if (top < participantOffsetTop + diagramTop) return 0;\n    return (\n      Math.min(top - diagramTop, diagramHeight - PARTICIPANT_HEIGHT - 50) -\n      participantOffsetTop\n    );\n  };\n\n  // We use this method to simulate sticky behavior. CSS sticky is not working out of an iframe.\n  const stickyVerticalOffset = mode === RenderMode.Static || stickyOffset === false ? 0 : calcOffset();\n\n  const backgroundColor = props.entity.color\n    ? removeAlpha(props.entity.color)\n    : undefined;\n  const color = useMemo(() => {\n    if (!props.entity.color) {\n      return undefined;\n    }\n    const bgColor =\n      elRef.current &&\n      window\n        .getComputedStyle(elRef.current)\n        .getPropertyValue(\"background-color\");\n    if (!bgColor) {\n      return undefined;\n    }\n    return brightnessIgnoreAlpha(bgColor) > 128 ? \"#000\" : \"#fff\";\n  }, [props.entity.color]);\n\n  // Determine icon key\n  const iconKey = isDefaultStarter\n    ? \"actor\"\n    : props.entity.type?.toLowerCase();\n\n  return (\n    <div\n      className={cn(\n        \"participant bg-skin-participant shadow-participant border-skin-participant text-skin-participant rounded text-base leading-4 flex flex-col justify-center z-10 h-10 top-8\",\n        {\n          selected: selected.includes(props.entity.name),\n          \"ring-2 ring-sky-400\": selected.includes(props.entity.name),\n          \"cursor-pointer\": mode === RenderMode.Dynamic && !isDefaultStarter,\n        },\n      )}\n      ref={elRef}\n      style={{\n        backgroundColor: isDefaultStarter ? undefined : backgroundColor,\n        color: isDefaultStarter ? undefined : color,\n        transform: `translateY(${stickyVerticalOffset}px)`,\n        pointerEvents: \"auto\",\n      }}\n      onClick={() => onSelect(props.entity.name)}\n      onKeyDown={(e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          onSelect(props.entity.name);\n        }\n      }}\n      tabIndex={mode === RenderMode.Dynamic && !isDefaultStarter ? 0 : undefined}\n      role={mode === RenderMode.Dynamic && !isDefaultStarter ? \"button\" : undefined}\n      title={mode === RenderMode.Dynamic && !isDefaultStarter ? \"Click to style participant\" : undefined}\n      data-participant-id={props.entity.name}\n    >\n      {PARTICIPANT_DEBUG && (\n        <div className=\"absolute left-[-12px] top-1/2 -translate-y-1/2 w-8 h-[2px] bg-amber-700\">\n          <div className=\"w-full h-full bg-black\" />\n        </div>\n      )}\n      <div className=\"flex items-center justify-center\">\n        {iconKey && (\n          <AsyncIcon\n            iconKey={iconKey}\n            className=\"h-6 w-6 mr-1 flex-shrink-0 [&>svg]:w-full [&>svg]:h-full\"\n            alt={`icon for ${props.entity.name}`}\n          />\n        )}\n\n        {!isDefaultStarter && (\n          <div className=\"h-5 group flex flex-col justify-center\">\n            {props.entity.stereotype && (\n              <label className=\"interface leading-4\">\n                «{props.entity.stereotype}»\n              </label>\n            )}\n            <div className=\"flex items-center\">\n              {props.entity.emoji && (\n                <span className=\"mr-1 flex-shrink-0\" data-testid=\"participant-emoji\">\n                  {getEmojiUnicode(props.entity.emoji)}\n                </span>\n              )}\n              <ParticipantLabel\n                labelText={\n                  props.entity.assignee\n                    ? props.entity.name.split(\":\")[1]\n                    : props.entity.label || props.entity.name\n                }\n                labelPositions={labelPositions}\n                assignee={props.entity.assignee}\n                assigneePositions={assigneePositions}\n              />\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { Coordinates } from \"@/positioning/Coordinates\";\n\nexport const getContextType = (context: any) => {\n  const dict: Record<string, string> = {\n    loop: \"FragmentLoop\",\n    alt: \"FragmentAlt\",\n    par: \"FragmentPar\",\n    opt: \"FragmentOpt\",\n    section: \"FragmentSection\",\n    critical: \"FragmentCritical\",\n    tcf: \"FragmentTryCatchFinally\",\n    creation: \"Creation\",\n    message: \"Interaction\",\n    asyncMessage: \"InteractionAsync\",\n    divider: \"Divider\",\n    ret: \"Return\",\n  };\n  const key: string =\n    Object.keys(dict).find((x) => context[x]() !== null) || \"\";\n  return dict[key];\n};\n\nexport const centerOf = (coordinates: Coordinates, entity: string) => {\n  if (!entity) {\n    console.warn(\"[@zenuml/core] centerOf: entity is undefined\");\n    return 0;\n  }\n  try {\n    return coordinates.getPosition(entity) || 0;\n  } catch (e) {\n    console.error(e);\n    return 0;\n  }\n};\n\nexport const distance = (coordinates: Coordinates, from: string, to: string) => {\n  return centerOf(coordinates, from) - centerOf(coordinates, to);\n};\n\nexport const distance2 = (coordinates: Coordinates, from: string, to: string) => {\n  if (!from || !to) return 0;\n  return centerOf(coordinates, to) - centerOf(coordinates, from);\n};\n","import logger from \"@/logger/logger\";\nimport {\n  coordinatesAtom,\n  lifelineReadyAtom,\n  verticalCoordinatesAtom,\n  verticalModeAtom,\n  diagramElementAtom,\n  scaleAtom,\n} from \"@/store/Store\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Participant } from \"./Participant\";\nimport { centerOf } from \"../MessageLayer/Block/Statement/utils\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { EventBus } from \"@/EventBus\";\n\n// const logger = parentLogger.child({ name: \"LifeLine\" });\n\nexport const LifeLine = (props: {\n  entity: any;\n  groupLeft?: any;\n  renderParticipants?: boolean;\n  renderLifeLine?: boolean;\n  className?: string;\n}) => {\n  const elRef = useRef<HTMLDivElement>(null);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const verticalCoordinates = useAtomValue(verticalCoordinatesAtom);\n  const verticalMode = useAtomValue(verticalModeAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const scale = useAtomValue(scaleAtom);\n  const setLifelineReady = useSetAtom(lifelineReadyAtom);\n  const PARTICIPANT_TOP_SPACE_FOR_GROUP = 20;\n  const [top, setTop] = useState(PARTICIPANT_TOP_SPACE_FOR_GROUP);\n  const left =\n    centerOf(coordinates, props.entity.name) - (props.groupLeft || 0);\n\n  const measureFromDOM = useCallback(() => {\n    // escape entity name to avoid invalid selector errors\n    const escapedName = props.entity.name.replace(/[^A-Za-z0-9_-]/g, \"\\\\$&\");\n    const firstMessage = diagramElement?.querySelector(\n      `[data-to=\"${escapedName}\"]`,\n    ) as HTMLElement | null;\n    const isVisible = firstMessage?.offsetParent != null;\n    if (\n      firstMessage &&\n      firstMessage.getAttribute(\"data-type\") === \"creation\" &&\n      isVisible\n    ) {\n      const rootY = elRef.current?.getBoundingClientRect().y || 0;\n      const messageY = firstMessage.getBoundingClientRect().y;\n      setTop((messageY - rootY) / (scale || 1));\n    } else {\n      setTop(PARTICIPANT_TOP_SPACE_FOR_GROUP);\n    }\n  }, [diagramElement, props.entity.name, scale]);\n\n  useEffect(() => {\n    const resolveFromVM = () => {\n      if (!verticalCoordinates) return false;\n      const creationTop = verticalCoordinates.getCreationTop(props.entity.name);\n      const resolvedTop =\n        creationTop != null\n          ? Math.max(PARTICIPANT_TOP_SPACE_FOR_GROUP, creationTop)\n          : PARTICIPANT_TOP_SPACE_FOR_GROUP;\n      // logger.debug(\n      //   `LifeLine top resolved for ${props.entity.name}: ${resolvedTop}px`,\n      // );\n      // if (\n      //   typeof window !== \"undefined\" &&\n      //   (window as any).__ZEN_CAPTURE_VERTICAL\n      // ) {\n      //   (window as any).__zenumlVerticalEntries = verticalCoordinates.entries();\n      //   const registry =\n      //     (window as any).__zenumlLifelineDebug ||\n      //     ((window as any).__zenumlLifelineDebug = {});\n      //   registry[props.entity.name] = {\n      //     creationTop,\n      //     resolvedTop,\n      //     8,\n      //     components: verticalCoordinates.getCreationTopComponents(\n      //       props.entity.name,\n      //     ),\n      //   };\n      //   // Also export the full creation top records for all participants\n      //   (window as any).__zenumlCreationTopRecords =\n      //     verticalCoordinates.getCreationTopRecords();\n      // }\n      if (creationTop != null) {\n        logger.info(`[LifeLine] creation participant=\"${props.entity.name}\" creationTop=${creationTop} resolvedTop=${resolvedTop}`);\n      }\n      setTop(resolvedTop);\n      return true;\n    };\n\n    // console.info(\"LifeLine:verticalMode\", verticalMode);\n    if (verticalMode === \"html\") {\n      resolveFromVM();\n    } else {\n      const rerun = () => setTimeout(measureFromDOM, 0);\n      setTimeout(measureFromDOM, 0);\n      EventBus.on(\"participant_set_top\", rerun);\n      return () => EventBus.off(\"participant_set_top\", rerun);\n    }\n\n    if (props.entity.name !== _STARTER_) {\n      setTimeout(() => {\n        setLifelineReady((prev) =>\n          prev.includes(props.entity.name)\n            ? prev\n            : [...prev, props.entity.name],\n        );\n      }, 0);\n    }\n  }, [\n    props.entity.name,\n    verticalCoordinates,\n    verticalMode,\n    setLifelineReady,\n    measureFromDOM,\n  ]);\n\n  return (\n    <div\n      id={props.entity.name}\n      entity-type={props.entity.type?.toLowerCase()}\n      className={cn(\n        \"lifeline absolute flex flex-col h-full\",\n        {\n          \"transform -translate-x-1/2\": props.renderParticipants,\n        },\n        props.className,\n      )}\n      style={{ paddingTop: top + \"px\", left: left + \"px\", translate: 0 }}\n      ref={elRef}\n    >\n      {props.renderParticipants && (\n        <Participant entity={props.entity} offsetTop2={top} />\n      )}\n      {props.renderLifeLine && (\n        <div className=\"line w0 mx-auto flex-grow w-px bg-[linear-gradient(to_bottom,transparent_50%,var(--color-border-base)_50%)] bg-[length:1px_10px]\"></div>\n      )}\n    </div>\n  );\n};\n","import { Participants } from \"@/parser\";\nimport { LifeLine } from \"./LifeLine\";\nimport { useAtomValue } from \"jotai\";\nimport { coordinatesAtom, diagramElementAtom } from \"@/store/Store\";\nimport { useRef, useState, useLayoutEffect, useCallback } from \"react\";\n\n// Constants — match SVG renderer's group.ts stroke model\nconst LIFELINE_GROUP_OUTLINE_MARGIN = 2;\nconst GROUP_STROKE_WIDTH = 1;\nconst GROUP_SW2 = GROUP_STROKE_WIDTH / 2; // 0.5\nconst GROUP_STROKE_COLOR = \"#666\";\nconst GROUP_DASH_ARRAY = \"4 3\";\n\n// Must match SVG renderer's GROUP_OUTLINE_MARGIN (buildParticipantGeometry.ts)\nconst SVG_GROUP_OUTLINE_MARGIN = 2;\n\nconst GroupOutline = (props: {\n  left: number;\n  top: number;\n  width: number;\n  height: number;\n}) => (\n  <svg\n    data-group-overlay=\"\"\n    width={props.width}\n    height={props.height}\n    viewBox={`0 0 ${props.width} ${props.height}`}\n    style={{\n      position: \"absolute\",\n      top: props.top,\n      left: props.left,\n      pointerEvents: \"none\",\n      overflow: \"visible\",\n    }}\n  >\n    <rect\n      x=\"0\"\n      y=\"0\"\n      width={props.width}\n      height={props.height}\n      fill=\"none\"\n      stroke={GROUP_STROKE_COLOR}\n      strokeWidth={GROUP_STROKE_WIDTH}\n      strokeDasharray={GROUP_DASH_ARRAY}\n    />\n  </svg>\n);\n\nexport const LifeLineGroup = (props: {\n  context: any;\n  renderParticipants: any;\n  renderLifeLine: any;\n}) => {\n  const coordinates = useAtomValue(coordinatesAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const entities: any[] = Participants(props.context).Array();\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [overlayRect, setOverlayRect] = useState<{\n    left: number;\n    top: number;\n    width: number;\n    height: number;\n  } | null>(null);\n\n  const entityNames = entities.map((e) => e.name);\n\n  const measureOverlay = useCallback(() => {\n    const el = containerRef.current;\n    if (!el || !diagramElement || entityNames.length === 0) return;\n\n    // Find participant boxes from the diagram root (they may be in a different layer)\n    let minLeft = Infinity;\n    let maxRight = -Infinity;\n    for (const name of entityNames) {\n      const escapedName = name.replace(/[^A-Za-z0-9_-]/g, \"\\\\$&\");\n      const participantBox = diagramElement.querySelector(\n        `#${escapedName} .participant`,\n      ) as HTMLElement | null;\n      if (!participantBox) continue;\n      const r = participantBox.getBoundingClientRect();\n      if (r.left < minLeft) minLeft = r.left;\n      if (r.right > maxRight) maxRight = r.right;\n    }\n\n    if (!isFinite(minLeft) || !isFinite(maxRight)) return;\n\n    // Convert to container-relative coordinates\n    const containerRect = el.getBoundingClientRect();\n    const relMinLeft = minLeft - containerRect.left;\n    const relMaxRight = maxRight - containerRect.left;\n\n    // Match SVG renderer's group outline:\n    // SVG buildGroups: g.x = minLeft - 8, g.width = range + 16\n    // SVG renderGroup: rectX = g.x - sw2, rectW = g.width + sw\n    // So outline extends (SVG_GROUP_OUTLINE_MARGIN + sw2) beyond participant edges.\n    const outlineLeft = relMinLeft - SVG_GROUP_OUTLINE_MARGIN - GROUP_SW2;\n    const outlineRight = relMaxRight + SVG_GROUP_OUTLINE_MARGIN + GROUP_SW2;\n    // SVG: rectY = g.y - sw - 0.5, where g.y = minY - 20 + 1.5\n    // Relative to the container top, this should be -0.5px for sw=1,\n    // so the top border sits above the title chip rather than under it.\n    const outlineTop = -GROUP_SW2;\n    const outlineHeight = containerRect.height + GROUP_STROKE_WIDTH;\n\n    setOverlayRect((prev) => {\n      const next = {\n        left: outlineLeft,\n        top: outlineTop,\n        width: outlineRight - outlineLeft,\n        height: outlineHeight,\n      };\n      if (\n        prev &&\n        prev.left === next.left &&\n        prev.top === next.top &&\n        prev.width === next.width &&\n        prev.height === next.height\n      ) {\n        return prev;\n      }\n      return next;\n    });\n  }, [diagramElement, entityNames.join(\",\")]);\n\n  useLayoutEffect(() => {\n    // Defer to allow participant boxes to render in the other layer\n    const id = requestAnimationFrame(measureOverlay);\n    return () => cancelAnimationFrame(id);\n  }, [measureOverlay]);\n\n  if (entities.length <= 0) return null;\n  // groupLeft is the logical position used for child lifeline positioning\n  const groupLeft =\n    coordinates.left(entities[0].name) + LIFELINE_GROUP_OUTLINE_MARGIN;\n  const right =\n    coordinates.right(entities[entities.length - 1].name) -\n    LIFELINE_GROUP_OUTLINE_MARGIN;\n  const name = props.context?.name()?.getFormattedText();\n  return (\n    <div\n      ref={containerRef}\n      className=\"lifeline-group-container absolute flex flex-col flex-grow h-full\"\n      style={{\n        left: `${groupLeft}px`,\n        width: `${right - groupLeft}px`,\n      }}\n    >\n      {props.renderLifeLine && overlayRect && (\n        <GroupOutline\n          left={overlayRect.left}\n          top={overlayRect.top}\n          width={overlayRect.width}\n          height={overlayRect.height}\n        />\n      )}\n      {props.renderParticipants && name && (\n        <div className=\"z-10 absolute left-1/2 -translate-x-1/2 bg-skin-frame px-1\">\n          <span className=\"text-skin-lifeline-group-name\" style={{ fontSize: '13px', fontWeight: 400 }}>\n            {name}\n          </span>\n        </div>\n      )}\n\n      <div className=\"lifeline-group relative flex-grow\">\n        {entities.map((entity) => (\n          <LifeLine\n            key={entity.name}\n            entity={entity}\n            groupLeft={groupLeft}\n            renderLifeLine={props.renderLifeLine}\n            renderParticipants={props.renderParticipants}\n          />\n        ))}\n      </div>\n    </div>\n  );\n};\n","import { getLineHead } from \"@/utils/StringUtil\";\n\ntype InsertMessageInput = {\n  code: string;\n  from: string;\n  to: string;\n  signature?: string;\n  blockContext?: any;\n  hostContext?: any;\n  insertIndex: number;\n};\n\nconst lineTail = (code: string, index: number) => {\n  const next = code.indexOf(\"\\n\", index);\n  return next === -1 ? code.length : next + 1;\n};\n\nconst quoteParticipantIfNecessary = (participant: string) => {\n  if (participant.includes(\" \")) {\n    return `\"${participant}\"`;\n  }\n  return participant;\n};\n\nexport const insertMessageInDsl = ({\n  code,\n  from,\n  to,\n  signature = \"newMessage()\",\n  blockContext,\n  hostContext,\n  insertIndex,\n}: InsertMessageInput) => {\n  const quotedFrom = quoteParticipantIfNecessary(from);\n  const quotedTo = quoteParticipantIfNecessary(to);\n  const line = `${quotedFrom}->${quotedTo}.${signature}`;\n  const resolvedBlockContext =\n    blockContext ?? hostContext?.braceBlock?.()?.block?.();\n  const statements: any[] = resolvedBlockContext?.stat?.() || [];\n\n  if (!resolvedBlockContext && hostContext) {\n    const lineStart = getLineHead(code, hostContext.start.start);\n    const lineEnd = lineTail(code, hostContext.stop.stop);\n    const originalLine = code.slice(lineStart, lineEnd).replace(/\\n$/, \"\");\n    const indent = originalLine.match(/^\\s*/)?.[0] ?? \"\";\n    const trimmedLine = originalLine.trimStart();\n    const innerIndent = `${indent}  `;\n    const trailingNewline =\n      lineEnd > 0 && code[lineEnd - 1] === \"\\n\" ? \"\\n\" : \"\";\n    const replacement = `${indent}${trimmedLine} {\\n${innerIndent}${line}\\n${indent}}${trailingNewline}`;\n    const labelStart =\n      lineStart +\n      `${indent}${trimmedLine} {\\n${innerIndent}${quotedFrom}->${quotedTo}.`\n        .length;\n    const labelEnd = labelStart + signature.length - 1;\n\n    return {\n      code: code.slice(0, lineStart) + replacement + code.slice(lineEnd),\n      labelPosition: [labelStart, labelEnd] as [number, number],\n    };\n  }\n\n  if (statements.length === 0) {\n    const prefix =\n      code.endsWith(\"\\n\") || code.length === 0 ? code : `${code}\\n`;\n    const start = prefix.length + `${quotedFrom}->${quotedTo}.`.length;\n    const end = start + signature.length - 1;\n    return {\n      code: `${prefix}${line}`,\n      labelPosition: [start, end] as [number, number],\n    };\n  }\n\n  let insertionOffset: number;\n\n  if (insertIndex >= statements.length) {\n    const lastStat = statements[statements.length - 1];\n    insertionOffset = lineTail(code, lastStat.stop.stop);\n  } else {\n    const targetStat = statements[insertIndex];\n    insertionOffset = getLineHead(code, targetStat.start.start);\n  }\n\n  const needsLeadingNewline =\n    insertionOffset > 0 && code[insertionOffset - 1] !== \"\\n\";\n  const needsTrailingNewline =\n    insertionOffset < code.length && code[insertionOffset] !== \"\\n\";\n\n  const insertedText = `${needsLeadingNewline ? \"\\n\" : \"\"}${line}${needsTrailingNewline ? \"\\n\" : \"\"}`;\n  const newCode =\n    code.slice(0, insertionOffset) + insertedText + code.slice(insertionOffset);\n\n  const actualLineStart = insertionOffset + (needsLeadingNewline ? 1 : 0);\n  const labelStart = actualLineStart + `${quotedFrom}->${quotedTo}.`.length;\n  const labelEnd = labelStart + signature.length - 1;\n\n  return {\n    code: newCode,\n    labelPosition: [labelStart, labelEnd] as [number, number],\n  };\n};\n","import { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport {\n  codeAtom,\n  createMessageDragAtom,\n  diagramElementAtom,\n  enableMessageInsertionAtom,\n  modeAtom,\n  onContentChangeAtom,\n  pendingEditableRangeAtom,\n  RenderMode,\n  rootContextAtom,\n  selectedAtom,\n} from \"@/store/Store\";\nimport { insertMessageInDsl } from \"@/utils/insertMessageInDsl\";\nimport { useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport { useEffect, useMemo, useRef } from \"react\";\n\nconst DRAG_HANDLE_SIZE = 16;\n\nexport const MessageCreateControls = () => {\n  const mode = useAtomValue(modeAtom);\n  const enabled = useAtomValue(enableMessageInsertionAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const rootContext = useAtomValue(rootContextAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const setPendingEditableRange = useSetAtom(pendingEditableRangeAtom);\n  const [, setSelectedParticipants] = useAtom(selectedAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const [dragState, setDragState] = useAtom(createMessageDragAtom);\n  const dragStateRef = useRef<typeof dragState>(null);\n  const dragHandledRef = useRef(false);\n  const participantScreenXRef = useRef<Map<string, number>>(new Map());\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const participants = useMemo(\n    () =>\n      OrderedParticipants(rootContext).filter(\n        (participant) => participant.name !== _STARTER_,\n      ),\n    [rootContext],\n  );\n\n  useEffect(() => {\n    dragStateRef.current = dragState;\n  }, [dragState]);\n\n  useEffect(() => {\n    if (!dragState || !diagramElement) {\n      dragHandledRef.current = false;\n      participantScreenXRef.current = new Map();\n      return;\n    }\n\n    if (participantScreenXRef.current.size === 0) {\n      const map = new Map<string, number>();\n      for (const p of participants) {\n        const el = diagramElement.querySelector(\n          `[data-participant-id=\"${p.name}\"]`,\n        ) as HTMLElement | null;\n        if (el) {\n          const rect = el.getBoundingClientRect();\n          map.set(p.name, rect.left + rect.width / 2);\n        }\n      }\n      participantScreenXRef.current = map;\n    }\n\n    const findNearest = (clientX: number, source: string): string | null => {\n      let nearest: string | null = null;\n      let minDist = Infinity;\n      for (const [name, cx] of participantScreenXRef.current) {\n        if (name === source) continue;\n        const dist = Math.abs(clientX - cx);\n        if (dist < minDist) {\n          minDist = dist;\n          nearest = name;\n        }\n      }\n      return nearest;\n    };\n\n    const rect = diagramElement.getBoundingClientRect();\n\n    const onPointerMove = (event: PointerEvent) => {\n      const current = dragStateRef.current;\n      if (!current) return;\n\n      const target = findNearest(event.clientX, current.source);\n\n      setDragState((prev) =>\n        prev\n          ? {\n              ...prev,\n              pointerX: event.clientX - rect.left,\n              pointerY: event.clientY - rect.top,\n              hoverTarget: target,\n            }\n          : prev,\n      );\n    };\n\n    const onPointerUp = (event: PointerEvent) => {\n      const current = dragStateRef.current;\n      if (!current || dragHandledRef.current) {\n        return;\n      }\n      dragHandledRef.current = true;\n\n      const target = findNearest(event.clientX, current.source);\n      if (target) {\n        const next = insertMessageInDsl({\n          code,\n          from: current.source,\n          to: target,\n          blockContext: current.blockContext,\n          hostContext: current.hostContext,\n          insertIndex: current.insertIndex,\n        });\n        setCode(next.code);\n        onContentChange(next.code);\n        setPendingEditableRange({\n          start: next.labelPosition[0],\n          end: next.labelPosition[1],\n          token: Date.now(),\n        });\n      }\n      setDragState(null);\n      setSelectedParticipants([]);\n    };\n\n    const onKeyDown = (event: KeyboardEvent) => {\n      if (event.key !== \"Escape\") {\n        return;\n      }\n      setDragState(null);\n      setSelectedParticipants([]);\n    };\n\n    window.addEventListener(\"pointermove\", onPointerMove);\n    window.addEventListener(\"pointerup\", onPointerUp, { once: true });\n    window.addEventListener(\"keydown\", onKeyDown);\n    return () => {\n      window.removeEventListener(\"pointermove\", onPointerMove);\n      window.removeEventListener(\"pointerup\", onPointerUp);\n      window.removeEventListener(\"keydown\", onKeyDown);\n    };\n  }, [\n    code,\n    diagramElement,\n    dragState,\n    onContentChange,\n    participants,\n    setCode,\n    setPendingEditableRange,\n    setDragState,\n    setSelectedParticipants,\n  ]);\n\n  if (\n    !enabled ||\n    mode !== RenderMode.Dynamic ||\n    !diagramElement ||\n    participants.length === 0\n  ) {\n    return null;\n  }\n\n  const diagramRect = diagramElement.getBoundingClientRect();\n  const containerRect = containerRef.current?.getBoundingClientRect();\n  const offsetX = containerRect ? containerRect.left - diagramRect.left : 0;\n  const offsetY = containerRect ? containerRect.top - diagramRect.top : 0;\n\n  return (\n    <div\n      ref={containerRef}\n      className=\"absolute inset-0\"\n      style={{ pointerEvents: \"none\" }}\n    >\n      {dragState && (\n        <>\n          <svg\n            className=\"absolute inset-0 z-30\"\n            style={{ pointerEvents: \"none\", overflow: \"visible\" }}\n          >\n            <line\n              x1={dragState.sourceX}\n              y1={dragState.sourceY - offsetY}\n              x2={dragState.pointerX - offsetX}\n              y2={dragState.sourceY - offsetY}\n              stroke=\"#d97706\"\n              strokeWidth=\"2\"\n              strokeDasharray=\"5 4\"\n            />\n          </svg>\n          <div\n            data-testid=\"message-create-drag-indicator\"\n            className=\"absolute z-40 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400 bg-white text-amber-500 text-xs leading-none font-bold flex items-center justify-center shadow-sm pointer-events-none\"\n            style={{\n              width: DRAG_HANDLE_SIZE,\n              height: DRAG_HANDLE_SIZE,\n              left: dragState.pointerX - offsetX,\n              top: dragState.sourceY - offsetY,\n            }}\n            aria-hidden=\"true\"\n          >\n            +\n          </div>\n        </>\n      )}\n      {dragState &&\n        participants.map((participant) => {\n          const isSource = participant.name === dragState.source;\n          const isTarget = participant.name === dragState.hoverTarget;\n          if (!isSource && !isTarget) return null;\n          const element = diagramElement.querySelector(\n            `[data-participant-id=\"${participant.name}\"]`,\n          ) as HTMLElement | null;\n          if (!element) {\n            return null;\n          }\n          const rect = element.getBoundingClientRect();\n          return (\n            <div\n              key={`highlight-${participant.name}`}\n              data-testid={\n                isTarget\n                  ? `message-create-target-${participant.name}`\n                  : undefined\n              }\n              className={\n                isTarget\n                  ? \"absolute z-20 rounded-md border-2 border-amber-400 bg-amber-100/40 pointer-events-none\"\n                  : \"absolute z-20 rounded-md border-2 border-sky-400 bg-sky-100/40 pointer-events-none\"\n              }\n              style={{\n                left: rect.left - (containerRect?.left ?? diagramRect.left) - 4,\n                top: rect.top - (containerRect?.top ?? diagramRect.top) - 4,\n                width: rect.width + 8,\n                height: rect.height + 8,\n              }}\n            />\n          );\n        })}\n    </div>\n  );\n};\n","import {\n  coordinatesAtom,\n  modeAtom,\n  participantsAtom,\n  RenderMode,\n} from \"@/store/Store\";\nimport { useAtomValue } from \"jotai\";\nimport { LifeLine } from \"./LifeLine\";\nimport { LifeLineGroup } from \"./LifeLineGroup\";\nimport { MessageCreateControls } from \"./MessageCreateControls\";\nimport { Fragment, useMemo } from \"react\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { blankParticipant } from \"@/parser/Participants\";\nimport { GroupContext, ParticipantContext, Participants } from \"@/parser\";\n\nexport const LifeLineLayer = (props: {\n  context: any;\n  leftGap: number;\n  renderParticipants?: boolean;\n  renderLifeLine?: boolean;\n}) => {\n  const mode = useAtomValue(modeAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const participants = useAtomValue(participantsAtom);\n\n  const starterParticipant = useMemo(() => {\n    const names = coordinates.orderedParticipantNames();\n    if (names.length === 0) return null;\n    const firstName = names[0];\n    if (firstName === _STARTER_) {\n      return {\n        ...blankParticipant,\n        name: _STARTER_,\n        explicit: false,\n        isStarter: true,\n      };\n    }\n    return null;\n  }, [coordinates]);\n  return (\n    <div\n      className=\"life-line-layer lifeline-layer z-30 absolute h-full flex flex-col top-0 pt-2\"\n      data-participant-names=\"participantNames\"\n      style={{\n        minWidth: mode === RenderMode.Dynamic ? \"200px\" : \"auto\",\n        width: `calc(100% - ${props.leftGap}px)`,\n        // Always pass through pointer events at the container level.\n        // Participant boxes opt back in via pointerEvents: \"auto\".\n        pointerEvents: \"none\",\n      }}\n    >\n      <div className=\"z-lifeline-container relative grow\">\n        {starterParticipant && !starterParticipant?.explicit && (\n          <LifeLine\n            entity={starterParticipant}\n            className=\"starter\"\n            renderParticipants={props.renderParticipants}\n            renderLifeLine={props.renderLifeLine}\n          />\n        )}\n        {((props.context?.children as any[]) || [])\n          .filter(\n            (c) => c instanceof GroupContext || c instanceof ParticipantContext,\n          )\n          .map((child, index) => (\n            <Fragment key={index}>\n              {child instanceof GroupContext && (\n                <LifeLineGroup\n                  key={index}\n                  context={child}\n                  renderParticipants={props.renderParticipants}\n                  renderLifeLine={props.renderLifeLine}\n                />\n              )}\n              {child instanceof ParticipantContext && (\n                <LifeLine\n                  key={index}\n                  entity={Participants(child).First()}\n                  renderParticipants={props.renderParticipants}\n                  renderLifeLine={props.renderLifeLine}\n                />\n              )}\n            </Fragment>\n          ))}\n        {participants.ImplicitArray().map((entity: any) => (\n          <LifeLine\n            key={entity.name}\n            entity={entity}\n            renderParticipants={props.renderParticipants}\n            renderLifeLine={props.renderLifeLine}\n          />\n        ))}\n        {props.renderParticipants && <MessageCreateControls />}\n      </div>\n    </div>\n  );\n};\n","export const getContextType = (context: any) => {\n  const dict: Record<string, string> = {\n    loop: \"FragmentLoop\",\n    alt: \"FragmentAlt\",\n    par: \"FragmentPar\",\n    opt: \"FragmentOpt\",\n    section: \"FragmentSection\",\n    critical: \"FragmentCritical\",\n    tcf: \"FragmentTryCatchFinally\",\n    creation: \"Creation\",\n    message: \"Interaction\",\n    asyncMessage: \"InteractionAsync\",\n    divider: \"Divider\",\n    ret: \"Return\",\n  };\n  const key: string =\n    Object.keys(dict).find((x) => context[x]() !== null) || \"\";\n  return dict[key];\n};\n","import { getContextType } from \"./Context\";\n\nexport const blockLength = (block: any): number => {\n  if (block && block.stat()) {\n    return block.stat().filter((s: any) => getContextType(s) !== \"Divider\")\n      .length;\n  }\n  return 0;\n};\n\nexport const increaseNumber = (number: string, value: number) => {\n  if (number) {\n    const arr: Array<number | string> = number.split(\".\");\n    arr[arr.length - 1] = Number(arr[arr.length - 1]) + value;\n    return arr.join(\".\");\n  } else {\n    return String(value);\n  }\n};\n","import {\n  LIFELINE_WIDTH,\n  OCCURRENCE_BAR_SIDE_WIDTH,\n} from \"@/positioning/Constants\";\n\nexport default class Anchor2 {\n  constructor(\n    private position: number,\n    private layers: number,\n  ) {}\n\n  /**\n   * centerToEdge is used for translateX calculations.\n   */\n  centerToEdge(other: Anchor2): number {\n    return other.rightEdgeOfRightWall() - this.centerOfRightWall();\n  }\n\n  centerToCenter(other: Anchor2): number {\n    return other.centerOfRightWall() - this.centerOfRightWall();\n  }\n  /**\n   * edgeOffset is used for interactionWidth calculations.\n   */\n  edgeOffset(other: Anchor2): number {\n    const isRightToLeft = other.position < this.position;\n\n    const rightEdgeOfLeftAnchor = isRightToLeft\n      ? other.rightEdgeOfRightWall()\n      : this.rightEdgeOfRightWall();\n    const leftEdgeOfRightAnchor = isRightToLeft\n      ? this.leftEdgeOfRightWall()\n      : other.leftEdgeOfRightWall();\n    const distance =\n      leftEdgeOfRightAnchor - rightEdgeOfLeftAnchor - LIFELINE_WIDTH;\n    return isRightToLeft ? distance * -1 : distance;\n  }\n\n  centerOfRightWall(): number {\n    return this.layers <= 1\n      ? this.position\n      : this.position + OCCURRENCE_BAR_SIDE_WIDTH * (this.layers - 1);\n  }\n\n  rightEdgeOfRightWall() {\n    return this.position + OCCURRENCE_BAR_SIDE_WIDTH * this.layers;\n  }\n\n  leftEdgeOfRightWall() {\n    return this.layers === 0\n      ? this.position\n      : this.centerOfRightWall() - OCCURRENCE_BAR_SIDE_WIDTH;\n  }\n}\n","import { TotalWidth } from \"@/components/DiagramFrame/SeqDiagram/WidthOfContext\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { coordinatesAtom } from \"@/store/Store\";\nimport logger from \"@/logger/logger\";\nimport { FRAGMENT_MIN_WIDTH } from \"@/positioning/Constants\";\nimport { useEffect, useState } from \"react\";\nimport sequenceParser from \"@/generated-parser/sequenceParser\";\nimport Anchor2 from \"@/positioning/Anchor2\";\nimport { centerOf } from \"../utils\";\nimport { createStore, useStore } from \"jotai\";\n\ntype Store = ReturnType<typeof createStore>;\n\n// Helper function to calculate the depth/layers on a participant due to nested calls\nconst depthOnParticipant = (context: any, participant: any): number => {\n  return context?.getAncestors((ctx: any) => {\n    const isSync = (ctx: any) => {\n      const isMessageContext = ctx instanceof sequenceParser.MessageContext;\n      const isCreationContext = ctx instanceof sequenceParser.CreationContext;\n      return isMessageContext || isCreationContext;\n    };\n    if (isSync(ctx)) {\n      return ctx.Owner() === participant;\n    }\n    return false;\n  }).length;\n};\n\nconst getLeftParticipant = (store: Store, context: any) => {\n  const allParticipants = store.get(coordinatesAtom).orderedParticipantNames();\n  const localParticipants = getLocalParticipantNames(context);\n  return allParticipants.find((p) => localParticipants.includes(p));\n};\n\nconst getBorder = (store: Store, context: any) => {\n  const allParticipants = store.get(coordinatesAtom).orderedParticipantNames();\n  const frameBuilder = new FrameBuilder(allParticipants);\n  const frame = frameBuilder.getFrame(context);\n  return FrameBorder(frame);\n};\n\nconst getOffsetX = (store: Store, context: any, origin: string) => {\n  const coordinates = store.get(coordinatesAtom);\n  const leftParticipant = getLeftParticipant(store, context) || \"\";\n  const halfLeftParticipant = coordinates.half(leftParticipant);\n\n  // If leftParticipant and origin are the same, no additional offset needed\n  if (leftParticipant === origin || !origin) {\n    logger.debug(\n      `left participant: ${leftParticipant} ${halfLeftParticipant}`,\n    );\n    return getBorder(store, context).left + halfLeftParticipant;\n  }\n\n  // Calculate the depth/layers for the origin participant to account for occurrence bar offset\n  const originLayers = depthOnParticipant(context, origin);\n\n  // Create anchors for both participants to calculate accurate distance\n  const anchor2Origin = new Anchor2(centerOf(coordinates, origin), originLayers);\n  const anchor2LeftParticipant = new Anchor2(centerOf(coordinates, leftParticipant), 0);\n\n  // Calculate the offset from the left participant to the origin, accounting for occurrence bar layers\n  const distanceWithLayers =\n    anchor2LeftParticipant.centerToCenter(anchor2Origin);\n\n  return (\n    distanceWithLayers + getBorder(store, context).left + halfLeftParticipant\n  );\n};\nexport const useFragmentData = (context: any, origin: string) => {\n  const store = useStore();\n  const [collapsed, setCollapsed] = useState(false);\n  const toggleCollapse = () => {\n    setCollapsed((prev) => !prev);\n  };\n\n  useEffect(() => {\n    setCollapsed(false);\n  }, [context]);\n\n  const coordinates = store.get(coordinatesAtom);\n\n  const allParticipants = coordinates.orderedParticipantNames();\n  const localParticipants = getLocalParticipantNames(context);\n  const leftParticipant =\n    allParticipants.find((p) => localParticipants.includes(p)) || \"\";\n\n  const frameBuilder = new FrameBuilder(allParticipants);\n  const frame = frameBuilder.getFrame(context);\n  const border = FrameBorder(frame);\n\n  // Calculate offset using the updated function that accounts for occurrence bar layers\n  const offsetX = getOffsetX(store, context, origin);\n  const halfLeftParticipant = coordinates.half(leftParticipant);\n  const paddingLeft = getBorder(store, context).left + halfLeftParticipant;\n\n  const fragmentStyle = {\n    // +1px for the border of the fragment\n    transform: \"translateX(\" + (offsetX + 1) * -1 + \"px)\",\n    width: TotalWidth(context, coordinates) + \"px\",\n    minWidth: FRAGMENT_MIN_WIDTH + \"px\",\n  };\n\n  return {\n    collapsed,\n    toggleCollapse,\n    offsetX,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    halfLeftParticipant,\n    leftParticipant,\n  };\n};\n","/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(func, thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n    return func.apply(thisArg, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n  return function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return construct(Func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.3.1';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n  const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    }\n  }));\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (typeof cfg.ADD_TAGS === 'function') {\n        EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n      } else {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n    }\n    if (cfg.ADD_ATTR) {\n      if (typeof cfg.ADD_ATTR === 'function') {\n        EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n      } else {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    if (cfg.ADD_FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n          if (_isClobbered(currentNode)) {\n            _forceRemove(currentNode);\n          } else {\n            arrayPop(DOMPurify.removed);\n          }\n        } catch (_) {\n          _removeAttribute(name, currentNode);\n        }\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n  if (obj instanceof Map) {\n    obj.clear =\n      obj.delete =\n      obj.set =\n        function () {\n          throw new Error('map is read-only');\n        };\n  } else if (obj instanceof Set) {\n    obj.add =\n      obj.clear =\n      obj.delete =\n        function () {\n          throw new Error('set is read-only');\n        };\n  }\n\n  // Freeze self\n  Object.freeze(obj);\n\n  Object.getOwnPropertyNames(obj).forEach((name) => {\n    const prop = obj[name];\n    const type = typeof prop;\n\n    // Freeze prop if it is an object or function and also not already frozen\n    if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n      deepFreeze(prop);\n    }\n  });\n\n  return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n  /**\n   * @param {CompiledMode} mode\n   */\n  constructor(mode) {\n    // eslint-disable-next-line no-undefined\n    if (mode.data === undefined) mode.data = {};\n\n    this.data = mode.data;\n    this.isMatchIgnored = false;\n  }\n\n  ignoreMatch() {\n    this.isMatchIgnored = true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n  return value\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n  /** @type Record<string,any> */\n  const result = Object.create(null);\n\n  for (const key in original) {\n    result[key] = original[key];\n  }\n  objects.forEach(function(obj) {\n    for (const key in obj) {\n      result[key] = obj[key];\n    }\n  });\n  return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n  // rarely we can have a sublanguage where language is undefined\n  // TODO: track down why\n  return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n  // sub-language\n  if (name.startsWith(\"language:\")) {\n    return name.replace(\"language:\", \"language-\");\n  }\n  // tiered scope: comment.line\n  if (name.includes(\".\")) {\n    const pieces = name.split(\".\");\n    return [\n      `${prefix}${pieces.shift()}`,\n      ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n    ].join(\" \");\n  }\n  // simple scope\n  return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n  /**\n   * Creates a new HTMLRenderer\n   *\n   * @param {Tree} parseTree - the parse tree (must support `walk` API)\n   * @param {{classPrefix: string}} options\n   */\n  constructor(parseTree, options) {\n    this.buffer = \"\";\n    this.classPrefix = options.classPrefix;\n    parseTree.walk(this);\n  }\n\n  /**\n   * Adds texts to the output stream\n   *\n   * @param {string} text */\n  addText(text) {\n    this.buffer += escapeHTML(text);\n  }\n\n  /**\n   * Adds a node open to the output stream (if needed)\n   *\n   * @param {Node} node */\n  openNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    const className = scopeToCSSClass(node.scope,\n      { prefix: this.classPrefix });\n    this.span(className);\n  }\n\n  /**\n   * Adds a node close to the output stream (if needed)\n   *\n   * @param {Node} node */\n  closeNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    this.buffer += SPAN_CLOSE;\n  }\n\n  /**\n   * returns the accumulated buffer\n  */\n  value() {\n    return this.buffer;\n  }\n\n  // helpers\n\n  /**\n   * Builds a span element\n   *\n   * @param {string} className */\n  span(className) {\n    this.buffer += `<span class=\"${className}\">`;\n  }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/**  */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n  /** @type DataNode */\n  const result = { children: [] };\n  Object.assign(result, opts);\n  return result;\n};\n\nclass TokenTree {\n  constructor() {\n    /** @type DataNode */\n    this.rootNode = newNode();\n    this.stack = [this.rootNode];\n  }\n\n  get top() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  get root() { return this.rootNode; }\n\n  /** @param {Node} node */\n  add(node) {\n    this.top.children.push(node);\n  }\n\n  /** @param {string} scope */\n  openNode(scope) {\n    /** @type Node */\n    const node = newNode({ scope });\n    this.add(node);\n    this.stack.push(node);\n  }\n\n  closeNode() {\n    if (this.stack.length > 1) {\n      return this.stack.pop();\n    }\n    // eslint-disable-next-line no-undefined\n    return undefined;\n  }\n\n  closeAllNodes() {\n    while (this.closeNode());\n  }\n\n  toJSON() {\n    return JSON.stringify(this.rootNode, null, 4);\n  }\n\n  /**\n   * @typedef { import(\"./html_renderer\").Renderer } Renderer\n   * @param {Renderer} builder\n   */\n  walk(builder) {\n    // this does not\n    return this.constructor._walk(builder, this.rootNode);\n    // this works\n    // return TokenTree._walk(builder, this.rootNode);\n  }\n\n  /**\n   * @param {Renderer} builder\n   * @param {Node} node\n   */\n  static _walk(builder, node) {\n    if (typeof node === \"string\") {\n      builder.addText(node);\n    } else if (node.children) {\n      builder.openNode(node);\n      node.children.forEach((child) => this._walk(builder, child));\n      builder.closeNode(node);\n    }\n    return builder;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  static _collapse(node) {\n    if (typeof node === \"string\") return;\n    if (!node.children) return;\n\n    if (node.children.every(el => typeof el === \"string\")) {\n      // node.text = node.children.join(\"\");\n      // delete node.children;\n      node.children = [node.children.join(\"\")];\n    } else {\n      node.children.forEach((child) => {\n        TokenTree._collapse(child);\n      });\n    }\n  }\n}\n\n/**\n  Currently this is all private API, but this is the minimal API necessary\n  that an Emitter must implement to fully support the parser.\n\n  Minimal interface:\n\n  - addText(text)\n  - __addSublanguage(emitter, subLanguageName)\n  - startScope(scope)\n  - endScope()\n  - finalize()\n  - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n  /**\n   * @param {*} options\n   */\n  constructor(options) {\n    super();\n    this.options = options;\n  }\n\n  /**\n   * @param {string} text\n   */\n  addText(text) {\n    if (text === \"\") { return; }\n\n    this.add(text);\n  }\n\n  /** @param {string} scope */\n  startScope(scope) {\n    this.openNode(scope);\n  }\n\n  endScope() {\n    this.closeNode();\n  }\n\n  /**\n   * @param {Emitter & {root: DataNode}} emitter\n   * @param {string} name\n   */\n  __addSublanguage(emitter, name) {\n    /** @type DataNode */\n    const node = emitter.root;\n    if (name) node.scope = `language:${name}`;\n\n    this.add(node);\n  }\n\n  toHTML() {\n    const renderer = new HTMLRenderer(this, this.options);\n    return renderer.value();\n  }\n\n  finalize() {\n    this.closeAllNodes();\n    return true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n  return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n  return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n  const opts = args[args.length - 1];\n\n  if (typeof opts === 'object' && opts.constructor === Object) {\n    args.splice(args.length - 1, 1);\n    return opts;\n  } else {\n    return {};\n  }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n  /** @type { object & {capture?: boolean} }  */\n  const opts = stripOptionsFromArgs(args);\n  const joined = '('\n    + (opts.capture ? \"\" : \"?:\")\n    + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n  return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n  const match = re && re.exec(lexeme);\n  return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n//   interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n//   follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n  let numCaptures = 0;\n\n  return regexps.map((regex) => {\n    numCaptures += 1;\n    const offset = numCaptures;\n    let re = source(regex);\n    let out = '';\n\n    while (re.length > 0) {\n      const match = BACKREF_RE.exec(re);\n      if (!match) {\n        out += re;\n        break;\n      }\n      out += re.substring(0, match.index);\n      re = re.substring(match.index + match[0].length);\n      if (match[0][0] === '\\\\' && match[1]) {\n        // Adjust the backreference.\n        out += '\\\\' + String(Number(match[1]) + offset);\n      } else {\n        out += match[0];\n        if (match[0] === '(') {\n          numCaptures++;\n        }\n      }\n    }\n    return out;\n  }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n  const beginShebang = /^#![ ]*\\//;\n  if (opts.binary) {\n    opts.begin = concat(\n      beginShebang,\n      /.*\\b/,\n      opts.binary,\n      /\\b.*/);\n  }\n  return inherit$1({\n    scope: 'meta',\n    begin: beginShebang,\n    end: /$/,\n    relevance: 0,\n    /** @type {ModeCallback} */\n    \"on:begin\": (m, resp) => {\n      if (m.index !== 0) resp.ignoreMatch();\n    }\n  }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n  begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n  scope: 'string',\n  begin: '\\'',\n  end: '\\'',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n  scope: 'string',\n  begin: '\"',\n  end: '\"',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n  begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n  const mode = inherit$1(\n    {\n      scope: 'comment',\n      begin,\n      end,\n      contains: []\n    },\n    modeOptions\n  );\n  mode.contains.push({\n    scope: 'doctag',\n    // hack to avoid the space from being included. the space is necessary to\n    // match here to prevent the plain text rule below from gobbling up doctags\n    begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n    end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n    excludeBegin: true,\n    relevance: 0\n  });\n  const ENGLISH_WORD = either(\n    // list of common 1 and 2 letter words in English\n    \"I\",\n    \"a\",\n    \"is\",\n    \"so\",\n    \"us\",\n    \"to\",\n    \"at\",\n    \"if\",\n    \"in\",\n    \"it\",\n    \"on\",\n    // note: this is not an exhaustive list of contractions, just popular ones\n    /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n    /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n    /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n  );\n  // looking like plain text, more likely to be a comment\n  mode.contains.push(\n    {\n      // TODO: how to include \", (, ) without breaking grammars that use these for\n      // comment delimiters?\n      // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n      // ---\n\n      // this tries to find sequences of 3 english words in a row (without any\n      // \"programming\" type syntax) this gives us a strong signal that we've\n      // TRULY found a comment - vs perhaps scanning with the wrong language.\n      // It's possible to find something that LOOKS like the start of the\n      // comment - but then if there is no readable text - good chance it is a\n      // false match and not a comment.\n      //\n      // for a visual example please see:\n      // https://github.com/highlightjs/highlight.js/issues/2827\n\n      begin: concat(\n        /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n        '(',\n        ENGLISH_WORD,\n        /[.]?[:]?([.][ ]|[ ])/,\n        '){3}') // look for 3 words in a row\n    }\n  );\n  return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n  scope: 'number',\n  begin: NUMBER_RE,\n  relevance: 0\n};\nconst C_NUMBER_MODE = {\n  scope: 'number',\n  begin: C_NUMBER_RE,\n  relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n  scope: 'number',\n  begin: BINARY_NUMBER_RE,\n  relevance: 0\n};\nconst REGEXP_MODE = {\n  scope: \"regexp\",\n  begin: /\\/(?=[^/\\n]*\\/)/,\n  end: /\\/[gimuy]*/,\n  contains: [\n    BACKSLASH_ESCAPE,\n    {\n      begin: /\\[/,\n      end: /\\]/,\n      relevance: 0,\n      contains: [BACKSLASH_ESCAPE]\n    }\n  ]\n};\nconst TITLE_MODE = {\n  scope: 'title',\n  begin: IDENT_RE,\n  relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n  scope: 'title',\n  begin: UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\nconst METHOD_GUARD = {\n  // excludes method names from keyword processing\n  begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n  return Object.assign(mode,\n    {\n      /** @type {ModeCallback} */\n      'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n      /** @type {ModeCallback} */\n      'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n    });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  APOS_STRING_MODE: APOS_STRING_MODE,\n  BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n  BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n  BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n  COMMENT: COMMENT,\n  C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n  C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n  C_NUMBER_MODE: C_NUMBER_MODE,\n  C_NUMBER_RE: C_NUMBER_RE,\n  END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n  HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n  IDENT_RE: IDENT_RE,\n  MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n  METHOD_GUARD: METHOD_GUARD,\n  NUMBER_MODE: NUMBER_MODE,\n  NUMBER_RE: NUMBER_RE,\n  PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n  QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n  REGEXP_MODE: REGEXP_MODE,\n  RE_STARTERS_RE: RE_STARTERS_RE,\n  SHEBANG: SHEBANG,\n  TITLE_MODE: TITLE_MODE,\n  UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n  UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`.  The extension then just moves `match` into\n// `begin` when it runs.  Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n  const before = match.input[match.index - 1];\n  if (before === \".\") {\n    response.ignoreMatch();\n  }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.className !== undefined) {\n    mode.scope = mode.className;\n    delete mode.className;\n  }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n  if (!parent) return;\n  if (!mode.beginKeywords) return;\n\n  // for languages with keywords that include non-word characters checking for\n  // a word boundary is not sufficient, so instead we check for a word boundary\n  // or whitespace - this does no harm in any case since our keyword engine\n  // doesn't allow spaces in keywords anyways and we still check for the boundary\n  // first\n  mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n  mode.__beforeBegin = skipIfHasPrecedingDot;\n  mode.keywords = mode.keywords || mode.beginKeywords;\n  delete mode.beginKeywords;\n\n  // prevents double relevance, the keywords themselves provide\n  // relevance, the mode doesn't need to double it\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n  if (!Array.isArray(mode.illegal)) return;\n\n  mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n  if (!mode.match) return;\n  if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n  mode.begin = mode.match;\n  delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n  if (!mode.beforeMatch) return;\n  // starts conflicts with endsParent which we need to make sure the child\n  // rule is not matched multiple times\n  if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n  const originalMode = Object.assign({}, mode);\n  Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n  mode.keywords = originalMode.keywords;\n  mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n  mode.starts = {\n    relevance: 0,\n    contains: [\n      Object.assign(originalMode, { endsParent: true })\n    ]\n  };\n  mode.relevance = 0;\n\n  delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n  'of',\n  'and',\n  'for',\n  'in',\n  'not',\n  'or',\n  'if',\n  'then',\n  'parent', // common variable name\n  'list', // common variable name\n  'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n  /** @type {import(\"highlight.js/private\").KeywordDict} */\n  const compiledKeywords = Object.create(null);\n\n  // input can be a string of keywords, an array of keywords, or a object with\n  // named keys representing scopeName (which can then point to a string or array)\n  if (typeof rawKeywords === 'string') {\n    compileList(scopeName, rawKeywords.split(\" \"));\n  } else if (Array.isArray(rawKeywords)) {\n    compileList(scopeName, rawKeywords);\n  } else {\n    Object.keys(rawKeywords).forEach(function(scopeName) {\n      // collapse all our objects back into the parent object\n      Object.assign(\n        compiledKeywords,\n        compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n      );\n    });\n  }\n  return compiledKeywords;\n\n  // ---\n\n  /**\n   * Compiles an individual list of keywords\n   *\n   * Ex: \"for if when while|5\"\n   *\n   * @param {string} scopeName\n   * @param {Array<string>} keywordList\n   */\n  function compileList(scopeName, keywordList) {\n    if (caseInsensitive) {\n      keywordList = keywordList.map(x => x.toLowerCase());\n    }\n    keywordList.forEach(function(keyword) {\n      const pair = keyword.split('|');\n      compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n    });\n  }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n  // manual scores always win over common keywords\n  // so you can force a score of 1 if you really insist\n  if (providedScore) {\n    return Number(providedScore);\n  }\n\n  return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n  return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n  console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n  console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n  if (seenDeprecations[`${version}/${message}`]) return;\n\n  console.log(`Deprecated as of ${version}. ${message}`);\n  seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n *   { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n *   (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n *   { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5.  This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n  let offset = 0;\n  const scopeNames = mode[key];\n  /** @type Record<number,boolean> */\n  const emit = {};\n  /** @type Record<number,string> */\n  const positions = {};\n\n  for (let i = 1; i <= regexes.length; i++) {\n    positions[i + offset] = scopeNames[i];\n    emit[i + offset] = true;\n    offset += countMatchGroups(regexes[i - 1]);\n  }\n  // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n  // output from inside match groups\n  mode[key] = positions;\n  mode[key]._emit = emit;\n  mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n  if (!Array.isArray(mode.begin)) return;\n\n  if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n    error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n    error(\"beginScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n  mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n  if (!Array.isArray(mode.end)) return;\n\n  if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n    error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n    error(\"endScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.end, { key: \"endScope\" });\n  mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n  {\n    match: [ /def/, /\\w+/ ]\n    scope: { 1: \"keyword\" , 2: \"title\" }\n  }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n  if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n    mode.beginScope = mode.scope;\n    delete mode.scope;\n  }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n  scopeSugar(mode);\n\n  if (typeof mode.beginScope === \"string\") {\n    mode.beginScope = { _wrap: mode.beginScope };\n  }\n  if (typeof mode.endScope === \"string\") {\n    mode.endScope = { _wrap: mode.endScope };\n  }\n\n  beginMultiClass(mode);\n  endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n  /**\n   * Builds a regex with the case sensitivity of the current language\n   *\n   * @param {RegExp | string} value\n   * @param {boolean} [global]\n   */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm'\n      + (language.case_insensitive ? 'i' : '')\n      + (language.unicodeRegex ? 'u' : '')\n      + (global ? 'g' : '')\n    );\n  }\n\n  /**\n    Stores multiple regular expressions and allows you to quickly search for\n    them all in a string simultaneously - returning the first match.  It does\n    this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n    and joined by `|` - using match groups to track position.  When a match is\n    found checking which position in the array has content allows us to figure\n    out which of the original regexes / match groups triggered the match.\n\n    The match object itself (the result of `Regex.exec`) is returned but also\n    enhanced by merging in any meta-data that was registered with the regex.\n    This is how we keep track of which mode matched, and what type of rule\n    (`illegal`, `begin`, end, etc).\n  */\n  class MultiRegex {\n    constructor() {\n      this.matchIndexes = {};\n      // @ts-ignore\n      this.regexes = [];\n      this.matchAt = 1;\n      this.position = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      opts.position = this.position++;\n      // @ts-ignore\n      this.matchIndexes[this.matchAt] = opts;\n      this.regexes.push([opts, re]);\n      this.matchAt += countMatchGroups(re) + 1;\n    }\n\n    compile() {\n      if (this.regexes.length === 0) {\n        // avoids the need to check length every time exec is called\n        // @ts-ignore\n        this.exec = () => null;\n      }\n      const terminators = this.regexes.map(el => el[1]);\n      this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n      this.lastIndex = 0;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      this.matcherRe.lastIndex = this.lastIndex;\n      const match = this.matcherRe.exec(s);\n      if (!match) { return null; }\n\n      // eslint-disable-next-line no-undefined\n      const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n      // @ts-ignore\n      const matchData = this.matchIndexes[i];\n      // trim off any earlier non-relevant match groups (ie, the other regex\n      // match groups that make up the multi-matcher)\n      match.splice(0, i);\n\n      return Object.assign(match, matchData);\n    }\n  }\n\n  /*\n    Created to solve the key deficiently with MultiRegex - there is no way to\n    test for multiple matches at a single location.  Why would we need to do\n    that?  In the future a more dynamic engine will allow certain matches to be\n    ignored.  An example: if we matched say the 3rd regex in a large group but\n    decided to ignore it - we'd need to started testing again at the 4th\n    regex... but MultiRegex itself gives us no real way to do that.\n\n    So what this class creates MultiRegexs on the fly for whatever search\n    position they are needed.\n\n    NOTE: These additional MultiRegex objects are created dynamically.  For most\n    grammars most of the time we will never actually need anything more than the\n    first MultiRegex - so this shouldn't have too much overhead.\n\n    Say this is our search group, and we match regex3, but wish to ignore it.\n\n      regex1 | regex2 | regex3 | regex4 | regex5    ' ie, startAt = 0\n\n    What we need is a new MultiRegex that only includes the remaining\n    possibilities:\n\n      regex4 | regex5                               ' ie, startAt = 3\n\n    This class wraps all that complexity up in a simple API... `startAt` decides\n    where in the array of expressions to start doing the matching. It\n    auto-increments, so if a match is found at position 2, then startAt will be\n    set to 3.  If the end is reached startAt will return to 0.\n\n    MOST of the time the parser will be setting startAt manually to 0.\n  */\n  class ResumableMultiRegex {\n    constructor() {\n      // @ts-ignore\n      this.rules = [];\n      // @ts-ignore\n      this.multiRegexes = [];\n      this.count = 0;\n\n      this.lastIndex = 0;\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    getMatcher(index) {\n      if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n      const matcher = new MultiRegex();\n      this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n      matcher.compile();\n      this.multiRegexes[index] = matcher;\n      return matcher;\n    }\n\n    resumingScanAtSamePosition() {\n      return this.regexIndex !== 0;\n    }\n\n    considerAll() {\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      this.rules.push([re, opts]);\n      if (opts.type === \"begin\") this.count++;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      const m = this.getMatcher(this.regexIndex);\n      m.lastIndex = this.lastIndex;\n      let result = m.exec(s);\n\n      // The following is because we have no easy way to say \"resume scanning at the\n      // existing position but also skip the current rule ONLY\". What happens is\n      // all prior rules are also skipped which can result in matching the wrong\n      // thing. Example of matching \"booger\":\n\n      // our matcher is [string, \"booger\", number]\n      //\n      // ....booger....\n\n      // if \"booger\" is ignored then we'd really need a regex to scan from the\n      // SAME position for only: [string, number] but ignoring \"booger\" (if it\n      // was the first match), a simple resume would scan ahead who knows how\n      // far looking only for \"number\", ignoring potential string matches (or\n      // future \"booger\" matches that might be valid.)\n\n      // So what we do: We execute two matchers, one resuming at the same\n      // position, but the second full matcher starting at the position after:\n\n      //     /--- resume first regex match here (for [number])\n      //     |/---- full match here for [string, \"booger\", number]\n      //     vv\n      // ....booger....\n\n      // Which ever results in a match first is then used. So this 3-4 step\n      // process essentially allows us to say \"match at this position, excluding\n      // a prior rule that was ignored\".\n      //\n      // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n      // 2. Resume matching for [number]\n      // 3. Match at index + 1 for [string, \"booger\", number]\n      // 4. If #2 and #3 result in matches, which came first?\n      if (this.resumingScanAtSamePosition()) {\n        if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n          const m2 = this.getMatcher(0);\n          m2.lastIndex = this.lastIndex + 1;\n          result = m2.exec(s);\n        }\n      }\n\n      if (result) {\n        this.regexIndex += result.position + 1;\n        if (this.regexIndex === this.count) {\n          // wrap-around to considering all matches again\n          this.considerAll();\n        }\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n   * the content and find matches.\n   *\n   * @param {CompiledMode} mode\n   * @returns {ResumableMultiRegex}\n   */\n  function buildModeRegex(mode) {\n    const mm = new ResumableMultiRegex();\n\n    mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n    if (mode.terminatorEnd) {\n      mm.addRule(mode.terminatorEnd, { type: \"end\" });\n    }\n    if (mode.illegal) {\n      mm.addRule(mode.illegal, { type: \"illegal\" });\n    }\n\n    return mm;\n  }\n\n  /** skip vs abort vs ignore\n   *\n   * @skip   - The mode is still entered and exited normally (and contains rules apply),\n   *           but all content is held and added to the parent buffer rather than being\n   *           output when the mode ends.  Mostly used with `sublanguage` to build up\n   *           a single large buffer than can be parsed by sublanguage.\n   *\n   *             - The mode begin ands ends normally.\n   *             - Content matched is added to the parent mode buffer.\n   *             - The parser cursor is moved forward normally.\n   *\n   * @abort  - A hack placeholder until we have ignore.  Aborts the mode (as if it\n   *           never matched) but DOES NOT continue to match subsequent `contains`\n   *           modes.  Abort is bad/suboptimal because it can result in modes\n   *           farther down not getting applied because an earlier rule eats the\n   *           content but then aborts.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is added to the mode buffer.\n   *             - The parser cursor is moved forward accordingly.\n   *\n   * @ignore - Ignores the mode (as if it never matched) and continues to match any\n   *           subsequent `contains` modes.  Ignore isn't technically possible with\n   *           the current parser implementation.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is ignored.\n   *             - The parser cursor is not moved forward.\n   */\n\n  /**\n   * Compiles an individual mode\n   *\n   * This can raise an error if the mode contains certain detectable known logic\n   * issues.\n   * @param {Mode} mode\n   * @param {CompiledMode | null} [parent]\n   * @returns {CompiledMode | never}\n   */\n  function compileMode(mode, parent) {\n    const cmode = /** @type CompiledMode */ (mode);\n    if (mode.isCompiled) return cmode;\n\n    [\n      scopeClassName,\n      // do this early so compiler extensions generally don't have to worry about\n      // the distinction between match/begin\n      compileMatch,\n      MultiClass,\n      beforeMatchExt\n    ].forEach(ext => ext(mode, parent));\n\n    language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n    // __beforeBegin is considered private API, internal use only\n    mode.__beforeBegin = null;\n\n    [\n      beginKeywords,\n      // do this later so compiler extensions that come earlier have access to the\n      // raw array if they wanted to perhaps manipulate it, etc.\n      compileIllegal,\n      // default to 1 relevance if not specified\n      compileRelevance\n    ].forEach(ext => ext(mode, parent));\n\n    mode.isCompiled = true;\n\n    let keywordPattern = null;\n    if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n      // we need a copy because keywords might be compiled multiple times\n      // so we can't go deleting $pattern from the original on the first\n      // pass\n      mode.keywords = Object.assign({}, mode.keywords);\n      keywordPattern = mode.keywords.$pattern;\n      delete mode.keywords.$pattern;\n    }\n    keywordPattern = keywordPattern || /\\w+/;\n\n    if (mode.keywords) {\n      mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n    }\n\n    cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n    if (parent) {\n      if (!mode.begin) mode.begin = /\\B|\\b/;\n      cmode.beginRe = langRe(cmode.begin);\n      if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n      if (mode.end) cmode.endRe = langRe(cmode.end);\n      cmode.terminatorEnd = source(cmode.end) || '';\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n      }\n    }\n    if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n    if (!mode.contains) mode.contains = [];\n\n    mode.contains = [].concat(...mode.contains.map(function(c) {\n      return expandOrCloneMode(c === 'self' ? mode : c);\n    }));\n    mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    cmode.matcher = buildModeRegex(cmode);\n    return cmode;\n  }\n\n  if (!language.compilerExtensions) language.compilerExtensions = [];\n\n  // self is not valid at the top-level\n  if (language.contains && language.contains.includes('self')) {\n    throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");\n  }\n\n  // we need a null object, which inherit will guarantee\n  language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n  return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n  if (!mode) return false;\n\n  return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n  if (mode.variants && !mode.cachedVariants) {\n    mode.cachedVariants = mode.variants.map(function(variant) {\n      return inherit$1(mode, { variants: null }, variant);\n    });\n  }\n\n  // EXPAND\n  // if we have variants then essentially \"replace\" the mode with the variants\n  // this happens in compileMode, where this function is called from\n  if (mode.cachedVariants) {\n    return mode.cachedVariants;\n  }\n\n  // CLONE\n  // if we have dependencies on parents then we need a unique\n  // instance of ourselves, so we can be reused with many\n  // different parents without issue\n  if (dependencyOnParent(mode)) {\n    return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n  }\n\n  if (Object.isFrozen(mode)) {\n    return inherit$1(mode);\n  }\n\n  // no special dependency issues, just return ourselves\n  return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n  constructor(reason, html) {\n    super(reason);\n    this.name = \"HTMLInjectionError\";\n    this.html = html;\n  }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n  // Global internal variables used within the highlight.js library.\n  /** @type {Record<string, Language>} */\n  const languages = Object.create(null);\n  /** @type {Record<string, string>} */\n  const aliases = Object.create(null);\n  /** @type {HLJSPlugin[]} */\n  const plugins = [];\n\n  // safe/production mode - swallows more errors, tries to keep running\n  // even if a single syntax or parse hits a fatal error\n  let SAFE_MODE = true;\n  const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n  /** @type {Language} */\n  const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  /** @type HLJSOptions */\n  let options = {\n    ignoreUnescapedHTML: false,\n    throwUnescapedHTML: false,\n    noHighlightRe: /^(no-?highlight)$/i,\n    languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n    classPrefix: 'hljs-',\n    cssSelector: 'pre code',\n    languages: null,\n    // beta configuration options, subject to change, welcome to discuss\n    // https://github.com/highlightjs/highlight.js/issues/1086\n    __emitter: TokenTreeEmitter\n  };\n\n  /* Utility functions */\n\n  /**\n   * Tests a language name to see if highlighting should be skipped\n   * @param {string} languageName\n   */\n  function shouldNotHighlight(languageName) {\n    return options.noHighlightRe.test(languageName);\n  }\n\n  /**\n   * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n   */\n  function blockLanguage(block) {\n    let classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    const match = options.languageDetectRe.exec(classes);\n    if (match) {\n      const language = getLanguage(match[1]);\n      if (!language) {\n        warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n        warn(\"Falling back to no-highlight mode for this block.\", block);\n      }\n      return language ? match[1] : 'no-highlight';\n    }\n\n    return classes\n      .split(/\\s+/)\n      .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n  }\n\n  /**\n   * Core highlighting function.\n   *\n   * OLD API\n   * highlight(lang, code, ignoreIllegals, continuation)\n   *\n   * NEW API\n   * highlight(code, {lang, ignoreIllegals})\n   *\n   * @param {string} codeOrLanguageName - the language to use for highlighting\n   * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n   * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   *\n   * @returns {HighlightResult} Result - an object that represents the result\n   * @property {string} language - the language name\n   * @property {number} relevance - the relevance score\n   * @property {string} value - the highlighted HTML code\n   * @property {string} code - the original raw code\n   * @property {CompiledMode} top - top of the current mode stack\n   * @property {boolean} illegal - indicates whether any illegal matches were found\n  */\n  function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n    let code = \"\";\n    let languageName = \"\";\n    if (typeof optionsOrCode === \"object\") {\n      code = codeOrLanguageName;\n      ignoreIllegals = optionsOrCode.ignoreIllegals;\n      languageName = optionsOrCode.language;\n    } else {\n      // old API\n      deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n      deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n      languageName = codeOrLanguageName;\n      code = optionsOrCode;\n    }\n\n    // https://github.com/highlightjs/highlight.js/issues/3149\n    // eslint-disable-next-line no-undefined\n    if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n    /** @type {BeforeHighlightContext} */\n    const context = {\n      code,\n      language: languageName\n    };\n    // the plugin can change the desired language or the code to be highlighted\n    // just be changing the object it was passed\n    fire(\"before:highlight\", context);\n\n    // a before plugin can usurp the result completely by providing it's own\n    // in which case we don't even need to call highlight\n    const result = context.result\n      ? context.result\n      : _highlight(context.language, context.code, ignoreIllegals);\n\n    result.code = context.code;\n    // the plugin can change anything in result to suite it\n    fire(\"after:highlight\", result);\n\n    return result;\n  }\n\n  /**\n   * private highlight that's used internally and does not fire callbacks\n   *\n   * @param {string} languageName - the language to use for highlighting\n   * @param {string} codeToHighlight - the code to highlight\n   * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode?} [continuation] - current continuation mode, if any\n   * @returns {HighlightResult} - result of the highlight operation\n  */\n  function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n    const keywordHits = Object.create(null);\n\n    /**\n     * Return keyword data if a match is a keyword\n     * @param {CompiledMode} mode - current mode\n     * @param {string} matchText - the textual match\n     * @returns {KeywordData | false}\n     */\n    function keywordData(mode, matchText) {\n      return mode.keywords[matchText];\n    }\n\n    function processKeywords() {\n      if (!top.keywords) {\n        emitter.addText(modeBuffer);\n        return;\n      }\n\n      let lastIndex = 0;\n      top.keywordPatternRe.lastIndex = 0;\n      let match = top.keywordPatternRe.exec(modeBuffer);\n      let buf = \"\";\n\n      while (match) {\n        buf += modeBuffer.substring(lastIndex, match.index);\n        const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n        const data = keywordData(top, word);\n        if (data) {\n          const [kind, keywordRelevance] = data;\n          emitter.addText(buf);\n          buf = \"\";\n\n          keywordHits[word] = (keywordHits[word] || 0) + 1;\n          if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n          if (kind.startsWith(\"_\")) {\n            // _ implied for relevance only, do not highlight\n            // by applying a class name\n            buf += match[0];\n          } else {\n            const cssClass = language.classNameAliases[kind] || kind;\n            emitKeyword(match[0], cssClass);\n          }\n        } else {\n          buf += match[0];\n        }\n        lastIndex = top.keywordPatternRe.lastIndex;\n        match = top.keywordPatternRe.exec(modeBuffer);\n      }\n      buf += modeBuffer.substring(lastIndex);\n      emitter.addText(buf);\n    }\n\n    function processSubLanguage() {\n      if (modeBuffer === \"\") return;\n      /** @type HighlightResult */\n      let result = null;\n\n      if (typeof top.subLanguage === 'string') {\n        if (!languages[top.subLanguage]) {\n          emitter.addText(modeBuffer);\n          return;\n        }\n        result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n        continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n      } else {\n        result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n      }\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Use case in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      emitter.__addSublanguage(result._emitter, result.language);\n    }\n\n    function processBuffer() {\n      if (top.subLanguage != null) {\n        processSubLanguage();\n      } else {\n        processKeywords();\n      }\n      modeBuffer = '';\n    }\n\n    /**\n     * @param {string} text\n     * @param {string} scope\n     */\n    function emitKeyword(keyword, scope) {\n      if (keyword === \"\") return;\n\n      emitter.startScope(scope);\n      emitter.addText(keyword);\n      emitter.endScope();\n    }\n\n    /**\n     * @param {CompiledScope} scope\n     * @param {RegExpMatchArray} match\n     */\n    function emitMultiClass(scope, match) {\n      let i = 1;\n      const max = match.length - 1;\n      while (i <= max) {\n        if (!scope._emit[i]) { i++; continue; }\n        const klass = language.classNameAliases[scope[i]] || scope[i];\n        const text = match[i];\n        if (klass) {\n          emitKeyword(text, klass);\n        } else {\n          modeBuffer = text;\n          processKeywords();\n          modeBuffer = \"\";\n        }\n        i++;\n      }\n    }\n\n    /**\n     * @param {CompiledMode} mode - new mode to start\n     * @param {RegExpMatchArray} match\n     */\n    function startNewMode(mode, match) {\n      if (mode.scope && typeof mode.scope === \"string\") {\n        emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n      }\n      if (mode.beginScope) {\n        // beginScope just wraps the begin match itself in a scope\n        if (mode.beginScope._wrap) {\n          emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n          modeBuffer = \"\";\n        } else if (mode.beginScope._multi) {\n          // at this point modeBuffer should just be the match\n          emitMultiClass(mode.beginScope, match);\n          modeBuffer = \"\";\n        }\n      }\n\n      top = Object.create(mode, { parent: { value: top } });\n      return top;\n    }\n\n    /**\n     * @param {CompiledMode } mode - the mode to potentially end\n     * @param {RegExpMatchArray} match - the latest match\n     * @param {string} matchPlusRemainder - match plus remainder of content\n     * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n     */\n    function endOfMode(mode, match, matchPlusRemainder) {\n      let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n      if (matched) {\n        if (mode[\"on:end\"]) {\n          const resp = new Response(mode);\n          mode[\"on:end\"](match, resp);\n          if (resp.isMatchIgnored) matched = false;\n        }\n\n        if (matched) {\n          while (mode.endsParent && mode.parent) {\n            mode = mode.parent;\n          }\n          return mode;\n        }\n      }\n      // even if on:end fires an `ignore` it's still possible\n      // that we might trigger the end node because of a parent mode\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, match, matchPlusRemainder);\n      }\n    }\n\n    /**\n     * Handle matching but then ignoring a sequence of text\n     *\n     * @param {string} lexeme - string containing full match text\n     */\n    function doIgnore(lexeme) {\n      if (top.matcher.regexIndex === 0) {\n        // no more regexes to potentially match here, so we move the cursor forward one\n        // space\n        modeBuffer += lexeme[0];\n        return 1;\n      } else {\n        // no need to move the cursor, we still have additional regexes to try and\n        // match at this very spot\n        resumeScanAtSamePosition = true;\n        return 0;\n      }\n    }\n\n    /**\n     * Handle the start of a new potential mode match\n     *\n     * @param {EnhancedMatch} match - the current match\n     * @returns {number} how far to advance the parse cursor\n     */\n    function doBeginMatch(match) {\n      const lexeme = match[0];\n      const newMode = match.rule;\n\n      const resp = new Response(newMode);\n      // first internal before callbacks, then the public ones\n      const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n      for (const cb of beforeCallbacks) {\n        if (!cb) continue;\n        cb(match, resp);\n        if (resp.isMatchIgnored) return doIgnore(lexeme);\n      }\n\n      if (newMode.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (newMode.excludeBegin) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (!newMode.returnBegin && !newMode.excludeBegin) {\n          modeBuffer = lexeme;\n        }\n      }\n      startNewMode(newMode, match);\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    /**\n     * Handle the potential end of mode\n     *\n     * @param {RegExpMatchArray} match - the current match\n     */\n    function doEndMatch(match) {\n      const lexeme = match[0];\n      const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n      const endMode = endOfMode(top, match, matchPlusRemainder);\n      if (!endMode) { return NO_MATCH; }\n\n      const origin = top;\n      if (top.endScope && top.endScope._wrap) {\n        processBuffer();\n        emitKeyword(lexeme, top.endScope._wrap);\n      } else if (top.endScope && top.endScope._multi) {\n        processBuffer();\n        emitMultiClass(top.endScope, match);\n      } else if (origin.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (!(origin.returnEnd || origin.excludeEnd)) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (origin.excludeEnd) {\n          modeBuffer = lexeme;\n        }\n      }\n      do {\n        if (top.scope) {\n          emitter.closeNode();\n        }\n        if (!top.skip && !top.subLanguage) {\n          relevance += top.relevance;\n        }\n        top = top.parent;\n      } while (top !== endMode.parent);\n      if (endMode.starts) {\n        startNewMode(endMode.starts, match);\n      }\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    function processContinuations() {\n      const list = [];\n      for (let current = top; current !== language; current = current.parent) {\n        if (current.scope) {\n          list.unshift(current.scope);\n        }\n      }\n      list.forEach(item => emitter.openNode(item));\n    }\n\n    /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n    let lastMatch = {};\n\n    /**\n     *  Process an individual match\n     *\n     * @param {string} textBeforeMatch - text preceding the match (since the last match)\n     * @param {EnhancedMatch} [match] - the match itself\n     */\n    function processLexeme(textBeforeMatch, match) {\n      const lexeme = match && match[0];\n\n      // add non-matched text to the current mode buffer\n      modeBuffer += textBeforeMatch;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      // we've found a 0 width match and we're stuck, so we need to advance\n      // this happens when we have badly behaved rules that have optional matchers to the degree that\n      // sometimes they can end up matching nothing at all\n      // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n      if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n        // spit the \"skipped\" character that our regex choked on back into the output sequence\n        modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n        if (!SAFE_MODE) {\n          /** @type {AnnotatedError} */\n          const err = new Error(`0 width match regex (${languageName})`);\n          err.languageName = languageName;\n          err.badRule = lastMatch.rule;\n          throw err;\n        }\n        return 1;\n      }\n      lastMatch = match;\n\n      if (match.type === \"begin\") {\n        return doBeginMatch(match);\n      } else if (match.type === \"illegal\" && !ignoreIllegals) {\n        // illegal match, we do not continue processing\n        /** @type {AnnotatedError} */\n        const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n        err.mode = top;\n        throw err;\n      } else if (match.type === \"end\") {\n        const processed = doEndMatch(match);\n        if (processed !== NO_MATCH) {\n          return processed;\n        }\n      }\n\n      // edge case for when illegal matches $ (end of line) which is technically\n      // a 0 width match but not a begin/end match so it's not caught by the\n      // first handler (when ignoreIllegals is true)\n      if (match.type === \"illegal\" && lexeme === \"\") {\n        // advance so we aren't stuck in an infinite loop\n        modeBuffer += \"\\n\";\n        return 1;\n      }\n\n      // infinite loops are BAD, this is a last ditch catch all. if we have a\n      // decent number of iterations yet our index (cursor position in our\n      // parsing) still 3x behind our index then something is very wrong\n      // so we bail\n      if (iterations > 100000 && iterations > match.index * 3) {\n        const err = new Error('potential infinite loop, way more iterations than matches');\n        throw err;\n      }\n\n      /*\n      Why might be find ourselves here?  An potential end match that was\n      triggered but could not be completed.  IE, `doEndMatch` returned NO_MATCH.\n      (this could be because a callback requests the match be ignored, etc)\n\n      This causes no real harm other than stopping a few times too many.\n      */\n\n      modeBuffer += lexeme;\n      return lexeme.length;\n    }\n\n    const language = getLanguage(languageName);\n    if (!language) {\n      error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n      throw new Error('Unknown language: \"' + languageName + '\"');\n    }\n\n    const md = compileLanguage(language);\n    let result = '';\n    /** @type {CompiledMode} */\n    let top = continuation || md;\n    /** @type Record<string,CompiledMode> */\n    const continuations = {}; // keep continuations for sub-languages\n    const emitter = new options.__emitter(options);\n    processContinuations();\n    let modeBuffer = '';\n    let relevance = 0;\n    let index = 0;\n    let iterations = 0;\n    let resumeScanAtSamePosition = false;\n\n    try {\n      if (!language.__emitTokens) {\n        top.matcher.considerAll();\n\n        for (;;) {\n          iterations++;\n          if (resumeScanAtSamePosition) {\n            // only regexes not matched previously will now be\n            // considered for a potential match\n            resumeScanAtSamePosition = false;\n          } else {\n            top.matcher.considerAll();\n          }\n          top.matcher.lastIndex = index;\n\n          const match = top.matcher.exec(codeToHighlight);\n          // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n          if (!match) break;\n\n          const beforeMatch = codeToHighlight.substring(index, match.index);\n          const processedCount = processLexeme(beforeMatch, match);\n          index = match.index + processedCount;\n        }\n        processLexeme(codeToHighlight.substring(index));\n      } else {\n        language.__emitTokens(codeToHighlight, emitter);\n      }\n\n      emitter.finalize();\n      result = emitter.toHTML();\n\n      return {\n        language: languageName,\n        value: result,\n        relevance,\n        illegal: false,\n        _emitter: emitter,\n        _top: top\n      };\n    } catch (err) {\n      if (err.message && err.message.includes('Illegal')) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: true,\n          relevance: 0,\n          _illegalBy: {\n            message: err.message,\n            index,\n            context: codeToHighlight.slice(index - 100, index + 100),\n            mode: err.mode,\n            resultSoFar: result\n          },\n          _emitter: emitter\n        };\n      } else if (SAFE_MODE) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: false,\n          relevance: 0,\n          errorRaised: err,\n          _emitter: emitter,\n          _top: top\n        };\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  /**\n   * returns a valid highlight result, without actually doing any actual work,\n   * auto highlight starts with this and it's possible for small snippets that\n   * auto-detection may not find a better match\n   * @param {string} code\n   * @returns {HighlightResult}\n   */\n  function justTextHighlightResult(code) {\n    const result = {\n      value: escape(code),\n      illegal: false,\n      relevance: 0,\n      _top: PLAINTEXT_LANGUAGE,\n      _emitter: new options.__emitter(options)\n    };\n    result._emitter.addText(code);\n    return result;\n  }\n\n  /**\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - secondBest (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n    @param {string} code\n    @param {Array<string>} [languageSubset]\n    @returns {AutoHighlightResult}\n  */\n  function highlightAuto(code, languageSubset) {\n    languageSubset = languageSubset || options.languages || Object.keys(languages);\n    const plaintext = justTextHighlightResult(code);\n\n    const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n      _highlight(name, code, false)\n    );\n    results.unshift(plaintext); // plaintext is always an option\n\n    const sorted = results.sort((a, b) => {\n      // sort base on relevance\n      if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n      // always award the tie to the base language\n      // ie if C++ and Arduino are tied, it's more likely to be C++\n      if (a.language && b.language) {\n        if (getLanguage(a.language).supersetOf === b.language) {\n          return 1;\n        } else if (getLanguage(b.language).supersetOf === a.language) {\n          return -1;\n        }\n      }\n\n      // otherwise say they are equal, which has the effect of sorting on\n      // relevance while preserving the original ordering - which is how ties\n      // have historically been settled, ie the language that comes first always\n      // wins in the case of a tie\n      return 0;\n    });\n\n    const [best, secondBest] = sorted;\n\n    /** @type {AutoHighlightResult} */\n    const result = best;\n    result.secondBest = secondBest;\n\n    return result;\n  }\n\n  /**\n   * Builds new class name for block given the language name\n   *\n   * @param {HTMLElement} element\n   * @param {string} [currentLang]\n   * @param {string} [resultLang]\n   */\n  function updateClassName(element, currentLang, resultLang) {\n    const language = (currentLang && aliases[currentLang]) || resultLang;\n\n    element.classList.add(\"hljs\");\n    element.classList.add(`language-${language}`);\n  }\n\n  /**\n   * Applies highlighting to a DOM node containing code.\n   *\n   * @param {HighlightedHTMLElement} element - the HTML element to highlight\n  */\n  function highlightElement(element) {\n    /** @type HTMLElement */\n    let node = null;\n    const language = blockLanguage(element);\n\n    if (shouldNotHighlight(language)) return;\n\n    fire(\"before:highlightElement\",\n      { el: element, language });\n\n    if (element.dataset.highlighted) {\n      console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n      return;\n    }\n\n    // we should be all text, no child nodes (unescaped HTML) - this is possibly\n    // an HTML injection attack - it's likely too late if this is already in\n    // production (the code has likely already done its damage by the time\n    // we're seeing it)... but we yell loudly about this so that hopefully it's\n    // more likely to be caught in development before making it to production\n    if (element.children.length > 0) {\n      if (!options.ignoreUnescapedHTML) {\n        console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n        console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n        console.warn(\"The element with unescaped HTML:\");\n        console.warn(element);\n      }\n      if (options.throwUnescapedHTML) {\n        const err = new HTMLInjectionError(\n          \"One of your code blocks includes unescaped HTML.\",\n          element.innerHTML\n        );\n        throw err;\n      }\n    }\n\n    node = element;\n    const text = node.textContent;\n    const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n    element.innerHTML = result.value;\n    element.dataset.highlighted = \"yes\";\n    updateClassName(element, language, result.language);\n    element.result = {\n      language: result.language,\n      // TODO: remove with version 11.0\n      re: result.relevance,\n      relevance: result.relevance\n    };\n    if (result.secondBest) {\n      element.secondBest = {\n        language: result.secondBest.language,\n        relevance: result.secondBest.relevance\n      };\n    }\n\n    fire(\"after:highlightElement\", { el: element, result, text });\n  }\n\n  /**\n   * Updates highlight.js global options with the passed options\n   *\n   * @param {Partial<HLJSOptions>} userOptions\n   */\n  function configure(userOptions) {\n    options = inherit(options, userOptions);\n  }\n\n  // TODO: remove v12, deprecated\n  const initHighlighting = () => {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlighting() deprecated.  Use highlightAll() now.\");\n  };\n\n  // TODO: remove v12, deprecated\n  function initHighlightingOnLoad() {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated.  Use highlightAll() now.\");\n  }\n\n  let wantsHighlight = false;\n\n  /**\n   * auto-highlights all pre>code elements on the page\n   */\n  function highlightAll() {\n    function boot() {\n      // if a highlight was requested before DOM was loaded, do now\n      highlightAll();\n    }\n\n    // if we are called too early in the loading process\n    if (document.readyState === \"loading\") {\n      // make sure the event listener is only added once\n      if (!wantsHighlight) {\n        window.addEventListener('DOMContentLoaded', boot, false);\n      }\n      wantsHighlight = true;\n      return;\n    }\n\n    const blocks = document.querySelectorAll(options.cssSelector);\n    blocks.forEach(highlightElement);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    let lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error$1) {\n      error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * Remove a language grammar module\n   *\n   * @param {string} languageName\n   */\n  function unregisterLanguage(languageName) {\n    delete languages[languageName];\n    for (const alias of Object.keys(aliases)) {\n      if (aliases[alias] === languageName) {\n        delete aliases[alias];\n      }\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    const lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * Upgrades the old highlightBlock plugins to the new\n   * highlightElement API\n   * @param {HLJSPlugin} plugin\n   */\n  function upgradePluginAPI(plugin) {\n    // TODO: remove with v12\n    if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n      plugin[\"before:highlightElement\"] = (data) => {\n        plugin[\"before:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n    if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n      plugin[\"after:highlightElement\"] = (data) => {\n        plugin[\"after:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    upgradePluginAPI(plugin);\n    plugins.push(plugin);\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function removePlugin(plugin) {\n    const index = plugins.indexOf(plugin);\n    if (index !== -1) {\n      plugins.splice(index, 1);\n    }\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    const cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /**\n   * DEPRECATED\n   * @param {HighlightedHTMLElement} el\n   */\n  function deprecateHighlightBlock(el) {\n    deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n    deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n    return highlightElement(el);\n  }\n\n  /* Interface definition */\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    highlightAll,\n    highlightElement,\n    // TODO: Remove with v12 API\n    highlightBlock: deprecateHighlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    unregisterLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    autoDetection,\n    inherit,\n    addPlugin,\n    removePlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  hljs.regex = {\n    concat: concat,\n    lookahead: lookahead,\n    either: either,\n    optional: optional,\n    anyNumberOfTimes: anyNumberOfTimes\n  };\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreeze(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexes into our main object\n  Object.assign(hljs, MODES);\n\n  return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n  return {\n    name: 'Plain text',\n    aliases: [\n      'text',\n      'txt'\n    ],\n    disableAutodetect: true\n  };\n}\n\nexport { plaintext as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n  \"as\", // for exports\n  \"in\",\n  \"of\",\n  \"if\",\n  \"for\",\n  \"while\",\n  \"finally\",\n  \"var\",\n  \"new\",\n  \"function\",\n  \"do\",\n  \"return\",\n  \"void\",\n  \"else\",\n  \"break\",\n  \"catch\",\n  \"instanceof\",\n  \"with\",\n  \"throw\",\n  \"case\",\n  \"default\",\n  \"try\",\n  \"switch\",\n  \"continue\",\n  \"typeof\",\n  \"delete\",\n  \"let\",\n  \"yield\",\n  \"const\",\n  \"class\",\n  // JS handles these with a special rule\n  // \"get\",\n  // \"set\",\n  \"debugger\",\n  \"async\",\n  \"await\",\n  \"static\",\n  \"import\",\n  \"from\",\n  \"export\",\n  \"extends\",\n  // It's reached stage 3, which is \"recommended for implementation\":\n  \"using\"\n];\nconst LITERALS = [\n  \"true\",\n  \"false\",\n  \"null\",\n  \"undefined\",\n  \"NaN\",\n  \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n  // Fundamental objects\n  \"Object\",\n  \"Function\",\n  \"Boolean\",\n  \"Symbol\",\n  // numbers and dates\n  \"Math\",\n  \"Date\",\n  \"Number\",\n  \"BigInt\",\n  // text\n  \"String\",\n  \"RegExp\",\n  // Indexed collections\n  \"Array\",\n  \"Float32Array\",\n  \"Float64Array\",\n  \"Int8Array\",\n  \"Uint8Array\",\n  \"Uint8ClampedArray\",\n  \"Int16Array\",\n  \"Int32Array\",\n  \"Uint16Array\",\n  \"Uint32Array\",\n  \"BigInt64Array\",\n  \"BigUint64Array\",\n  // Keyed collections\n  \"Set\",\n  \"Map\",\n  \"WeakSet\",\n  \"WeakMap\",\n  // Structured data\n  \"ArrayBuffer\",\n  \"SharedArrayBuffer\",\n  \"Atomics\",\n  \"DataView\",\n  \"JSON\",\n  // Control abstraction objects\n  \"Promise\",\n  \"Generator\",\n  \"GeneratorFunction\",\n  \"AsyncFunction\",\n  // Reflection\n  \"Reflect\",\n  \"Proxy\",\n  // Internationalization\n  \"Intl\",\n  // WebAssembly\n  \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n  \"Error\",\n  \"EvalError\",\n  \"InternalError\",\n  \"RangeError\",\n  \"ReferenceError\",\n  \"SyntaxError\",\n  \"TypeError\",\n  \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n  \"setInterval\",\n  \"setTimeout\",\n  \"clearInterval\",\n  \"clearTimeout\",\n\n  \"require\",\n  \"exports\",\n\n  \"eval\",\n  \"isFinite\",\n  \"isNaN\",\n  \"parseFloat\",\n  \"parseInt\",\n  \"decodeURI\",\n  \"decodeURIComponent\",\n  \"encodeURI\",\n  \"encodeURIComponent\",\n  \"escape\",\n  \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n  \"arguments\",\n  \"this\",\n  \"super\",\n  \"console\",\n  \"window\",\n  \"document\",\n  \"localStorage\",\n  \"sessionStorage\",\n  \"module\",\n  \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n  BUILT_IN_GLOBALS,\n  TYPES,\n  ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n  const regex = hljs.regex;\n  /**\n   * Takes a string like \"<Booger\" and checks to see\n   * if we can find a matching \"</Booger\" later in the\n   * content.\n   * @param {RegExpMatchArray} match\n   * @param {{after:number}} param1\n   */\n  const hasClosingTag = (match, { after }) => {\n    const tag = \"</\" + match[0].slice(1);\n    const pos = match.input.indexOf(tag, after);\n    return pos !== -1;\n  };\n\n  const IDENT_RE$1 = IDENT_RE;\n  const FRAGMENT = {\n    begin: '<>',\n    end: '</>'\n  };\n  // to avoid some special cases inside isTrulyOpeningTag\n  const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n  const XML_TAG = {\n    begin: /<[A-Za-z0-9\\\\._:-]+/,\n    end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n    /**\n     * @param {RegExpMatchArray} match\n     * @param {CallbackResponse} response\n     */\n    isTrulyOpeningTag: (match, response) => {\n      const afterMatchIndex = match[0].length + match.index;\n      const nextChar = match.input[afterMatchIndex];\n      if (\n        // HTML should not include another raw `<` inside a tag\n        // nested type?\n        // `<Array<Array<number>>`, etc.\n        nextChar === \"<\" ||\n        // the , gives away that this is not HTML\n        // `<T, A extends keyof T, V>`\n        nextChar === \",\"\n        ) {\n        response.ignoreMatch();\n        return;\n      }\n\n      // `<something>`\n      // Quite possibly a tag, lets look for a matching closing tag...\n      if (nextChar === \">\") {\n        // if we cannot find a matching closing tag, then we\n        // will ignore it\n        if (!hasClosingTag(match, { after: afterMatchIndex })) {\n          response.ignoreMatch();\n        }\n      }\n\n      // `<blah />` (self-closing)\n      // handled by simpleSelfClosing rule\n\n      let m;\n      const afterMatch = match.input.substring(afterMatchIndex);\n\n      // some more template typing stuff\n      //  <T = any>(key?: string) => Modify<\n      if ((m = afterMatch.match(/^\\s*=/))) {\n        response.ignoreMatch();\n        return;\n      }\n\n      // `<From extends string>`\n      // technically this could be HTML, but it smells like a type\n      // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n      if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n        if (m.index === 0) {\n          response.ignoreMatch();\n          // eslint-disable-next-line no-useless-return\n          return;\n        }\n      }\n    }\n  };\n  const KEYWORDS$1 = {\n    $pattern: IDENT_RE,\n    keyword: KEYWORDS,\n    literal: LITERALS,\n    built_in: BUILT_INS,\n    \"variable.language\": BUILT_IN_VARIABLES\n  };\n\n  // https://tc39.es/ecma262/#sec-literals-numeric-literals\n  const decimalDigits = '[0-9](_?[0-9])*';\n  const frac = `\\\\.(${decimalDigits})`;\n  // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n  // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n  const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n  const NUMBER = {\n    className: 'number',\n    variants: [\n      // DecimalLiteral\n      { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n        `[eE][+-]?(${decimalDigits})\\\\b` },\n      { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n      // DecimalBigIntegerLiteral\n      { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n      // NonDecimalIntegerLiteral\n      { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n      { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n      { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n      // LegacyOctalIntegerLiteral (does not include underscore separators)\n      // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n      { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n    ],\n    relevance: 0\n  };\n\n  const SUBST = {\n    className: 'subst',\n    begin: '\\\\$\\\\{',\n    end: '\\\\}',\n    keywords: KEYWORDS$1,\n    contains: [] // defined later\n  };\n  const HTML_TEMPLATE = {\n    begin: '\\.?html`',\n    end: '',\n    starts: {\n      end: '`',\n      returnEnd: false,\n      contains: [\n        hljs.BACKSLASH_ESCAPE,\n        SUBST\n      ],\n      subLanguage: 'xml'\n    }\n  };\n  const CSS_TEMPLATE = {\n    begin: '\\.?css`',\n    end: '',\n    starts: {\n      end: '`',\n      returnEnd: false,\n      contains: [\n        hljs.BACKSLASH_ESCAPE,\n        SUBST\n      ],\n      subLanguage: 'css'\n    }\n  };\n  const GRAPHQL_TEMPLATE = {\n    begin: '\\.?gql`',\n    end: '',\n    starts: {\n      end: '`',\n      returnEnd: false,\n      contains: [\n        hljs.BACKSLASH_ESCAPE,\n        SUBST\n      ],\n      subLanguage: 'graphql'\n    }\n  };\n  const TEMPLATE_STRING = {\n    className: 'string',\n    begin: '`',\n    end: '`',\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      SUBST\n    ]\n  };\n  const JSDOC_COMMENT = hljs.COMMENT(\n    /\\/\\*\\*(?!\\/)/,\n    '\\\\*/',\n    {\n      relevance: 0,\n      contains: [\n        {\n          begin: '(?=@[A-Za-z]+)',\n          relevance: 0,\n          contains: [\n            {\n              className: 'doctag',\n              begin: '@[A-Za-z]+'\n            },\n            {\n              className: 'type',\n              begin: '\\\\{',\n              end: '\\\\}',\n              excludeEnd: true,\n              excludeBegin: true,\n              relevance: 0\n            },\n            {\n              className: 'variable',\n              begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n              endsParent: true,\n              relevance: 0\n            },\n            // eat spaces (not newlines) so we can find\n            // types or variables\n            {\n              begin: /(?=[^\\n])\\s/,\n              relevance: 0\n            }\n          ]\n        }\n      ]\n    }\n  );\n  const COMMENT = {\n    className: \"comment\",\n    variants: [\n      JSDOC_COMMENT,\n      hljs.C_BLOCK_COMMENT_MODE,\n      hljs.C_LINE_COMMENT_MODE\n    ]\n  };\n  const SUBST_INTERNALS = [\n    hljs.APOS_STRING_MODE,\n    hljs.QUOTE_STRING_MODE,\n    HTML_TEMPLATE,\n    CSS_TEMPLATE,\n    GRAPHQL_TEMPLATE,\n    TEMPLATE_STRING,\n    // Skip numbers when they are part of a variable name\n    { match: /\\$\\d+/ },\n    NUMBER,\n    // This is intentional:\n    // See https://github.com/highlightjs/highlight.js/issues/3288\n    // hljs.REGEXP_MODE\n  ];\n  SUBST.contains = SUBST_INTERNALS\n    .concat({\n      // we need to pair up {} inside our subst to prevent\n      // it from ending too early by matching another }\n      begin: /\\{/,\n      end: /\\}/,\n      keywords: KEYWORDS$1,\n      contains: [\n        \"self\"\n      ].concat(SUBST_INTERNALS)\n    });\n  const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n    // eat recursive parens in sub expressions\n    {\n      begin: /(\\s*)\\(/,\n      end: /\\)/,\n      keywords: KEYWORDS$1,\n      contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n    }\n  ]);\n  const PARAMS = {\n    className: 'params',\n    // convert this to negative lookbehind in v12\n    begin: /(\\s*)\\(/, // to match the parms with\n    end: /\\)/,\n    excludeBegin: true,\n    excludeEnd: true,\n    keywords: KEYWORDS$1,\n    contains: PARAMS_CONTAINS\n  };\n\n  // ES6 classes\n  const CLASS_OR_EXTENDS = {\n    variants: [\n      // class Car extends vehicle\n      {\n        match: [\n          /class/,\n          /\\s+/,\n          IDENT_RE$1,\n          /\\s+/,\n          /extends/,\n          /\\s+/,\n          regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n        ],\n        scope: {\n          1: \"keyword\",\n          3: \"title.class\",\n          5: \"keyword\",\n          7: \"title.class.inherited\"\n        }\n      },\n      // class Car\n      {\n        match: [\n          /class/,\n          /\\s+/,\n          IDENT_RE$1\n        ],\n        scope: {\n          1: \"keyword\",\n          3: \"title.class\"\n        }\n      },\n\n    ]\n  };\n\n  const CLASS_REFERENCE = {\n    relevance: 0,\n    match:\n    regex.either(\n      // Hard coded exceptions\n      /\\bJSON/,\n      // Float32Array, OutT\n      /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n      // CSSFactory, CSSFactoryT\n      /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n      // FPs, FPsT\n      /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n      // P\n      // single letters are not highlighted\n      // BLAH\n      // this will be flagged as a UPPER_CASE_CONSTANT instead\n    ),\n    className: \"title.class\",\n    keywords: {\n      _: [\n        // se we still get relevance credit for JS library classes\n        ...TYPES,\n        ...ERROR_TYPES\n      ]\n    }\n  };\n\n  const USE_STRICT = {\n    label: \"use_strict\",\n    className: 'meta',\n    relevance: 10,\n    begin: /^\\s*['\"]use (strict|asm)['\"]/\n  };\n\n  const FUNCTION_DEFINITION = {\n    variants: [\n      {\n        match: [\n          /function/,\n          /\\s+/,\n          IDENT_RE$1,\n          /(?=\\s*\\()/\n        ]\n      },\n      // anonymous function\n      {\n        match: [\n          /function/,\n          /\\s*(?=\\()/\n        ]\n      }\n    ],\n    className: {\n      1: \"keyword\",\n      3: \"title.function\"\n    },\n    label: \"func.def\",\n    contains: [ PARAMS ],\n    illegal: /%/\n  };\n\n  const UPPER_CASE_CONSTANT = {\n    relevance: 0,\n    match: /\\b[A-Z][A-Z_0-9]+\\b/,\n    className: \"variable.constant\"\n  };\n\n  function noneOf(list) {\n    return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n  }\n\n  const FUNCTION_CALL = {\n    match: regex.concat(\n      /\\b/,\n      noneOf([\n        ...BUILT_IN_GLOBALS,\n        \"super\",\n        \"import\"\n      ].map(x => `${x}\\\\s*\\\\(`)),\n      IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n    className: \"title.function\",\n    relevance: 0\n  };\n\n  const PROPERTY_ACCESS = {\n    begin: regex.concat(/\\./, regex.lookahead(\n      regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n    )),\n    end: IDENT_RE$1,\n    excludeBegin: true,\n    keywords: \"prototype\",\n    className: \"property\",\n    relevance: 0\n  };\n\n  const GETTER_OR_SETTER = {\n    match: [\n      /get|set/,\n      /\\s+/,\n      IDENT_RE$1,\n      /(?=\\()/\n    ],\n    className: {\n      1: \"keyword\",\n      3: \"title.function\"\n    },\n    contains: [\n      { // eat to avoid empty params\n        begin: /\\(\\)/\n      },\n      PARAMS\n    ]\n  };\n\n  const FUNC_LEAD_IN_RE = '(\\\\(' +\n    '[^()]*(\\\\(' +\n    '[^()]*(\\\\(' +\n    '[^()]*' +\n    '\\\\)[^()]*)*' +\n    '\\\\)[^()]*)*' +\n    '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n  const FUNCTION_VARIABLE = {\n    match: [\n      /const|var|let/, /\\s+/,\n      IDENT_RE$1, /\\s*/,\n      /=\\s*/,\n      /(async\\s*)?/, // async is optional\n      regex.lookahead(FUNC_LEAD_IN_RE)\n    ],\n    keywords: \"async\",\n    className: {\n      1: \"keyword\",\n      3: \"title.function\"\n    },\n    contains: [\n      PARAMS\n    ]\n  };\n\n  return {\n    name: 'JavaScript',\n    aliases: ['js', 'jsx', 'mjs', 'cjs'],\n    keywords: KEYWORDS$1,\n    // this will be extended by TypeScript\n    exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n    illegal: /#(?![$_A-z])/,\n    contains: [\n      hljs.SHEBANG({\n        label: \"shebang\",\n        binary: \"node\",\n        relevance: 5\n      }),\n      USE_STRICT,\n      hljs.APOS_STRING_MODE,\n      hljs.QUOTE_STRING_MODE,\n      HTML_TEMPLATE,\n      CSS_TEMPLATE,\n      GRAPHQL_TEMPLATE,\n      TEMPLATE_STRING,\n      COMMENT,\n      // Skip numbers when they are part of a variable name\n      { match: /\\$\\d+/ },\n      NUMBER,\n      CLASS_REFERENCE,\n      {\n        scope: 'attr',\n        match: IDENT_RE$1 + regex.lookahead(':'),\n        relevance: 0\n      },\n      FUNCTION_VARIABLE,\n      { // \"value\" container\n        begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n        keywords: 'return throw case',\n        relevance: 0,\n        contains: [\n          COMMENT,\n          hljs.REGEXP_MODE,\n          {\n            className: 'function',\n            // we have to count the parens to make sure we actually have the\n            // correct bounding ( ) before the =>.  There could be any number of\n            // sub-expressions inside also surrounded by parens.\n            begin: FUNC_LEAD_IN_RE,\n            returnBegin: true,\n            end: '\\\\s*=>',\n            contains: [\n              {\n                className: 'params',\n                variants: [\n                  {\n                    begin: hljs.UNDERSCORE_IDENT_RE,\n                    relevance: 0\n                  },\n                  {\n                    className: null,\n                    begin: /\\(\\s*\\)/,\n                    skip: true\n                  },\n                  {\n                    begin: /(\\s*)\\(/,\n                    end: /\\)/,\n                    excludeBegin: true,\n                    excludeEnd: true,\n                    keywords: KEYWORDS$1,\n                    contains: PARAMS_CONTAINS\n                  }\n                ]\n              }\n            ]\n          },\n          { // could be a comma delimited list of params to a function call\n            begin: /,/,\n            relevance: 0\n          },\n          {\n            match: /\\s+/,\n            relevance: 0\n          },\n          { // JSX\n            variants: [\n              { begin: FRAGMENT.begin, end: FRAGMENT.end },\n              { match: XML_SELF_CLOSING },\n              {\n                begin: XML_TAG.begin,\n                // we carefully check the opening tag to see if it truly\n                // is a tag and not a false positive\n                'on:begin': XML_TAG.isTrulyOpeningTag,\n                end: XML_TAG.end\n              }\n            ],\n            subLanguage: 'xml',\n            contains: [\n              {\n                begin: XML_TAG.begin,\n                end: XML_TAG.end,\n                skip: true,\n                contains: ['self']\n              }\n            ]\n          }\n        ],\n      },\n      FUNCTION_DEFINITION,\n      {\n        // prevent this from getting swallowed up by function\n        // since they appear \"function like\"\n        beginKeywords: \"while if switch catch for\"\n      },\n      {\n        // we have to count the parens to make sure we actually have the correct\n        // bounding ( ).  There could be any number of sub-expressions inside\n        // also surrounded by parens.\n        begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n          '\\\\(' + // first parens\n          '[^()]*(\\\\(' +\n            '[^()]*(\\\\(' +\n              '[^()]*' +\n            '\\\\)[^()]*)*' +\n          '\\\\)[^()]*)*' +\n          '\\\\)\\\\s*\\\\{', // end parens\n        returnBegin:true,\n        label: \"func.def\",\n        contains: [\n          PARAMS,\n          hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n        ]\n      },\n      // catch ... so it won't trigger the property rule below\n      {\n        match: /\\.\\.\\./,\n        relevance: 0\n      },\n      PROPERTY_ACCESS,\n      // hack: prevents detection of keywords in some circumstances\n      // .keyword()\n      // $keyword = x\n      {\n        match: '\\\\$' + IDENT_RE$1,\n        relevance: 0\n      },\n      {\n        match: [ /\\bconstructor(?=\\s*\\()/ ],\n        className: { 1: \"title.function\" },\n        contains: [ PARAMS ]\n      },\n      FUNCTION_CALL,\n      UPPER_CASE_CONSTANT,\n      CLASS_OR_EXTENDS,\n      GETTER_OR_SETTER,\n      {\n        match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n      }\n    ]\n  };\n}\n\nexport { javascript as default };\n","/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n  const regex = hljs.regex;\n  const VAR = {};\n  const BRACED_VAR = {\n    begin: /\\$\\{/,\n    end: /\\}/,\n    contains: [\n      \"self\",\n      {\n        begin: /:-/,\n        contains: [ VAR ]\n      } // default values\n    ]\n  };\n  Object.assign(VAR, {\n    className: 'variable',\n    variants: [\n      { begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n        // negative look-ahead tries to avoid matching patterns that are not\n        // Perl at all like $ident$, @ident@, etc.\n        `(?![\\\\w\\\\d])(?![$])`) },\n      BRACED_VAR\n    ]\n  });\n\n  const SUBST = {\n    className: 'subst',\n    begin: /\\$\\(/,\n    end: /\\)/,\n    contains: [ hljs.BACKSLASH_ESCAPE ]\n  };\n  const COMMENT = hljs.inherit(\n    hljs.COMMENT(),\n    {\n      match: [\n        /(^|\\s)/,\n        /#.*$/\n      ],\n      scope: {\n        2: 'comment'\n      }\n    }\n  );\n  const HERE_DOC = {\n    begin: /<<-?\\s*(?=\\w+)/,\n    starts: { contains: [\n      hljs.END_SAME_AS_BEGIN({\n        begin: /(\\w+)/,\n        end: /(\\w+)/,\n        className: 'string'\n      })\n    ] }\n  };\n  const QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/,\n    end: /\"/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      VAR,\n      SUBST\n    ]\n  };\n  SUBST.contains.push(QUOTE_STRING);\n  const ESCAPED_QUOTE = {\n    match: /\\\\\"/\n  };\n  const APOS_STRING = {\n    className: 'string',\n    begin: /'/,\n    end: /'/\n  };\n  const ESCAPED_APOS = {\n    match: /\\\\'/\n  };\n  const ARITHMETIC = {\n    begin: /\\$?\\(\\(/,\n    end: /\\)\\)/,\n    contains: [\n      {\n        begin: /\\d+#[0-9a-f]+/,\n        className: \"number\"\n      },\n      hljs.NUMBER_MODE,\n      VAR\n    ]\n  };\n  const SH_LIKE_SHELLS = [\n    \"fish\",\n    \"bash\",\n    \"zsh\",\n    \"sh\",\n    \"csh\",\n    \"ksh\",\n    \"tcsh\",\n    \"dash\",\n    \"scsh\",\n  ];\n  const KNOWN_SHEBANG = hljs.SHEBANG({\n    binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n    relevance: 10\n  });\n  const FUNCTION = {\n    className: 'function',\n    begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n    returnBegin: true,\n    contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\\w[\\w\\d_]*/ }) ],\n    relevance: 0\n  };\n\n  const KEYWORDS = [\n    \"if\",\n    \"then\",\n    \"else\",\n    \"elif\",\n    \"fi\",\n    \"time\",\n    \"for\",\n    \"while\",\n    \"until\",\n    \"in\",\n    \"do\",\n    \"done\",\n    \"case\",\n    \"esac\",\n    \"coproc\",\n    \"function\",\n    \"select\"\n  ];\n\n  const LITERALS = [\n    \"true\",\n    \"false\"\n  ];\n\n  // to consume paths to prevent keyword matches inside them\n  const PATH_MODE = { match: /(\\/[a-z._-]+)+/ };\n\n  // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n  const SHELL_BUILT_INS = [\n    \"break\",\n    \"cd\",\n    \"continue\",\n    \"eval\",\n    \"exec\",\n    \"exit\",\n    \"export\",\n    \"getopts\",\n    \"hash\",\n    \"pwd\",\n    \"readonly\",\n    \"return\",\n    \"shift\",\n    \"test\",\n    \"times\",\n    \"trap\",\n    \"umask\",\n    \"unset\"\n  ];\n\n  const BASH_BUILT_INS = [\n    \"alias\",\n    \"bind\",\n    \"builtin\",\n    \"caller\",\n    \"command\",\n    \"declare\",\n    \"echo\",\n    \"enable\",\n    \"help\",\n    \"let\",\n    \"local\",\n    \"logout\",\n    \"mapfile\",\n    \"printf\",\n    \"read\",\n    \"readarray\",\n    \"source\",\n    \"sudo\",\n    \"type\",\n    \"typeset\",\n    \"ulimit\",\n    \"unalias\"\n  ];\n\n  const ZSH_BUILT_INS = [\n    \"autoload\",\n    \"bg\",\n    \"bindkey\",\n    \"bye\",\n    \"cap\",\n    \"chdir\",\n    \"clone\",\n    \"comparguments\",\n    \"compcall\",\n    \"compctl\",\n    \"compdescribe\",\n    \"compfiles\",\n    \"compgroups\",\n    \"compquote\",\n    \"comptags\",\n    \"comptry\",\n    \"compvalues\",\n    \"dirs\",\n    \"disable\",\n    \"disown\",\n    \"echotc\",\n    \"echoti\",\n    \"emulate\",\n    \"fc\",\n    \"fg\",\n    \"float\",\n    \"functions\",\n    \"getcap\",\n    \"getln\",\n    \"history\",\n    \"integer\",\n    \"jobs\",\n    \"kill\",\n    \"limit\",\n    \"log\",\n    \"noglob\",\n    \"popd\",\n    \"print\",\n    \"pushd\",\n    \"pushln\",\n    \"rehash\",\n    \"sched\",\n    \"setcap\",\n    \"setopt\",\n    \"stat\",\n    \"suspend\",\n    \"ttyctl\",\n    \"unfunction\",\n    \"unhash\",\n    \"unlimit\",\n    \"unsetopt\",\n    \"vared\",\n    \"wait\",\n    \"whence\",\n    \"where\",\n    \"which\",\n    \"zcompile\",\n    \"zformat\",\n    \"zftp\",\n    \"zle\",\n    \"zmodload\",\n    \"zparseopts\",\n    \"zprof\",\n    \"zpty\",\n    \"zregexparse\",\n    \"zsocket\",\n    \"zstyle\",\n    \"ztcp\"\n  ];\n\n  const GNU_CORE_UTILS = [\n    \"chcon\",\n    \"chgrp\",\n    \"chown\",\n    \"chmod\",\n    \"cp\",\n    \"dd\",\n    \"df\",\n    \"dir\",\n    \"dircolors\",\n    \"ln\",\n    \"ls\",\n    \"mkdir\",\n    \"mkfifo\",\n    \"mknod\",\n    \"mktemp\",\n    \"mv\",\n    \"realpath\",\n    \"rm\",\n    \"rmdir\",\n    \"shred\",\n    \"sync\",\n    \"touch\",\n    \"truncate\",\n    \"vdir\",\n    \"b2sum\",\n    \"base32\",\n    \"base64\",\n    \"cat\",\n    \"cksum\",\n    \"comm\",\n    \"csplit\",\n    \"cut\",\n    \"expand\",\n    \"fmt\",\n    \"fold\",\n    \"head\",\n    \"join\",\n    \"md5sum\",\n    \"nl\",\n    \"numfmt\",\n    \"od\",\n    \"paste\",\n    \"ptx\",\n    \"pr\",\n    \"sha1sum\",\n    \"sha224sum\",\n    \"sha256sum\",\n    \"sha384sum\",\n    \"sha512sum\",\n    \"shuf\",\n    \"sort\",\n    \"split\",\n    \"sum\",\n    \"tac\",\n    \"tail\",\n    \"tr\",\n    \"tsort\",\n    \"unexpand\",\n    \"uniq\",\n    \"wc\",\n    \"arch\",\n    \"basename\",\n    \"chroot\",\n    \"date\",\n    \"dirname\",\n    \"du\",\n    \"echo\",\n    \"env\",\n    \"expr\",\n    \"factor\",\n    // \"false\", // keyword literal already\n    \"groups\",\n    \"hostid\",\n    \"id\",\n    \"link\",\n    \"logname\",\n    \"nice\",\n    \"nohup\",\n    \"nproc\",\n    \"pathchk\",\n    \"pinky\",\n    \"printenv\",\n    \"printf\",\n    \"pwd\",\n    \"readlink\",\n    \"runcon\",\n    \"seq\",\n    \"sleep\",\n    \"stat\",\n    \"stdbuf\",\n    \"stty\",\n    \"tee\",\n    \"test\",\n    \"timeout\",\n    // \"true\", // keyword literal already\n    \"tty\",\n    \"uname\",\n    \"unlink\",\n    \"uptime\",\n    \"users\",\n    \"who\",\n    \"whoami\",\n    \"yes\"\n  ];\n\n  return {\n    name: 'Bash',\n    aliases: [\n      'sh',\n      'zsh'\n    ],\n    keywords: {\n      $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n      keyword: KEYWORDS,\n      literal: LITERALS,\n      built_in: [\n        ...SHELL_BUILT_INS,\n        ...BASH_BUILT_INS,\n        // Shell modifiers\n        \"set\",\n        \"shopt\",\n        ...ZSH_BUILT_INS,\n        ...GNU_CORE_UTILS\n      ]\n    },\n    contains: [\n      KNOWN_SHEBANG, // to catch known shells and boost relevancy\n      hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n      FUNCTION,\n      ARITHMETIC,\n      COMMENT,\n      HERE_DOC,\n      PATH_MODE,\n      QUOTE_STRING,\n      ESCAPED_QUOTE,\n      APOS_STRING,\n      ESCAPED_APOS,\n      VAR\n    ]\n  };\n}\n\nexport { bash as default };\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n  const LITERALS = 'true false yes no null';\n\n  // YAML spec allows non-reserved URI characters in tags.\n  const URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n  // Define keys as starting with a word character\n  // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n  // ...and ending with a colon followed immediately by a space, tab or newline.\n  // The YAML spec allows for much more than this, but this covers most use-cases.\n  const KEY = {\n    className: 'attr',\n    variants: [\n      // added brackets support and special char support\n      { begin: /[\\w*@][\\w*@ :()\\./-]*:(?=[ \\t]|$)/ },\n      { // double quoted keys - with brackets and special char support\n        begin: /\"[\\w*@][\\w*@ :()\\./-]*\":(?=[ \\t]|$)/ },\n      { // single quoted keys - with brackets and special char support\n        begin: /'[\\w*@][\\w*@ :()\\./-]*':(?=[ \\t]|$)/ },\n    ]\n  };\n  \n  const TEMPLATE_VARIABLES = {\n    className: 'template-variable',\n    variants: [\n      { // jinja templates Ansible\n        begin: /\\{\\{/,\n        end: /\\}\\}/\n      },\n      { // Ruby i18n\n        begin: /%\\{/,\n        end: /\\}/\n      }\n    ]\n  };\n\n  const SINGLE_QUOTE_STRING = {\n    className: 'string',\n    relevance: 0,\n    begin: /'/,\n    end: /'/,\n    contains: [\n      {\n        match: /''/,\n        scope: 'char.escape',\n        relevance: 0\n      }\n    ]\n  };\n\n  const STRING = {\n    className: 'string',\n    relevance: 0,\n    variants: [\n      {\n        begin: /\"/,\n        end: /\"/\n      },\n      { begin: /\\S+/ }\n    ],\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      TEMPLATE_VARIABLES\n    ]\n  };\n\n  // Strings inside of value containers (objects) can't contain braces,\n  // brackets, or commas\n  const CONTAINER_STRING = hljs.inherit(STRING, { variants: [\n    {\n      begin: /'/,\n      end: /'/,\n      contains: [\n        {\n          begin: /''/,\n          relevance: 0\n        }\n      ]\n    },\n    {\n      begin: /\"/,\n      end: /\"/\n    },\n    { begin: /[^\\s,{}[\\]]+/ }\n  ] });\n\n  const DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n  const TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n  const FRACTION_RE = '(\\\\.[0-9]*)?';\n  const ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n  const TIMESTAMP = {\n    className: 'number',\n    begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n  };\n\n  const VALUE_CONTAINER = {\n    end: ',',\n    endsWithParent: true,\n    excludeEnd: true,\n    keywords: LITERALS,\n    relevance: 0\n  };\n  const OBJECT = {\n    begin: /\\{/,\n    end: /\\}/,\n    contains: [ VALUE_CONTAINER ],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n  const ARRAY = {\n    begin: '\\\\[',\n    end: '\\\\]',\n    contains: [ VALUE_CONTAINER ],\n    illegal: '\\\\n',\n    relevance: 0\n  };\n\n  const MODES = [\n    KEY,\n    {\n      className: 'meta',\n      begin: '^---\\\\s*$',\n      relevance: 10\n    },\n    { // multi line string\n      // Blocks start with a | or > followed by a newline\n      //\n      // Indentation of subsequent lines must be the same to\n      // be considered part of the block\n      className: 'string',\n      begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n    },\n    { // Ruby/Rails erb\n      begin: '<%[%=-]?',\n      end: '[%-]?%>',\n      subLanguage: 'ruby',\n      excludeBegin: true,\n      excludeEnd: true,\n      relevance: 0\n    },\n    { // named tags\n      className: 'type',\n      begin: '!\\\\w+!' + URI_CHARACTERS\n    },\n    // https://yaml.org/spec/1.2/spec.html#id2784064\n    { // verbatim tags\n      className: 'type',\n      begin: '!<' + URI_CHARACTERS + \">\"\n    },\n    { // primary tags\n      className: 'type',\n      begin: '!' + URI_CHARACTERS\n    },\n    { // secondary tags\n      className: 'type',\n      begin: '!!' + URI_CHARACTERS\n    },\n    { // fragment id &ref\n      className: 'meta',\n      begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n    },\n    { // fragment reference *ref\n      className: 'meta',\n      begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n    },\n    { // array listing\n      className: 'bullet',\n      // TODO: remove |$ hack when we have proper look-ahead support\n      begin: '-(?=[ ]|$)',\n      relevance: 0\n    },\n    hljs.HASH_COMMENT_MODE,\n    {\n      beginKeywords: LITERALS,\n      keywords: { literal: LITERALS }\n    },\n    TIMESTAMP,\n    // numbers are any valid C-style number that\n    // sit isolated from other words\n    {\n      className: 'number',\n      begin: hljs.C_NUMBER_RE + '\\\\b',\n      relevance: 0\n    },\n    OBJECT,\n    ARRAY,\n    SINGLE_QUOTE_STRING,\n    STRING\n  ];\n\n  const VALUE_MODES = [ ...MODES ];\n  VALUE_MODES.pop();\n  VALUE_MODES.push(CONTAINER_STRING);\n  VALUE_CONTAINER.contains = VALUE_MODES;\n\n  return {\n    name: 'YAML',\n    case_insensitive: true,\n    aliases: [ 'yml' ],\n    contains: MODES\n  };\n}\n\nexport { yaml as default };\n","import { marked } from \"marked\";\nimport DOMPurify from \"dompurify\";\n\n// Import ONLY the core (no languages) - reduces from 2.6 MB to ~30 KB!\nimport highlightjs from \"highlight.js/lib/core\";\n\n// Languages import - only ~5-10 KB each\nimport plaintext from \"highlight.js/lib/languages/plaintext\";\nimport javascript from \"highlight.js/lib/languages/javascript\";\nimport bash from \"highlight.js/lib/languages/bash\";\nimport yaml from \"highlight.js/lib/languages/yaml\";\n// Add more languages as needed:\n// import python from \"highlight.js/lib/languages/python\";\n// import java from \"highlight.js/lib/languages/java\";\n// import json from \"highlight.js/lib/languages/json\";\n\nimport CommentClass from \"@/components/Comment/Comment\";\nimport { cn } from \"@/utils\";\n\n// Register languages\nhighlightjs.registerLanguage(\"plaintext\", plaintext);\nhighlightjs.registerLanguage(\"javascript\", javascript);\nhighlightjs.registerLanguage(\"bash\", bash);\nhighlightjs.registerLanguage(\"yaml\", yaml);\n// highlightjs.registerLanguage(\"python\", python);\n// highlightjs.registerLanguage(\"java\", java);\n// highlightjs.registerLanguage(\"json\", json);\n\n// Override function\nconst renderer = {\n  codespan(code: string) {\n    const endpointPattern =\n      /(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)\\s+(.+)/gi;\n    // let found = code.match(endpointPattern)\n    const found = endpointPattern.exec(code);\n    if (found?.length === 3) {\n      return `\n          <code class=\"rest-api\">\n          <span class=\"http-method-${found[1].toLowerCase()}\">${found[1]}</span>\n          <span class=\"http-path\">${found[2]}</span>\n          </code>\n        `;\n    }\n    return `<code>${code}</code>`;\n  },\n};\n\nmarked.setOptions({\n  highlight: function (code, language) {\n    if (!language) {\n      return highlightjs.highlightAuto(code).value;\n    }\n    const validLanguage = highlightjs.getLanguage(language)\n      ? language\n      : \"plaintext\";\n    return highlightjs.highlight(code, { language: validLanguage }).value;\n  },\n  breaks: true,\n});\n\nmarked.use({ renderer });\n\nexport const Comment = (props: {\n  comment?: any;\n  commentObj?: CommentClass;\n  className?: string;\n}) => {\n  const markedComment = DOMPurify.sanitize(\n    (props.commentObj?.text && marked.parse(props.commentObj?.text)) ||\n    (props.comment && marked.parse(props.comment)),\n  );\n\n  return (\n    <div\n      className={cn(\n        \"comments text-skin-comment min-w-[100px] flex text-left opacity-50 hover:opacity-100\",\n        props.className,\n      )}\n    >\n      <div\n        dangerouslySetInnerHTML={{ __html: markedComment }}\n        className={cn(props.commentObj?.commentClassNames)}\n        style={props.commentObj?.commentStyle}\n      ></div>\n    </div>\n  );\n};\n","import { enableNumberingAtom } from \"@/store/Store\";\nimport { useAtomValue } from \"jotai\";\n\nexport const Numbering = (props: { number?: number | string }) => {\n  const enableNumbering = useAtomValue(enableNumberingAtom);\n\n  if (!enableNumbering) return null;\n  return (\n    <div className=\"absolute text-xs right-[100%] top-0 pr-1 group-hover:hidden text-gray-500 font-thin\">\n      {props.number}\n    </div>\n  );\n};\n","import Icon from \"@/components/Icon/Icons\";\nimport { cn } from \"@/utils\";\nimport \"./CollapseButton.css\";\n\nexport const CollapseButton = (props: {\n  label: string;\n  collapsed?: boolean;\n  onClick?: () => void;\n  style?: React.CSSProperties;\n  className?: string;\n}) => {\n  return (\n    <div\n      className={cn(\n        \"collapsible-header flex w-full justify-between\",\n        props.className,\n      )}\n      style={props.style}\n    >\n      <label className=\"mb-0\">{props.label}</label>\n      {props.collapsed ? (\n        <Icon\n          name=\"collapse-unexpanded\"\n          className=\"w-4 h-4 cursor-pointer\"\n          onClick={props.onClick}\n        />\n      ) : (\n        <Icon\n          name=\"collapse-expanded\"\n          className={cn(\n            \"w-4 h-4 collapse-button cursor-pointer hidden group-[.fragment]:group-hover:inline-block\",\n            props.collapsed && \"inline-block\",\n          )}\n          onClick={props.onClick}\n        />\n      )}\n    </div>\n  );\n};\n","import { useAtom, useAtomValue } from \"jotai\";\nimport {\n  codeAtom,\n  modeAtom,\n  onContentChangeAtom,\n  pendingEditableRangeAtom,\n  RenderMode,\n} from \"@/store/Store\";\nimport { specialCharRegex } from \"@/utils/messageNormalizers\";\nimport { EditableSpan } from \"@/components/common/EditableSpan\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { useSetAtom } from \"jotai\";\n\nconst equalityRegex = /\\b(\\w+)\\s*==\\s*(\\w+)\\b/g;\n\nexport const ConditionLabel = (props: { condition: any }) => {\n  const mode = useAtomValue(modeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const pendingEditableRange = useAtomValue(pendingEditableRangeAtom);\n  const setPendingEditableRange = useSetAtom(pendingEditableRangeAtom);\n  const labelText = props.condition?.getFormattedText() ?? \"\";\n  const isEditable = mode === RenderMode.Dynamic;\n  const [start, end] = [\n    props.condition?.start?.start,\n    props.condition?.stop?.stop,\n  ];\n  const shouldAutoEdit =\n    pendingEditableRange?.start === start && pendingEditableRange?.end === end\n      ? pendingEditableRange.token\n      : undefined;\n\n  const handleSave = (newText: string) => {\n    // if text is empty or unchanged (compare against stripped display value), bail out\n    if (newText === \"\" || newText === labelText) {\n      return;\n    }\n\n    let processedText = newText;\n\n    // If text has special characters, not an equality condition, we wrap it with double quotes\n    if (specialCharRegex.test(processedText) && !equalityRegex.test(processedText)) {\n      processedText = processedText.replace(/\"/g, \"\"); // remove existing double quotes\n      processedText = `\"${processedText}\"`;\n    }\n\n    if (start === -1 || end === -1) {\n      console.warn(\"labelPosition is not set\");\n      return;\n    }\n    const newCode = code.slice(0, start) + processedText + code.slice(end + 1);\n    setCode(newCode);\n    onContentChange(newCode);\n    if (shouldAutoEdit) {\n      setPendingEditableRange(null);\n    }\n  };\n\n  return (\n    <>\n      <label>[</label>\n      <EditableSpan\n        text={resolveEmojiInText(labelText)}\n        isEditable={isEditable}\n        className=\"bg-skin-frame opacity-65 condition\"\n        onSave={handleSave}\n        title=\"Click to edit condition\"\n        autoEditToken={shouldAutoEdit}\n      />\n      <label>]</label>\n    </>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { cn } from \"@/utils\";\nimport { ConditionLabel } from \"./ConditionLabel\";\nimport { Block } from \"../../Block\";\nimport \"./FragmentLoop.css\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentLoop = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n\n  const loop = props.context.loop();\n  const blockInLoop = loop?.braceBlock()?.block();\n  const condition = loop?.parExpr()?.condition();\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={props.origin}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-loop loop border-skin-fragment rounded\"\n        style={fragmentStyle}\n      >\n        {props.commentObj?.text && (\n          <Comment comment={props.comment} commentObj={props.commentObj} />\n        )}\n        <div className=\"header text-skin-fragment-header bg-skin-fragment-header leading-4 relative rounded-t\">\n          <Numbering number={props.number} />\n          <div className=\"name font-semibold p-1 border-b\">\n            <label className=\"p-0 flex items-center gap-0.5\">\n              <Icon name=\"loop-fragment\" />\n              <CollapseButton\n                label=\"Loop\"\n                collapsed={collapsed}\n                onClick={toggleCollapse}\n                style={props.commentObj?.messageStyle}\n                className={cn(props.commentObj?.messageClassNames)}\n              />\n            </label>\n          </div>\n        </div>\n        <div className={cn({ hidden: collapsed })}>\n          <div className=\"segment\">\n            <div className=\"text-skin-fragment\">\n              <ConditionLabel condition={condition} />\n            </div>\n            <Block\n              origin={leftParticipant}\n              style={{ paddingLeft: `${paddingLeft}px` }}\n              context={blockInLoop}\n              number={`${props.number}.1`}\n              incremental\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { blockLength } from \"@/utils/Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { Block } from \"../../Block\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { cn } from \"@/utils\";\nimport { ConditionLabel } from \"./ConditionLabel\";\nimport \"./FragmentAlt.css\";\nimport { Fragment, useMemo } from \"react\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentAlt = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const alt = props.context.alt();\n  const ifBlock = alt?.ifBlock();\n  const elseIfBlocks = alt?.elseIfBlock();\n  const elseBlock = alt?.elseBlock()?.braceBlock()?.block();\n  const blockInIfBlock = alt?.ifBlock()?.braceBlock()?.block();\n  const blockLengthAcc = useMemo(() => {\n    const acc = [blockLength(blockInIfBlock)];\n    if (alt?.elseIfBlock()) {\n      alt.elseIfBlock().forEach((block: any) => {\n        acc.push(acc[acc.length - 1] + blockLength(blockInElseIfBlock(block)));\n      });\n    }\n    return acc;\n  }, [alt, blockInIfBlock]);\n\n  function conditionFromIfElseBlock(block: any) {\n    return block?.parExpr()?.condition();\n  }\n\n  function blockInElseIfBlock(block: any) {\n    return block?.braceBlock()?.block();\n  }\n\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n\n  return (\n    <div\n      data-origin={props.origin}\n      data-left-participant={props.origin}\n      data-frame-padding-left={props.commentObj?.messageStyle?.paddingLeft}\n      data-frame-padding-right={props.commentObj?.messageStyle?.paddingRight}\n      className={cn(\n        \"group fragment fragment-alt alt border-skin-fragment rounded\",\n        props.className,\n      )}\n      style={fragmentStyle}\n    >\n      {props.commentObj?.text && (\n        <Comment comment={props.comment} commentObj={props.commentObj} />\n      )}\n      <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t relative\">\n        <Numbering number={props.number} />\n        <div className=\"name font-semibold p-1 border-b\">\n          <label className=\"p-0 flex items-center gap-0.5\">\n            <Icon name=\"alt-fragment\" />\n            <CollapseButton\n              label=\"Alt\"\n              collapsed={collapsed}\n              onClick={toggleCollapse}\n              style={props.commentObj?.messageStyle}\n              className={cn(props.commentObj?.messageClassNames)}\n            />\n          </label>\n        </div>\n      </div>\n\n      <div className={collapsed ? \"hidden\" : \"block\"}>\n        <div className=\"segment\">\n          <div className=\"text-skin-fragment\">\n            <ConditionLabel condition={conditionFromIfElseBlock(ifBlock)} />\n          </div>\n          {blockInIfBlock && (\n            <Block\n              origin={leftParticipant}\n              style={{ paddingLeft: `${paddingLeft}px` }}\n              context={blockInIfBlock}\n              number={`${props.number}.1`}\n              incremental\n            />\n          )}\n        </div>\n        {elseIfBlocks.map((elseIfBlock: any, index: number) => (\n          <Fragment key={index}>\n            <div className=\"segment border-t border-solid mt-2\" key={index + 500}>\n              <div className=\"text-skin-fragment\" key={index + 1000}>\n                <label className=\"else-if hidden\">else if</label>\n                <ConditionLabel\n                  condition={conditionFromIfElseBlock(elseIfBlock)}\n                />\n              </div>\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={blockInElseIfBlock(elseIfBlock)}\n                key={index + 2000}\n                number={`${props.number}.${blockLengthAcc[index] + 1}`}\n                incremental\n              />\n            </div>\n          </Fragment>\n        ))}\n        {elseBlock && (\n          <>\n            <div className=\"segment border-t border-solid mt-2\">\n              <div className=\"text-skin-fragment\">\n                <label className=\"p-1\">[else]</label>\n              </div>\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={elseBlock}\n                number={`${props.number}.${\n                  blockLengthAcc[blockLengthAcc.length - 1] + 1\n                }`}\n                incremental\n              />\n            </div>\n          </>\n        )}\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { cn } from \"@/utils\";\nimport { Block } from \"../../Block\";\nimport { ConditionLabel } from \"./ConditionLabel\";\nimport \"./FragmentPar.css\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentPar = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n\n  const par = props.context.par();\n  const condition = par?.parExpr()?.condition();\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={props.origin}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-par par border-skin-fragment rounded\"\n        style={fragmentStyle}\n      >\n        {props.commentObj?.text && (\n          <Comment comment={props.comment} commentObj={props.commentObj} />\n        )}\n        <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t relative\">\n          <Numbering number={props.number} />\n          <div className=\"name font-semibold p-1 border-b\">\n            <label className=\"p-0 flex items-center gap-0.5\">\n              <Icon name=\"par-fragment\" />\n              <CollapseButton\n                label=\"Par\"\n                collapsed={collapsed}\n                onClick={toggleCollapse} // Assuming 'this.toggle' is accessible or replace with appropriate handler\n                style={props.commentObj?.messageStyle}\n                className={cn(props.commentObj?.messageClassNames)}\n              />\n            </label>\n          </div>\n        </div>\n        <div className={cn({ hidden: collapsed })}>\n          <div className=\"segment\">\n            {condition && (\n              <div className=\"text-skin-fragment\">\n                <ConditionLabel condition={condition} />\n              </div>\n            )}\n            {!!par.braceBlock() && (\n              <Block\n                origin={leftParticipant}\n                className=\"[&>.statement-container:not(:first-child)]:border-t\"\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={par.braceBlock().block()}\n                number={`${props.number}.1`}\n                incremental\n              />\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { Block } from \"../../Block\";\nimport { ConditionLabel } from \"./ConditionLabel\";\nimport { cn } from \"@/utils\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentOpt = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const opt = props.context.opt();\n  const condition = opt?.parExpr()?.condition();\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n  return (\n    <div\n      data-origin={props.origin}\n      data-left-participant={leftParticipant}\n      data-frame-padding-left={border.left}\n      data-frame-padding-right={border.right}\n      className={cn(\n        \"group fragment opt border-skin-fragment rounded\",\n        props.className,\n      )}\n      style={fragmentStyle}\n    >\n      {props.commentObj?.text && (\n        <Comment comment={props.comment} commentObj={props.commentObj} />\n      )}\n      <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 relative\">\n        <Numbering number={props.number} />\n        <div className=\"name font-semibold p-1 border-b\">\n          <label className=\"p-0 flex items-center gap-0.5\">\n            <Icon name=\"opt-fragment\" />\n            <CollapseButton\n              label=\"Opt\"\n              collapsed={collapsed}\n              onClick={toggleCollapse}\n              style={props.commentObj?.textStyle}\n              className={cn(props.commentObj?.classNames)}\n            />\n          </label>\n        </div>\n      </div>\n      <div className={cn({ hidden: collapsed })}>\n        <div className=\"segment\">\n          {condition && (\n            <div className=\"text-skin-fragment\">\n              <ConditionLabel condition={condition} />\n            </div>\n          )}\n          <Block\n            origin={leftParticipant}\n            style={{ paddingLeft: `${paddingLeft}px` }}\n            context={opt?.braceBlock()?.block()}\n            number={`${props.number}.1`}\n            incremental\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { Block } from \"../../Block\";\nconst capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1);\nimport { cn } from \"@/utils\";\nimport \"./FragmentSection.css\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentSection = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n  const section = props.context.section();\n  const braceBlock = section?.braceBlock();\n  const atom = section?.atom()?.getFormattedText();\n  const blockInSection = braceBlock?.block();\n\n  const label = atom ?? capitalize(\"section\");\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={props.origin}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-section section border-skin-fragment rounded\"\n        style={fragmentStyle}\n      >\n        {props.commentObj?.text && (\n          <Comment comment={props.comment} commentObj={props.commentObj} />\n        )}\n        <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t relative\">\n          <Numbering number={props.number} />\n          <div className=\"name font-semibold p-1 border-b\">\n            <label className=\"p-0 flex items-center gap-0.5\">\n              <Icon name=\"section-fragment\" />\n              <CollapseButton\n                label={label}\n                collapsed={collapsed}\n                onClick={toggleCollapse}\n                style={props.commentObj?.messageStyle}\n                className={cn(props.commentObj?.messageClassNames)}\n              />\n            </label>\n          </div>\n        </div>\n\n        <div className={collapsed ? \"hidden\" : \"\"}>\n          <div className=\"segment\">\n            <div className=\"text-skin-fragment flex\"></div>\n            {blockInSection && (\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={blockInSection}\n                number={props.number}\n              />\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { ConditionLabel } from \"./ConditionLabel\";\nimport { cn } from \"@/utils\";\nimport { Block } from \"../../Block\";\nimport \"./FragmentCritical.css\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentCritical = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n\n  const critical = props.context.critical();\n  const braceBlock = critical?.braceBlock();\n  const condition = critical?.parExpr()?.condition();\n  const blockInCritical = braceBlock?.block();\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={props.origin}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-critical critical border-skin-fragment rounded\"\n        style={fragmentStyle}\n      >\n        {props.commentObj?.text && (\n          <Comment comment={props.comment} commentObj={props.commentObj} />\n        )}\n        <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t relative\">\n          <Numbering number={props.number} />\n          <div className=\"name font-semibold p-1 border-b\">\n            <label className=\"p-0 flex items-center gap-0.5\">\n              <Icon name=\"critical-fragment\" />\n              <CollapseButton\n                label=\"Critical\"\n                collapsed={collapsed}\n                onClick={toggleCollapse}\n                style={props.commentObj?.messageStyle}\n                className={cn(props.commentObj?.messageClassNames)}\n              />\n            </label>\n          </div>\n        </div>\n\n        <div className={collapsed ? \"hidden\" : \"\"}>\n          <div className=\"segment\">\n            {condition && (\n              <div className=\"text-skin-fragment\">\n                <ConditionLabel condition={condition} />\n              </div>\n            )}\n            {blockInCritical && (\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={blockInCritical}\n                number={`${props.number}.1`}\n                incremental\n              />\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Comment } from \"../Comment/Comment\";\nimport { Numbering } from \"../../../Numbering\";\nimport { CollapseButton } from \"./CollapseButton\";\nimport { cn } from \"@/utils\";\nimport { Block } from \"../../Block\";\nimport { blockLength } from \"@/utils/Numbering\";\nimport \"./FragmentTryCatchFinally.css\";\nimport { useMemo } from \"react\";\nimport Icon from \"@/components/Icon/Icons\";\n\nexport const FragmentTryCatchFinally = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const {\n    collapsed,\n    toggleCollapse,\n    paddingLeft,\n    fragmentStyle,\n    border,\n    leftParticipant,\n  } = useFragmentData(props.context, props.origin);\n\n  const exception = (ctx: any) => {\n    return ctx?.invocation()?.parameters()?.getFormattedText();\n  };\n  const blockInCatchBlock = (ctx: any) => {\n    return ctx?.braceBlock()?.block();\n  };\n\n  const tcf = props.context.tcf();\n  const blockInTryBlock = tcf?.tryBlock()?.braceBlock()?.block();\n  const finallyBlock = tcf?.finallyBlock()?.braceBlock()?.block();\n  const blockLengthAcc = useMemo(() => {\n    const acc = [blockLength(blockInTryBlock)];\n    if (tcf?.catchBlock()) {\n      tcf.catchBlock().forEach((block: any) => {\n        acc.push(acc[acc.length - 1] + blockLength(blockInCatchBlock(block)));\n      });\n    }\n    return acc;\n  }, [tcf, blockInTryBlock]);\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={props.origin}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-tcf tcf border-skin-fragment rounded\"\n        style={fragmentStyle}\n      >\n        {props.commentObj?.text && (\n          <Comment comment={props.comment} commentObj={props.commentObj} />\n        )}\n        <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t relative\">\n          <Numbering number={props.number} />\n          <div className=\"name font-semibold p-1 border-b\">\n            <label className=\"p-0 flex items-center gap-0.5\">\n              <Icon name=\"try-catch-fragment\" />\n              <CollapseButton\n                label=\"Try\"\n                collapsed={collapsed}\n                onClick={toggleCollapse}\n                style={props.commentObj?.messageStyle}\n                className={cn(props.commentObj?.messageClassNames)}\n              />\n            </label>\n          </div>\n        </div>\n        <div className={collapsed ? \"hidden\" : \"\"}>\n          <div className=\"segment\">\n            {blockInTryBlock && (\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={blockInTryBlock}\n                number={`${props.number}.1`}\n                incremental\n              />\n            )}\n          </div>\n          {tcf.catchBlock().map((catchBlock: any, index: number) => (\n            <div className=\"segment border-t border-solid mt-2\" key={index + 500}>\n              <div\n                className=\"header inline-block bg-skin-frame opacity-65\"\n                key={index + 1000}\n              >\n                <label className=\"keyword catch p-1\">catch</label>\n                <label className=\"exception p-1\">{exception(catchBlock)}</label>\n              </div>\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={blockInCatchBlock(catchBlock)}\n                key={index + 2000}\n                number={`${props.number}.${blockLengthAcc[index] + 1}`}\n                incremental\n              />\n            </div>\n          ))}\n          {finallyBlock && (\n            <div className=\"segment border-t border-solid mt-2\">\n              <div className=\"header flex text-skin-fragment finally\">\n                <label className=\"keyword finally bg-skin-frame opacity-65 px-1 inline-block\">\n                  finally\n                </label>\n              </div>\n              <Block\n                origin={leftParticipant}\n                style={{ paddingLeft: `${paddingLeft}px` }}\n                context={finallyBlock}\n                number={`${props.number}.${\n                  blockLengthAcc[blockLengthAcc.length - 1] + 1\n                }`}\n                incremental\n              />\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import {\n  codeAtom,\n  modeAtom,\n  onContentChangeAtom,\n  pendingEditableRangeAtom,\n  selectedMessageAtom,\n} from \"@/store/Store\";\nimport { cn } from \"@/utils\";\nimport { useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport { formatText } from \"@/utils/StringUtil\";\nimport { EditableSpan } from \"@/components/common/EditableSpan\";\nimport { RenderMode } from \"@/store/Store\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\ninterface EditableLabelFieldProps {\n  text: string;\n  position: [number, number];\n  normalizeText?: (text: string) => string;\n  className?: string;\n  title?: string;\n}\n\nexport const EditableLabelField = ({\n  text,\n  position,\n  normalizeText,\n  className,\n  title = \"Click to edit\",\n}: EditableLabelFieldProps) => {\n  const mode = useAtomValue(modeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const pendingEditableRange = useAtomValue(pendingEditableRangeAtom);\n  const setPendingEditableRange = useSetAtom(pendingEditableRangeAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n  const isEditable = mode !== RenderMode.Static;\n  const formattedText = resolveEmojiInText(formatText(text ?? \"\"));\n  const shouldAutoEdit =\n    pendingEditableRange !== null &&\n    pendingEditableRange.start === position[0] &&\n    pendingEditableRange.end === position[1]\n      ? pendingEditableRange.token\n      : undefined;\n\n  const handleSave = (newText: string) => {\n    // If text is empty or same as what was displayed, bail out\n    if (newText === \"\" || newText === formattedText) {\n      return;\n    }\n\n    // Apply parent-provided normalizer\n    const normalizedText = normalizeText?.(newText) ?? newText;\n\n    const [start, end] = position;\n    if (start == null || end == null || start === -1 || end === -1) {\n      console.warn(\"labelPosition is not set\");\n      return;\n    }\n\n    const newCode = code.slice(0, start) + normalizedText + code.slice(end + 1);\n    setCode(newCode);\n    onContentChange(newCode);\n    setSelectedMessage({\n      start,\n      end: start + normalizedText.length - 1,\n      token: Date.now(),\n    });\n    if (shouldAutoEdit) {\n      setPendingEditableRange(null);\n    }\n  };\n\n  return (\n    <EditableSpan\n      text={formattedText}\n      isEditable={isEditable}\n      className={cn(className)}\n      onSave={handleSave}\n      title={title}\n      autoEditToken={shouldAutoEdit}\n    />\n  );\n};\n","import { EditableLabelField } from \"./EditableLabelField\";\nimport { cn } from \"@/utils\";\n\nexport const MessageLabel = (props: {\n  labelText: string;\n  labelPosition: [number, number];\n  normalizeText?: (text: string) => string;\n  className?: string;\n}) => {\n  return (\n    <EditableLabelField\n      text={props.labelText}\n      position={props.labelPosition}\n      normalizeText={props.normalizeText}\n      className={cn(\"px-1 right\", props.className)}\n    />\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { useFragmentData } from \"./useFragmentData\";\nimport { Numbering } from \"../../../Numbering\";\nimport { Comment } from \"../Comment/Comment\";\nimport { MessageLabel } from \"../../../MessageLabel\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\n\nexport const FragmentRef = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const { paddingLeft, fragmentStyle, border, leftParticipant } =\n    useFragmentData(props.context, props.origin);\n  const content = props.context.ref().Content();\n  const contentLabel = content?.getFormattedText();\n  const contentPosition: [number, number] = [\n    content?.start.start,\n    content?.stop.stop,\n  ];\n\n  return (\n    <div className={props.className}>\n      <div\n        data-origin={leftParticipant}\n        data-left-participant={leftParticipant}\n        data-frame-padding-left={border.left}\n        data-frame-padding-right={border.right}\n        className=\"group fragment fragment-ref bg-skin-frame border-skin-fragment relative rounded min-w-[140px] w-max py-4 px-2 flex justify-center items-center flex-col\"\n        style={{ ...fragmentStyle, paddingLeft: `${paddingLeft}px` }}\n      >\n        <div className=\"header bg-skin-fragment-header text-skin-fragment-header leading-4 rounded-t absolute top-0 left-0\">\n          <Numbering number={props.number} />\n          {props.commentObj?.text && (\n            <Comment\n              className=\"absolute -top-4 left-0\"\n              comment={props.comment}\n              commentObj={props.commentObj}\n            />\n          )}\n          <div className=\"text-skin-fragment relative w-9 h-8 -top-[1px] -left-[1px]\">\n            <div className=\"polygon-border absolute inset-0\"></div>\n            <div className=\"polygon-content bg-skin-frame text-skin-fragment-header absolute inset-[1px] flex flex-col items-center justify-center\">\n              <span\n                className={`flex items-center justify-center font-semibold ${props.commentObj?.messageClassNames || \"\"}`}\n                style={props.commentObj?.messageStyle}\n              >\n                Ref\n              </span>\n            </div>\n          </div>\n        </div>\n        <MessageLabel\n          className=\"text-skin-title mt-3 mb-2\"\n          labelText={contentLabel}\n          labelPosition={contentPosition}\n          normalizeText={syncMessageNormalizer}\n        />\n      </div>\n    </div>\n  );\n};\n","import { cn } from \"@/utils\";\nimport { CSSProperties, ReactNode, RefObject } from \"react\";\nimport { Numbering } from \"../../../Numbering\";\n\nexport type MessageViewProps = {\n  type?: string;\n  textStyle?: CSSProperties;\n  className?: string;\n  style?: CSSProperties;\n  number?: string;\n  rtl?: string | boolean;\n  onClick?: () => void;\n  messageRef?: RefObject<HTMLDivElement>;\n  \"data-selected\"?: string;\n  title?: string;\n  children: ReactNode;\n};\n\n/**\n * Arrowhead paths using original ArrowHead.tsx coordinates exactly.\n * viewBox 0 0 7 9 rendered at 7x10. Filled uses Z (closed path with strokeLinecap round).\n */\nconst LTR_FILLED = \"M1 1.25 L6.15 4.5 L1 7.75 Z\";\nconst LTR_OPEN = \"M1 1.25 L6.15 4.5 L1 7.75\";\nconst RTL_FILLED = \"M6 1.25 L0.85 4.5 L6 7.75 Z\";\nconst RTL_OPEN = \"M6 1.25 L0.85 4.5 L6 7.75\";\n\nexport const MessageView = ({\n  type = \"\",\n  textStyle,\n  className,\n  style,\n  number,\n  rtl,\n  onClick,\n  messageRef,\n  \"data-selected\": dataSelected,\n  title,\n  children,\n}: MessageViewProps) => {\n  const isDashed = type === \"creation\" || type === \"return\";\n  const isFilled = type === \"sync\";\n  const arrowPath = rtl\n    ? (isFilled ? RTL_FILLED : RTL_OPEN)\n    : (isFilled ? LTR_FILLED : LTR_OPEN);\n\n  return (\n    <div\n      className={cn(\n        \"message leading-none border-b-2 border-transparent flex items-end relative\",\n        className,\n      )}\n      style={style}\n      onClick={onClick}\n      onKeyDown={onClick ? (e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          onClick();\n        }\n      } : undefined}\n      tabIndex={onClick ? 0 : undefined}\n      role={onClick ? \"button\" : undefined}\n      ref={messageRef}\n      data-selected={dataSelected}\n      title={title}\n    >\n      {/* Line spanning full width */}\n      <svg\n        className=\"absolute left-0 w-full text-skin-message-arrow pointer-events-none\"\n        height=\"2\"\n        preserveAspectRatio=\"none\"\n        style={{ overflow: \"visible\", bottom: \"-2px\" }}\n      >\n        <line\n          x1={rtl ? \"100%\" : \"0\"}\n          y1=\"1\"\n          x2={rtl ? \"0\" : \"100%\"}\n          y2=\"1\"\n          stroke=\"currentColor\"\n          strokeWidth=\"2\"\n          strokeDasharray={isDashed ? \"6,4\" : undefined}\n          shapeRendering=\"crispEdges\"\n        />\n      </svg>\n      {/* Arrowhead positioned at tip end via CSS */}\n      <svg\n        className={cn(\n          \"absolute text-skin-message-arrow pointer-events-none\",\n          rtl ? \"left-0\" : \"right-0\",\n        )}\n        width=\"7\"\n        height=\"10\"\n        viewBox=\"0 0 7 9\"\n        style={{ overflow: \"visible\", bottom: \"-6px\" }}\n      >\n        <path\n          d={arrowPath}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeWidth=\"2\"\n          fill={isFilled ? \"currentColor\" : \"none\"}\n        />\n      </svg>\n      {/* Label text — padding on tip side reserves space matching old arrowhead div width (7px) */}\n      <div\n        className=\"name group text-center flex-grow relative\"\n        style={{ [rtl ? \"paddingLeft\" : \"paddingRight\"]: \"7px\" }}\n      >\n        <div className=\"inline-block static min-h-[1em]\">\n          <div style={textStyle}>\n            {children}\n          </div>\n        </div>\n      </div>\n      <Numbering number={number} />\n    </div>\n  );\n};\n","import {\n  modeAtom,\n  onMessageClickAtom,\n  RenderMode,\n  selectedMessageAtom,\n} from \"@/store/Store\";\nimport { CSSProperties, ReactNode, useRef } from \"react\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport { MessageView } from \"./MessageView\";\nimport { cn } from \"@/utils.ts\";\n\ntype Context = any;\n\nexport const Message = (props: {\n  context?: Context;\n  selectionRange?: [number, number];\n  rtl?: string | boolean;\n  type?: string;\n  textStyle?: CSSProperties;\n  className?: string;\n  style?: CSSProperties;\n  number?: string;\n  children: ReactNode;\n}) => {\n  const {\n    context,\n    selectionRange,\n    rtl,\n    type = \"\",\n    textStyle,\n    className,\n    style,\n    number,\n    children,\n  } = props;\n  const mode = useAtomValue(modeAtom);\n  const onMessageClick = useAtomValue(onMessageClickAtom);\n  const selectedMessage = useAtomValue(selectedMessageAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n  const messageRef = useRef<HTMLDivElement>(null);\n  const stylable = mode !== RenderMode.Static;\n  const [rangeStart, rangeEnd] = selectionRange ?? [\n    context?.start?.start,\n    context?.stop?.stop,\n  ];\n  const isSelected =\n    selectedMessage?.start === rangeStart && selectedMessage?.end === rangeEnd;\n\n  const onClick = () => {\n    if (!stylable || !messageRef.current) return;\n    setSelectedMessage(\n      rangeStart != null && rangeEnd != null\n        ? { start: rangeStart, end: rangeEnd, token: Date.now() }\n        : null,\n    );\n    onMessageClick(context, messageRef.current);\n  };\n\n  return (\n    <MessageView\n      type={type}\n      textStyle={textStyle}\n      className={cn({\"cursor-pointer\": stylable}, className)}\n      style={style}\n      number={number}\n      rtl={rtl}\n      onClick={onClick}\n      messageRef={messageRef}\n      data-selected={isSelected ? \"true\" : \"false\"}\n      title={\n        !stylable\n          ? undefined\n          : isSelected\n          ? \"Click label to edit · drag to reorder\"\n          : \"Click to select · drag to reorder\"\n      }\n      children={children}\n    />\n  );\n};\n","import { cn } from \"@/utils\";\nimport \"./CollapseButton.css\";\n\nexport const CollapseButton = (props: {\n  collapsed?: boolean;\n  onClick?: () => void;\n}) => {\n  return (\n    <div className=\"occurrence-collapsible-header w-auto\">\n      <svg\n        width=\"20px\"\n        height=\"20px\"\n        className={cn(\"collapse-button cursor-pointer\", {\n          hidden: props.collapsed,\n          expanded: !props.collapsed,\n        })}\n        onClick={props.onClick}\n        viewBox=\"0 0 25 25\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"miter\"\n      >\n        <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g>\n        <g\n          id=\"SVGRepo_tracerCarrier\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        ></g>\n        <g id=\"SVGRepo_iconCarrier\">\n          <line x1=\"13\" y1=\"2\" x2=\"13\" y2=\"10\"></line>\n          <polyline points=\"9 7 13 11 17 7\"></polyline>\n          <line x1=\"13\" y1=\"23\" x2=\"13\" y2=\"15\"></line>\n          <polyline points=\"9 19 13 15 17 19\"></polyline>\n        </g>\n      </svg>\n      <svg\n        width=\"20px\"\n        height=\"20px\"\n        className={cn(\"cursor-pointer\", { hidden: !props.collapsed })}\n        onClick={props.onClick}\n        viewBox=\"0 0 25 25\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"miter\"\n      >\n        <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g>\n        <g\n          id=\"SVGRepo_tracerCarrier\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        ></g>\n        <g id=\"SVGRepo_iconCarrier\">\n          <line x1=\"13\" y1=\"1\" x2=\"13\" y2=\"9\"></line>\n          <polyline points=\"9 5 13 1 17 5\"></polyline>\n          <line x1=\"13\" y1=\"13\" x2=\"13\" y2=\"13\"></line>\n          <line x1=\"13\" y1=\"24\" x2=\"13\" y2=\"17\"></line>\n          <polyline points=\"9 20 13 24 17 20\"></polyline>\n        </g>\n      </svg>\n    </div>\n  );\n};\n","import { cn } from \"@/utils\";\nimport { EditableLabelField } from \"./EditableLabelField\";\n\nexport interface AssignmentReturnLabelProps {\n  assignee: string;\n  type: string;\n  assigneePosition: [number, number];\n  typePosition: [number, number];\n  normalizeText?: (text: string) => string;\n  className?: string;\n}\n\nexport const AssignmentReturnLabel = ({\n  assignee,\n  type,\n  assigneePosition,\n  typePosition,\n  normalizeText,\n  className,\n}: AssignmentReturnLabelProps) => {\n  return (\n    <span className={cn(\"assignment-return-label\", className)}>\n      <EditableLabelField\n        text={assignee}\n        position={assigneePosition}\n        normalizeText={normalizeText}\n        className=\"right\"\n        title=\"Double-click to edit assignee\"\n      />\n      {type && (\n        <>\n          <span className=\"text-skin-message\">:</span>\n          <EditableLabelField\n            text={type}\n            position={typePosition}\n            className=\"right\"\n            title=\"Double-click to edit type\"\n          />\n        </>\n      )}\n    </span>\n  );\n};\n","import { CollapseButton } from \"./CollapseButton\";\nimport { EventBus } from \"@/EventBus\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { cn } from \"@/utils\";\nimport { Block } from \"../../../Block\";\nimport { centerOf } from \"../../utils\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport {\n  coordinatesAtom,\n  createMessageDragAtom,\n  diagramElementAtom,\n  enableMessageInsertionAtom,\n  modeAtom,\n  RenderMode,\n  selectedAtom,\n  selectedMessageAtom,\n} from \"@/store/Store\";\nimport { Message } from \"../../Message/Message\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\nimport { CSSProperties, type PointerEvent as ReactPointerEvent } from \"react\";\nimport { AssignmentReturnLabel } from \"@/components/DiagramFrame/SeqDiagram/MessageLayer/AssignmentReturnLabel\";\n\nexport const Occurrence = (props: {\n  context: any;\n  participant: any;\n  rtl?: boolean;\n  number?: string;\n  className?: string;\n  textStyle?: CSSProperties;\n  messageClassNames?: string[];\n  isSelf?: boolean;\n  interactionWidth?: number;\n  enableCreateDrag?: boolean;\n}) => {\n  const mode = useAtomValue(modeAtom);\n  const messageInsertionEnabled = useAtomValue(enableMessageInsertionAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const setCreateDrag = useSetAtom(createMessageDragAtom);\n  const setSelectedParticipants = useSetAtom(selectedAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n  const [collapsed, setCollapsed] = useState(false);\n\n  const debug = localStorage.getItem(\"zenumlDebug\");\n\n  const computedCenter = () => {\n    try {\n      return centerOf(coordinates, props.participant);\n    } catch (e) {\n      console.error(e);\n      return 0;\n    }\n  };\n  const hasAnyStatementsExceptReturn = () => {\n    const braceBlock = props.context.braceBlock();\n    if (!braceBlock) return false;\n    const stats = braceBlock.block()?.stat() || [];\n    const len = stats.length;\n    if (len > 1) return true;\n    //when the only one statement is not the RetContext\n    return len === 1 && stats[0][\"ret\"]() == null;\n  };\n  const toggle = () => {\n    setCollapsed(!collapsed);\n\n    //update participant top in this cases: has child and sibling creation statement\n    //e.g. : a.call() { b = new B(); b.call() { c = new C() c.call(){return}}}\n    EventBus.emit(\"participant_set_top\");\n  };\n\n  useEffect(() => {\n    setCollapsed(false);\n  }, [props.context]);\n\n  const assigneeData = useMemo(() => {\n    // Check if context has Assignment function (works for both CreationContext and MessageContext)\n    if (typeof props.context?.Assignment !== \"function\") {\n      return null;\n    }\n\n    const assignment = props.context.Assignment();\n    if (!assignment) return null;\n    const assignee = assignment.assignee || \"\";\n    if (!assignee) return null;\n    return {\n      assignee: assignment.assignee,\n      type: assignment.type,\n      assigneePosition: assignment.assigneePosition,\n      typePosition: assignment.typePosition,\n    };\n  }, [props.context]);\n\n  const statementNumber = props.number\n    ? `${props.number}.${props.context?.Statements()?.length + 1}`\n    : undefined;\n  const nestedBlockContext = props.context?.braceBlock?.()?.block?.() ?? null;\n  const insertIndex =\n    props.context?.Statements?.()?.length ??\n    nestedBlockContext?.stat?.()?.length ??\n    0;\n\n  const dragEnabled =\n    !!props.enableCreateDrag &&\n    messageInsertionEnabled &&\n    mode === RenderMode.Dynamic;\n\n  const startCreateDrag = (event: ReactPointerEvent<HTMLDivElement>) => {\n    if (!dragEnabled || !diagramElement) {\n      return;\n    }\n\n    const currentTarget = event.currentTarget as HTMLDivElement;\n    const target = event.target as HTMLElement | null;\n    const nestedBlockElement = Array.from(currentTarget.children).find(\n      (child) => child.classList.contains(\"block\"),\n    );\n    if (\n      target?.closest(\".occurrence-collapsible-header\") ||\n      target?.closest(\".message\") ||\n      (nestedBlockElement?.contains(target) ?? false) ||\n      target?.closest(\"[contenteditable='true']\")\n    ) {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    const diagramRect = diagramElement.getBoundingClientRect();\n    const barRect = currentTarget.getBoundingClientRect();\n    const sourceX = barRect.left - diagramRect.left + barRect.width / 2;\n    const sourceY = event.clientY - diagramRect.top;\n\n    setSelectedMessage(null);\n    setSelectedParticipants([props.participant]);\n    setCreateDrag({\n      source: props.participant,\n      sourceX,\n      sourceY,\n      pointerX: sourceX,\n      pointerY: sourceY,\n      hoverTarget: null,\n      insertIndex,\n      blockContext: nestedBlockContext,\n      hostContext: props.context,\n    });\n  };\n\n  return (\n    <div\n      className={cn(\n        \"occurrence min-h-6 shadow-occurrence border-skin-occurrence bg-skin-occurrence rounded-sm border-2 relative left-full w-[15px] mt-[-2px] pl-[6px]\",\n        { \"right-to-left left-[-14px]\": props.rtl },\n        {\n          \"cursor-grab\": dragEnabled,\n        },\n        props.className,\n      )}\n      data-el-type=\"occurrence\"\n      data-belongs-to={props.participant}\n      data-x-offset={0}\n      data-debug-center-of={computedCenter()}\n      onPointerDown={startCreateDrag}\n      title={\n        dragEnabled\n          ? `Drag to create a message from ${props.participant}`\n          : undefined\n      }\n    >\n      {debug && (\n        <>\n          <div className=\"absolute w-full left-0 bg-amber-700 h-3 -top-1 flex justify-center items-center\">\n            <div className=\"w-px h-full bg-black\"></div>\n          </div>\n          <div className=\"absolute w-full left-0 bg-amber-700 h-3 -bottom-1 flex justify-center items-center\">\n            <div className=\"w-px h-full bg-black\"></div>\n          </div>\n        </>\n      )}\n      {hasAnyStatementsExceptReturn() && (\n        <CollapseButton collapsed={collapsed} onClick={toggle} />\n      )}\n      {props.context.braceBlock() && (\n        <Block\n          origin={props.participant}\n          context={props.context.braceBlock().block()}\n          number={props.number}\n          collapsed={collapsed}\n        ></Block>\n      )}\n      {/* Render return statement for non-self sync message and creation */}\n      {assigneeData && !props.isSelf && (\n        <div className={cn(\"statement-container my-4\")}>\n          <div\n            className={cn(\n              \"interaction return relative right-to-left text-left text-sm text-skin-message\",\n            )}\n          >\n            <Message\n              className={cn(\n                \"return transform -translate-y-full pointer-events-auto\",\n                props.messageClassNames,\n              )}\n              context={props.context}\n              rtl={!props.rtl}\n              type=\"return\"\n              number={statementNumber}\n              textStyle={props.textStyle}\n              style={\n                props.interactionWidth !== undefined\n                  ? {\n                      width: `${props.interactionWidth}px`,\n                      transform: props.rtl\n                        ? `translateX(7px)`\n                        : `translateX(calc(-100% - 7px))`,\n                    }\n                  : undefined\n              }\n            >\n              <AssignmentReturnLabel\n                assignee={assigneeData.assignee}\n                type={assigneeData.type}\n                assigneePosition={assigneeData.assigneePosition}\n                typePosition={assigneeData.typePosition}\n                normalizeText={syncMessageNormalizer}\n              />\n            </Message>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","interface Pos {\n  line: number;\n  col: number;\n}\n\nexport class CodeRange {\n  start: Pos;\n  stop: Pos;\n\n  private constructor(\n    startLine: number,\n    startCol: number,\n    endLine: number,\n    endCol: number,\n  ) {\n    this.start = { line: startLine, col: startCol };\n    this.stop = { line: endLine, col: endCol };\n  }\n\n  public static from(context: any) {\n    const start = context.start;\n    const stop = context.stop;\n    return new CodeRange(\n      start.line,\n      start.column,\n      stop.line,\n      stop.column + stop.text.length,\n    );\n  }\n}\n","import sequenceParser from \"@/generated-parser/sequenceParser\";\nimport { centerOf, distance2 } from \"./utils\";\nimport Anchor2 from \"@/positioning/Anchor2\";\nimport { coordinatesAtom } from \"@/store/Store\";\nimport { useAtomValue } from \"jotai\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\n\nconst matchesImplicitStarterSelf = (ctx: any, participant: string) => {\n  return (\n    participant === _STARTER_ &&\n    ctx instanceof sequenceParser.MessageContext &&\n    ctx.Owner?.() === undefined &&\n    ctx.From?.() === undefined\n  );\n};\n\nexport const depthOnParticipant = (context: any, participant: any): number => {\n  return context?.getAncestors((ctx: any) => {\n    const isSync = (ctx: any) => {\n      const isMessageContext = ctx instanceof sequenceParser.MessageContext;\n      const isCreationContext = ctx instanceof sequenceParser.CreationContext;\n      return isMessageContext || isCreationContext;\n    };\n    if (isSync(ctx)) {\n      return (\n        ctx.Owner?.() === participant || matchesImplicitStarterSelf(ctx, participant)\n      );\n    }\n    return false;\n  }).length;\n};\n\nconst depthOnParticipant4Stat = (context: any, participant: any): number => {\n  if (!(context instanceof sequenceParser.StatContext)) {\n    return 0;\n  }\n\n  const child = context?.children?.[0];\n  if (!child) {\n    return 0;\n  }\n  return depthOnParticipant(child, participant);\n};\n\nexport const useArrow = ({\n  context,\n  origin,\n  source,\n  target,\n}: {\n  context: any;\n  origin: string;\n  source: string;\n  target: string;\n}) => {\n  const coordinates = useAtomValue(coordinatesAtom);\n\n  const isSelf = source === target;\n\n  const originLayers = depthOnParticipant(context, origin);\n\n  const sourceLayers = depthOnParticipant(context, source);\n\n  const targetLayers = depthOnParticipant4Stat(context, target);\n\n  const anchor2Origin = new Anchor2(centerOf(coordinates, origin), originLayers);\n\n  const anchor2Source = new Anchor2(centerOf(coordinates, source), sourceLayers);\n\n  const anchor2Target = new Anchor2(centerOf(coordinates, target), targetLayers);\n\n  const interactionWidth = Math.abs(anchor2Source.edgeOffset(anchor2Target));\n\n  const rightToLeft = distance2(coordinates, source, target) < 0;\n\n  const translateX = anchor2Origin.centerToEdge(\n    !rightToLeft ? anchor2Source : anchor2Target,\n  );\n\n  return {\n    isSelf,\n    originLayers,\n    sourceLayers,\n    targetLayers,\n    anchor2Origin,\n    anchor2Source,\n    anchor2Target,\n    interactionWidth,\n    rightToLeft,\n    translateX,\n  };\n};\n","import { modeAtom } from \"@/store/Store\";\nimport { cn } from \"@/utils\";\nimport { useAtomValue } from \"jotai\";\nimport { RenderMode } from \"@/store/Store\";\nimport { EditableLabelField } from \"./EditableLabelField\";\n\nexport interface CreationMessageLabelProps {\n  labelText: string;\n  labelPosition: [number, number];\n  normalizeText?: (text: string) => string;\n  className?: string;\n}\n\nexport const CreationMessageLabel = ({\n  labelText,\n  labelPosition,\n  normalizeText,\n  className,\n}: CreationMessageLabelProps) => {\n  const mode = useAtomValue(modeAtom);\n  const isEditable = mode !== RenderMode.Static;\n\n  // In static/readonly mode, render plain text with default \"create\" if empty\n  if (!isEditable) {\n    return <>{`«${labelText || \"create\"}»`}</>;\n  }\n\n  if (!labelText) {\n    return <>{`«create»`}</>;\n  }\n\n  // In editable mode, render with EditableLabelField\n  return (\n    <>\n      <span>«</span>\n      <EditableLabelField\n        text={labelText}\n        position={labelPosition}\n        normalizeText={normalizeText}\n        className={cn(\"right\", className)}\n      />\n      <span>»</span>\n    </>\n  );\n};\n","import logger from \"@/logger/logger\";\nimport { cn } from \"@/utils\";\nimport { Message } from \"../Message/Message\";\nimport { Occurrence } from \"../Interaction/Occurrence/Occurrence\";\nimport { CodeRange } from \"@/parser/CodeRange\";\nimport {\n  LIFELINE_WIDTH,\n  OCCURRENCE_BAR_SIDE_WIDTH,\n} from \"@/positioning/Constants\";\nimport CommentClass from \"@/components/Comment/Comment\";\nimport { useAtomValue } from \"jotai\";\nimport { cursorAtom, onElementClickAtom } from \"@/store/Store\";\nimport { Comment } from \"../Comment/Comment\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useArrow } from \"../useArrow\";\nimport { EventBus } from \"@/EventBus\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\nimport { CreationMessageLabel } from \"@/components/DiagramFrame/SeqDiagram/MessageLayer/CreationMessageLabel\";\n\nexport const Creation = (props: {\n  context: any;\n  origin: any;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const messageContainerRef = useRef<HTMLDivElement>(null);\n  const cursor = useAtomValue(cursorAtom);\n  const onElementClick = useAtomValue(onElementClickAtom);\n  const [participantWidth, setParticipantWidth] = useState(0);\n  const creation = props.context?.creation();\n  const target = creation?.Owner();\n  const isCurrent = creation?.isCurrent(cursor);\n  const signature = creation?.creationBody()?.parameters();\n  const [start, stop] = [signature?.start?.start, signature?.stop?.stop];\n\n\n  const { translateX, interactionWidth, rightToLeft } = useArrow({\n    context: props.context,\n    origin: props.origin,\n    source: props.origin,\n    target: creation?.Owner(),\n  });\n\n  const messageTextStyle = props.commentObj?.messageStyle;\n  const messageClassNames = props.commentObj?.messageClassNames;\n\n  const containerOffset =\n    participantWidth / 2 - OCCURRENCE_BAR_SIDE_WIDTH - LIFELINE_WIDTH;\n\n  useEffect(() => {\n    const participantElement = document.querySelector(\n      `[data-participant-id=\"${target}\"]`,\n    );\n\n    if (!participantElement) {\n      console.warn(`Could not find participant element for ${target}`);\n      setParticipantWidth(0);\n      return;\n    }\n\n    // Get the actual width from the DOM element\n    setParticipantWidth(participantElement.getBoundingClientRect().width);\n    logger.debug(\n      `Found participant element for ${target}, width: ${participantWidth}px`,\n    );\n\n    EventBus.emit(\"participant_set_top\");\n    logger.debug(`Init or update message container for ${target}`);\n  }, [target, participantWidth]);\n\n  return (\n    <div\n      data-origin={props.origin}\n      className={cn(\n        \"interaction creation sync\",\n        {\n          \"right-to-left\": rightToLeft,\n          highlight: isCurrent,\n        },\n        props.className,\n      )}\n      onClick={() => onElementClick(CodeRange.from(props.context))}\n      data-source={props.origin}\n      data-target={target}\n      data-signature={creation?.SignatureText()}\n      style={{\n        transform: \"translateX(\" + translateX + \"px)\",\n        width: interactionWidth + \"px\",\n      }}\n    >\n      {props.comment && <Comment commentObj={props.commentObj} />}\n      <div\n        ref={messageContainerRef}\n        data-type=\"creation\"\n        className={cn(\n          \"message-container pointer-events-none flex items-center h-10 relative\",\n          { \"flex-row-reverse\": rightToLeft },\n        )}\n        data-to={target}\n      >\n        <Message\n          className={cn(\n            \"invocation transform -translate-y-[calc(50%-1px)] pointer-events-auto\",\n            messageClassNames,\n          )}\n          context={creation}\n          selectionRange={[start, stop]}\n          rtl={rightToLeft}\n          type=\"creation\"\n          number={props.number}\n          textStyle={messageTextStyle}\n          style={{ width: `calc(100% - ${containerOffset}px)` }}\n        >\n          <CreationMessageLabel\n            labelText={creation?.ParametersText()}\n            labelPosition={[start, stop]}\n            normalizeText={syncMessageNormalizer}\n          />\n        </Message>\n      </div>\n      <Occurrence\n        context={creation}\n        className=\"pointer-events-auto\"\n        participant={target}\n        number={props.number}\n        textStyle={messageTextStyle}\n        messageClassNames={messageClassNames}\n        rtl={rightToLeft}\n        interactionWidth={interactionWidth}\n      />\n    </div>\n  );\n};\n","export const ArrowHead = (props: {\n  fill: boolean;\n  rtl: boolean;\n}) => {\n  const { fill, rtl } = props;\n\n  // Single unified arrow shape for both filled and open\n  return (\n    <svg\n      className=\"stroke-2\"\n      height=\"10\"\n      width=\"7\"\n      viewBox=\"0 0 7 9\"\n    >\n      <g transform={rtl ? \"scale(-1, 1) translate(-7, 0)\" : undefined}>\n        <path\n          d={fill ? \"M1 1.25 L6.15 4.5 L1 7.75 Z\" : \"M1 1.25 L6.15 4.5 L1 7.75\"}\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          fill={fill ? \"currentColor\" : \"none\"}\n        />\n      </g>\n    </svg>\n  );\n};","import { onMessageClickAtom, selectedMessageAtom } from \"@/store/Store\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport { CSSProperties, useMemo, useRef } from \"react\";\nimport { Numbering } from \"../../../../Numbering\";\nimport { MessageLabel } from \"../../../../MessageLabel\";\nimport { ArrowHead } from \"../../Message/ArrowHead\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\n\nexport const SelfInvocation = (props: {\n  context?: any;\n  number?: string;\n  textStyle?: CSSProperties;\n  classNames?: any;\n}) => {\n  const messageRef = useRef(null);\n  const onMessageClick = useAtomValue(onMessageClickAtom);\n  const selectedMessage = useAtomValue(selectedMessageAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n\n  const assignee = props.context?.Assignment()?.getText() || \"\";\n  const labelPosition: [number, number] = useMemo(() => {\n    const func = props.context?.messageBody().func();\n    if (!func) return [-1, -1];\n    return [func.start.start, func.stop.stop];\n  }, [props.context]);\n\n  const isSelected =\n    selectedMessage !== null &&\n    selectedMessage.start === labelPosition[0] &&\n    selectedMessage.end === labelPosition[1];\n\n  const onClick = () => {\n    setSelectedMessage(\n      labelPosition[0] !== -1\n        ? { start: labelPosition[0], end: labelPosition[1], token: Date.now() }\n        : null,\n    );\n    onMessageClick(props.context, messageRef.current!);\n  };\n\n  return (\n    <div\n      ref={messageRef}\n      className=\"self-invocation message leading-none self flex items-start flex-col border-none\"\n      onClick={onClick}\n      data-selected={isSelected ? \"true\" : \"false\"}\n    >\n      <label className=\"name text-left group px-px relative min-h-[1em] w-full\">\n        <Numbering number={props.number} />\n        <div className=\"label\" style={props.textStyle}>\n          {assignee && (\n            <span>\n              <span className=\"assignee px-1\">{assignee}</span>\n              <span>=</span>\n            </span>\n          )}\n          <MessageLabel\n            className={props.classNames}\n            labelText={props.context?.SignatureText()}\n            labelPosition={labelPosition}\n            normalizeText={syncMessageNormalizer}\n          />\n        </div>\n      </label>\n      <svg className=\"arrow text-skin-message-arrow\" width=\"30\" height=\"24\">\n        <path\n          className=\"stroke-current stroke-2 fill-none\"\n          d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 L14,15\"\n        />\n        <g transform=\"translate(7, 10)\">\n          <ArrowHead fill={true} rtl={true} />\n        </g>\n      </svg>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { cn } from \"@/utils\";\nimport { SelfInvocation } from \"./SelfInvocation/SelfInvocation\";\nimport { Message } from \"../Message/Message\";\nimport { MessageLabel } from \"../../../MessageLabel\";\nimport { Occurrence } from \"./Occurrence/Occurrence\";\nimport { useAtomValue } from \"jotai\";\nimport { cursorAtom } from \"@/store/Store\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { Comment } from \"../Comment/Comment\";\nimport { useArrow } from \"../useArrow\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\n\nexport const Interaction = (props: {\n  context: any;\n  origin: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const cursor = useAtomValue(cursorAtom);\n  const messageTextStyle = props.commentObj?.messageStyle;\n  const messageClassNames = props.commentObj?.messageClassNames;\n  const message = props.context?.message();\n  const signature = message?.SignatureText();\n  const isCurrent = message?.isCurrent(cursor);\n  const source = message?.From() || _STARTER_;\n  const target = props.context?.message()?.Owner() || _STARTER_;\n  const isSelf = source === target;\n  const signatureCtx = message?.messageBody().func()?.signature()[0];\n  const [start, stop] = [signatureCtx?.start?.start, signatureCtx?.stop?.stop];\n  const {\n    translateX,\n    interactionWidth,\n    originLayers,\n    sourceLayers,\n    targetLayers,\n    rightToLeft,\n  } = useArrow({\n    context: props.context,\n    origin: props.origin,\n    source,\n    target,\n  });\n\n  return (\n    <div\n      className={cn(\n        \"interaction sync inline-block\",\n        {\n          highlight: isCurrent,\n          self: isSelf,\n          \"right-to-left\": rightToLeft,\n        },\n        props.className,\n      )}\n      onClick={(e) => e.stopPropagation()}\n      data-to={target}\n      data-origin={props.origin}\n      data-source={source}\n      data-target={target}\n      data-origin-layers={originLayers}\n      data-source-layers={sourceLayers}\n      data-target-layers={targetLayers}\n      data-type=\"interaction\"\n      data-signature={signature}\n      style={{\n        width: isSelf ? undefined : interactionWidth + \"px\",\n        transform: \"translateX(\" + translateX + \"px)\",\n      }}\n    >\n      {props.commentObj?.text && <Comment commentObj={props.commentObj} />}\n      {isSelf ? (\n        <SelfInvocation\n          classNames={messageClassNames}\n          textStyle={messageTextStyle}\n          context={message}\n          number={props.number}\n        />\n      ) : (\n        <Message\n          className={cn(messageClassNames)}\n          textStyle={messageTextStyle}\n          context={message}\n          selectionRange={[start, stop]}\n          rtl={rightToLeft}\n          number={props.number}\n          type=\"sync\"\n        >\n          <MessageLabel\n            labelText={signature}\n            labelPosition={[start, stop]}\n            normalizeText={syncMessageNormalizer}\n          />\n        </Message>\n      )}\n      <Occurrence\n        context={message}\n        participant={target}\n        rtl={rightToLeft}\n        number={props.number}\n        textStyle={messageTextStyle}\n        messageClassNames={messageClassNames}\n        isSelf={isSelf}\n        interactionWidth={isSelf ? undefined : interactionWidth}\n        enableCreateDrag\n      />\n    </div>\n  );\n};\n","import { CSSProperties, useRef } from \"react\";\nimport { MessageLabel } from \"../../../../MessageLabel\";\nimport { Numbering } from \"../../../../Numbering\";\nimport { ArrowHead } from \"../../Message/ArrowHead\";\nimport { asyncMessageNormalizer } from \"@/utils/messageNormalizers\";\nimport { useAtomValue, useSetAtom } from \"jotai/index\";\nimport { onMessageClickAtom, selectedMessageAtom } from \"@/store/Store.ts\";\n\nexport const SelfInvocationAsync = (props: {\n  context?: any;\n  number?: string;\n  textStyle?: CSSProperties;\n  classNames?: string;\n}) => {\n  const content = props.context?.content();\n  const labelPosition = (): [number, number] => {\n    if (!content) return [-1, -1];\n    return [content.start.start, content.stop.stop];\n  };\n  const messageRef = useRef(null);\n  const onMessageClick = useAtomValue(onMessageClickAtom);\n  const selectedMessage = useAtomValue(selectedMessageAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n\n  const pos = labelPosition();\n  const isSelected =\n    selectedMessage !== null &&\n    selectedMessage.start === pos[0] &&\n    selectedMessage.end === pos[1];\n\n  const onClick = () => {\n    setSelectedMessage(\n      pos[0] !== -1\n        ? { start: pos[0], end: pos[1], token: Date.now() }\n        : null,\n    );\n    onMessageClick(props.context, messageRef.current!);\n  };\n\n  return (\n    <div\n      ref={messageRef}\n      className=\"message self flex items-start flex-col !border-none\"\n      onClick={onClick}\n      data-selected={isSelected ? \"true\" : \"false\"}\n    >\n      <label className=\"name group px-px min-h-[1em]\">\n        <Numbering number={props.number} />\n        <div className=\"label\" style={props.textStyle}>\n\n          <MessageLabel\n            className={props.classNames}\n            labelText={content?.getFormattedText()}\n            labelPosition={labelPosition()}\n            normalizeText={asyncMessageNormalizer}\n          />\n        </div>\n      </label>\n      <svg className=\"arrow text-skin-message-arrow\" width=\"30\" height=\"24\">\n        <path\n          className=\"stroke-current stroke-2 fill-none\"\n          d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 L1,15\"\n        />\n        <g transform=\"translate(0, 10)\">\n          <ArrowHead fill={false} rtl={true} />\n        </g>\n      </svg>\n    </div>\n  );\n};\n","// A Interaction-async component is to render:\n// 1. A->B: non-self async message\n// 2. A->A: self async message\n\n/**\n * source, target, from, to, provided from, origin\n *\n * # target\n * \"Message\" is the core concept of the sequence diagram. It is a message that is sent from one participant to another.\n *\n * `target` is the participant that receives the message. When target is not in the DSL, it is not a valid message.\n *\n * # origin/source/from\n *\n * When the `target` receives a sync message, it automatically becomes the `origin` of child messages. By default,\n * the `origin` is the `source` or `from` of the child messages.\n *\n * There are two special cases:\n * a. Messages at root level do not have an `origin` specified in DSL. Their `origin` is always _STARTER_.\n * b. Messages can also have arbitrarily specified `source` in the DSL. This is called \"provided from\".\n *    This does not change the `origin`. If origin != source, the message is called \"out-of-band\".\n *\n * `source` and `from` are the same.\n *\n * origin = root ? ownableMessages[0].from || _STARTER_ : passed on from parent # rendering concept\n * source = providedSource || ctx.Origin() || _STARTER_                         # parsing concept\n * target = ctx.to() || ctx.Owner()                                             # parsing concept\n *\n * outOfBand = source != origin\n *\n * ## common cases\n * code                               | source/from    | target/to  | provided source | origin     | out-of-band\n * A.method()                           _STARTER_        A            null            _STARTER_\n * A->B.method()                        A                B            A               A\n * A->B: message                        A                B            A               A\n * A.method() {\n *   B.method()                         A                B            null            A\n * }\n *\n * a()                                 _STARTER_         _STARTER_    null            _STARTER_\n * a() {                               _STARTER_         _STARTER_    null            _STARTER_\n *   b()                               _STARTER_         _STARTER_    null            _STARTER_\n *   A.method()                        _STARTER_         A            null            _STARTER_\n * }\n *\n * if(x) {\n *   a()                               _STARTER_         _STARTER_    null            _STARTER_\n * }\n *\n * A.method() {\n *   self() {\n *     B.method()                         A                B            null           A\n *     B->B.method()                      B                B            B              A            true\n *     B->B: message                      B                B            B              A            true\n *     B->C.method()                      B                C            B              A            true\n *     B->C: message                      B                C            B              A            true\n *   }\n * }\n *\n * The following is a good example that shows `origin` and `out-of-band` are pure rendering time concepts.\n * Those are decided during the mounting phase. So passing origin at component level is proper.\n * if(x) {\n *   A->A.method()\n *   self()                              _STARTER_         _STARTER_    null           A            true\n * }\n *\n */\n\nimport { cn } from \"@/utils\";\nimport { Comment } from \"../Comment/Comment\";\nimport { SelfInvocationAsync } from \"./SelfInvocationAsync/SelfInvocationAsync\";\nimport { Message } from \"../Message/Message\";\nimport { MessageLabel } from \"../../../MessageLabel\";\nimport CommentClass from \"@/components/Comment/Comment\";\nimport { useAtomValue } from \"jotai\";\nimport { cursorAtom, onElementClickAtom } from \"@/store/Store\";\nimport { CodeRange } from \"@/parser/CodeRange\";\nimport { useArrow } from \"../useArrow\";\nimport { asyncMessageNormalizer } from \"@/utils/messageNormalizers\";\n\nfunction isNullOrUndefined(value: any) {\n  return value === null || value === undefined;\n}\n\nexport const InteractionAsync = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const cursor = useAtomValue(cursorAtom);\n  const onElementClick = useAtomValue(onElementClickAtom);\n  const asyncMessage = props.context?.asyncMessage();\n  const signature = asyncMessage?.content()?.getFormattedText();\n  const providedSource = asyncMessage?.ProvidedFrom();\n  const source = providedSource || props.origin;\n  const toCtx = asyncMessage?.to();\n  const target = toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n  const isSelf = source === target;\n\n  const content = asyncMessage?.content();\n  const [start, stop] = [content?.start?.start, content?.stop?.stop];\n\n  const { translateX, interactionWidth, rightToLeft } = useArrow({\n    context: props.context,\n    origin: props.origin,\n    source,\n    target,\n  });\n\n  const messageClassNames = props.commentObj?.messageClassNames;\n  const messageTextStyle = props.commentObj?.messageStyle;\n  const getIsCurrent = () => {\n    const start = asyncMessage.start.start;\n    const stop = asyncMessage.stop.stop + 1;\n    if (\n      isNullOrUndefined(cursor) ||\n      isNullOrUndefined(start) ||\n      isNullOrUndefined(stop)\n    )\n      return false;\n    return cursor! >= start && cursor! <= stop;\n  };\n  return (\n    <div\n      data-origin={props.origin}\n      data-to={target}\n      data-source={source}\n      data-target={target}\n      className={cn(\n        \"interaction async\",\n        {\n          \"left-to-right\": !rightToLeft,\n          \"right-to-left\": rightToLeft,\n          highlight: getIsCurrent(),\n          \"self-invocation\": isSelf,\n        },\n        props.className,\n      )}\n      onClick={() => onElementClick(CodeRange.from(props.context))}\n      data-signature={signature}\n      style={{\n        width: interactionWidth + \"px\",\n        transform: \"translateX(\" + translateX + \"px)\",\n      }}\n    >\n      {props.comment && <Comment commentObj={props.commentObj} />}\n      {isSelf ? (\n        <SelfInvocationAsync\n          classNames={cn(messageClassNames)}\n          textStyle={messageTextStyle}\n          context={asyncMessage}\n          number={props.number}\n        />\n      ) : (\n        <Message\n          className={cn(messageClassNames)}\n          textStyle={messageTextStyle}\n          context={asyncMessage}\n          selectionRange={[start, stop]}\n          rtl={rightToLeft}\n          type=\"async\"\n          number={props.number}\n        >\n          <MessageLabel\n            labelText={signature}\n            labelPosition={[start, stop]}\n            normalizeText={asyncMessageNormalizer}\n          />\n        </Message>\n      )}\n    </div>\n  );\n};\n","import { coordinatesAtom, participantsAtom } from \"@/store/Store\";\nimport { cn } from \"@/utils\";\nimport { getStyle } from \"@/utils/messageStyling\";\nimport { resolveBracketContent, getEmojiUnicode } from \"@/emoji/resolveEmoji\";\nimport { useAtomValue } from \"jotai\";\nimport { useCallback, useMemo } from \"react\";\nimport { centerOf } from \"../utils\";\n\nexport const Divider = (props: {\n  context: any;\n  origin: string;\n  className?: string;\n}) => {\n  useAtomValue(participantsAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const diagramWidth = useMemo(() => {\n    return coordinates.getWidth();\n  }, [coordinates]);\n\n  const centerOfOrigin = centerOf(coordinates, props.origin);\n\n  const note = props.context.divider().Note();\n\n  const messageStyle = useMemo(() => {\n    if (note.trim().indexOf(\"[\") === 0 && note.indexOf(\"]\") !== -1) {\n      const startIndex = note.indexOf(\"[\");\n      const endIndex = note.indexOf(\"]\");\n      const bracketContent = note.slice(startIndex + 1, endIndex);\n      const remainingNote = note.slice(endIndex + 1);\n\n      const resolution = resolveBracketContent(bracketContent);\n      const emojiPrefix = resolution.emojis\n        .map((name) => getEmojiUnicode(name))\n        .join(\"\") + (resolution.emojis.length > 0 ? \" \" : \"\");\n\n      // Build CSS style from resolution (non-emoji values)\n      const cssValues = resolution.classNames.filter((c) => !resolution.emojis.includes(c));\n      return {\n        style: getStyle(cssValues),\n        note: emojiPrefix + remainingNote,\n      };\n    }\n    return { style: getStyle([]), note: note };\n  }, [note]);\n\n  const cleanNote = messageStyle.note.replace(/^=+\\s*|\\s*=+$/g, \"\").trim();\n\n  // Align with the lifeline-layer (same x=0 as SVG coordinate system).\n  // The block has padding-left that positions the statement-container;\n  // we need to offset back by that full padding to reach the content origin.\n  const refCallback = useCallback((el: HTMLDivElement | null) => {\n    if (!el) return;\n    const stmtContainer = el.parentElement;\n    const block = stmtContainer?.parentElement;\n    if (!block) return;\n    const blockPadding = parseFloat(getComputedStyle(block).paddingLeft) || 0;\n    el.style.transform = `translateX(-${blockPadding}px)`;\n  }, []);\n\n  return (\n    <div\n      ref={refCallback}\n      className={cn(\"divider\", props.className)}\n      data-origin={props.origin}\n      style={{\n        width: diagramWidth + \"px\",\n        transform: \"translateX(\" + (-1 * centerOfOrigin) + \"px)\",\n        display: \"flex\",\n        alignItems: \"center\",\n        height: 40,\n        gap: 0,\n      }}\n    >\n      <div className=\"left\" style={{ flex: 1, height: 1, backgroundColor: \"#aaaa33\" }}></div>\n      <div\n        style={{\n          ...messageStyle.style.textStyle,\n          backgroundColor: \"#fff5ad\",\n          border: \"1px solid #aaaa33\",\n          borderRadius: 2,\n          boxSizing: \"border-box\" as const,\n          height: 28,\n          padding: \"0 8px\",\n          fontSize: 14,\n          lineHeight: \"26px\",\n          color: \"#333\",\n          whiteSpace: \"nowrap\",\n        }}\n        className={cn(\"name\", messageStyle.style.classNames)}\n      >\n        {cleanNote}\n      </div>\n      <div className=\"right\" style={{ flex: 1, height: 1, backgroundColor: \"#aaaa33\" }}></div>\n    </div>\n  );\n};\n","import CommentClass from \"@/components/Comment/Comment\";\nimport { Comment } from \"../Comment/Comment\";\nimport { cn } from \"@/utils\";\nimport { Message } from \"../Message/Message\";\nimport { MessageLabel } from \"../../../MessageLabel\";\nimport { useAtomValue } from \"jotai\";\nimport { onElementClickAtom } from \"@/store/Store\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { CodeRange } from \"@/parser/CodeRange\";\nimport { SyntheticEvent } from \"react\";\nimport { useArrow } from \"../useArrow\";\nimport { syncMessageNormalizer } from \"@/utils/messageNormalizers\";\nimport sequenceParser from \"@/generated-parser/sequenceParser\";\n\nexport const Return = (props: {\n  context: any;\n  origin: string;\n  comment?: string;\n  commentObj?: CommentClass;\n  number?: string;\n  className?: string;\n}) => {\n  const onElementClick = useAtomValue(onElementClickAtom);\n\n  const ret = props.context?.ret();\n\n  const asyncMessage = ret?.asyncMessage() || ret?.returnAsyncMessage();\n\n  const signature = ret?.Signature();\n  const source = ret?.From() || _STARTER_;\n\n  const target = ret?.ReturnTo() || _STARTER_;\n\n  const messageContext = asyncMessage?.content() || ret?.expr();\n  let start = -1, stop = -1;\n  if (messageContext instanceof sequenceParser.AtomExprContext) {\n    const ret = messageContext.atom();\n    [start, stop] = [ret?.start?.start, ret?.stop?.stop];\n  } else if (messageContext instanceof sequenceParser.ContentContext) {\n    [start, stop] = [messageContext.start.start, messageContext.stop.stop];\n  }\n\n  const { translateX, interactionWidth, rightToLeft, isSelf } = useArrow({\n    context: props.context,\n    origin: props.origin,\n    source,\n    target,\n  });\n\n  const onClick = (e: SyntheticEvent) => {\n    e.stopPropagation();\n    onElementClick(CodeRange.from(props.context));\n  };\n  return (\n    // .relative to allow left style\n    <div\n      onClick={onClick}\n      data-type=\"return\"\n      data-signature={signature}\n      data-origin={props.origin}\n      data-to={target}\n      data-source={source}\n      data-target={target}\n      className={cn(\n        \"interaction return relative\",\n        {\n          \"right-to-left\": rightToLeft,\n          highlight: false,\n        },\n        props.className,\n      )}\n      style={{\n        width: interactionWidth + \"px\",\n        transform: \"translateX(\" + translateX + \"px)\",\n      }}\n    >\n      {props.comment && <Comment commentObj={props.commentObj} />}\n      {isSelf && (\n        <div className=\"flex items-center\">\n          <svg\n            className=\"w-3 h-3 flex-shrink-0 fill-current m-1\"\n            viewBox=\"0 0 512 512\"\n          >\n            <path\n              className=\"cls-1\"\n              d=\"M256 0C114.84 0 0 114.84 0 256s114.84 256 256 256 256-114.84 256-256S397.16 0 256 0Zm0 469.33c-117.63 0-213.33-95.7-213.33-213.33S138.37 42.67 256 42.67 469.33 138.37 469.33 256 373.63 469.33 256 469.33Z\"\n            />\n            <path\n              className=\"cls-1\"\n              d=\"M288 192h-87.16l27.58-27.58a21.33 21.33 0 1 0-30.17-30.17l-64 64a21.33 21.33 0 0 0 0 30.17l64 64a21.33 21.33 0 0 0 30.17-30.17l-27.58-27.58H288a53.33 53.33 0 0 1 0 106.67h-32a21.33 21.33 0 0 0 0 42.66h32a96 96 0 0 0 0-192Z\"\n            />\n          </svg>\n          <span className=\"name\">{signature}</span>\n        </div>\n      )}\n      {!isSelf && (\n        <Message\n          className={cn(props.commentObj?.messageClassNames)}\n          textStyle={props.commentObj?.messageStyle}\n          context={messageContext}\n          selectionRange={[start, stop]}\n          rtl={rightToLeft}\n          type=\"return\"\n          number={props.number}\n        >\n          <MessageLabel\n            labelText={signature}\n            labelPosition={[start, stop]}\n            normalizeText={syncMessageNormalizer}\n          />\n        </Message>\n      )}\n    </div>\n  );\n};\n","import { FragmentLoop } from \"./Fragment/FragmentLoop\";\nimport { FragmentAlt } from \"./Fragment/FragmentAlt\";\nimport { FragmentPar } from \"./Fragment/FragmentPar\";\nimport { FragmentOpt } from \"./Fragment/FragmentOpt\";\nimport { FragmentSection } from \"./Fragment/FragmentSection\";\nimport { FragmentCritical } from \"./Fragment/FragmentCritical\";\nimport { FragmentTryCatchFinally } from \"./Fragment/FragmentTryCatchFinally\";\nimport { FragmentRef } from \"./Fragment/FragmentRef\";\nimport { Creation } from \"./Creation/Creation\";\nimport { Interaction } from \"./Interaction/Interaction\";\nimport { InteractionAsync } from \"./InteractionAsync/Interaction-async\";\nimport { Divider } from \"./Divider/Divider\";\nimport { Return } from \"./Return/Return\";\nimport Comment from \"../../../../../Comment/Comment\";\nimport { cn } from \"@/utils\";\n\nexport const Statement = (props: {\n  context: any;\n  origin: string;\n  number?: string;\n  collapsed?: boolean;\n}) => {\n  const comment = props.context.getComment() || \"\";\n  const commentObj = new Comment(comment);\n\n  const subProps = {\n    className: cn(\"text-left text-sm text-skin-message\", {\n      hidden: props.collapsed && !props.context.ret(),\n    }),\n    context: props.context,\n    origin: props.origin,\n    comment: comment,\n    commentObj: commentObj,\n    number: props.number,\n  };\n\n  switch (true) {\n    case Boolean(props.context.loop()):\n      return <FragmentLoop {...subProps} />;\n    case Boolean(props.context.alt()):\n      return <FragmentAlt {...subProps} />;\n    case Boolean(props.context.par()):\n      return <FragmentPar {...subProps} />;\n    case Boolean(props.context.opt()):\n      return <FragmentOpt {...subProps} />;\n    case Boolean(props.context.section()):\n      return <FragmentSection {...subProps} />;\n    case Boolean(props.context.critical()):\n      return <FragmentCritical {...subProps} />;\n    case Boolean(props.context.tcf()):\n      return <FragmentTryCatchFinally {...subProps} />;\n    case Boolean(props.context.ref()):\n      return <FragmentRef {...subProps} />;\n    case Boolean(props.context.creation()):\n      return <Creation {...subProps} />;\n    case Boolean(props.context.message()):\n      return <Interaction {...subProps} />;\n    case Boolean(props.context.asyncMessage()):\n      return <InteractionAsync {...subProps} />;\n    case Boolean(props.context.divider()):\n      return <Divider {...subProps} />;\n    case Boolean(props.context.ret()):\n      return (\n        <Return {...subProps} className=\"text-left text-sm text-skin-message\" />\n      );\n  }\n};\n","import { getLineHead } from \"@/utils/StringUtil\";\n\ntype ReorderMessageInput = {\n  code: string;\n  sourceRange: [number, number];\n  targetRange: [number, number];\n  place: \"before\" | \"after\";\n};\n\nconst lineTail = (code: string, index: number) => {\n  const next = code.indexOf(\"\\n\", index);\n  return next === -1 ? code.length : next + 1;\n};\n\nconst getIndent = (line: string) => line.match(/^\\s*/)?.[0] ?? \"\";\n\nconst getBaseIndent = (text: string) => {\n  const lines = text.split(\"\\n\").filter((line) => line.trim().length > 0);\n  if (lines.length === 0) {\n    return \"\";\n  }\n  return getIndent(lines[0]);\n};\n\nconst shiftIndent = (text: string, indentDelta: number) =>\n  text\n    .split(\"\\n\")\n    .map((line) => {\n      if (line.length === 0) {\n        return line;\n      }\n      if (indentDelta > 0) {\n        return `${\" \".repeat(indentDelta)}${line}`;\n      }\n      if (indentDelta < 0) {\n        const trimCount = Math.min(getIndent(line).length, Math.abs(indentDelta));\n        return line.slice(trimCount);\n      }\n      return line;\n    })\n    .join(\"\\n\");\n\nexport const reorderMessageInDsl = ({\n  code,\n  sourceRange,\n  targetRange,\n  place,\n}: ReorderMessageInput) => {\n  const [sourceStart, sourceEnd] = sourceRange;\n  const [targetStart, targetEnd] = targetRange;\n  const sourceLineStart = getLineHead(code, sourceStart);\n  const sourceLineEnd = lineTail(code, sourceEnd);\n  const targetLineStart = getLineHead(code, targetStart);\n  const targetLineEnd = lineTail(code, targetEnd);\n\n  if (sourceLineStart === targetLineStart) {\n    return code;\n  }\n\n  const sourceText = code.slice(sourceLineStart, sourceLineEnd);\n  const targetText = code.slice(targetLineStart, targetLineEnd);\n  const withoutSource = code.slice(0, sourceLineStart) + code.slice(sourceLineEnd);\n  const sourceBeforeTarget = sourceLineStart < targetLineStart;\n  const targetLineStartInWithoutSource = sourceBeforeTarget\n    ? targetLineStart - sourceText.length\n    : targetLineStart;\n  const targetLineEndInWithoutSource = sourceBeforeTarget\n    ? targetLineEnd - sourceText.length\n    : targetLineEnd;\n  const insertionPoint = place === \"before\"\n    ? targetLineStartInWithoutSource\n    : targetLineEndInWithoutSource;\n  const sourceIndent = getBaseIndent(sourceText).length;\n  const targetIndent = getBaseIndent(targetText).length;\n  const movedBlock = shiftIndent(sourceText, targetIndent - sourceIndent);\n  const needsLeadingNewline =\n    insertionPoint > 0 &&\n    withoutSource[insertionPoint - 1] !== \"\\n\" &&\n    !movedBlock.startsWith(\"\\n\");\n  const needsTrailingNewline =\n    insertionPoint < withoutSource.length &&\n    withoutSource[insertionPoint] !== \"\\n\" &&\n    !movedBlock.endsWith(\"\\n\");\n  const movedText = `${needsLeadingNewline ? \"\\n\" : \"\"}${movedBlock}${\n    needsTrailingNewline ? \"\\n\" : \"\"\n  }`;\n\n  return (\n    withoutSource.slice(0, insertionPoint) +\n    movedText +\n    withoutSource.slice(insertionPoint)\n  );\n};\n","import { getLineHead } from \"@/utils/StringUtil\";\n\ntype InsertDividerInput = {\n  code: string;\n  label?: string;\n  blockContext: any;\n  insertIndex: number;\n};\n\nconst lineTail = (code: string, index: number) => {\n  const next = code.indexOf(\"\\n\", index);\n  return next === -1 ? code.length : next + 1;\n};\n\nexport const insertDividerInDsl = ({\n  code,\n  label = \"Divider\",\n  blockContext,\n  insertIndex,\n}: InsertDividerInput) => {\n  const statements: any[] = blockContext?.stat() || [];\n  const line = `==${label}==`;\n\n  let insertionOffset: number;\n\n  if (statements.length === 0) {\n    const prefix =\n      code.endsWith(\"\\n\") || code.length === 0 ? code : `${code}\\n`;\n    const start = prefix.length + 2; // after ==\n    const end = start + label.length - 1;\n    return {\n      code: `${prefix}${line}`,\n      labelPosition: [start, end] as [number, number],\n    };\n  }\n\n  if (insertIndex >= statements.length) {\n    const lastStat = statements[statements.length - 1];\n    insertionOffset = lineTail(code, lastStat.stop.stop);\n  } else {\n    const targetStat = statements[insertIndex];\n    insertionOffset = getLineHead(code, targetStat.start.start);\n  }\n\n  const needsLeadingNewline =\n    insertionOffset > 0 && code[insertionOffset - 1] !== \"\\n\";\n  const needsTrailingNewline =\n    insertionOffset < code.length && code[insertionOffset] !== \"\\n\";\n\n  const insertedText = `${needsLeadingNewline ? \"\\n\" : \"\"}${line}${needsTrailingNewline ? \"\\n\" : \"\"}`;\n  const newCode =\n    code.slice(0, insertionOffset) + insertedText + code.slice(insertionOffset);\n\n  const actualLineStart = insertionOffset + (needsLeadingNewline ? 1 : 0);\n  const labelStart = actualLineStart + 2; // after ==\n  const labelEnd = labelStart + label.length - 1;\n\n  return {\n    code: newCode,\n    labelPosition: [labelStart, labelEnd] as [number, number],\n  };\n};\n","import { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport {\n  codeAtom,\n  coordinatesAtom,\n  createMessageDragAtom,\n  diagramElementAtom,\n  enableDividerInsertionAtom,\n  enableMessageInsertionAtom,\n  modeAtom,\n  onContentChangeAtom,\n  pendingEditableRangeAtom,\n  RenderMode,\n  rootContextAtom,\n  selectedAtom,\n  selectedMessageAtom,\n} from \"@/store/Store\";\nimport { centerOf } from \"./Block/Statement/utils\";\nimport { insertDividerInDsl } from \"@/utils/insertDividerInDsl\";\nimport { useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nconst GAP_HEIGHT_EMPTY = 48;\nconst HANDLE_SIZE = 16;\nconst GAP_OFFSET_UP = 5;\n\nexport const GapHandleZone = (props: {\n  insertIndex: number;\n  blockContext: any;\n  origin: string;\n  isEmpty?: boolean;\n}) => {\n  const mode = useAtomValue(modeAtom);\n  const messageInsertionEnabled = useAtomValue(enableMessageInsertionAtom);\n  const dividerInsertionEnabled = useAtomValue(enableDividerInsertionAtom);\n  const rootContext = useAtomValue(rootContextAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const dragState = useAtomValue(createMessageDragAtom);\n  const setCreateDrag = useSetAtom(createMessageDragAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n  const setSelectedParticipants = useSetAtom(selectedAtom);\n\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const setPendingEditableRange = useSetAtom(pendingEditableRangeAtom);\n\n  const [hovered, setHovered] = useState(false);\n  const hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  useEffect(() => {\n    return () => {\n      if (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n    };\n  }, []);\n\n  const handlePointerEnter = useCallback(() => {\n    if (hideTimerRef.current) {\n      clearTimeout(hideTimerRef.current);\n      hideTimerRef.current = null;\n    }\n    if (!dragState) setHovered(true);\n  }, [dragState]);\n\n  const handlePointerLeave = useCallback(() => {\n    if (!dragState) {\n      hideTimerRef.current = setTimeout(() => {\n        setHovered(false);\n        hideTimerRef.current = null;\n      }, 80);\n    }\n  }, [dragState]);\n\n  const participants = useMemo(\n    () =>\n      OrderedParticipants(rootContext).filter((p) => p.name !== _STARTER_),\n    [rootContext],\n  );\n\n  const paddingLeft = centerOf(coordinates, props.origin) + 1;\n\n  const insertDivider = useCallback(\n    (event: React.MouseEvent) => {\n      event.preventDefault();\n      event.stopPropagation();\n      const result = insertDividerInDsl({\n        code,\n        blockContext: props.blockContext,\n        insertIndex: props.insertIndex,\n      });\n      setCode(result.code);\n      onContentChange(result.code);\n      setPendingEditableRange({\n        start: result.labelPosition[0],\n        end: result.labelPosition[1],\n        token: Date.now(),\n      });\n    },\n    [code, onContentChange, props.blockContext, props.insertIndex, setCode, setPendingEditableRange],\n  );\n\n  if (\n    mode !== RenderMode.Dynamic ||\n    participants.length < 2 ||\n    (!messageInsertionEnabled && !dividerInsertionEnabled)\n  ) {\n    return null;\n  }\n\n  const startDrag = (\n    participantName: string,\n    event: React.PointerEvent,\n  ) => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (!diagramElement) return;\n\n    const diagramRect = diagramElement.getBoundingClientRect();\n    const sourceX = centerOf(coordinates, participantName);\n    const buttonEl = event.currentTarget as HTMLElement;\n    const buttonRect = buttonEl.getBoundingClientRect();\n    const sourceY = buttonRect.top - diagramRect.top + buttonRect.height / 2;\n\n    setSelectedMessage(null);\n    setSelectedParticipants([participantName]);\n    setCreateDrag({\n      source: participantName,\n      sourceX,\n      sourceY,\n      pointerX: sourceX,\n      pointerY: sourceY,\n      hoverTarget: null,\n      insertIndex: props.insertIndex,\n      blockContext: props.blockContext,\n    });\n  };\n\n  const showHandles = hovered && !dragState;\n\n  function renderHandles() {\n    return (\n      <>\n        <div className=\"absolute left-0 right-0 top-1/2 -translate-y-px h-px border-t border-dashed border-amber-300/60\" />\n        {messageInsertionEnabled &&\n          participants.map((p) => (\n            <button\n              key={p.name}\n              type=\"button\"\n              className=\"absolute top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full border border-amber-400 bg-white text-amber-500 text-xs leading-none font-bold flex items-center justify-center cursor-grab hover:bg-amber-50 hover:border-amber-500 hover:shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-300\"\n              style={{\n                width: HANDLE_SIZE,\n                height: HANDLE_SIZE,\n                left: `${centerOf(coordinates, p.name)}px`,\n                zIndex: 50,\n                pointerEvents: \"auto\",\n              }}\n              data-testid={`message-create-handle-${props.insertIndex}-${p.name}`}\n              title={`Drag to create a message from ${p.name}`}\n              aria-label={`Drag to create a message from ${p.name}`}\n              onPointerDown={(event) => startDrag(p.name, event)}\n            >\n              +\n            </button>\n          ))}\n        {dividerInsertionEnabled && (\n          <button\n            type=\"button\"\n            className=\"absolute top-1/2 right-0 -translate-y-1/2 rounded border border-amber-400 bg-white text-amber-500 text-[9px] leading-none font-bold px-1 flex items-center justify-center hover:bg-amber-50 hover:border-amber-500 hover:shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-300\"\n            style={{\n              height: HANDLE_SIZE,\n              zIndex: 50,\n              pointerEvents: \"auto\",\n            }}\n            data-testid={`divider-insert-${props.insertIndex}`}\n            title=\"Insert divider\"\n            aria-label=\"Insert divider\"\n            onClick={insertDivider}\n          >\n            ══\n          </button>\n        )}\n      </>\n    );\n  }\n\n  if (props.isEmpty) {\n    return (\n      <div\n        className=\"relative flex items-center\"\n        style={{\n          height: GAP_HEIGHT_EMPTY,\n          marginLeft: `-${paddingLeft}px`,\n          width: `calc(100% + ${paddingLeft}px)`,\n        }}\n        data-testid={`message-gap-${props.insertIndex}`}\n        onPointerEnter={handlePointerEnter}\n        onPointerLeave={handlePointerLeave}\n      >\n        {showHandles && renderHandles()}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className=\"relative\"\n      style={{\n        height: 0,\n        marginLeft: `-${paddingLeft}px`,\n        width: `calc(100% + ${paddingLeft}px)`,\n        pointerEvents: \"none\",\n      }}\n      data-testid={`message-gap-${props.insertIndex}`}\n    >\n      {/* Hover zone tall enough to fully contain the handle buttons (no overflow),\n         so pointerLeave never fires when moving between the zone and a button. */}\n      <div\n        data-testid={`message-gap-hover-${props.insertIndex}`}\n        className=\"absolute left-0 right-0\"\n        style={{\n          top: -(HANDLE_SIZE / 2) - GAP_OFFSET_UP,\n          height: HANDLE_SIZE,\n          pointerEvents: \"auto\",\n        }}\n        onPointerEnter={handlePointerEnter}\n        onPointerLeave={handlePointerLeave}\n      >\n        {showHandles && renderHandles()}\n      </div>\n    </div>\n  );\n};\n","import { increaseNumber } from \"@/utils/Numbering\";\nimport { Statement } from \"./Statement/Statement\";\nimport { cn } from \"@/utils\";\nimport { createStatementKey } from \"@/positioning/vertical/StatementIdentifier\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport {\n  codeAtom,\n  messageReorderDragAtom,\n  messageReorderDropAtom,\n  messageReorderPendingAtom,\n  onContentChangeAtom,\n} from \"@/store/Store\";\nimport { reorderMessageInDsl } from \"@/utils/messageReorderTransform\";\nimport { Fragment, useEffect, useRef } from \"react\";\nimport { GapHandleZone } from \"../GapHandleZone\";\n\nconst DRAG_THRESHOLD = 4;\n\nexport const Block = (props: {\n  origin?: string;\n  context?: any;\n  number?: string;\n  incremental?: boolean;\n  collapsed?: boolean;\n  style?: React.CSSProperties;\n  className?: string;\n  enableGapHandles?: boolean;\n  isRoot?: boolean;\n}) => {\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const statements: any[] = props.context?.stat() || [];\n  const enableGapHandles = props.enableGapHandles ?? false;\n  const [dragKey, setDragKey] = useAtom(messageReorderDragAtom);\n  const dragKeyRef = useRef<string | null>(null);\n  const [pendingDrag, setPendingDrag] = useAtom(messageReorderPendingAtom);\n  const [dropState, setDropState] = useAtom(messageReorderDropAtom);\n\n  useEffect(() => {\n    dragKeyRef.current = dragKey;\n  }, [dragKey]);\n\n  useEffect(() => {\n    if (!pendingDrag && !dragKey) {\n      return;\n    }\n\n    const previousCursor = document.body.style.cursor;\n    document.body.style.cursor = \"grabbing\";\n\n    return () => {\n      document.body.style.cursor = previousCursor;\n    };\n  }, [dragKey, pendingDrag]);\n\n  useEffect(() => {\n    if (!props.isRoot) {\n      return;\n    }\n    if (!pendingDrag || dragKey) {\n      return;\n    }\n\n    const onPointerMove = (event: PointerEvent) => {\n      const deltaX = Math.abs(event.clientX - pendingDrag.startX);\n      const deltaY = Math.abs(event.clientY - pendingDrag.startY);\n      if (Math.max(deltaX, deltaY) < DRAG_THRESHOLD) {\n        return;\n      }\n      setDragKey(pendingDrag.key);\n      setPendingDrag(null);\n    };\n\n    const onPointerUp = () => {\n      setPendingDrag(null);\n    };\n\n    window.addEventListener(\"pointermove\", onPointerMove);\n    window.addEventListener(\"pointerup\", onPointerUp, { once: true });\n    return () => {\n      window.removeEventListener(\"pointermove\", onPointerMove);\n      window.removeEventListener(\"pointerup\", onPointerUp);\n    };\n  }, [dragKey, pendingDrag, props.isRoot, setDragKey, setPendingDrag]);\n\n  useEffect(() => {\n    if (!props.isRoot) {\n      return;\n    }\n    if (!dragKey) {\n      return;\n    }\n    const onPointerUp = () => {\n      const sourceKey = dragKeyRef.current;\n      if (!sourceKey || !dropState || dropState.key === sourceKey) {\n        setDragKey(null);\n        setDropState(null);\n        return;\n      }\n      const [sourceStart, sourceEnd] = sourceKey.split(\"-\").map(Number);\n      const [targetStart, targetEnd] = dropState.key.split(\"-\").map(Number);\n      const nextCode = reorderMessageInDsl({\n        code,\n        sourceRange: [sourceStart, sourceEnd],\n        targetRange: [targetStart, targetEnd],\n        place: dropState.place,\n      });\n      setCode(nextCode);\n      onContentChange(nextCode);\n      setDragKey(null);\n      setDropState(null);\n    };\n\n    window.addEventListener(\"pointerup\", onPointerUp, { once: true });\n    return () => {\n      window.removeEventListener(\"pointerup\", onPointerUp);\n    };\n  }, [code, dragKey, dropState, onContentChange, props.isRoot, setCode, setDragKey, setDropState]);\n\n  const getNumber = (index: number) => {\n    if (props.number) {\n      return props.incremental\n        ? increaseNumber(props.number, index)\n        : `${props.number}.${index + 1}`;\n    }\n    return String(index + 1);\n  };\n\n  return (\n    <div\n      className={cn(\"block\", props.className)}\n      style={props.style}\n      data-origin={props.origin}\n    >\n      {enableGapHandles && statements.length === 0 && (\n        <GapHandleZone\n          insertIndex={0}\n          blockContext={props.context}\n          origin={props.origin || \"\"}\n          isEmpty\n        />\n      )}\n      {statements.map((stat, index) => {\n        const statementKey = createStatementKey(stat);\n        const reorderState =\n          dragKey === statementKey\n            ? \"dragging\"\n            : pendingDrag?.key === statementKey\n            ? \"pending\"\n            : \"idle\";\n        return (\n          <Fragment key={index}>\n            {enableGapHandles && (\n              <GapHandleZone\n                insertIndex={index}\n                blockContext={props.context}\n                origin={props.origin || \"\"}\n              />\n            )}\n            <div\n              className={cn(\"statement-container group/stmt my-4 flex flex-col relative\", {\n                \"select-none\": reorderState !== \"idle\",\n                \"cursor-grabbing\": reorderState === \"dragging\",\n              })}\n              data-origin={props.origin}\n              data-statement-key={statementKey}\n              data-reorder-state={reorderState}\n              onPointerDown={(event) => {\n                const target = event.target as HTMLElement | null;\n                if (\n                  !target?.closest(\".message\") ||\n                  target.closest(\"[contenteditable='true']\")\n                ) {\n                  return;\n                }\n                event.stopPropagation();\n                setPendingDrag({\n                  key: statementKey,\n                  startX: event.clientX,\n                  startY: event.clientY,\n                });\n                setDropState(null);\n              }}\n              onPointerMove={(event) => {\n                if (!dragKey) {\n                  return;\n                }\n                if (statementKey === dragKey) {\n                  return;\n                }\n                event.stopPropagation();\n                const rect = (event.currentTarget as HTMLDivElement).getBoundingClientRect();\n                setDropState({\n                  key: statementKey,\n                  place: event.clientY < rect.top + rect.height / 2 ? \"before\" : \"after\",\n                });\n              }}\n            >\n              {dropState?.key === statementKey && (\n                <div\n                  className=\"absolute left-0 right-0 h-0.5 bg-sky-500 z-20\"\n                  style={{ [dropState.place === \"before\" ? \"top\" : \"bottom\"]: -8 }}\n                />\n              )}\n              <Statement\n                origin={props.origin || \"\"}\n                context={stat}\n                collapsed={Boolean(props.collapsed)}\n                number={getNumber(index)}\n              />\n            </div>\n          </Fragment>\n        );\n      })}\n      {enableGapHandles && statements.length > 0 && (\n        <GapHandleZone\n          insertIndex={statements.length}\n          blockContext={props.context}\n          origin={props.origin || \"\"}\n        />\n      )}\n    </div>\n  );\n};\n","export type MessageArrowType = \"sync\" | \"async\" | \"return\" | \"creation\";\n\ntype TransformMessageTypeInput = {\n  line: string;\n  currentType: MessageArrowType;\n  targetType: MessageArrowType;\n  source?: string;\n  target?: string;\n  signature?: string;\n};\n\nconst STARTER = \"_STARTER_\";\n\nconst splitLine = (line: string) => {\n  const indent = line.match(/^\\s*/)?.[0] || \"\";\n  const content = line.slice(indent.length);\n  const semicolon = content.endsWith(\";\") ? \";\" : \"\";\n  const body = semicolon ? content.slice(0, -1) : content;\n  return { indent, body, semicolon };\n};\n\nconst hasInlineBlock = (line: string) => /\\{\\s*$/.test(line.trimEnd());\n\nconst colonMessageParts = (line: string) => {\n  const { indent, body, semicolon } = splitLine(line);\n  const match = body.match(/^(.*?)\\s*(-->|->)\\s*(.*?)\\s*:(.*)$/);\n  if (!match) {\n    return null;\n  }\n  return {\n    indent,\n    from: match[1].trim(),\n    arrow: match[2],\n    to: match[3].trim(),\n    content: match[4],\n    semicolon,\n  };\n};\n\nconst creationLineParts = (line: string) => {\n  const { indent, body, semicolon } = splitLine(line);\n  const match = body.match(/^new\\s+(\\w+)\\s*\\(([^)]*)\\)$/);\n  if (!match) return null;\n  return { indent, target: match[1], args: match[2].trim(), semicolon };\n};\n\nconst isSyncableContent = (content: string): boolean => {\n  const trimmed = content.trim();\n  if (!trimmed) return false;\n  const methodName = trimmed.replace(/\\(.*\\)$/, \"\");\n  return methodName.length > 0 && !/\\s/.test(methodName);\n};\n\nexport const canTransformMessageType = ({\n  line,\n  currentType,\n  targetType,\n  source,\n  target,\n  signature,\n}: TransformMessageTypeInput): boolean => {\n  if (currentType === targetType) {\n    return false;\n  }\n  if (hasInlineBlock(line)) {\n    return false;\n  }\n  if (!target) {\n    return false;\n  }\n  if (currentType === \"sync\") {\n    if (!signature) {\n      return false;\n    }\n    if (targetType === \"async\" || targetType === \"creation\") {\n      return true;\n    }\n    return Boolean(source && source !== STARTER);\n  }\n  if (currentType === \"creation\" && targetType === \"sync\") {\n    const parts = creationLineParts(line);\n    if (!parts || !source || source === STARTER) return false;\n    // args must be a valid method name (identifier, no spaces)\n    return parts.args.length > 0 && /^\\w+$/.test(parts.args);\n  }\n  if (targetType === \"sync\") {\n    const parts = colonMessageParts(line);\n    if (!parts) return false;\n    return isSyncableContent(parts.content);\n  }\n  return Boolean(\n    source &&\n      source !== STARTER &&\n      target &&\n      colonMessageParts(line),\n  );\n};\n\nexport const transformMessageType = ({\n  line,\n  currentType,\n  targetType,\n  source,\n  target,\n  signature,\n}: TransformMessageTypeInput): string | null => {\n  if (\n    !canTransformMessageType({\n      line,\n      currentType,\n      targetType,\n      source,\n      target,\n      signature,\n    })\n  ) {\n    return null;\n  }\n\n  if (currentType === \"sync\") {\n    const { indent, semicolon } = splitLine(line);\n    if (targetType === \"async\") {\n      const prefix = source && source !== STARTER ? `${source}->${target}` : target;\n      return `${indent}${prefix}: ${signature}${semicolon}`;\n    }\n    if (targetType === \"creation\") {\n      return `${indent}new ${target}(${signature})${semicolon}`;\n    }\n    return `${indent}${source}-->${target}: ${signature}${semicolon}`;\n  }\n\n  if (currentType === \"creation\" && targetType === \"sync\") {\n    const parts = creationLineParts(line);\n    if (!parts || !source) return null;\n    return `${parts.indent}${source}->${parts.target}.${parts.args}()${parts.semicolon}`;\n  }\n\n  const colonParts = colonMessageParts(line);\n  if (!colonParts) {\n    return null;\n  }\n\n  if (targetType === \"sync\") {\n    const content = colonParts.content.trim();\n    const methodCall = content.endsWith(\")\") ? content : `${content}()`;\n    const prefix = colonParts.from\n      ? `${colonParts.from}->${colonParts.to}`\n      : colonParts.to;\n    return `${colonParts.indent}${prefix}.${methodCall}${colonParts.semicolon}`;\n  }\n\n  const arrow = targetType === \"return\" ? \"-->\" : \"->\";\n  return `${colonParts.indent}${colonParts.from}${arrow}${colonParts.to}:${colonParts.content}${colonParts.semicolon}`;\n};\n","export type WrapFragmentType = \"alt\" | \"loop\" | \"opt\" | \"par\";\n\ntype WrapMessageInput = {\n  code: string;\n  line: string;\n  lineHead: number;\n  type: WrapFragmentType;\n};\n\nconst wrapHeader = (type: WrapFragmentType) => {\n  switch (type) {\n    case \"alt\":\n      return \"if(condition) {\";\n    case \"loop\":\n      return \"loop(condition) {\";\n    case \"opt\":\n      return \"opt(condition) {\";\n    case \"par\":\n      return \"par(condition) {\";\n  }\n};\n\nconst conditionOffset = (type: WrapFragmentType) => {\n  switch (type) {\n    case \"alt\":\n      return \"if(\".length;\n    case \"loop\":\n    case \"opt\":\n    case \"par\":\n      return `${type}(`.length;\n  }\n};\n\nexport const wrapMessageInFragment = ({\n  code,\n  line,\n  lineHead,\n  type,\n}: WrapMessageInput) => {\n  const indent = line.match(/^\\s*/)?.[0] ?? \"\";\n  const trimmed = line.trimStart();\n  const header = wrapHeader(type);\n  const innerIndent = `${indent}  `;\n  const replacement = `${indent}${header}\\n${innerIndent}${trimmed}\\n${indent}}`;\n  const lineTail = lineHead + line.length;\n  const nextCode = code.slice(0, lineHead) + replacement + code.slice(lineTail);\n  const conditionStart = lineHead + indent.length + conditionOffset(type);\n  const conditionEnd = conditionStart + \"condition\".length - 1;\n  return {\n    code: nextCode,\n    conditionPosition: [conditionStart, conditionEnd] as [number, number],\n  };\n};\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport { floor } from '@floating-ui/utils';\nimport { tabbable } from 'tabbable';\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n  const uaData = navigator.userAgentData;\n  if (uaData != null && uaData.platform) {\n    return uaData.platform;\n  }\n  return navigator.platform;\n}\nfunction getUserAgent() {\n  const uaData = navigator.userAgentData;\n  if (uaData && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(_ref => {\n      let {\n        brand,\n        version\n      } = _ref;\n      return brand + \"/\" + version;\n    }).join(' ');\n  }\n  return navigator.userAgent;\n}\nfunction isSafari() {\n  // Chrome DevTools does not complain about navigator.vendor\n  return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n  const re = /android/i;\n  return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n  return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n  return getUserAgent().includes('jsdom/');\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction activeElement(doc) {\n  let activeElement = doc.activeElement;\n  while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n    var _activeElement;\n    activeElement = activeElement.shadowRoot.activeElement;\n  }\n  return activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nfunction isEventTargetWithin(event, node) {\n  if (node == null) {\n    return false;\n  }\n  if ('composedPath' in event) {\n    return event.composedPath().includes(node);\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n  const e = event;\n  return e.target != null && node.contains(e.target);\n}\nfunction isRootElement(element) {\n  return element.matches('html,body');\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isTypeableElement(element) {\n  return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n  if (!element) return false;\n  return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nfunction matchesFocusVisible(element) {\n  // We don't want to block focus from working with `visibleOnly`\n  // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n  if (!element || isJSDOM()) return true;\n  try {\n    return element.matches(':focus-visible');\n  } catch (_e) {\n    return true;\n  }\n}\nfunction getFloatingFocusElement(floatingElement) {\n  if (!floatingElement) {\n    return null;\n  }\n  // Try to find the element that has `{...getFloatingProps()}` spread on it.\n  // This indicates the floating element is acting as a positioning wrapper, and\n  // so focus should be managed on the child element with the event handlers and\n  // aria props.\n  return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n  if (onlyOpenChildren === void 0) {\n    onlyOpenChildren = true;\n  }\n  const directChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n  });\n  return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nfunction getDeepestNode(nodes, id) {\n  let deepestNodeId;\n  let maxDepth = -1;\n  function findDeepest(nodeId, depth) {\n    if (depth > maxDepth) {\n      deepestNodeId = nodeId;\n      maxDepth = depth;\n    }\n    const children = getNodeChildren(nodes, nodeId);\n    children.forEach(child => {\n      findDeepest(child.id, depth + 1);\n    });\n  }\n  findDeepest(id, 0);\n  return nodes.find(node => node.id === deepestNodeId);\n}\nfunction getNodeAncestors(nodes, id) {\n  var _nodes$find;\n  let allAncestors = [];\n  let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n  while (currentParentId) {\n    const currentNode = nodes.find(node => node.id === currentParentId);\n    currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n    if (currentNode) {\n      allAncestors = allAncestors.concat(currentNode);\n    }\n  }\n  return allAncestors;\n}\n\nfunction stopEvent(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction isReactEvent(event) {\n  return 'nativeEvent' in event;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n  // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n  // Try to find a workaround for this. `react-aria` source still has the check.\n  if (event.mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n  if (isAndroid() && event.pointerType) {\n    return event.type === 'click' && event.buttons === 1;\n  }\n  return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n  if (isJSDOM()) return false;\n  return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n  // iOS VoiceOver returns 0.333• for width/height.\n  event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n  // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n  // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n  const values = ['mouse', 'pen'];\n  if (!strict) {\n    values.push('', undefined);\n  }\n  return values.includes(pointerType);\n}\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n  const ref = React.useRef(() => {\n    if (process.env.NODE_ENV !== \"production\") {\n      throw new Error('Cannot call an event handler while rendering.');\n    }\n  });\n  useSafeInsertionEffect(() => {\n    ref.current = callback;\n  });\n  return React.useCallback(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return ref.current == null ? void 0 : ref.current(...args);\n  }, []);\n}\n\nfunction isDifferentGridRow(index, cols, prevRow) {\n  return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n  return index < 0 || index >= listRef.current.length;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n  return findNonDisabledListIndex(listRef, {\n    disabledIndices\n  });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n  return findNonDisabledListIndex(listRef, {\n    decrement: true,\n    startingIndex: listRef.current.length,\n    disabledIndices\n  });\n}\nfunction findNonDisabledListIndex(listRef, _temp) {\n  let {\n    startingIndex = -1,\n    decrement = false,\n    disabledIndices,\n    amount = 1\n  } = _temp === void 0 ? {} : _temp;\n  let index = startingIndex;\n  do {\n    index += decrement ? -amount : amount;\n  } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n  return index;\n}\nfunction getGridNavigatedIndex(listRef, _ref) {\n  let {\n    event,\n    orientation,\n    loop,\n    rtl,\n    cols,\n    disabledIndices,\n    minIndex,\n    maxIndex,\n    prevIndex,\n    stopEvent: stop = false\n  } = _ref;\n  let nextIndex = prevIndex;\n  if (event.key === ARROW_UP) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = maxIndex;\n    } else {\n      nextIndex = findNonDisabledListIndex(listRef, {\n        startingIndex: nextIndex,\n        amount: cols,\n        decrement: true,\n        disabledIndices\n      });\n      if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n        const col = prevIndex % cols;\n        const maxCol = maxIndex % cols;\n        const offset = maxIndex - (maxCol - col);\n        if (maxCol === col) {\n          nextIndex = maxIndex;\n        } else {\n          nextIndex = maxCol > col ? offset : offset - cols;\n        }\n      }\n    }\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n  if (event.key === ARROW_DOWN) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = minIndex;\n    } else {\n      nextIndex = findNonDisabledListIndex(listRef, {\n        startingIndex: prevIndex,\n        amount: cols,\n        disabledIndices\n      });\n      if (loop && prevIndex + cols > maxIndex) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex % cols - cols,\n          amount: cols,\n          disabledIndices\n        });\n      }\n    }\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n\n  // Remains on the same row/column.\n  if (orientation === 'both') {\n    const prevRow = floor(prevIndex / cols);\n    if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== cols - 1) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex,\n          disabledIndices\n        });\n        if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledListIndex(listRef, {\n            startingIndex: prevIndex - prevIndex % cols - 1,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      }\n      if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== 0) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex,\n          decrement: true,\n          disabledIndices\n        });\n        if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledListIndex(listRef, {\n            startingIndex: prevIndex + (cols - prevIndex % cols),\n            decrement: true,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex + (cols - prevIndex % cols),\n          decrement: true,\n          disabledIndices\n        });\n      }\n      if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    const lastRow = floor(maxIndex / cols) === prevRow;\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      if (loop && lastRow) {\n        nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      } else {\n        nextIndex = prevIndex;\n      }\n    }\n  }\n  return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction createGridCellMap(sizes, cols, dense) {\n  const cellMap = [];\n  let startIndex = 0;\n  sizes.forEach((_ref2, index) => {\n    let {\n      width,\n      height\n    } = _ref2;\n    if (width > cols) {\n      if (process.env.NODE_ENV !== \"production\") {\n        throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n      }\n    }\n    let itemPlaced = false;\n    if (dense) {\n      startIndex = 0;\n    }\n    while (!itemPlaced) {\n      const targetCells = [];\n      for (let i = 0; i < width; i++) {\n        for (let j = 0; j < height; j++) {\n          targetCells.push(startIndex + i + j * cols);\n        }\n      }\n      if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n        targetCells.forEach(cell => {\n          cellMap[cell] = index;\n        });\n        itemPlaced = true;\n      } else {\n        startIndex++;\n      }\n    }\n  });\n\n  // convert into a non-sparse array\n  return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n  if (index === -1) return -1;\n  const firstCellIndex = cellMap.indexOf(index);\n  const sizeItem = sizes[index];\n  switch (corner) {\n    case 'tl':\n      return firstCellIndex;\n    case 'tr':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + sizeItem.width - 1;\n    case 'bl':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + (sizeItem.height - 1) * cols;\n    case 'br':\n      return cellMap.lastIndexOf(index);\n  }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getGridCellIndices(indices, cellMap) {\n  return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n  if (typeof disabledIndices === 'function') {\n    return disabledIndices(index);\n  } else if (disabledIndices) {\n    return disabledIndices.includes(index);\n  }\n  const element = listRef.current[index];\n  return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nconst getTabbableOptions = () => ({\n  getShadowRoot: true,\n  displayCheck:\n  // JSDOM does not support the `tabbable` library. To solve this we can\n  // check if `ResizeObserver` is a real function (not polyfilled), which\n  // determines if the current environment is JSDOM-like.\n  typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, dir) {\n  const list = tabbable(container, getTabbableOptions());\n  const len = list.length;\n  if (len === 0) return;\n  const active = activeElement(getDocument(container));\n  const index = list.indexOf(active);\n  const nextIndex = index === -1 ? dir === 1 ? 0 : len - 1 : index + dir;\n  return list[nextIndex];\n}\nfunction getNextTabbable(referenceElement) {\n  return getTabbableIn(getDocument(referenceElement).body, 1) || referenceElement;\n}\nfunction getPreviousTabbable(referenceElement) {\n  return getTabbableIn(getDocument(referenceElement).body, -1) || referenceElement;\n}\nfunction isOutsideEvent(event, container) {\n  const containerElement = container || event.currentTarget;\n  const relatedTarget = event.relatedTarget;\n  return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n  const tabbableElements = tabbable(container, getTabbableOptions());\n  tabbableElements.forEach(element => {\n    element.dataset.tabindex = element.getAttribute('tabindex') || '';\n    element.setAttribute('tabindex', '-1');\n  });\n}\nfunction enableFocusInside(container) {\n  const elements = container.querySelectorAll('[data-tabindex]');\n  elements.forEach(element => {\n    const tabindex = element.dataset.tabindex;\n    delete element.dataset.tabindex;\n    if (tabindex) {\n      element.setAttribute('tabindex', tabindex);\n    } else {\n      element.removeAttribute('tabindex');\n    }\n  });\n}\n\nexport { activeElement, contains, createGridCellMap, disableFocusInside, enableFocusInside, findNonDisabledListIndex, getDeepestNode, getDocument, getFloatingFocusElement, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getNextTabbable, getNodeAncestors, getNodeChildren, getPlatform, getPreviousTabbable, getTabbableOptions, getTarget, getUserAgent, isAndroid, isDifferentGridRow, isEventTargetWithin, isIndexOutOfListBounds, isJSDOM, isListIndexDisabled, isMac, isMouseLikePointerType, isOutsideEvent, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent, useEffectEvent, useLatestRef, index as useModernLayoutEffect };\n","import * as React from 'react';\nimport { useModernLayoutEffect, useEffectEvent, getMinListIndex, getMaxListIndex, createGridCellMap, isListIndexDisabled, getGridNavigatedIndex, getGridCellIndexOfCorner, getGridCellIndices, findNonDisabledListIndex, isIndexOutOfListBounds, useLatestRef, getDocument as getDocument$1, isMouseLikePointerType, contains as contains$1, isSafari, enableFocusInside, isOutsideEvent, getPreviousTabbable, getNextTabbable, disableFocusInside, isTypeableCombobox, getFloatingFocusElement, getTabbableOptions, getNodeAncestors, activeElement, getNodeChildren as getNodeChildren$1, stopEvent, getTarget as getTarget$1, isVirtualClick, isVirtualPointerEvent, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, matchesFocusVisible, isMac, getDeepestNode, getUserAgent } from '@floating-ui/react/utils';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { getComputedStyle, isElement, isShadowRoot, getNodeName, isNode, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable, focusable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { evaluate, max, round, min } from '@floating-ui/utils';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n  const cleanupRef = React.useRef(undefined);\n  const refEffect = React.useCallback(instance => {\n    const cleanups = refs.map(ref => {\n      if (ref == null) {\n        return;\n      }\n      if (typeof ref === 'function') {\n        const refCallback = ref;\n        const refCleanup = refCallback(instance);\n        return typeof refCleanup === 'function' ? refCleanup : () => {\n          refCallback(null);\n        };\n      }\n      ref.current = instance;\n      return () => {\n        ref.current = null;\n      };\n    });\n    return () => {\n      cleanups.forEach(refCleanup => refCleanup == null ? void 0 : refCleanup());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (value != null) {\n        cleanupRef.current = refEffect(value);\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\nfunction sortByDocumentPosition(a, b) {\n  const position = a.compareDocumentPosition(b);\n  if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    return -1;\n  }\n  if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n    return 1;\n  }\n  return 0;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n  register: () => {},\n  unregister: () => {},\n  map: /*#__PURE__*/new Map(),\n  elementsRef: {\n    current: []\n  }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n  const {\n    children,\n    elementsRef,\n    labelsRef\n  } = props;\n  const [nodes, setNodes] = React.useState(() => new Set());\n  const register = React.useCallback(node => {\n    setNodes(prevSet => new Set(prevSet).add(node));\n  }, []);\n  const unregister = React.useCallback(node => {\n    setNodes(prevSet => {\n      const set = new Set(prevSet);\n      set.delete(node);\n      return set;\n    });\n  }, []);\n  const map = React.useMemo(() => {\n    const newMap = new Map();\n    const sortedNodes = Array.from(nodes.keys()).sort(sortByDocumentPosition);\n    sortedNodes.forEach((node, index) => {\n      newMap.set(node, index);\n    });\n    return newMap;\n  }, [nodes]);\n  return /*#__PURE__*/jsx(FloatingListContext.Provider, {\n    value: React.useMemo(() => ({\n      register,\n      unregister,\n      map,\n      elementsRef,\n      labelsRef\n    }), [register, unregister, map, elementsRef, labelsRef]),\n    children: children\n  });\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    label\n  } = props;\n  const {\n    register,\n    unregister,\n    map,\n    elementsRef,\n    labelsRef\n  } = React.useContext(FloatingListContext);\n  const [index, setIndex] = React.useState(null);\n  const componentRef = React.useRef(null);\n  const ref = React.useCallback(node => {\n    componentRef.current = node;\n    if (index !== null) {\n      elementsRef.current[index] = node;\n      if (labelsRef) {\n        var _node$textContent;\n        const isLabelDefined = label !== undefined;\n        labelsRef.current[index] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n      }\n    }\n  }, [index, elementsRef, labelsRef, label]);\n  useModernLayoutEffect(() => {\n    const node = componentRef.current;\n    if (node) {\n      register(node);\n      return () => {\n        unregister(node);\n      };\n    }\n  }, [register, unregister]);\n  useModernLayoutEffect(() => {\n    const index = componentRef.current ? map.get(componentRef.current) : null;\n    if (index != null) {\n      setIndex(index);\n    }\n  }, [map]);\n  return React.useMemo(() => ({\n    ref,\n    index: index == null ? -1 : index\n  }), [index, ref]);\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction renderJsx(render, computedProps) {\n  if (typeof render === 'function') {\n    return render(computedProps);\n  }\n  if (render) {\n    return /*#__PURE__*/React.cloneElement(render, computedProps);\n  }\n  return /*#__PURE__*/jsx(\"div\", {\n    ...computedProps\n  });\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n  activeIndex: 0,\n  onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n  const {\n    render,\n    orientation = 'both',\n    loop = true,\n    rtl = false,\n    cols = 1,\n    disabledIndices,\n    activeIndex: externalActiveIndex,\n    onNavigate: externalSetActiveIndex,\n    itemSizes,\n    dense = false,\n    ...domProps\n  } = props;\n  const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n  const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n  const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n  const elementsRef = React.useRef([]);\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const contextValue = React.useMemo(() => ({\n    activeIndex,\n    onNavigate\n  }), [activeIndex, onNavigate]);\n  const isGrid = cols > 1;\n  function handleKeyDown(event) {\n    if (!allKeys.includes(event.key)) return;\n    let nextIndex = activeIndex;\n    const minIndex = getMinListIndex(elementsRef, disabledIndices);\n    const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n    const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n    const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n    if (isGrid) {\n      const sizes = itemSizes || Array.from({\n        length: elementsRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = createGridCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const maybeNextIndex = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || elementsRef.current.map((_, index) => isListIndexDisabled(elementsRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getGridCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction we're\n        // moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n      })];\n      if (maybeNextIndex != null) {\n        nextIndex = maybeNextIndex;\n      }\n    }\n    const toEndKeys = {\n      horizontal: [horizontalEndKey],\n      vertical: [ARROW_DOWN],\n      both: [horizontalEndKey, ARROW_DOWN]\n    }[orientation];\n    const toStartKeys = {\n      horizontal: [horizontalStartKey],\n      vertical: [ARROW_UP],\n      both: [horizontalStartKey, ARROW_UP]\n    }[orientation];\n    const preventedKeys = isGrid ? allKeys : {\n      horizontal: horizontalKeys,\n      vertical: verticalKeys,\n      both: allKeys\n    }[orientation];\n    if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n      if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n        nextIndex = minIndex;\n      } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n        nextIndex = maxIndex;\n      } else {\n        nextIndex = findNonDisabledListIndex(elementsRef, {\n          startingIndex: nextIndex,\n          decrement: toStartKeys.includes(event.key),\n          disabledIndices\n        });\n      }\n    }\n    if (nextIndex !== activeIndex && !isIndexOutOfListBounds(elementsRef, nextIndex)) {\n      var _elementsRef$current$;\n      event.stopPropagation();\n      if (preventedKeys.includes(event.key)) {\n        event.preventDefault();\n      }\n      onNavigate(nextIndex);\n      (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n    }\n  }\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: forwardedRef,\n    'aria-orientation': orientation === 'both' ? undefined : orientation,\n    onKeyDown(e) {\n      domProps.onKeyDown == null || domProps.onKeyDown(e);\n      renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n      handleKeyDown(e);\n    }\n  };\n  return /*#__PURE__*/jsx(CompositeContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/jsx(FloatingList, {\n      elementsRef: elementsRef,\n      children: renderJsx(render, computedProps)\n    })\n  });\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n  const {\n    render,\n    ...domProps\n  } = props;\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const {\n    activeIndex,\n    onNavigate\n  } = React.useContext(CompositeContext);\n  const {\n    ref,\n    index\n  } = useListItem();\n  const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n  const isActive = activeIndex === index;\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: mergedRef,\n    tabIndex: isActive ? 0 : -1,\n    'data-active': isActive ? '' : undefined,\n    onFocus(e) {\n      domProps.onFocus == null || domProps.onFocus(e);\n      renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n      onNavigate(index);\n    }\n  };\n  return renderJsx(render, computedProps);\n});\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n  const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n  useModernLayoutEffect(() => {\n    if (id == null) {\n      setId(genId());\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  React.useEffect(() => {\n    serverHandoffComplete = true;\n  }, []);\n  return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n  devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n  var _devMessageSet;\n  for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n    messages[_key] = arguments[_key];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n    var _devMessageSet2;\n    (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n    console.warn(message);\n  }\n}\nfunction error() {\n  var _devMessageSet3;\n  for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    messages[_key2] = arguments[_key2];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n    var _devMessageSet4;\n    (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n    console.error(message);\n  }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n  const {\n    context: {\n      placement,\n      elements: {\n        floating\n      },\n      middlewareData: {\n        arrow,\n        shift\n      }\n    },\n    width = 14,\n    height = 7,\n    tipRadius = 0,\n    strokeWidth = 0,\n    staticOffset,\n    stroke,\n    d,\n    style: {\n      transform,\n      ...restStyle\n    } = {},\n    ...rest\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!ref) {\n      warn('The `ref` prop is required for `FloatingArrow`.');\n    }\n  }\n  const clipPathId = useId();\n  const [isRTL, setIsRTL] = React.useState(false);\n\n  // https://github.com/floating-ui/floating-ui/issues/2932\n  useModernLayoutEffect(() => {\n    if (!floating) return;\n    const isRTL = getComputedStyle(floating).direction === 'rtl';\n    if (isRTL) {\n      setIsRTL(true);\n    }\n  }, [floating]);\n  if (!floating) {\n    return null;\n  }\n  const [side, alignment] = placement.split('-');\n  const isVerticalSide = side === 'top' || side === 'bottom';\n  let computedStaticOffset = staticOffset;\n  if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n    computedStaticOffset = null;\n  }\n\n  // Strokes must be double the border width, this ensures the stroke's width\n  // works as you'd expect.\n  const computedStrokeWidth = strokeWidth * 2;\n  const halfStrokeWidth = computedStrokeWidth / 2;\n  const svgX = width / 2 * (tipRadius / -8 + 1);\n  const svgY = height / 2 * tipRadius / 4;\n  const isCustomShape = !!d;\n  const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n  let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n  if (computedStaticOffset && isRTL) {\n    xOffsetProp = alignment === 'end' ? 'left' : 'right';\n  }\n  const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n  const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n  const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n  const rotation = {\n    top: isCustomShape ? 'rotate(180deg)' : '',\n    left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n    bottom: isCustomShape ? '' : 'rotate(180deg)',\n    right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n  }[side];\n  return /*#__PURE__*/jsxs(\"svg\", {\n    ...rest,\n    \"aria-hidden\": true,\n    ref: ref,\n    width: isCustomShape ? width : width + computedStrokeWidth,\n    height: width,\n    viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n    style: {\n      position: 'absolute',\n      pointerEvents: 'none',\n      [xOffsetProp]: arrowX,\n      [yOffsetProp]: arrowY,\n      [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n      transform: [rotation, transform].filter(t => !!t).join(' '),\n      ...restStyle\n    },\n    children: [computedStrokeWidth > 0 && /*#__PURE__*/jsx(\"path\", {\n      clipPath: \"url(#\" + clipPathId + \")\",\n      fill: \"none\",\n      stroke: stroke\n      // Account for the stroke on the fill path rendered below.\n      ,\n      strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n      d: dValue\n    }), /*#__PURE__*/jsx(\"path\", {\n      stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n      d: dValue\n    }), /*#__PURE__*/jsx(\"clipPath\", {\n      id: clipPathId,\n      children: /*#__PURE__*/jsx(\"rect\", {\n        x: -halfStrokeWidth,\n        y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n        width: width + computedStrokeWidth,\n        height: width\n      })\n    })]\n  });\n});\n\nfunction createEventEmitter() {\n  const map = new Map();\n  return {\n    emit(event, data) {\n      var _map$get;\n      (_map$get = map.get(event)) == null || _map$get.forEach(listener => listener(data));\n    },\n    on(event, listener) {\n      if (!map.has(event)) {\n        map.set(event, new Set());\n      }\n      map.get(event).add(listener);\n    },\n    off(event, listener) {\n      var _map$get2;\n      (_map$get2 = map.get(event)) == null || _map$get2.delete(listener);\n    }\n  };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n  var _React$useContext;\n  return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n  const id = useId();\n  const tree = useFloatingTree();\n  const reactParentId = useFloatingParentNodeId();\n  const parentId = customParentId || reactParentId;\n  useModernLayoutEffect(() => {\n    if (!id) return;\n    const node = {\n      id,\n      parentId\n    };\n    tree == null || tree.addNode(node);\n    return () => {\n      tree == null || tree.removeNode(node);\n    };\n  }, [tree, id, parentId]);\n  return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n  const {\n    children,\n    id\n  } = props;\n  const parentId = useFloatingParentNodeId();\n  return /*#__PURE__*/jsx(FloatingNodeContext.Provider, {\n    value: React.useMemo(() => ({\n      id,\n      parentId\n    }), [id, parentId]),\n    children: children\n  });\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n  const {\n    children\n  } = props;\n  const nodesRef = React.useRef([]);\n  const addNode = React.useCallback(node => {\n    nodesRef.current = [...nodesRef.current, node];\n  }, []);\n  const removeNode = React.useCallback(node => {\n    nodesRef.current = nodesRef.current.filter(n => n !== node);\n  }, []);\n  const [events] = React.useState(() => createEventEmitter());\n  return /*#__PURE__*/jsx(FloatingTreeContext.Provider, {\n    value: React.useMemo(() => ({\n      nodesRef,\n      addNode,\n      removeNode,\n      events\n    }), [addNode, removeNode, events]),\n    children: children\n  });\n}\n\nfunction createAttribute(name) {\n  return \"data-floating-ui-\" + name;\n}\n\nfunction clearTimeoutIfSet(timeoutRef) {\n  if (timeoutRef.current !== -1) {\n    clearTimeout(timeoutRef.current);\n    timeoutRef.current = -1;\n  }\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n  if (pointerType && !isMouseLikePointerType(pointerType)) {\n    return 0;\n  }\n  if (typeof value === 'number') {\n    return value;\n  }\n  if (typeof value === 'function') {\n    const result = value();\n    if (typeof result === 'number') {\n      return result;\n    }\n    return result == null ? void 0 : result[prop];\n  }\n  return value == null ? void 0 : value[prop];\n}\nfunction getRestMs(value) {\n  if (typeof value === 'function') {\n    return value();\n  }\n  return value;\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    events,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    delay = 0,\n    handleClose = null,\n    mouseOnly = false,\n    restMs = 0,\n    move = true\n  } = props;\n  const tree = useFloatingTree();\n  const parentId = useFloatingParentNodeId();\n  const handleCloseRef = useLatestRef(handleClose);\n  const delayRef = useLatestRef(delay);\n  const openRef = useLatestRef(open);\n  const restMsRef = useLatestRef(restMs);\n  const pointerTypeRef = React.useRef();\n  const timeoutRef = React.useRef(-1);\n  const handlerRef = React.useRef();\n  const restTimeoutRef = React.useRef(-1);\n  const blockMouseMoveRef = React.useRef(true);\n  const performedPointerEventsMutationRef = React.useRef(false);\n  const unbindMouseMoveRef = React.useRef(() => {});\n  const restTimeoutPendingRef = React.useRef(false);\n  const isHoverOpen = useEffectEvent(() => {\n    var _dataRef$current$open;\n    const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n    return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n  });\n\n  // When closing before opening, clear the delay timeouts to cancel it\n  // from showing.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        open\n      } = _ref;\n      if (!open) {\n        clearTimeoutIfSet(timeoutRef);\n        clearTimeoutIfSet(restTimeoutRef);\n        blockMouseMoveRef.current = true;\n        restTimeoutPendingRef.current = false;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [enabled, events]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    if (!handleCloseRef.current) return;\n    if (!open) return;\n    function onLeave(event) {\n      if (isHoverOpen()) {\n        onOpenChange(false, event, 'hover');\n      }\n    }\n    const html = getDocument$1(elements.floating).documentElement;\n    html.addEventListener('mouseleave', onLeave);\n    return () => {\n      html.removeEventListener('mouseleave', onLeave);\n    };\n  }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n  const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n    if (runElseBranch === void 0) {\n      runElseBranch = true;\n    }\n    if (reason === void 0) {\n      reason = 'hover';\n    }\n    const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n    if (closeDelay && !handlerRef.current) {\n      clearTimeoutIfSet(timeoutRef);\n      timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n    } else if (runElseBranch) {\n      clearTimeoutIfSet(timeoutRef);\n      onOpenChange(false, event, reason);\n    }\n  }, [delayRef, onOpenChange]);\n  const cleanupMouseMoveHandler = useEffectEvent(() => {\n    unbindMouseMoveRef.current();\n    handlerRef.current = undefined;\n  });\n  const clearPointerEvents = useEffectEvent(() => {\n    if (performedPointerEventsMutationRef.current) {\n      const body = getDocument$1(elements.floating).body;\n      body.style.pointerEvents = '';\n      body.removeAttribute(safePolygonIdentifier);\n      performedPointerEventsMutationRef.current = false;\n    }\n  });\n  const isClickLikeOpenEvent = useEffectEvent(() => {\n    return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n  });\n\n  // Registering the mouse events on the reference directly to bypass React's\n  // delegation system. If the cursor was on a disabled element and then entered\n  // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onReferenceMouseEnter(event) {\n      clearTimeoutIfSet(timeoutRef);\n      blockMouseMoveRef.current = false;\n      if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || getRestMs(restMsRef.current) > 0 && !getDelay(delayRef.current, 'open')) {\n        return;\n      }\n      const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n      if (openDelay) {\n        timeoutRef.current = window.setTimeout(() => {\n          if (!openRef.current) {\n            onOpenChange(true, event, 'hover');\n          }\n        }, openDelay);\n      } else if (!open) {\n        onOpenChange(true, event, 'hover');\n      }\n    }\n    function onReferenceMouseLeave(event) {\n      if (isClickLikeOpenEvent()) {\n        clearPointerEvents();\n        return;\n      }\n      unbindMouseMoveRef.current();\n      const doc = getDocument$1(elements.floating);\n      clearTimeoutIfSet(restTimeoutRef);\n      restTimeoutPendingRef.current = false;\n      if (handleCloseRef.current && dataRef.current.floatingContext) {\n        // Prevent clearing `onScrollMouseLeave` timeout.\n        if (!open) {\n          clearTimeoutIfSet(timeoutRef);\n        }\n        handlerRef.current = handleCloseRef.current({\n          ...dataRef.current.floatingContext,\n          tree,\n          x: event.clientX,\n          y: event.clientY,\n          onClose() {\n            clearPointerEvents();\n            cleanupMouseMoveHandler();\n            if (!isClickLikeOpenEvent()) {\n              closeWithDelay(event, true, 'safe-polygon');\n            }\n          }\n        });\n        const handler = handlerRef.current;\n        doc.addEventListener('mousemove', handler);\n        unbindMouseMoveRef.current = () => {\n          doc.removeEventListener('mousemove', handler);\n        };\n        return;\n      }\n\n      // Allow interactivity without `safePolygon` on touch devices. With a\n      // pointer, a short close delay is an alternative, so it should work\n      // consistently.\n      const shouldClose = pointerTypeRef.current === 'touch' ? !contains$1(elements.floating, event.relatedTarget) : true;\n      if (shouldClose) {\n        closeWithDelay(event);\n      }\n    }\n\n    // Ensure the floating element closes after scrolling even if the pointer\n    // did not move.\n    // https://github.com/floating-ui/floating-ui/discussions/1692\n    function onScrollMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      if (!dataRef.current.floatingContext) return;\n      handleCloseRef.current == null || handleCloseRef.current({\n        ...dataRef.current.floatingContext,\n        tree,\n        x: event.clientX,\n        y: event.clientY,\n        onClose() {\n          clearPointerEvents();\n          cleanupMouseMoveHandler();\n          if (!isClickLikeOpenEvent()) {\n            closeWithDelay(event);\n          }\n        }\n      })(event);\n    }\n    function onFloatingMouseEnter() {\n      clearTimeoutIfSet(timeoutRef);\n    }\n    function onFloatingMouseLeave(event) {\n      if (!isClickLikeOpenEvent()) {\n        closeWithDelay(event, false);\n      }\n    }\n    if (isElement(elements.domReference)) {\n      const reference = elements.domReference;\n      const floating = elements.floating;\n      if (open) {\n        reference.addEventListener('mouseleave', onScrollMouseLeave);\n      }\n      if (move) {\n        reference.addEventListener('mousemove', onReferenceMouseEnter, {\n          once: true\n        });\n      }\n      reference.addEventListener('mouseenter', onReferenceMouseEnter);\n      reference.addEventListener('mouseleave', onReferenceMouseLeave);\n      if (floating) {\n        floating.addEventListener('mouseleave', onScrollMouseLeave);\n        floating.addEventListener('mouseenter', onFloatingMouseEnter);\n        floating.addEventListener('mouseleave', onFloatingMouseLeave);\n      }\n      return () => {\n        if (open) {\n          reference.removeEventListener('mouseleave', onScrollMouseLeave);\n        }\n        if (move) {\n          reference.removeEventListener('mousemove', onReferenceMouseEnter);\n        }\n        reference.removeEventListener('mouseenter', onReferenceMouseEnter);\n        reference.removeEventListener('mouseleave', onReferenceMouseLeave);\n        if (floating) {\n          floating.removeEventListener('mouseleave', onScrollMouseLeave);\n          floating.removeEventListener('mouseenter', onFloatingMouseEnter);\n          floating.removeEventListener('mouseleave', onFloatingMouseLeave);\n        }\n      };\n    }\n  }, [elements, enabled, context, mouseOnly, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent, restMsRef]);\n\n  // Block pointer-events of every element other than the reference and floating\n  // while the floating element is open and has a `handleClose` handler. Also\n  // handles nested floating elements.\n  // https://github.com/floating-ui/floating-ui/issues/1722\n  useModernLayoutEffect(() => {\n    var _handleCloseRef$curre;\n    if (!enabled) return;\n    if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && (_handleCloseRef$curre = _handleCloseRef$curre.__options) != null && _handleCloseRef$curre.blockPointerEvents && isHoverOpen()) {\n      performedPointerEventsMutationRef.current = true;\n      const floatingEl = elements.floating;\n      if (isElement(elements.domReference) && floatingEl) {\n        var _tree$nodesRef$curren;\n        const body = getDocument$1(elements.floating).body;\n        body.setAttribute(safePolygonIdentifier, '');\n        const ref = elements.domReference;\n        const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n        if (parentFloating) {\n          parentFloating.style.pointerEvents = '';\n        }\n        body.style.pointerEvents = 'none';\n        ref.style.pointerEvents = 'auto';\n        floatingEl.style.pointerEvents = 'auto';\n        return () => {\n          body.style.pointerEvents = '';\n          ref.style.pointerEvents = '';\n          floatingEl.style.pointerEvents = '';\n        };\n      }\n    }\n  }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n  useModernLayoutEffect(() => {\n    if (!open) {\n      pointerTypeRef.current = undefined;\n      restTimeoutPendingRef.current = false;\n      cleanupMouseMoveHandler();\n      clearPointerEvents();\n    }\n  }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n  React.useEffect(() => {\n    return () => {\n      cleanupMouseMoveHandler();\n      clearTimeoutIfSet(timeoutRef);\n      clearTimeoutIfSet(restTimeoutRef);\n      clearPointerEvents();\n    };\n  }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n  const reference = React.useMemo(() => {\n    function setPointerRef(event) {\n      pointerTypeRef.current = event.pointerType;\n    }\n    return {\n      onPointerDown: setPointerRef,\n      onPointerEnter: setPointerRef,\n      onMouseMove(event) {\n        const {\n          nativeEvent\n        } = event;\n        function handleMouseMove() {\n          if (!blockMouseMoveRef.current && !openRef.current) {\n            onOpenChange(true, nativeEvent, 'hover');\n          }\n        }\n        if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n          return;\n        }\n        if (open || getRestMs(restMsRef.current) === 0) {\n          return;\n        }\n\n        // Ignore insignificant movements to account for tremors.\n        if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n          return;\n        }\n        clearTimeoutIfSet(restTimeoutRef);\n        if (pointerTypeRef.current === 'touch') {\n          handleMouseMove();\n        } else {\n          restTimeoutPendingRef.current = true;\n          restTimeoutRef.current = window.setTimeout(handleMouseMove, getRestMs(restMsRef.current));\n        }\n      }\n    };\n  }, [mouseOnly, onOpenChange, open, openRef, restMsRef]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  delay: 0,\n  initialDelay: 0,\n  timeoutMs: 0,\n  currentId: null,\n  setCurrentId: NOOP,\n  setState: NOOP,\n  isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const [state, setState] = React.useReducer((prev, next) => ({\n    ...prev,\n    ...next\n  }), {\n    delay,\n    timeoutMs,\n    initialDelay: delay,\n    currentId: null,\n    isInstantPhase: false\n  });\n  const initialCurrentIdRef = React.useRef(null);\n  const setCurrentId = React.useCallback(currentId => {\n    setState({\n      currentId\n    });\n  }, []);\n  useModernLayoutEffect(() => {\n    if (state.currentId) {\n      if (initialCurrentIdRef.current === null) {\n        initialCurrentIdRef.current = state.currentId;\n      } else if (!state.isInstantPhase) {\n        setState({\n          isInstantPhase: true\n        });\n      }\n    } else {\n      if (state.isInstantPhase) {\n        setState({\n          isInstantPhase: false\n        });\n      }\n      initialCurrentIdRef.current = null;\n    }\n  }, [state.currentId, state.isInstantPhase]);\n  return /*#__PURE__*/jsx(FloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      ...state,\n      setState,\n      setCurrentId\n    }), [state, setCurrentId]),\n    children: children\n  });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    id: optionId,\n    enabled = true\n  } = options;\n  const id = optionId != null ? optionId : floatingId;\n  const groupContext = useDelayGroupContext();\n  const {\n    currentId,\n    setCurrentId,\n    initialDelay,\n    setState,\n    timeoutMs\n  } = groupContext;\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!currentId) return;\n    setState({\n      delay: {\n        open: 1,\n        close: getDelay(initialDelay, 'close')\n      }\n    });\n    if (currentId !== id) {\n      onOpenChange(false);\n    }\n  }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n  useModernLayoutEffect(() => {\n    function unset() {\n      onOpenChange(false);\n      setState({\n        delay: initialDelay,\n        currentId: null\n      });\n    }\n    if (!enabled) return;\n    if (!currentId) return;\n    if (!open && currentId === id) {\n      if (timeoutMs) {\n        const timeout = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeout);\n        };\n      }\n      unset();\n    }\n  }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (setCurrentId === NOOP || !open) return;\n    setCurrentId(id);\n  }, [enabled, open, setCurrentId, id]);\n  return groupContext;\n}\n\nconst NextFloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  hasProvider: false,\n  timeoutMs: 0,\n  delayRef: {\n    current: 0\n  },\n  initialDelayRef: {\n    current: 0\n  },\n  timeoutIdRef: {\n    current: -1\n  },\n  currentIdRef: {\n    current: null\n  },\n  currentContextRef: {\n    current: null\n  }\n});\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useNextDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction NextFloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const delayRef = React.useRef(delay);\n  const initialDelayRef = React.useRef(delay);\n  const currentIdRef = React.useRef(null);\n  const currentContextRef = React.useRef(null);\n  const timeoutIdRef = React.useRef(-1);\n  return /*#__PURE__*/jsx(NextFloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      hasProvider: true,\n      delayRef,\n      initialDelayRef,\n      currentIdRef,\n      timeoutMs,\n      currentContextRef,\n      timeoutIdRef\n    }), [timeoutMs]),\n    children: children\n  });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `NextFloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useNextDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    enabled = true\n  } = options;\n  const groupContext = React.useContext(NextFloatingDelayGroupContext);\n  const {\n    currentIdRef,\n    delayRef,\n    timeoutMs,\n    initialDelayRef,\n    currentContextRef,\n    hasProvider,\n    timeoutIdRef\n  } = groupContext;\n  const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n  useModernLayoutEffect(() => {\n    function unset() {\n      var _currentContextRef$cu;\n      setIsInstantPhase(false);\n      (_currentContextRef$cu = currentContextRef.current) == null || _currentContextRef$cu.setIsInstantPhase(false);\n      currentIdRef.current = null;\n      currentContextRef.current = null;\n      delayRef.current = initialDelayRef.current;\n    }\n    if (!enabled) return;\n    if (!currentIdRef.current) return;\n    if (!open && currentIdRef.current === floatingId) {\n      setIsInstantPhase(false);\n      if (timeoutMs) {\n        timeoutIdRef.current = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeoutIdRef.current);\n        };\n      }\n      unset();\n    }\n  }, [enabled, open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!open) return;\n    const prevContext = currentContextRef.current;\n    const prevId = currentIdRef.current;\n    currentContextRef.current = {\n      onOpenChange,\n      setIsInstantPhase\n    };\n    currentIdRef.current = floatingId;\n    delayRef.current = {\n      open: 0,\n      close: getDelay(initialDelayRef.current, 'close')\n    };\n    if (prevId !== null && prevId !== floatingId) {\n      clearTimeoutIfSet(timeoutIdRef);\n      setIsInstantPhase(true);\n      prevContext == null || prevContext.setIsInstantPhase(true);\n      prevContext == null || prevContext.onOpenChange(false);\n    } else {\n      setIsInstantPhase(false);\n      prevContext == null || prevContext.setIsInstantPhase(false);\n    }\n  }, [enabled, open, floatingId, onOpenChange, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n  useModernLayoutEffect(() => {\n    return () => {\n      currentContextRef.current = null;\n    };\n  }, [currentContextRef]);\n  return React.useMemo(() => ({\n    hasProvider,\n    delayRef,\n    isInstantPhase\n  }), [hasProvider, delayRef, isInstantPhase]);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    preventScroll = false,\n    cancelPrevious = true,\n    sync = false\n  } = options;\n  cancelPrevious && cancelAnimationFrame(rafId);\n  const exec = () => el == null ? void 0 : el.focus({\n    preventScroll\n  });\n  if (sync) {\n    exec();\n  } else {\n    rafId = requestAnimationFrame(exec);\n  }\n}\n\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nconst counters = {\n  inert: /*#__PURE__*/new WeakMap(),\n  'aria-hidden': /*#__PURE__*/new WeakMap(),\n  none: /*#__PURE__*/new WeakMap()\n};\nfunction getCounterMap(control) {\n  if (control === 'inert') return counters.inert;\n  if (control === 'aria-hidden') return counters['aria-hidden'];\n  return counters.none;\n}\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n  if (parent.contains(target)) {\n    return target;\n  }\n  const correctedTarget = unwrapHost(target);\n  if (parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n  const markerName = 'data-floating-ui-inert';\n  const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n  const avoidElements = correctElements(body, uncorrectedAvoidElements);\n  const elementsToKeep = new Set();\n  const elementsToStop = new Set(avoidElements);\n  const hiddenElements = [];\n  if (!markerMap[markerName]) {\n    markerMap[markerName] = new WeakMap();\n  }\n  const markerCounter = markerMap[markerName];\n  avoidElements.forEach(keep);\n  deep(body);\n  elementsToKeep.clear();\n  function keep(el) {\n    if (!el || elementsToKeep.has(el)) {\n      return;\n    }\n    elementsToKeep.add(el);\n    el.parentNode && keep(el.parentNode);\n  }\n  function deep(parent) {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    [].forEach.call(parent.children, node => {\n      if (getNodeName(node) === 'script') return;\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n        const alreadyHidden = attr !== null && attr !== 'false';\n        const counterMap = getCounterMap(controlAttribute);\n        const counterValue = (counterMap.get(node) || 0) + 1;\n        const markerValue = (markerCounter.get(node) || 0) + 1;\n        counterMap.set(node, counterValue);\n        markerCounter.set(node, markerValue);\n        hiddenElements.push(node);\n        if (counterValue === 1 && alreadyHidden) {\n          uncontrolledElementsSet.add(node);\n        }\n        if (markerValue === 1) {\n          node.setAttribute(markerName, '');\n        }\n        if (!alreadyHidden && controlAttribute) {\n          node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n        }\n      }\n    });\n  }\n  lockCount$1++;\n  return () => {\n    hiddenElements.forEach(element => {\n      const counterMap = getCounterMap(controlAttribute);\n      const currentCounterValue = counterMap.get(element) || 0;\n      const counterValue = currentCounterValue - 1;\n      const markerValue = (markerCounter.get(element) || 0) - 1;\n      counterMap.set(element, counterValue);\n      markerCounter.set(element, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n          element.removeAttribute(controlAttribute);\n        }\n        uncontrolledElementsSet.delete(element);\n      }\n      if (!markerValue) {\n        element.removeAttribute(markerName);\n      }\n    });\n    lockCount$1--;\n    if (!lockCount$1) {\n      counters.inert = new WeakMap();\n      counters['aria-hidden'] = new WeakMap();\n      counters.none = new WeakMap();\n      uncontrolledElementsSet = new WeakSet();\n      markerMap = {};\n    }\n  };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n  if (ariaHidden === void 0) {\n    ariaHidden = false;\n  }\n  if (inert === void 0) {\n    inert = false;\n  }\n  const body = getDocument(avoidElements[0]).body;\n  return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live],[role=\"status\"],output'))), body, ariaHidden, inert);\n}\n\nconst HIDDEN_STYLES = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'fixed',\n  whiteSpace: 'nowrap',\n  width: '1px',\n  top: 0,\n  left: 0\n};\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n  const [role, setRole] = React.useState();\n  useModernLayoutEffect(() => {\n    if (isSafari()) {\n      // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n      // on VoiceOver does trigger the onFocus event, so we can use the focus\n      // trap element. On Safari, only buttons trigger the onFocus event.\n      // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n      // button role.\n      setRole('button');\n    }\n  }, []);\n  const restProps = {\n    ref,\n    tabIndex: 0,\n    // Role is only for VoiceOver\n    role,\n    'aria-hidden': role ? undefined : true,\n    [createAttribute('focus-guard')]: '',\n    style: HIDDEN_STYLES\n  };\n  return /*#__PURE__*/jsx(\"span\", {\n    ...props,\n    ...restProps\n  });\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    id,\n    root\n  } = props;\n  const uniqueId = useId();\n  const portalContext = usePortalContext();\n  const [portalNode, setPortalNode] = React.useState(null);\n  const portalNodeRef = React.useRef(null);\n  useModernLayoutEffect(() => {\n    return () => {\n      portalNode == null || portalNode.remove();\n      // Allow the subsequent layout effects to create a new node on updates.\n      // The portal node will still be cleaned up on unmount.\n      // https://github.com/floating-ui/floating-ui/issues/2454\n      queueMicrotask(() => {\n        portalNodeRef.current = null;\n      });\n    };\n  }, [portalNode]);\n  useModernLayoutEffect(() => {\n    // Wait for the uniqueId to be generated before creating the portal node in\n    // React <18 (using `useFloatingId` instead of the native `useId`).\n    // https://github.com/floating-ui/floating-ui/issues/2778\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    const existingIdRoot = id ? document.getElementById(id) : null;\n    if (!existingIdRoot) return;\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    existingIdRoot.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, uniqueId]);\n  useModernLayoutEffect(() => {\n    // Wait for the root to exist before creating the portal node. The root must\n    // be stored in state, not a ref, for this to work reactively.\n    if (root === null) return;\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n    if (container && !isNode(container)) container = container.current;\n    container = container || document.body;\n    let idWrapper = null;\n    if (id) {\n      idWrapper = document.createElement('div');\n      idWrapper.id = id;\n      container.appendChild(idWrapper);\n    }\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    container = idWrapper || container;\n    container.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, root, uniqueId, portalContext]);\n  return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n  const {\n    children,\n    id,\n    root,\n    preserveTabOrder = true\n  } = props;\n  const portalNode = useFloatingPortalNode({\n    id,\n    root\n  });\n  const [focusManagerState, setFocusManagerState] = React.useState(null);\n  const beforeOutsideRef = React.useRef(null);\n  const afterOutsideRef = React.useRef(null);\n  const beforeInsideRef = React.useRef(null);\n  const afterInsideRef = React.useRef(null);\n  const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n  const open = focusManagerState == null ? void 0 : focusManagerState.open;\n  const shouldRenderGuards =\n  // The FocusManager and therefore floating element are currently open/\n  // rendered.\n  !!focusManagerState &&\n  // Guards are only for non-modal focus management.\n  !focusManagerState.modal &&\n  // Don't render if unmount is transitioning.\n  focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n  // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n  React.useEffect(() => {\n    if (!portalNode || !preserveTabOrder || modal) {\n      return;\n    }\n\n    // Make sure elements inside the portal element are tabbable only when the\n    // portal has already been focused, either by tabbing into a focus trap\n    // element outside or using the mouse.\n    function onFocus(event) {\n      if (portalNode && isOutsideEvent(event)) {\n        const focusing = event.type === 'focusin';\n        const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n        manageFocus(portalNode);\n      }\n    }\n    // Listen to the event on the capture phase so they run before the focus\n    // trap elements onFocus prop is called.\n    portalNode.addEventListener('focusin', onFocus, true);\n    portalNode.addEventListener('focusout', onFocus, true);\n    return () => {\n      portalNode.removeEventListener('focusin', onFocus, true);\n      portalNode.removeEventListener('focusout', onFocus, true);\n    };\n  }, [portalNode, preserveTabOrder, modal]);\n  React.useEffect(() => {\n    if (!portalNode) return;\n    if (open) return;\n    enableFocusInside(portalNode);\n  }, [open, portalNode]);\n  return /*#__PURE__*/jsxs(PortalContext.Provider, {\n    value: React.useMemo(() => ({\n      preserveTabOrder,\n      beforeOutsideRef,\n      afterOutsideRef,\n      beforeInsideRef,\n      afterInsideRef,\n      portalNode,\n      setFocusManagerState\n    }), [preserveTabOrder, portalNode]),\n    children: [shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"outside\",\n      ref: beforeOutsideRef,\n      onFocus: event => {\n        if (isOutsideEvent(event, portalNode)) {\n          var _beforeInsideRef$curr;\n          (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n        } else {\n          const domReference = focusManagerState ? focusManagerState.domReference : null;\n          const prevTabbable = getPreviousTabbable(domReference);\n          prevTabbable == null || prevTabbable.focus();\n        }\n      }\n    }), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(\"span\", {\n      \"aria-owns\": portalNode.id,\n      style: HIDDEN_STYLES\n    }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"outside\",\n      ref: afterOutsideRef,\n      onFocus: event => {\n        if (isOutsideEvent(event, portalNode)) {\n          var _afterInsideRef$curre;\n          (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n        } else {\n          const domReference = focusManagerState ? focusManagerState.domReference : null;\n          const nextTabbable = getNextTabbable(domReference);\n          nextTabbable == null || nextTabbable.focus();\n          (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n        }\n      }\n    })]\n  });\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nfunction useLiteMergeRefs(refs) {\n  return React.useMemo(() => {\n    return value => {\n      refs.forEach(ref => {\n        if (ref) {\n          ref.current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction clearDisconnectedPreviouslyFocusedElements() {\n  previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n}\nfunction addPreviouslyFocusedElement(element) {\n  clearDisconnectedPreviouslyFocusedElements();\n  if (element && getNodeName(element) !== 'body') {\n    previouslyFocusedElements.push(element);\n    if (previouslyFocusedElements.length > LIST_LIMIT) {\n      previouslyFocusedElements = previouslyFocusedElements.slice(-20);\n    }\n  }\n}\nfunction getPreviouslyFocusedElement() {\n  clearDisconnectedPreviouslyFocusedElements();\n  return previouslyFocusedElements[previouslyFocusedElements.length - 1];\n}\nfunction getFirstTabbableElement(container) {\n  const tabbableOptions = getTabbableOptions();\n  if (isTabbable(container, tabbableOptions)) {\n    return container;\n  }\n  return tabbable(container, tabbableOptions)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement, orderRef) {\n  var _floatingFocusElement;\n  if (!orderRef.current.includes('floating') && !((_floatingFocusElement = floatingFocusElement.getAttribute('role')) != null && _floatingFocusElement.includes('dialog'))) {\n    return;\n  }\n  const options = getTabbableOptions();\n  const focusableElements = focusable(floatingFocusElement, options);\n  const tabbableContent = focusableElements.filter(element => {\n    const dataTabIndex = element.getAttribute('data-tabindex') || '';\n    return isTabbable(element, options) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n  });\n  const tabIndex = floatingFocusElement.getAttribute('tabindex');\n  if (orderRef.current.includes('floating') || tabbableContent.length === 0) {\n    if (tabIndex !== '0') {\n      floatingFocusElement.setAttribute('tabindex', '0');\n    }\n  } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n    floatingFocusElement.setAttribute('tabindex', '-1');\n    floatingFocusElement.setAttribute('data-tabindex', '-1');\n  }\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n  return /*#__PURE__*/jsx(\"button\", {\n    ...props,\n    type: \"button\",\n    ref: ref,\n    tabIndex: -1,\n    style: HIDDEN_STYLES\n  });\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n  const {\n    context,\n    children,\n    disabled = false,\n    order = ['content'],\n    guards: _guards = true,\n    initialFocus = 0,\n    returnFocus = true,\n    restoreFocus = false,\n    modal = true,\n    visuallyHiddenDismiss = false,\n    closeOnFocusOut = true,\n    outsideElementsInert = false,\n    getInsideElements: _getInsideElements = () => []\n  } = props;\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements: {\n      domReference,\n      floating\n    }\n  } = context;\n  const getNodeId = useEffectEvent(() => {\n    var _dataRef$current$floa;\n    return (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n  });\n  const getInsideElements = useEffectEvent(_getInsideElements);\n  const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n  // If the reference is a combobox and is typeable (e.g. input/textarea),\n  // there are different focus semantics. The guards should not be rendered, but\n  // aria-hidden should be applied to all nodes still. Further, the visually\n  // hidden dismiss button should only appear at the end of the list, not the\n  // start.\n  const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n  // Force the guards to be rendered if the `inert` attribute is not supported.\n  const inertSupported = supportsInert();\n  const guards = inertSupported ? _guards : true;\n  const useInert = !guards || inertSupported && outsideElementsInert;\n  const orderRef = useLatestRef(order);\n  const initialFocusRef = useLatestRef(initialFocus);\n  const returnFocusRef = useLatestRef(returnFocus);\n  const tree = useFloatingTree();\n  const portalContext = usePortalContext();\n  const startDismissButtonRef = React.useRef(null);\n  const endDismissButtonRef = React.useRef(null);\n  const preventReturnFocusRef = React.useRef(false);\n  const isPointerDownRef = React.useRef(false);\n  const tabbableIndexRef = React.useRef(-1);\n  const blurTimeoutRef = React.useRef(-1);\n  const isInsidePortal = portalContext != null;\n  const floatingFocusElement = getFloatingFocusElement(floating);\n  const getTabbableContent = useEffectEvent(function (container) {\n    if (container === void 0) {\n      container = floatingFocusElement;\n    }\n    return container ? tabbable(container, getTabbableOptions()) : [];\n  });\n  const getTabbableElements = useEffectEvent(container => {\n    const content = getTabbableContent(container);\n    return orderRef.current.map(type => {\n      if (domReference && type === 'reference') {\n        return domReference;\n      }\n      if (floatingFocusElement && type === 'floating') {\n        return floatingFocusElement;\n      }\n      return content;\n    }).filter(Boolean).flat();\n  });\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!modal) return;\n    function onKeyDown(event) {\n      if (event.key === 'Tab') {\n        // The focus guards have nothing to focus, so we need to stop the event.\n        if (contains$1(floatingFocusElement, activeElement(getDocument$1(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n          stopEvent(event);\n        }\n        const els = getTabbableElements();\n        const target = getTarget$1(event);\n        if (orderRef.current[0] === 'reference' && target === domReference) {\n          stopEvent(event);\n          if (event.shiftKey) {\n            enqueueFocus(els[els.length - 1]);\n          } else {\n            enqueueFocus(els[1]);\n          }\n        }\n        if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n          stopEvent(event);\n          enqueueFocus(els[0]);\n        }\n      }\n    }\n    const doc = getDocument$1(floatingFocusElement);\n    doc.addEventListener('keydown', onKeyDown);\n    return () => {\n      doc.removeEventListener('keydown', onKeyDown);\n    };\n  }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!floating) return;\n    function handleFocusIn(event) {\n      const target = getTarget$1(event);\n      const tabbableContent = getTabbableContent();\n      const tabbableIndex = tabbableContent.indexOf(target);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n    }\n    floating.addEventListener('focusin', handleFocusIn);\n    return () => {\n      floating.removeEventListener('focusin', handleFocusIn);\n    };\n  }, [disabled, floating, getTabbableContent]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!closeOnFocusOut) return;\n\n    // In Safari, buttons lose focus when pressing them.\n    function handlePointerDown() {\n      isPointerDownRef.current = true;\n      setTimeout(() => {\n        isPointerDownRef.current = false;\n      });\n    }\n    function handleFocusOutside(event) {\n      const relatedTarget = event.relatedTarget;\n      const currentTarget = event.currentTarget;\n      const target = getTarget$1(event);\n      queueMicrotask(() => {\n        const nodeId = getNodeId();\n        const movedToUnrelatedNode = !(contains$1(domReference, relatedTarget) || contains$1(floating, relatedTarget) || contains$1(relatedTarget, floating) || contains$1(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getNodeChildren$1(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context, _node$context2;\n          return contains$1((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains$1((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n        }) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context3, _node$context4, _node$context5;\n          return [(_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating, getFloatingFocusElement((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.floating)].includes(relatedTarget) || ((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.domReference) === relatedTarget;\n        })));\n        if (currentTarget === domReference && floatingFocusElement) {\n          handleTabIndex(floatingFocusElement, orderRef);\n        }\n\n        // Restore focus to the previous tabbable element index to prevent\n        // focus from being lost outside the floating tree.\n        if (restoreFocus && currentTarget !== domReference && !(target != null && target.isConnected) && activeElement(getDocument$1(floatingFocusElement)) === getDocument$1(floatingFocusElement).body) {\n          // Let `FloatingPortal` effect knows that focus is still inside the\n          // floating tree.\n          if (isHTMLElement(floatingFocusElement)) {\n            floatingFocusElement.focus();\n          }\n          const prevTabbableIndex = tabbableIndexRef.current;\n          const tabbableContent = getTabbableContent();\n          const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n          if (isHTMLElement(nodeToFocus)) {\n            nodeToFocus.focus();\n          }\n        }\n\n        // https://github.com/floating-ui/floating-ui/issues/3060\n        if (dataRef.current.insideReactTree) {\n          dataRef.current.insideReactTree = false;\n          return;\n        }\n\n        // Focus did not move inside the floating tree, and there are no tabbable\n        // portal guards to handle closing.\n        if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n        // Fix React 18 Strict Mode returnFocus due to double rendering.\n        relatedTarget !== getPreviouslyFocusedElement()) {\n          preventReturnFocusRef.current = true;\n          onOpenChange(false, event, 'focus-out');\n        }\n      });\n    }\n    const shouldHandleBlurCapture = Boolean(!tree && portalContext);\n    function markInsideReactTree() {\n      clearTimeoutIfSet(blurTimeoutRef);\n      dataRef.current.insideReactTree = true;\n      blurTimeoutRef.current = window.setTimeout(() => {\n        dataRef.current.insideReactTree = false;\n      });\n    }\n    if (floating && isHTMLElement(domReference)) {\n      domReference.addEventListener('focusout', handleFocusOutside);\n      domReference.addEventListener('pointerdown', handlePointerDown);\n      floating.addEventListener('focusout', handleFocusOutside);\n      if (shouldHandleBlurCapture) {\n        floating.addEventListener('focusout', markInsideReactTree, true);\n      }\n      return () => {\n        domReference.removeEventListener('focusout', handleFocusOutside);\n        domReference.removeEventListener('pointerdown', handlePointerDown);\n        floating.removeEventListener('focusout', handleFocusOutside);\n        if (shouldHandleBlurCapture) {\n          floating.removeEventListener('focusout', markInsideReactTree, true);\n        }\n      };\n    }\n  }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, orderRef, dataRef]);\n  const beforeGuardRef = React.useRef(null);\n  const afterGuardRef = React.useRef(null);\n  const mergedBeforeGuardRef = useLiteMergeRefs([beforeGuardRef, portalContext == null ? void 0 : portalContext.beforeInsideRef]);\n  const mergedAfterGuardRef = useLiteMergeRefs([afterGuardRef, portalContext == null ? void 0 : portalContext.afterInsideRef]);\n  React.useEffect(() => {\n    var _portalContext$portal, _ancestors$find;\n    if (disabled) return;\n    if (!floating) return;\n\n    // Don't hide portals nested within the parent portal.\n    const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n    const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n    const rootAncestorComboboxDomReference = (_ancestors$find = ancestors.find(node => {\n      var _node$context6;\n      return isTypeableCombobox(((_node$context6 = node.context) == null ? void 0 : _node$context6.elements.domReference) || null);\n    })) == null || (_ancestors$find = _ancestors$find.context) == null ? void 0 : _ancestors$find.elements.domReference;\n    const insideElements = [floating, rootAncestorComboboxDomReference, ...portalNodes, ...getInsideElements(), startDismissButtonRef.current, endDismissButtonRef.current, beforeGuardRef.current, afterGuardRef.current, portalContext == null ? void 0 : portalContext.beforeOutsideRef.current, portalContext == null ? void 0 : portalContext.afterOutsideRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n    const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, !useInert, useInert) : markOthers(insideElements);\n    return () => {\n      cleanup();\n    };\n  }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards, useInert, tree, getNodeId, getInsideElements]);\n  useModernLayoutEffect(() => {\n    if (disabled || !isHTMLElement(floatingFocusElement)) return;\n    const doc = getDocument$1(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n\n    // Wait for any layout effect state setters to execute to set `tabIndex`.\n    queueMicrotask(() => {\n      const focusableElements = getTabbableElements(floatingFocusElement);\n      const initialFocusValue = initialFocusRef.current;\n      const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n      const focusAlreadyInsideFloatingEl = contains$1(floatingFocusElement, previouslyFocusedElement);\n      if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n        enqueueFocus(elToFocus, {\n          preventScroll: elToFocus === floatingFocusElement\n        });\n      }\n    });\n  }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n  useModernLayoutEffect(() => {\n    if (disabled || !floatingFocusElement) return;\n    const doc = getDocument$1(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n    addPreviouslyFocusedElement(previouslyFocusedElement);\n\n    // Dismissing via outside press should always ignore `returnFocus` to\n    // prevent unwanted scrolling.\n    function onOpenChange(_ref) {\n      let {\n        reason,\n        event,\n        nested\n      } = _ref;\n      if (['hover', 'safe-polygon'].includes(reason) && event.type === 'mouseleave') {\n        preventReturnFocusRef.current = true;\n      }\n      if (reason !== 'outside-press') return;\n      if (nested) {\n        preventReturnFocusRef.current = false;\n      } else if (isVirtualClick(event) || isVirtualPointerEvent(event)) {\n        preventReturnFocusRef.current = false;\n      } else {\n        let isPreventScrollSupported = false;\n        document.createElement('div').focus({\n          get preventScroll() {\n            isPreventScrollSupported = true;\n            return false;\n          }\n        });\n        if (isPreventScrollSupported) {\n          preventReturnFocusRef.current = false;\n        } else {\n          preventReturnFocusRef.current = true;\n        }\n      }\n    }\n    events.on('openchange', onOpenChange);\n    const fallbackEl = doc.createElement('span');\n    fallbackEl.setAttribute('tabindex', '-1');\n    fallbackEl.setAttribute('aria-hidden', 'true');\n    Object.assign(fallbackEl.style, HIDDEN_STYLES);\n    if (isInsidePortal && domReference) {\n      domReference.insertAdjacentElement('afterend', fallbackEl);\n    }\n    function getReturnElement() {\n      if (typeof returnFocusRef.current === 'boolean') {\n        const el = domReference || getPreviouslyFocusedElement();\n        return el && el.isConnected ? el : fallbackEl;\n      }\n      return returnFocusRef.current.current || fallbackEl;\n    }\n    return () => {\n      events.off('openchange', onOpenChange);\n      const activeEl = activeElement(doc);\n      const isFocusInsideFloatingTree = contains$1(floating, activeEl) || tree && getNodeChildren$1(tree.nodesRef.current, getNodeId(), false).some(node => {\n        var _node$context7;\n        return contains$1((_node$context7 = node.context) == null ? void 0 : _node$context7.elements.floating, activeEl);\n      });\n      const returnElement = getReturnElement();\n      queueMicrotask(() => {\n        // This is `returnElement`, if it's tabbable, or its first tabbable child.\n        const tabbableReturnElement = getFirstTabbableElement(returnElement);\n        if (\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n        // If the focus moved somewhere else after mount, avoid returning focus\n        // since it likely entered a different element which should be\n        // respected: https://github.com/floating-ui/floating-ui/issues/2607\n        tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n          tabbableReturnElement.focus({\n            preventScroll: true\n          });\n        }\n        fallbackEl.remove();\n      });\n    };\n  }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, events, tree, isInsidePortal, domReference, getNodeId]);\n  React.useEffect(() => {\n    // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n    // wait for it to complete before resetting the flag.\n    queueMicrotask(() => {\n      preventReturnFocusRef.current = false;\n    });\n    return () => {\n      queueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n    };\n  }, [disabled]);\n\n  // Synchronize the `context` & `modal` value to the FloatingPortal context.\n  // It will decide whether or not it needs to render its own guards.\n  useModernLayoutEffect(() => {\n    if (disabled) return;\n    if (!portalContext) return;\n    portalContext.setFocusManagerState({\n      modal,\n      closeOnFocusOut,\n      open,\n      onOpenChange,\n      domReference\n    });\n    return () => {\n      portalContext.setFocusManagerState(null);\n    };\n  }, [disabled, portalContext, modal, open, onOpenChange, closeOnFocusOut, domReference]);\n  useModernLayoutEffect(() => {\n    if (disabled) return;\n    if (!floatingFocusElement) return;\n    handleTabIndex(floatingFocusElement, orderRef);\n  }, [disabled, floatingFocusElement, orderRef]);\n  function renderDismissButton(location) {\n    if (disabled || !visuallyHiddenDismiss || !modal) {\n      return null;\n    }\n    return /*#__PURE__*/jsx(VisuallyHiddenDismiss, {\n      ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n      onClick: event => onOpenChange(false, event.nativeEvent),\n      children: typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss'\n    });\n  }\n  const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n  return /*#__PURE__*/jsxs(Fragment, {\n    children: [shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"inside\",\n      ref: mergedBeforeGuardRef,\n      onFocus: event => {\n        if (modal) {\n          const els = getTabbableElements();\n          enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n        } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n          preventReturnFocusRef.current = false;\n          if (isOutsideEvent(event, portalContext.portalNode)) {\n            const nextTabbable = getNextTabbable(domReference);\n            nextTabbable == null || nextTabbable.focus();\n          } else {\n            var _portalContext$before;\n            (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n          }\n        }\n      }\n    }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"inside\",\n      ref: mergedAfterGuardRef,\n      onFocus: event => {\n        if (modal) {\n          enqueueFocus(getTabbableElements()[0]);\n        } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n          if (closeOnFocusOut) {\n            preventReturnFocusRef.current = true;\n          }\n          if (isOutsideEvent(event, portalContext.portalNode)) {\n            const prevTabbable = getPreviousTabbable(domReference);\n            prevTabbable == null || prevTabbable.focus();\n          } else {\n            var _portalContext$afterO;\n            (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n          }\n        }\n      }\n    })]\n  });\n}\n\nlet lockCount = 0;\nconst scrollbarProperty = '--floating-ui-scrollbar-width';\nfunction enableScrollLock() {\n  const platform = getPlatform();\n  const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||\n  // iPads can claim to be MacIntel\n  platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n  const bodyStyle = document.body.style;\n  // RTL <body> scrollbar\n  const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n  const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n  const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n  const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n  const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n  bodyStyle.overflow = 'hidden';\n  bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + \"px\");\n  if (scrollbarWidth) {\n    bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n  }\n\n  // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n  // technique has fewer side effects.\n  if (isIOS) {\n    var _window$visualViewpor, _window$visualViewpor2;\n    // iOS 12 does not support `visualViewport`.\n    const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n    const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n    Object.assign(bodyStyle, {\n      position: 'fixed',\n      top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n      left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n      right: '0'\n    });\n  }\n  return () => {\n    Object.assign(bodyStyle, {\n      overflow: '',\n      [paddingProp]: ''\n    });\n    bodyStyle.removeProperty(scrollbarProperty);\n    if (isIOS) {\n      Object.assign(bodyStyle, {\n        position: '',\n        top: '',\n        left: '',\n        right: ''\n      });\n      window.scrollTo(scrollX, scrollY);\n    }\n  };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n  const {\n    lockScroll = false,\n    ...rest\n  } = props;\n  useModernLayoutEffect(() => {\n    if (!lockScroll) return;\n    lockCount++;\n    if (lockCount === 1) {\n      cleanup = enableScrollLock();\n    }\n    return () => {\n      lockCount--;\n      if (lockCount === 0) {\n        cleanup();\n      }\n    };\n  }, [lockScroll]);\n  return /*#__PURE__*/jsx(\"div\", {\n    ref: ref,\n    ...rest,\n    style: {\n      position: 'fixed',\n      overflow: 'auto',\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n      ...rest.style\n    }\n  });\n});\n\nfunction isButtonTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isAnchorTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'A';\n}\nfunction isSpaceIgnored(element) {\n  return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    elements: {\n      domReference\n    }\n  } = context;\n  const {\n    enabled = true,\n    event: eventOption = 'click',\n    toggle = true,\n    ignoreMouse = false,\n    keyboardHandlers = true,\n    stickIfOpen = true\n  } = props;\n  const pointerTypeRef = React.useRef();\n  const didKeyDownRef = React.useRef(false);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      pointerTypeRef.current = event.pointerType;\n    },\n    onMouseDown(event) {\n      const pointerType = pointerTypeRef.current;\n\n      // Ignore all buttons except for the \"main\" button.\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n      if (event.button !== 0) return;\n      if (eventOption === 'click') return;\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        // Prevent stealing focus from the floating element\n        event.preventDefault();\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onClick(event) {\n      const pointerType = pointerTypeRef.current;\n      if (eventOption === 'mousedown' && pointerTypeRef.current) {\n        pointerTypeRef.current = undefined;\n        return;\n      }\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onKeyDown(event) {\n      pointerTypeRef.current = undefined;\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n        return;\n      }\n      if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n        // Prevent scrolling\n        event.preventDefault();\n        didKeyDownRef.current = true;\n      }\n      if (isAnchorTarget(event)) {\n        return;\n      }\n      if (event.key === 'Enter') {\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    },\n    onKeyUp(event) {\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n        return;\n      }\n      if (event.key === ' ' && didKeyDownRef.current) {\n        didKeyDownRef.current = false;\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    }\n  }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n  let offsetX = null;\n  let offsetY = null;\n  let isAutoUpdateEvent = false;\n  return {\n    contextElement: domElement || undefined,\n    getBoundingClientRect() {\n      var _data$dataRef$current;\n      const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n        width: 0,\n        height: 0,\n        x: 0,\n        y: 0\n      };\n      const isXAxis = data.axis === 'x' || data.axis === 'both';\n      const isYAxis = data.axis === 'y' || data.axis === 'both';\n      const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n      let width = domRect.width;\n      let height = domRect.height;\n      let x = domRect.x;\n      let y = domRect.y;\n      if (offsetX == null && data.x && isXAxis) {\n        offsetX = domRect.x - data.x;\n      }\n      if (offsetY == null && data.y && isYAxis) {\n        offsetY = domRect.y - data.y;\n      }\n      x -= offsetX || 0;\n      y -= offsetY || 0;\n      width = 0;\n      height = 0;\n      if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n        width = data.axis === 'y' ? domRect.width : 0;\n        height = data.axis === 'x' ? domRect.height : 0;\n        x = isXAxis && data.x != null ? data.x : x;\n        y = isYAxis && data.y != null ? data.y : y;\n      } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n        height = data.axis === 'x' ? domRect.height : height;\n        width = data.axis === 'y' ? domRect.width : width;\n      }\n      isAutoUpdateEvent = true;\n      return {\n        width,\n        height,\n        x,\n        y,\n        top: y,\n        right: x + width,\n        bottom: y + height,\n        left: x\n      };\n    }\n  };\n}\nfunction isMouseBasedEvent(event) {\n  return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    dataRef,\n    elements: {\n      floating,\n      domReference\n    },\n    refs\n  } = context;\n  const {\n    enabled = true,\n    axis = 'both',\n    x = null,\n    y = null\n  } = props;\n  const initialRef = React.useRef(false);\n  const cleanupListenerRef = React.useRef(null);\n  const [pointerType, setPointerType] = React.useState();\n  const [reactive, setReactive] = React.useState([]);\n  const setReference = useEffectEvent((x, y) => {\n    if (initialRef.current) return;\n\n    // Prevent setting if the open event was not a mouse-like one\n    // (e.g. focus to open, then hover over the reference element).\n    // Only apply if the event exists.\n    if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n      return;\n    }\n    refs.setPositionReference(createVirtualElement(domReference, {\n      x,\n      y,\n      axis,\n      dataRef,\n      pointerType\n    }));\n  });\n  const handleReferenceEnterOrMove = useEffectEvent(event => {\n    if (x != null || y != null) return;\n    if (!open) {\n      setReference(event.clientX, event.clientY);\n    } else if (!cleanupListenerRef.current) {\n      // If there's no cleanup, there's no listener, but we want to ensure\n      // we add the listener if the cursor landed on the floating element and\n      // then back on the reference (i.e. it's interactive).\n      setReactive([]);\n    }\n  });\n\n  // If the pointer is a mouse-like pointer, we want to continue following the\n  // mouse even if the floating element is transitioning out. On touch\n  // devices, this is undesirable because the floating element will move to\n  // the dismissal touch point.\n  const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n  const addListener = React.useCallback(() => {\n    // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n    if (!openCheck || !enabled || x != null || y != null) return;\n    const win = getWindow(floating);\n    function handleMouseMove(event) {\n      const target = getTarget$1(event);\n      if (!contains$1(floating, target)) {\n        setReference(event.clientX, event.clientY);\n      } else {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      }\n    }\n    if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n      win.addEventListener('mousemove', handleMouseMove);\n      const cleanup = () => {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      };\n      cleanupListenerRef.current = cleanup;\n      return cleanup;\n    }\n    refs.setPositionReference(domReference);\n  }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n  React.useEffect(() => {\n    return addListener();\n  }, [addListener, reactive]);\n  React.useEffect(() => {\n    if (enabled && !floating) {\n      initialRef.current = false;\n    }\n  }, [enabled, floating]);\n  React.useEffect(() => {\n    if (!enabled && open) {\n      initialRef.current = true;\n    }\n  }, [enabled, open]);\n  useModernLayoutEffect(() => {\n    if (enabled && (x != null || y != null)) {\n      initialRef.current = false;\n      setReference(x, y);\n    }\n  }, [enabled, x, y, setReference]);\n  const reference = React.useMemo(() => {\n    function setPointerTypeRef(_ref) {\n      let {\n        pointerType\n      } = _ref;\n      setPointerType(pointerType);\n    }\n    return {\n      onPointerDown: setPointerTypeRef,\n      onPointerEnter: setPointerTypeRef,\n      onMouseMove: handleReferenceEnterOrMove,\n      onMouseEnter: handleReferenceEnterOrMove\n    };\n  }, [handleReferenceEnterOrMove]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n  pointerdown: 'onPointerDown',\n  mousedown: 'onMouseDown',\n  click: 'onClick'\n};\nconst captureHandlerKeys = {\n  pointerdown: 'onPointerDownCapture',\n  mousedown: 'onMouseDownCapture',\n  click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n  var _normalizable$escapeK, _normalizable$outside;\n  return {\n    escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n    outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n  };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    elements,\n    dataRef\n  } = context;\n  const {\n    enabled = true,\n    escapeKey = true,\n    outsidePress: unstable_outsidePress = true,\n    outsidePressEvent = 'pointerdown',\n    referencePress = false,\n    referencePressEvent = 'pointerdown',\n    ancestorScroll = false,\n    bubbles,\n    capture\n  } = props;\n  const tree = useFloatingTree();\n  const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n  const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n  const endedOrStartedInsideRef = React.useRef(false);\n  const {\n    escapeKey: escapeKeyBubbles,\n    outsidePress: outsidePressBubbles\n  } = normalizeProp(bubbles);\n  const {\n    escapeKey: escapeKeyCapture,\n    outsidePress: outsidePressCapture\n  } = normalizeProp(capture);\n  const isComposingRef = React.useRef(false);\n  const closeOnEscapeKeyDown = useEffectEvent(event => {\n    var _dataRef$current$floa;\n    if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n      return;\n    }\n\n    // Wait until IME is settled. Pressing `Escape` while composing should\n    // close the compose menu, but not the floating element.\n    if (isComposingRef.current) {\n      return;\n    }\n    const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n    const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n    if (!escapeKeyBubbles) {\n      event.stopPropagation();\n      if (children.length > 0) {\n        let shouldDismiss = true;\n        children.forEach(child => {\n          var _child$context;\n          if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n            shouldDismiss = false;\n            return;\n          }\n        });\n        if (!shouldDismiss) {\n          return;\n        }\n      }\n    }\n    onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n  });\n  const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n    var _getTarget2;\n    const callback = () => {\n      var _getTarget;\n      closeOnEscapeKeyDown(event);\n      (_getTarget = getTarget$1(event)) == null || _getTarget.removeEventListener('keydown', callback);\n    };\n    (_getTarget2 = getTarget$1(event)) == null || _getTarget2.addEventListener('keydown', callback);\n  });\n  const closeOnPressOutside = useEffectEvent(event => {\n    var _dataRef$current$floa2;\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = dataRef.current.insideReactTree;\n    dataRef.current.insideReactTree = false;\n\n    // When click outside is lazy (`click` event), handle dragging.\n    // Don't close if:\n    // - The click started inside the floating element.\n    // - The click ended inside the floating element.\n    const endedOrStartedInside = endedOrStartedInsideRef.current;\n    endedOrStartedInsideRef.current = false;\n    if (outsidePressEvent === 'click' && endedOrStartedInside) {\n      return;\n    }\n    if (insideReactTree) {\n      return;\n    }\n    if (typeof outsidePress === 'function' && !outsidePress(event)) {\n      return;\n    }\n    const target = getTarget$1(event);\n    const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n    const markers = getDocument$1(elements.floating).querySelectorAll(inertSelector);\n    let targetRootAncestor = isElement(target) ? target : null;\n    while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n      const nextParent = getParentNode(targetRootAncestor);\n      if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n        break;\n      }\n      targetRootAncestor = nextParent;\n    }\n\n    // Check if the click occurred on a third-party element injected after the\n    // floating element rendered.\n    if (markers.length && isElement(target) && !isRootElement(target) &&\n    // Clicked on a direct ancestor (e.g. FloatingOverlay).\n    !contains$1(target, elements.floating) &&\n    // If the target root element contains none of the markers, then the\n    // element was injected after the floating element rendered.\n    Array.from(markers).every(marker => !contains$1(targetRootAncestor, marker))) {\n      return;\n    }\n\n    // Check if the click occurred on the scrollbar\n    if (isHTMLElement(target) && floating) {\n      const lastTraversableNode = isLastTraversableNode(target);\n      const style = getComputedStyle(target);\n      const scrollRe = /auto|scroll/;\n      const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n      const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n      const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n      const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n      const isRTL = style.direction === 'rtl';\n\n      // Check click position relative to scrollbar.\n      // In some browsers it is possible to change the <body> (or window)\n      // scrollbar to the left side, but is very rare and is difficult to\n      // check for. Plus, for modal dialogs with backdrops, it is more\n      // important that the backdrop is checked but not so much the window.\n      const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n      const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n      if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n        return;\n      }\n    }\n    const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n    const targetIsInsideChildren = tree && getNodeChildren$1(tree.nodesRef.current, nodeId).some(node => {\n      var _node$context;\n      return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n    });\n    if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n      return;\n    }\n    const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n    if (children.length > 0) {\n      let shouldDismiss = true;\n      children.forEach(child => {\n        var _child$context2;\n        if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n          shouldDismiss = false;\n          return;\n        }\n      });\n      if (!shouldDismiss) {\n        return;\n      }\n    }\n    onOpenChange(false, event, 'outside-press');\n  });\n  const closeOnPressOutsideCapture = useEffectEvent(event => {\n    var _getTarget4;\n    const callback = () => {\n      var _getTarget3;\n      closeOnPressOutside(event);\n      (_getTarget3 = getTarget$1(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n    };\n    (_getTarget4 = getTarget$1(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n  });\n  React.useEffect(() => {\n    if (!open || !enabled) {\n      return;\n    }\n    dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n    dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n    let compositionTimeout = -1;\n    function onScroll(event) {\n      onOpenChange(false, event, 'ancestor-scroll');\n    }\n    function handleCompositionStart() {\n      window.clearTimeout(compositionTimeout);\n      isComposingRef.current = true;\n    }\n    function handleCompositionEnd() {\n      // Safari fires `compositionend` before `keydown`, so we need to wait\n      // until the next tick to set `isComposing` to `false`.\n      // https://bugs.webkit.org/show_bug.cgi?id=165004\n      compositionTimeout = window.setTimeout(() => {\n        isComposingRef.current = false;\n      },\n      // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n      // Only apply to WebKit for the test to remain 0ms.\n      isWebKit() ? 5 : 0);\n    }\n    const doc = getDocument$1(elements.floating);\n    if (escapeKey) {\n      doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n      doc.addEventListener('compositionstart', handleCompositionStart);\n      doc.addEventListener('compositionend', handleCompositionEnd);\n    }\n    outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n    let ancestors = [];\n    if (ancestorScroll) {\n      if (isElement(elements.domReference)) {\n        ancestors = getOverflowAncestors(elements.domReference);\n      }\n      if (isElement(elements.floating)) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n      }\n      if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n      }\n    }\n\n    // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n    ancestors = ancestors.filter(ancestor => {\n      var _doc$defaultView;\n      return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n    });\n    ancestors.forEach(ancestor => {\n      ancestor.addEventListener('scroll', onScroll, {\n        passive: true\n      });\n    });\n    return () => {\n      if (escapeKey) {\n        doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n        doc.removeEventListener('compositionstart', handleCompositionStart);\n        doc.removeEventListener('compositionend', handleCompositionEnd);\n      }\n      outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n      ancestors.forEach(ancestor => {\n        ancestor.removeEventListener('scroll', onScroll);\n      });\n      window.clearTimeout(compositionTimeout);\n    };\n  }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n  React.useEffect(() => {\n    dataRef.current.insideReactTree = false;\n  }, [dataRef, outsidePress, outsidePressEvent]);\n  const reference = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    ...(referencePress && {\n      [bubbleHandlerKeys[referencePressEvent]]: event => {\n        onOpenChange(false, event.nativeEvent, 'reference-press');\n      },\n      ...(referencePressEvent !== 'click' && {\n        onClick(event) {\n          onOpenChange(false, event.nativeEvent, 'reference-press');\n        }\n      })\n    })\n  }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n  const floating = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    onMouseDown() {\n      endedOrStartedInsideRef.current = true;\n    },\n    onMouseUp() {\n      endedOrStartedInsideRef.current = true;\n    },\n    [captureHandlerKeys[outsidePressEvent]]: () => {\n      dataRef.current.insideReactTree = true;\n    }\n  }), [closeOnEscapeKeyDown, outsidePressEvent, dataRef]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n  const {\n    open = false,\n    onOpenChange: onOpenChangeProp,\n    elements: elementsProp\n  } = options;\n  const floatingId = useId();\n  const dataRef = React.useRef({});\n  const [events] = React.useState(() => createEventEmitter());\n  const nested = useFloatingParentNodeId() != null;\n  if (process.env.NODE_ENV !== \"production\") {\n    const optionDomReference = elementsProp.reference;\n    if (optionDomReference && !isElement(optionDomReference)) {\n      error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n    }\n  }\n  const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n  const onOpenChange = useEffectEvent((open, event, reason) => {\n    dataRef.current.openEvent = open ? event : undefined;\n    events.emit('openchange', {\n      open,\n      event,\n      reason,\n      nested\n    });\n    onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n  });\n  const refs = React.useMemo(() => ({\n    setPositionReference\n  }), []);\n  const elements = React.useMemo(() => ({\n    reference: positionReference || elementsProp.reference || null,\n    floating: elementsProp.floating || null,\n    domReference: elementsProp.reference\n  }), [positionReference, elementsProp.reference, elementsProp.floating]);\n  return React.useMemo(() => ({\n    dataRef,\n    open,\n    onOpenChange,\n    elements,\n    events,\n    floatingId,\n    refs\n  }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    nodeId\n  } = options;\n  const internalRootContext = useFloatingRootContext({\n    ...options,\n    elements: {\n      reference: null,\n      floating: null,\n      ...options.elements\n    }\n  });\n  const rootContext = options.rootContext || internalRootContext;\n  const computedElements = rootContext.elements;\n  const [_domReference, setDomReference] = React.useState(null);\n  const [positionReference, _setPositionReference] = React.useState(null);\n  const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n  const domReference = optionDomReference || _domReference;\n  const domReferenceRef = React.useRef(null);\n  const tree = useFloatingTree();\n  useModernLayoutEffect(() => {\n    if (domReference) {\n      domReferenceRef.current = domReference;\n    }\n  }, [domReference]);\n  const position = useFloating$1({\n    ...options,\n    elements: {\n      ...computedElements,\n      ...(positionReference && {\n        reference: positionReference\n      })\n    }\n  });\n  const setPositionReference = React.useCallback(node => {\n    const computedPositionReference = isElement(node) ? {\n      getBoundingClientRect: () => node.getBoundingClientRect(),\n      getClientRects: () => node.getClientRects(),\n      contextElement: node\n    } : node;\n    // Store the positionReference in state if the DOM reference is specified externally via the\n    // `elements.reference` option. This ensures that it won't be overridden on future renders.\n    _setPositionReference(computedPositionReference);\n    position.refs.setReference(computedPositionReference);\n  }, [position.refs]);\n  const setReference = React.useCallback(node => {\n    if (isElement(node) || node === null) {\n      domReferenceRef.current = node;\n      setDomReference(node);\n    }\n\n    // Backwards-compatibility for passing a virtual element to `reference`\n    // after it has set the DOM reference.\n    if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n    // Don't allow setting virtual elements using the old technique back to\n    // `null` to support `positionReference` + an unstable `reference`\n    // callback ref.\n    node !== null && !isElement(node)) {\n      position.refs.setReference(node);\n    }\n  }, [position.refs]);\n  const refs = React.useMemo(() => ({\n    ...position.refs,\n    setReference,\n    setPositionReference,\n    domReference: domReferenceRef\n  }), [position.refs, setReference, setPositionReference]);\n  const elements = React.useMemo(() => ({\n    ...position.elements,\n    domReference: domReference\n  }), [position.elements, domReference]);\n  const context = React.useMemo(() => ({\n    ...position,\n    ...rootContext,\n    refs,\n    elements,\n    nodeId\n  }), [position, refs, elements, nodeId, rootContext]);\n  useModernLayoutEffect(() => {\n    rootContext.dataRef.current.floatingContext = context;\n    const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n    if (node) {\n      node.context = context;\n    }\n  });\n  return React.useMemo(() => ({\n    ...position,\n    context,\n    refs,\n    elements\n  }), [position, refs, elements, context]);\n}\n\nfunction isMacSafari() {\n  return isMac() && isSafari();\n}\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    visibleOnly = true\n  } = props;\n  const blockFocusRef = React.useRef(false);\n  const timeoutRef = React.useRef(-1);\n  const keyboardModalityRef = React.useRef(true);\n  React.useEffect(() => {\n    if (!enabled) return;\n    const win = getWindow(elements.domReference);\n\n    // If the reference was focused and the user left the tab/window, and the\n    // floating element was not open, the focus should be blocked when they\n    // return to the tab/window.\n    function onBlur() {\n      if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument$1(elements.domReference))) {\n        blockFocusRef.current = true;\n      }\n    }\n    function onKeyDown() {\n      keyboardModalityRef.current = true;\n    }\n    function onPointerDown() {\n      keyboardModalityRef.current = false;\n    }\n    win.addEventListener('blur', onBlur);\n    if (isMacSafari()) {\n      win.addEventListener('keydown', onKeyDown, true);\n      win.addEventListener('pointerdown', onPointerDown, true);\n    }\n    return () => {\n      win.removeEventListener('blur', onBlur);\n      if (isMacSafari()) {\n        win.removeEventListener('keydown', onKeyDown, true);\n        win.removeEventListener('pointerdown', onPointerDown, true);\n      }\n    };\n  }, [elements.domReference, open, enabled]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        reason\n      } = _ref;\n      if (reason === 'reference-press' || reason === 'escape-key') {\n        blockFocusRef.current = true;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [events, enabled]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeoutIfSet(timeoutRef);\n    };\n  }, []);\n  const reference = React.useMemo(() => ({\n    onMouseLeave() {\n      blockFocusRef.current = false;\n    },\n    onFocus(event) {\n      if (blockFocusRef.current) return;\n      const target = getTarget$1(event.nativeEvent);\n      if (visibleOnly && isElement(target)) {\n        // Safari fails to match `:focus-visible` if focus was initially\n        // outside the document.\n        if (isMacSafari() && !event.relatedTarget) {\n          if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n            return;\n          }\n        } else if (!matchesFocusVisible(target)) {\n          return;\n        }\n      }\n      onOpenChange(true, event.nativeEvent, 'focus');\n    },\n    onBlur(event) {\n      blockFocusRef.current = false;\n      const relatedTarget = event.relatedTarget;\n      const nativeEvent = event.nativeEvent;\n\n      // Hit the non-modal focus management portal guard. Focus will be\n      // moved into the floating element immediately after.\n      const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n      // Wait for the window blur listener to fire.\n      timeoutRef.current = window.setTimeout(() => {\n        var _dataRef$current$floa;\n        const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n        // Focus left the page, keep it open.\n        if (!relatedTarget && activeEl === elements.domReference) return;\n\n        // When focusing the reference element (e.g. regular click), then\n        // clicking into the floating element, prevent it from hiding.\n        // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n        // We can not rely on relatedTarget to point to the correct element\n        // as it will only point to the shadow host of the newly focused element\n        // and not the element that actually has received focus if it is located\n        // inside a shadow root.\n        if (contains$1((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains$1(elements.domReference, activeEl) || movedToFocusGuard) {\n          return;\n        }\n        onOpenChange(false, nativeEvent, 'focus');\n      });\n    }\n  }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n  const map = new Map();\n  const isItem = elementKey === 'item';\n  let domUserProps = userProps;\n  if (isItem && userProps) {\n    const {\n      [ACTIVE_KEY]: _,\n      [SELECTED_KEY]: __,\n      ...validProps\n    } = userProps;\n    domUserProps = validProps;\n  }\n  return {\n    ...(elementKey === 'floating' && {\n      tabIndex: -1,\n      [FOCUSABLE_ATTRIBUTE]: ''\n    }),\n    ...domUserProps,\n    ...propsList.map(value => {\n      const propsOrGetProps = value ? value[elementKey] : null;\n      if (typeof propsOrGetProps === 'function') {\n        return userProps ? propsOrGetProps(userProps) : null;\n      }\n      return propsOrGetProps;\n    }).concat(userProps).reduce((acc, props) => {\n      if (!props) {\n        return acc;\n      }\n      Object.entries(props).forEach(_ref => {\n        let [key, value] = _ref;\n        if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n          return;\n        }\n        if (key.indexOf('on') === 0) {\n          if (!map.has(key)) {\n            map.set(key, []);\n          }\n          if (typeof value === 'function') {\n            var _map$get;\n            (_map$get = map.get(key)) == null || _map$get.push(value);\n            acc[key] = function () {\n              var _map$get2;\n              for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n                args[_key] = arguments[_key];\n              }\n              return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n            };\n          }\n        } else {\n          acc[key] = value;\n        }\n      });\n      return acc;\n    }, {})\n  };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n  if (propsList === void 0) {\n    propsList = [];\n  }\n  const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n  const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n  const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n  const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  referenceDeps);\n  const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  floatingDeps);\n  const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  itemDeps);\n  return React.useMemo(() => ({\n    getReferenceProps,\n    getFloatingProps,\n    getItemProps\n  }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nconst ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n  switch (orientation) {\n    case 'vertical':\n      return vertical;\n    case 'horizontal':\n      return horizontal;\n    default:\n      return vertical || horizontal;\n  }\n}\nfunction isMainOrientationKey(key, orientation) {\n  const vertical = key === ARROW_UP || key === ARROW_DOWN;\n  const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n  const vertical = key === ARROW_DOWN;\n  const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  const horizontal = key === ARROW_DOWN;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n  const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n  const horizontal = key === ARROW_UP;\n  if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n    return key === ESCAPE;\n  }\n  return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n  const {\n    open,\n    onOpenChange,\n    elements,\n    floatingId\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onNavigate: unstable_onNavigate = () => {},\n    enabled = true,\n    selectedIndex = null,\n    allowEscape = false,\n    loop = false,\n    nested = false,\n    rtl = false,\n    virtual = false,\n    focusItemOnOpen = 'auto',\n    focusItemOnHover = true,\n    openOnArrowKeyDown = true,\n    disabledIndices = undefined,\n    orientation = 'vertical',\n    parentOrientation,\n    cols = 1,\n    scrollItemIntoView = true,\n    virtualItemRef,\n    itemSizes,\n    dense = false\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (allowEscape) {\n      if (!loop) {\n        warn('`useListNavigation` looping must be enabled to allow escaping.');\n      }\n      if (!virtual) {\n        warn('`useListNavigation` must be virtual to allow escaping.');\n      }\n    }\n    if (orientation === 'vertical' && cols > 1) {\n      warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n    }\n  }\n  const floatingFocusElement = getFloatingFocusElement(elements.floating);\n  const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n  const parentId = useFloatingParentNodeId();\n  const tree = useFloatingTree();\n  useModernLayoutEffect(() => {\n    context.dataRef.current.orientation = orientation;\n  }, [context, orientation]);\n  const onNavigate = useEffectEvent(() => {\n    unstable_onNavigate(indexRef.current === -1 ? null : indexRef.current);\n  });\n  const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n  const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n  const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n  const keyRef = React.useRef(null);\n  const isPointerModalityRef = React.useRef(true);\n  const previousOnNavigateRef = React.useRef(onNavigate);\n  const previousMountedRef = React.useRef(!!elements.floating);\n  const previousOpenRef = React.useRef(open);\n  const forceSyncFocusRef = React.useRef(false);\n  const forceScrollIntoViewRef = React.useRef(false);\n  const disabledIndicesRef = useLatestRef(disabledIndices);\n  const latestOpenRef = useLatestRef(open);\n  const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n  const selectedIndexRef = useLatestRef(selectedIndex);\n  const [activeId, setActiveId] = React.useState();\n  const [virtualId, setVirtualId] = React.useState();\n  const focusItem = useEffectEvent(() => {\n    function runFocus(item) {\n      if (virtual) {\n        var _item$id;\n        if ((_item$id = item.id) != null && _item$id.endsWith('-fui-option')) {\n          item.id = floatingId + \"-\" + Math.random().toString(16).slice(2, 10);\n        }\n        setActiveId(item.id);\n        tree == null || tree.events.emit('virtualfocus', item);\n        if (virtualItemRef) {\n          virtualItemRef.current = item;\n        }\n      } else {\n        enqueueFocus(item, {\n          sync: forceSyncFocusRef.current,\n          preventScroll: true\n        });\n      }\n    }\n    const initialItem = listRef.current[indexRef.current];\n    const forceScrollIntoView = forceScrollIntoViewRef.current;\n    if (initialItem) {\n      runFocus(initialItem);\n    }\n    const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n    scheduler(() => {\n      const waitedItem = listRef.current[indexRef.current] || initialItem;\n      if (!waitedItem) return;\n      if (!initialItem) {\n        runFocus(waitedItem);\n      }\n      const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n      const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n      if (shouldScrollIntoView) {\n        // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n        // by all browsers.\n        waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n          block: 'nearest',\n          inline: 'nearest'\n        } : scrollIntoViewOptions);\n      }\n    });\n  });\n\n  // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n  // element. Also, reset `activeIndex` upon closing the floating element.\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (focusItemOnOpenRef.current && selectedIndex != null) {\n        // Regardless of the pointer modality, we want to ensure the selected\n        // item comes into view when the floating element is opened.\n        forceScrollIntoViewRef.current = true;\n        indexRef.current = selectedIndex;\n        onNavigate();\n      }\n    } else if (previousMountedRef.current) {\n      // Since the user can specify `onNavigate` conditionally\n      // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n      // we store and call the previous function.\n      indexRef.current = -1;\n      previousOnNavigateRef.current();\n    }\n  }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n  // Sync `activeIndex` to be the focused item while the floating element is\n  // open.\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!open) return;\n    if (!elements.floating) return;\n    if (activeIndex == null) {\n      forceSyncFocusRef.current = false;\n      if (selectedIndexRef.current != null) {\n        return;\n      }\n\n      // Reset while the floating element was open (e.g. the list changed).\n      if (previousMountedRef.current) {\n        indexRef.current = -1;\n        focusItem();\n      }\n\n      // Initial sync.\n      if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n        let runs = 0;\n        const waitForListPopulated = () => {\n          if (listRef.current[0] == null) {\n            // Avoid letting the browser paint if possible on the first try,\n            // otherwise use rAF. Don't try more than twice, since something\n            // is wrong otherwise.\n            if (runs < 2) {\n              const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n              scheduler(waitForListPopulated);\n            }\n            runs++;\n          } else {\n            indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n            keyRef.current = null;\n            onNavigate();\n          }\n        };\n        waitForListPopulated();\n      }\n    } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n      indexRef.current = activeIndex;\n      focusItem();\n      forceScrollIntoViewRef.current = false;\n    }\n  }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n  // Ensure the parent floating element has focus when a nested child closes\n  // to allow arrow key navigation to work after the pointer leaves the child.\n  useModernLayoutEffect(() => {\n    var _nodes$find;\n    if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n      return;\n    }\n    const nodes = tree.nodesRef.current;\n    const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n    const activeEl = activeElement(getDocument$1(elements.floating));\n    const treeContainsActiveEl = nodes.some(node => node.context && contains$1(node.context.elements.floating, activeEl));\n    if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n      parent.focus({\n        preventScroll: true\n      });\n    }\n  }, [enabled, elements.floating, tree, parentId, virtual]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!tree) return;\n    if (!virtual) return;\n    if (parentId) return;\n    function handleVirtualFocus(item) {\n      setVirtualId(item.id);\n      if (virtualItemRef) {\n        virtualItemRef.current = item;\n      }\n    }\n    tree.events.on('virtualfocus', handleVirtualFocus);\n    return () => {\n      tree.events.off('virtualfocus', handleVirtualFocus);\n    };\n  }, [enabled, tree, virtual, parentId, virtualItemRef]);\n  useModernLayoutEffect(() => {\n    previousOnNavigateRef.current = onNavigate;\n    previousOpenRef.current = open;\n    previousMountedRef.current = !!elements.floating;\n  });\n  useModernLayoutEffect(() => {\n    if (!open) {\n      keyRef.current = null;\n      focusItemOnOpenRef.current = focusItemOnOpen;\n    }\n  }, [open, focusItemOnOpen]);\n  const hasActiveIndex = activeIndex != null;\n  const item = React.useMemo(() => {\n    function syncCurrentTarget(currentTarget) {\n      if (!latestOpenRef.current) return;\n      const index = listRef.current.indexOf(currentTarget);\n      if (index !== -1 && indexRef.current !== index) {\n        indexRef.current = index;\n        onNavigate();\n      }\n    }\n    const props = {\n      onFocus(_ref) {\n        let {\n          currentTarget\n        } = _ref;\n        forceSyncFocusRef.current = true;\n        syncCurrentTarget(currentTarget);\n      },\n      onClick: _ref2 => {\n        let {\n          currentTarget\n        } = _ref2;\n        return currentTarget.focus({\n          preventScroll: true\n        });\n      },\n      // Safari\n      onMouseMove(_ref3) {\n        let {\n          currentTarget\n        } = _ref3;\n        forceSyncFocusRef.current = true;\n        forceScrollIntoViewRef.current = false;\n        if (focusItemOnHover) {\n          syncCurrentTarget(currentTarget);\n        }\n      },\n      onPointerLeave(_ref4) {\n        let {\n          pointerType\n        } = _ref4;\n        if (!isPointerModalityRef.current || pointerType === 'touch') {\n          return;\n        }\n        forceSyncFocusRef.current = true;\n        if (!focusItemOnHover) {\n          return;\n        }\n        indexRef.current = -1;\n        onNavigate();\n        if (!virtual) {\n          var _floatingFocusElement;\n          (_floatingFocusElement = floatingFocusElementRef.current) == null || _floatingFocusElement.focus({\n            preventScroll: true\n          });\n        }\n      }\n    };\n    return props;\n  }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, virtual]);\n  const getParentOrientation = React.useCallback(() => {\n    var _tree$nodesRef$curren;\n    return parentOrientation != null ? parentOrientation : tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.dataRef) == null ? void 0 : _tree$nodesRef$curren.current.orientation;\n  }, [parentId, tree, parentOrientation]);\n  const commonOnKeyDown = useEffectEvent(event => {\n    isPointerModalityRef.current = false;\n    forceSyncFocusRef.current = true;\n\n    // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n    // don't appear to suffer from this. `event.isComposing` is avoided due to\n    // Safari not supporting it properly (although it's not needed in the first\n    // place for Safari, just avoiding any possible issues).\n    if (event.which === 229) {\n      return;\n    }\n\n    // If the floating element is animating out, ignore navigation. Otherwise,\n    // the `activeIndex` gets set to 0 despite not being open so the next time\n    // the user ArrowDowns, the first item won't be focused.\n    if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n      return;\n    }\n    if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n      // If the nested list's close key is also the parent navigation key,\n      // let the parent navigate. Otherwise, stop propagating the event.\n      if (!isMainOrientationKey(event.key, getParentOrientation())) {\n        stopEvent(event);\n      }\n      onOpenChange(false, event.nativeEvent, 'list-navigation');\n      if (isHTMLElement(elements.domReference)) {\n        if (virtual) {\n          tree == null || tree.events.emit('virtualfocus', elements.domReference);\n        } else {\n          elements.domReference.focus();\n        }\n      }\n      return;\n    }\n    const currentIndex = indexRef.current;\n    const minIndex = getMinListIndex(listRef, disabledIndices);\n    const maxIndex = getMaxListIndex(listRef, disabledIndices);\n    if (!typeableComboboxReference) {\n      if (event.key === 'Home') {\n        stopEvent(event);\n        indexRef.current = minIndex;\n        onNavigate();\n      }\n      if (event.key === 'End') {\n        stopEvent(event);\n        indexRef.current = maxIndex;\n        onNavigate();\n      }\n    }\n\n    // Grid navigation.\n    if (cols > 1) {\n      const sizes = itemSizes || Array.from({\n        length: listRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = createGridCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const index = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, index) => isListIndexDisabled(listRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction\n        // we're moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n        stopEvent: true\n      })];\n      if (index != null) {\n        indexRef.current = index;\n        onNavigate();\n      }\n      if (orientation === 'both') {\n        return;\n      }\n    }\n    if (isMainOrientationKey(event.key, orientation)) {\n      stopEvent(event);\n\n      // Reset the index if no item is focused.\n      if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n        indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n        onNavigate();\n        return;\n      }\n      if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n        if (loop) {\n          indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          }));\n        }\n      } else {\n        if (loop) {\n          indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          }));\n        }\n      }\n      if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n        indexRef.current = -1;\n      }\n      onNavigate();\n    }\n  });\n  const ariaActiveDescendantProp = React.useMemo(() => {\n    return virtual && open && hasActiveIndex && {\n      'aria-activedescendant': virtualId || activeId\n    };\n  }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n  const floating = React.useMemo(() => {\n    return {\n      'aria-orientation': orientation === 'both' ? undefined : orientation,\n      ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n      onKeyDown: commonOnKeyDown,\n      onPointerMove() {\n        isPointerModalityRef.current = true;\n      }\n    };\n  }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n  const reference = React.useMemo(() => {\n    function checkVirtualMouse(event) {\n      if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    function checkVirtualPointer(event) {\n      // `pointerdown` fires first, reset the state then perform the checks.\n      focusItemOnOpenRef.current = focusItemOnOpen;\n      if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    return {\n      ...ariaActiveDescendantProp,\n      onKeyDown(event) {\n        isPointerModalityRef.current = false;\n        const isArrowKey = event.key.startsWith('Arrow');\n        const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n        const isMoveKey = isArrowKey || isHomeOrEndKey;\n        const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n        const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl, cols);\n        const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n        const isMainKey = isMainOrientationKey(event.key, orientation);\n        const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n        if (virtual && open) {\n          const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n          const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n          if (isMoveKey && deepestNode && virtualItemRef) {\n            const eventObject = new KeyboardEvent('keydown', {\n              key: event.key,\n              bubbles: true\n            });\n            if (isCrossOpenKey || isCrossCloseKey) {\n              var _deepestNode$context, _deepestNode$context2;\n              const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n              const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n              if (dispatchItem) {\n                stopEvent(event);\n                dispatchItem.dispatchEvent(eventObject);\n                setVirtualId(undefined);\n              }\n            }\n            if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n              if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n                var _deepestNode$context$;\n                stopEvent(event);\n                (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n                return;\n              }\n            }\n          }\n          return commonOnKeyDown(event);\n        }\n        // If a floating element should not open on arrow key down, avoid\n        // setting `activeIndex` while it's closed.\n        if (!open && !openOnArrowKeyDown && isArrowKey) {\n          return;\n        }\n        if (isNavigationKey) {\n          const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n          keyRef.current = nested && isParentMainKey ? null : event.key;\n        }\n        if (nested) {\n          if (isParentCrossOpenKey) {\n            stopEvent(event);\n            if (open) {\n              indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n              onNavigate();\n            } else {\n              onOpenChange(true, event.nativeEvent, 'list-navigation');\n            }\n          }\n          return;\n        }\n        if (isMainKey) {\n          if (selectedIndex != null) {\n            indexRef.current = selectedIndex;\n          }\n          stopEvent(event);\n          if (!open && openOnArrowKeyDown) {\n            onOpenChange(true, event.nativeEvent, 'list-navigation');\n          } else {\n            commonOnKeyDown(event);\n          }\n          if (open) {\n            onNavigate();\n          }\n        }\n      },\n      onFocus() {\n        if (open && !virtual) {\n          indexRef.current = -1;\n          onNavigate();\n        }\n      },\n      onPointerDown: checkVirtualPointer,\n      onPointerEnter: checkVirtualPointer,\n      onMouseDown: checkVirtualMouse,\n      onClick: checkVirtualMouse\n    };\n  }, [activeId, ariaActiveDescendantProp, cols, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n  var _elements$domReferenc, _componentRoleToAriaR;\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements,\n    floatingId: defaultFloatingId\n  } = context;\n  const {\n    enabled = true,\n    role = 'dialog'\n  } = props;\n  const defaultReferenceId = useId();\n  const referenceId = ((_elements$domReferenc = elements.domReference) == null ? void 0 : _elements$domReferenc.id) || defaultReferenceId;\n  const floatingId = React.useMemo(() => {\n    var _getFloatingFocusElem;\n    return ((_getFloatingFocusElem = getFloatingFocusElement(elements.floating)) == null ? void 0 : _getFloatingFocusElem.id) || defaultFloatingId;\n  }, [elements.floating, defaultFloatingId]);\n  const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n  const parentId = useFloatingParentNodeId();\n  const isNested = parentId != null;\n  const reference = React.useMemo(() => {\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return {\n        [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n      };\n    }\n    return {\n      'aria-expanded': open ? 'true' : 'false',\n      'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n      'aria-controls': open ? floatingId : undefined,\n      ...(ariaRole === 'listbox' && {\n        role: 'combobox'\n      }),\n      ...(ariaRole === 'menu' && {\n        id: referenceId\n      }),\n      ...(ariaRole === 'menu' && isNested && {\n        role: 'menuitem'\n      }),\n      ...(role === 'select' && {\n        'aria-autocomplete': 'none'\n      }),\n      ...(role === 'combobox' && {\n        'aria-autocomplete': 'list'\n      })\n    };\n  }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n  const floating = React.useMemo(() => {\n    const floatingProps = {\n      id: floatingId,\n      ...(ariaRole && {\n        role: ariaRole\n      })\n    };\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return floatingProps;\n    }\n    return {\n      ...floatingProps,\n      ...(ariaRole === 'menu' && {\n        'aria-labelledby': referenceId\n      })\n    };\n  }, [ariaRole, floatingId, referenceId, role]);\n  const item = React.useCallback(_ref => {\n    let {\n      active,\n      selected\n    } = _ref;\n    const commonProps = {\n      role: 'option',\n      ...(active && {\n        id: floatingId + \"-fui-option\"\n      })\n    };\n\n    // For `menu`, we are unable to tell if the item is a `menuitemradio`\n    // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n    // avoid defaulting to `menuitem` as it may overwrite custom role props.\n    switch (role) {\n      case 'select':\n      case 'combobox':\n        return {\n          ...commonProps,\n          'aria-selected': selected\n        };\n    }\n    return {};\n  }, [floatingId, role]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n  return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n  const [isMounted, setIsMounted] = React.useState(open);\n  if (open && !isMounted) {\n    setIsMounted(true);\n  }\n  React.useEffect(() => {\n    if (!open && isMounted) {\n      const timeout = setTimeout(() => setIsMounted(false), durationMs);\n      return () => clearTimeout(timeout);\n    }\n  }, [open, isMounted, durationMs]);\n  return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements: {\n      floating\n    }\n  } = context;\n  const {\n    duration = 250\n  } = props;\n  const isNumberDuration = typeof duration === 'number';\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [status, setStatus] = React.useState('unmounted');\n  const isMounted = useDelayUnmount(open, closeDuration);\n  if (!isMounted && status === 'close') {\n    setStatus('unmounted');\n  }\n  useModernLayoutEffect(() => {\n    if (!floating) return;\n    if (open) {\n      setStatus('initial');\n      const frame = requestAnimationFrame(() => {\n        // Ensure it opens before paint. With `FloatingDelayGroup`,\n        // this avoids a flicker when moving between floating elements\n        // to ensure one is always open with no missing frames.\n        ReactDOM.flushSync(() => {\n          setStatus('open');\n        });\n      });\n      return () => {\n        cancelAnimationFrame(frame);\n      };\n    }\n    setStatus('close');\n  }, [open, floating]);\n  return {\n    isMounted,\n    status\n  };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    initial: unstable_initial = {\n      opacity: 0\n    },\n    open: unstable_open,\n    close: unstable_close,\n    common: unstable_common,\n    duration = 250\n  } = props;\n  const placement = context.placement;\n  const side = placement.split('-')[0];\n  const fnArgs = React.useMemo(() => ({\n    side,\n    placement\n  }), [side, placement]);\n  const isNumberDuration = typeof duration === 'number';\n  const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [styles, setStyles] = React.useState(() => ({\n    ...execWithArgsOrReturn(unstable_common, fnArgs),\n    ...execWithArgsOrReturn(unstable_initial, fnArgs)\n  }));\n  const {\n    isMounted,\n    status\n  } = useTransitionStatus(context, {\n    duration\n  });\n  const initialRef = useLatestRef(unstable_initial);\n  const openRef = useLatestRef(unstable_open);\n  const closeRef = useLatestRef(unstable_close);\n  const commonRef = useLatestRef(unstable_common);\n  useModernLayoutEffect(() => {\n    const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n    const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n    const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n    const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n      acc[key] = '';\n      return acc;\n    }, {});\n    if (status === 'initial') {\n      setStyles(styles => ({\n        transitionProperty: styles.transitionProperty,\n        ...commonStyles,\n        ...initialStyles\n      }));\n    }\n    if (status === 'open') {\n      setStyles({\n        transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: openDuration + \"ms\",\n        ...commonStyles,\n        ...openStyles\n      });\n    }\n    if (status === 'close') {\n      const styles = closeStyles || initialStyles;\n      setStyles({\n        transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: closeDuration + \"ms\",\n        ...commonStyles,\n        ...styles\n      });\n    }\n  }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n  return {\n    isMounted,\n    styles\n  };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n  var _ref;\n  const {\n    open,\n    dataRef\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onMatch: unstable_onMatch,\n    onTypingChange: unstable_onTypingChange,\n    enabled = true,\n    findMatch = null,\n    resetMs = 750,\n    ignoreKeys = [],\n    selectedIndex = null\n  } = props;\n  const timeoutIdRef = React.useRef(-1);\n  const stringRef = React.useRef('');\n  const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n  const matchIndexRef = React.useRef(null);\n  const onMatch = useEffectEvent(unstable_onMatch);\n  const onTypingChange = useEffectEvent(unstable_onTypingChange);\n  const findMatchRef = useLatestRef(findMatch);\n  const ignoreKeysRef = useLatestRef(ignoreKeys);\n  useModernLayoutEffect(() => {\n    if (open) {\n      clearTimeoutIfSet(timeoutIdRef);\n      matchIndexRef.current = null;\n      stringRef.current = '';\n    }\n  }, [open]);\n  useModernLayoutEffect(() => {\n    // Sync arrow key navigation but not typeahead navigation.\n    if (open && stringRef.current === '') {\n      var _ref2;\n      prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n    }\n  }, [open, selectedIndex, activeIndex]);\n  const setTypingChange = useEffectEvent(value => {\n    if (value) {\n      if (!dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    } else {\n      if (dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    }\n  });\n  const onKeyDown = useEffectEvent(event => {\n    function getMatchingIndex(list, orderedList, string) {\n      const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n      return str ? list.indexOf(str) : -1;\n    }\n    const listContent = listRef.current;\n    if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n      if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n        setTypingChange(false);\n      } else if (event.key === ' ') {\n        stopEvent(event);\n      }\n    }\n    if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n    // Character key.\n    event.key.length !== 1 ||\n    // Modifier key.\n    event.ctrlKey || event.metaKey || event.altKey) {\n      return;\n    }\n    if (open && event.key !== ' ') {\n      stopEvent(event);\n      setTypingChange(true);\n    }\n\n    // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n    // allow it in this case, too.\n    const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n      var _text$, _text$2;\n      return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n    });\n\n    // Allows the user to cycle through items that start with the same letter\n    // in rapid succession.\n    if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n    }\n    stringRef.current += event.key;\n    clearTimeoutIfSet(timeoutIdRef);\n    timeoutIdRef.current = window.setTimeout(() => {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n      setTypingChange(false);\n    }, resetMs);\n    const prevIndex = prevIndexRef.current;\n    const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n    if (index !== -1) {\n      onMatch(index);\n      matchIndexRef.current = index;\n    } else if (event.key !== ' ') {\n      stringRef.current = '';\n      setTypingChange(false);\n    }\n  });\n  const reference = React.useMemo(() => ({\n    onKeyDown\n  }), [onKeyDown]);\n  const floating = React.useMemo(() => {\n    return {\n      onKeyDown,\n      onKeyUp(event) {\n        if (event.key === ' ') {\n          setTypingChange(false);\n        }\n      }\n    };\n  }, [onKeyDown, setTypingChange]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n  return {\n    ...state,\n    rects: {\n      ...state.rects,\n      floating: {\n        ...state.rects.floating,\n        height\n      }\n    }\n  };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nconst inner = props => ({\n  name: 'inner',\n  options: props,\n  async fn(state) {\n    const {\n      listRef,\n      overflowRef,\n      onFallbackChange,\n      offset: innerOffset = 0,\n      index = 0,\n      minItemsVisible = 4,\n      referenceOverflowThreshold = 0,\n      scrollRef,\n      ...detectOverflowOptions\n    } = evaluate(props, state);\n    const {\n      rects,\n      elements: {\n        floating\n      }\n    } = state;\n    const item = listRef.current[index];\n    const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n    // Valid combinations:\n    // 1. Floating element is the scrollRef and has a border (default)\n    // 2. Floating element is not the scrollRef, floating element has a border\n    // 3. Floating element is not the scrollRef, scrollRef has a border\n    // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n    // allowed as VoiceOver doesn't work.\n    const clientTop = floating.clientTop || scrollEl.clientTop;\n    const floatingIsBordered = floating.clientTop !== 0;\n    const scrollElIsBordered = scrollEl.clientTop !== 0;\n    const floatingIsScrollEl = floating === scrollEl;\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!state.placement.startsWith('bottom')) {\n        warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n      }\n    }\n    if (!item) {\n      return {};\n    }\n    const nextArgs = {\n      ...state,\n      ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n    };\n    const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    const refOverflow = await detectOverflow(nextArgs, {\n      ...detectOverflowOptions,\n      elementContext: 'reference'\n    });\n    const diffY = max(0, overflow.top);\n    const nextY = nextArgs.y + diffY;\n    const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n    const rounder = isScrollable ? v => v : round;\n    const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n    scrollEl.style.maxHeight = maxHeight + \"px\";\n    scrollEl.scrollTop = diffY;\n\n    // There is not enough space, fallback to standard anchored positioning\n    if (onFallbackChange) {\n      const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n      ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n    }\n    if (overflowRef) {\n      overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n        ...nextArgs,\n        y: nextY\n      }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    }\n    return {\n      y: nextY\n    };\n  }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nfunction useInnerOffset(context, props) {\n  const {\n    open,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    overflowRef,\n    scrollRef,\n    onChange: unstable_onChange\n  } = props;\n  const onChange = useEffectEvent(unstable_onChange);\n  const controlledScrollingRef = React.useRef(false);\n  const prevScrollTopRef = React.useRef(null);\n  const initialOverflowRef = React.useRef(null);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onWheel(e) {\n      if (e.ctrlKey || !el || overflowRef.current == null) {\n        return;\n      }\n      const dY = e.deltaY;\n      const isAtTop = overflowRef.current.top >= -0.5;\n      const isAtBottom = overflowRef.current.bottom >= -0.5;\n      const remainingScroll = el.scrollHeight - el.clientHeight;\n      const sign = dY < 0 ? -1 : 1;\n      const method = dY < 0 ? 'max' : 'min';\n      if (el.scrollHeight <= el.clientHeight) {\n        return;\n      }\n      if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n        e.preventDefault();\n        ReactDOM.flushSync(() => {\n          onChange(d => d + Math[method](dY, remainingScroll * sign));\n        });\n      } else if (/firefox/i.test(getUserAgent())) {\n        // Needed to propagate scrolling during momentum scrolling phase once\n        // it gets limited by the boundary. UX improvement, not critical.\n        el.scrollTop += dY;\n      }\n    }\n    const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n    if (open && el) {\n      el.addEventListener('wheel', onWheel);\n\n      // Wait for the position to be ready.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n        if (overflowRef.current != null) {\n          initialOverflowRef.current = {\n            ...overflowRef.current\n          };\n        }\n      });\n      return () => {\n        prevScrollTopRef.current = null;\n        initialOverflowRef.current = null;\n        el.removeEventListener('wheel', onWheel);\n      };\n    }\n  }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n  const floating = React.useMemo(() => ({\n    onKeyDown() {\n      controlledScrollingRef.current = true;\n    },\n    onWheel() {\n      controlledScrollingRef.current = false;\n    },\n    onPointerMove() {\n      controlledScrollingRef.current = false;\n    },\n    onScroll() {\n      const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n      if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n        return;\n      }\n      if (prevScrollTopRef.current !== null) {\n        const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n        if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n          ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n        }\n      }\n\n      // [Firefox] Wait for the height change to have been applied.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n      });\n    }\n  }), [elements.floating, onChange, overflowRef, scrollRef]);\n  return React.useMemo(() => enabled ? {\n    floating\n  } : {}, [enabled, floating]);\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n  if (onlyOpenChildren === void 0) {\n    onlyOpenChildren = true;\n  }\n  const directChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n  });\n  return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n  const [x, y] = point;\n  let isInside = false;\n  const length = polygon.length;\n  for (let i = 0, j = length - 1; i < length; j = i++) {\n    const [xi, yi] = polygon[i] || [0, 0];\n    const [xj, yj] = polygon[j] || [0, 0];\n    const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) {\n      isInside = !isInside;\n    }\n  }\n  return isInside;\n}\nfunction isInside(point, rect) {\n  return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    buffer = 0.5,\n    blockPointerEvents = false,\n    requireIntent = true\n  } = options;\n  const timeoutRef = {\n    current: -1\n  };\n  let hasLanded = false;\n  let lastX = null;\n  let lastY = null;\n  let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n  function getCursorSpeed(x, y) {\n    const currentTime = performance.now();\n    const elapsedTime = currentTime - lastCursorTime;\n    if (lastX === null || lastY === null || elapsedTime === 0) {\n      lastX = x;\n      lastY = y;\n      lastCursorTime = currentTime;\n      return null;\n    }\n    const deltaX = x - lastX;\n    const deltaY = y - lastY;\n    const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n    const speed = distance / elapsedTime; // px / ms\n\n    lastX = x;\n    lastY = y;\n    lastCursorTime = currentTime;\n    return speed;\n  }\n  const fn = _ref => {\n    let {\n      x,\n      y,\n      placement,\n      elements,\n      onClose,\n      nodeId,\n      tree\n    } = _ref;\n    return function onMouseMove(event) {\n      function close() {\n        clearTimeoutIfSet(timeoutRef);\n        onClose();\n      }\n      clearTimeoutIfSet(timeoutRef);\n      if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n        return;\n      }\n      const {\n        clientX,\n        clientY\n      } = event;\n      const clientPoint = [clientX, clientY];\n      const target = getTarget(event);\n      const isLeave = event.type === 'mouseleave';\n      const isOverFloatingEl = contains(elements.floating, target);\n      const isOverReferenceEl = contains(elements.domReference, target);\n      const refRect = elements.domReference.getBoundingClientRect();\n      const rect = elements.floating.getBoundingClientRect();\n      const side = placement.split('-')[0];\n      const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n      const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n      const isOverReferenceRect = isInside(clientPoint, refRect);\n      const isFloatingWider = rect.width > refRect.width;\n      const isFloatingTaller = rect.height > refRect.height;\n      const left = (isFloatingWider ? refRect : rect).left;\n      const right = (isFloatingWider ? refRect : rect).right;\n      const top = (isFloatingTaller ? refRect : rect).top;\n      const bottom = (isFloatingTaller ? refRect : rect).bottom;\n      if (isOverFloatingEl) {\n        hasLanded = true;\n        if (!isLeave) {\n          return;\n        }\n      }\n      if (isOverReferenceEl) {\n        hasLanded = false;\n      }\n      if (isOverReferenceEl && !isLeave) {\n        hasLanded = true;\n        return;\n      }\n\n      // Prevent overlapping floating element from being stuck in an open-close\n      // loop: https://github.com/floating-ui/floating-ui/issues/1910\n      if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n        return;\n      }\n\n      // If any nested child is open, abort.\n      if (tree && getNodeChildren(tree.nodesRef.current, nodeId).length) {\n        return;\n      }\n\n      // If the pointer is leaving from the opposite side, the \"buffer\" logic\n      // creates a point where the floating element remains open, but should be\n      // ignored.\n      // A constant of 1 handles floating point rounding errors.\n      if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n        return close();\n      }\n\n      // Ignore when the cursor is within the rectangular trough between the\n      // two elements. Since the triangle is created from the cursor point,\n      // which can start beyond the ref element's edge, traversing back and\n      // forth from the ref to the floating element can cause it to close. This\n      // ensures it always remains open in that case.\n      let rectPoly = [];\n      switch (side) {\n        case 'top':\n          rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n          break;\n        case 'bottom':\n          rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n          break;\n        case 'left':\n          rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n          break;\n        case 'right':\n          rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n          break;\n      }\n      function getPolygon(_ref2) {\n        let [x, y] = _ref2;\n        switch (side) {\n          case 'top':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'bottom':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'left':\n            {\n              const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n              return [...commonPoints, cursorPointOne, cursorPointTwo];\n            }\n          case 'right':\n            {\n              const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n        }\n      }\n      if (isPointInPolygon([clientX, clientY], rectPoly)) {\n        return;\n      }\n      if (hasLanded && !isOverReferenceRect) {\n        return close();\n      }\n      if (!isLeave && requireIntent) {\n        const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n        const cursorSpeedThreshold = 0.1;\n        if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n          return close();\n        }\n      }\n      if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n        close();\n      } else if (!hasLanded && requireIntent) {\n        timeoutRef.current = window.setTimeout(close, 40);\n      }\n    };\n  };\n  fn.__options = {\n    blockPointerEvents\n  };\n  return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, NextFloatingDelayGroup, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useNextDelayGroup, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import { useEffect, useRef } from \"react\";\n\nexport function useLatestValue<T>(value: T) {\n  const cache = useRef(value);\n\n  useEffect(() => {\n    cache.current = value;\n  }, [value]);\n\n  return cache;\n}\n","import { useEffect } from \"react\";\nimport { useLatestValue } from \"./useLatestValue\";\n\nexport function useDocumentEvent<TType extends keyof DocumentEventMap>(\n  type: TType,\n  listener: (ev: DocumentEventMap[TType]) => any,\n  options?: boolean | AddEventListenerOptions,\n) {\n  const listenerRef = useLatestValue(listener);\n\n  useEffect(() => {\n    function handler(event: DocumentEventMap[TType]) {\n      listenerRef.current(event);\n    }\n\n    document.addEventListener(type, handler, options);\n    return () => document.removeEventListener(type, handler, options);\n  }, [type, options, listenerRef]);\n}\n","import { useDocumentEvent } from \"./useDocumentEvent\";\n\nexport const useOutsideClick = (\n  target: HTMLElement | null,\n  handler: (event: MouseEvent) => void,\n) => {\n  useDocumentEvent(\n    \"click\",\n    (event) => {\n      if (!target) return;\n      if (!target.contains(event.target as Node)) {\n        handler(event);\n      }\n    },\n    {\n      capture: true,\n    },\n  );\n};\n","import { cn } from \"@/utils\";\nimport { getLineHead, getPrevLine, getPrevLineHead } from \"@/utils/StringUtil\";\nimport {\n  canTransformMessageType,\n  type MessageArrowType,\n  transformMessageType,\n} from \"@/utils/messageTypeTransform\";\nimport {\n  type WrapFragmentType,\n  wrapMessageInFragment,\n} from \"@/utils/messageWrapTransform\";\nimport { useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport {\n  codeAtom,\n  onContentChangeAtom,\n  onMessageClickAtom,\n  pendingEditableRangeAtom,\n  selectedAtom,\n  selectedMessageAtom,\n} from \"@/store/Store\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FloatingPortal, useFloating } from \"@floating-ui/react\";\nimport { useOutsideClick } from \"@/functions/useOutsideClick\";\n\nconst btns = [\n  {\n    name: \"bold\",\n    content: \"B\",\n    class: \"font-bold\",\n  },\n  {\n    name: \"italic\",\n    content: \"I\",\n    class: \"italic\",\n  },\n  {\n    name: \"underline\",\n    content: \"U\",\n    class: \"underline\",\n  },\n  {\n    name: \"strikethrough\",\n    content: \"S\",\n    class: \"line-through\",\n  },\n];\n\nconst wrapTypes: WrapFragmentType[] = [\"alt\", \"loop\", \"opt\", \"par\"];\n\nexport const StylePanel = () => {\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const setOnMessageClick = useSetAtom(onMessageClickAtom);\n  const setPendingEditableRange = useSetAtom(pendingEditableRangeAtom);\n  const setSelectedParticipants = useSetAtom(selectedAtom);\n  const [selectedMessage, setSelectedMessage] = useAtom(selectedMessageAtom);\n  const [isOpen, setIsOpen] = useState(false);\n  const [existingStyles, setExistingStyles] = useState<string[]>([]);\n  const [hasMessageContext, setHasMessageContext] = useState(false);\n\n  const updateCode = (newCode: string) => {\n    setCode(newCode);\n    onContentChange(newCode);\n  };\n\n  const messageData = useRef({\n    start: 0,\n    lineHead: 0,\n    prevLine: \"\",\n    leadingSpaces: \"\",\n    prevLineIsComment: false,\n    hasStyleBrackets: false,\n    line: \"\",\n    currentType: \"sync\" as MessageArrowType,\n    source: \"\",\n    target: \"\",\n    signature: \"\",\n    labelStart: -1,\n    labelEnd: -1,\n  });\n\n  const { refs, floatingStyles } = useFloating({\n    open: isOpen,\n    onOpenChange: setIsOpen,\n  });\n\n  const handleClick = (style: string) => {\n    setIsOpen(false);\n    if (!hasMessageContext) return;\n    const message = messageData.current;\n    if (message.prevLineIsComment) {\n      let newComment = \"\";\n      if (message.hasStyleBrackets) {\n        let updatedStyles;\n\n        if (existingStyles.includes(style)) {\n          updatedStyles = existingStyles.filter((s) => s !== style);\n        } else {\n          updatedStyles = [...existingStyles, style];\n        }\n\n        newComment = `${message.leadingSpaces}// [${updatedStyles\n          .filter(Boolean)\n          .join(\", \")}] ${message.prevLine\n          .slice(message.prevLine.indexOf(\"]\") + 1)\n          .trimStart()}`;\n      } else {\n        newComment = `${message.leadingSpaces}// [${style}] ${message.prevLine\n          .slice((message.prevLine.match(/\\/\\/*/)?.index || -2) + 2)\n          .trimStart()}`;\n      }\n      if (!newComment.endsWith(\"\\n\")) newComment += \"\\n\";\n      updateCode(\n        code.slice(0, getPrevLineHead(code, message.start)) +\n          newComment +\n          code.slice(message.lineHead),\n      );\n    } else {\n      updateCode(\n        code.slice(0, message.lineHead) +\n          `${message.leadingSpaces}// [${style}]\\n` +\n          code.slice(message.lineHead),\n      );\n    }\n  };\n\n  const handleTypeClick = (targetType: MessageArrowType) => {\n    const message = messageData.current;\n    if (message.currentType === targetType) return;\n    if (!canTransformMessageType({\n      line: message.line,\n      currentType: message.currentType,\n      targetType,\n      source: message.source,\n      target: message.target,\n      signature: message.signature,\n    })) return;\n    const nextLine = transformMessageType({\n      line: message.line,\n      currentType: message.currentType,\n      targetType,\n      source: message.source,\n      target: message.target,\n      signature: message.signature,\n    });\n    if (!nextLine) {\n      return;\n    }\n\n    const lineTail = message.lineHead + message.line.length;\n    const labelText = message.signature;\n    const labelOffset = labelText ? nextLine.lastIndexOf(labelText) : -1;\n    updateCode(\n      code.slice(0, message.lineHead) +\n        nextLine +\n        code.slice(lineTail),\n    );\n    message.currentType = targetType;\n    message.line = nextLine;\n    if (labelOffset >= 0 && labelText) {\n      setSelectedMessage({\n        start: message.lineHead + labelOffset,\n        end: message.lineHead + labelOffset + labelText.length - 1,\n        token: Date.now(),\n      });\n    }\n  };\n\n  const handleRenameClick = () => {\n    setIsOpen(false);\n    const message = messageData.current;\n    if (message.labelStart < 0 || message.labelEnd < 0) {\n      return;\n    }\n    setPendingEditableRange({\n      start: message.labelStart,\n      end: message.labelEnd,\n      token: Date.now(),\n    });\n  };\n\n  const handleWrapClick = (type: WrapFragmentType) => {\n    setIsOpen(false);\n    const message = messageData.current;\n    const next = wrapMessageInFragment({\n      code,\n      line: message.line,\n      lineHead: message.lineHead,\n      type,\n    });\n    updateCode(next.code);\n    setSelectedMessage(null);\n    setPendingEditableRange({\n      start: next.conditionPosition[0],\n      end: next.conditionPosition[1],\n      token: Date.now(),\n    });\n  };\n\n  useOutsideClick(refs.floating.current, () => {\n    setIsOpen(false);\n    setSelectedMessage(null);\n  });\n\n  useEffect(() => {\n    setOnMessageClick((context: any, element: HTMLElement) => {\n      // make sure this is triggered after the outsideclicking\n      setTimeout(() => {\n        const message = messageData.current;\n        message.start = context.start.start;\n        message.lineHead = getLineHead(code, message.start);\n        const lineTail = code.indexOf(\"\\n\", message.lineHead);\n        message.line = lineTail === -1\n          ? code.slice(message.lineHead)\n          : code.slice(message.lineHead, lineTail);\n        message.prevLine = getPrevLine(code, message.start);\n        message.leadingSpaces =\n          code.slice(message.lineHead).match(/^\\s*/)?.[0] || \"\";\n        message.prevLineIsComment = message.prevLine.trim().startsWith(\"//\");\n        if (message.prevLineIsComment) {\n          const trimedPrevLine = message.prevLine\n            .trimStart()\n            .slice(2)\n            .trimStart();\n          const styleStart = trimedPrevLine.indexOf(\"[\");\n          const styleEnd = trimedPrevLine.indexOf(\"]\");\n          message.hasStyleBrackets = Boolean(styleStart === 0 && styleEnd);\n          if (message.hasStyleBrackets) {\n            setExistingStyles(\n              trimedPrevLine\n                .slice(styleStart + 1, styleEnd)\n                .split(\",\")\n                .map((s) => s.trim()),\n            );\n          } else {\n            setExistingStyles([]);\n          }\n        }\n        const interactionElement = element.closest(\".interaction\");\n        const classList = interactionElement?.classList;\n        const signatureCtx = context?.messageBody?.()?.func?.()?.signature?.()?.[0];\n        const asyncContent = context?.content?.();\n        const creationParams = context?.creationBody?.()?.parameters?.();\n        message.currentType = classList?.contains(\"creation\")\n          ? \"creation\"\n          : classList?.contains(\"return\")\n          ? \"return\"\n          : classList?.contains(\"async\")\n          ? \"async\"\n          : \"sync\";\n        message.source = interactionElement?.getAttribute(\"data-source\") || \"\";\n        message.target = interactionElement?.getAttribute(\"data-target\") || \"\";\n        message.signature =\n          interactionElement?.getAttribute(\"data-signature\") || \"\";\n        if (classList?.contains(\"creation\")) {\n          message.labelStart = creationParams?.start.start ?? -1;\n          message.labelEnd = creationParams?.stop.stop ?? -1;\n        } else if (classList?.contains(\"async\")) {\n          message.labelStart = asyncContent?.start.start ?? -1;\n          message.labelEnd = asyncContent?.stop.stop ?? -1;\n        } else if (classList?.contains(\"return\")) {\n          message.labelStart = context?.start?.start ?? -1;\n          message.labelEnd = context?.stop?.stop ?? -1;\n        } else {\n          message.labelStart = signatureCtx?.start?.start ?? -1;\n          message.labelEnd = signatureCtx?.stop?.stop ?? -1;\n        }\n        setSelectedParticipants([]);\n        setSelectedMessage({\n          start: message.labelStart >= 0 ? message.labelStart : message.start,\n          end: message.labelEnd >= 0 ? message.labelEnd : (context?.stop?.stop ?? message.start),\n          token: Date.now(),\n        });\n        refs.setReference(element);\n        setHasMessageContext(Boolean(context));\n        setIsOpen(true);\n      }, 0);\n    });\n  }, [code, refs, setOnMessageClick, setSelectedMessage, setSelectedParticipants]);\n\n  useEffect(() => {\n    if (!selectedMessage) {\n      setIsOpen(false);\n    }\n  }, [selectedMessage]);\n\n  useEffect(() => {\n    const onKeyDown = (event: KeyboardEvent) => {\n      if (event.key !== \"Escape\") {\n        return;\n      }\n      setIsOpen(false);\n      setSelectedMessage(null);\n    };\n\n    window.addEventListener(\"keydown\", onKeyDown);\n    return () => window.removeEventListener(\"keydown\", onKeyDown);\n  }, [setSelectedMessage]);\n\n  const [openSubmenu, setOpenSubmenu] = useState<\"type\" | \"wrap\" | null>(null);\n  const submenuTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  const openSub = useCallback((menu: \"type\" | \"wrap\") => {\n    if (submenuTimer.current) { clearTimeout(submenuTimer.current); submenuTimer.current = null; }\n    setOpenSubmenu(menu);\n  }, []);\n\n  const closeSub = useCallback(() => {\n    submenuTimer.current = setTimeout(() => setOpenSubmenu(null), 120);\n  }, []);\n\n  // Reset submenu when panel closes\n  useEffect(() => {\n    if (!isOpen) setOpenSubmenu(null);\n  }, [isOpen]);\n\n  return (\n    <FloatingPortal>\n    <div id=\"style-panel\" ref={refs.setFloating} style={{ ...floatingStyles, zIndex: 40 }}>\n      {isOpen && (\n        <div className=\"flex items-center bg-white shadow-md z-40 rounded-md p-1 gap-1\">\n          <div className=\"flex\">\n            {btns.map((btn) => (\n              <button\n                type=\"button\"\n                key={btn.name}\n                aria-label={btn.name}\n                aria-pressed={existingStyles.includes(btn.class)}\n                title={existingStyles.includes(btn.class) ? `Remove ${btn.name}` : `Apply ${btn.name}`}\n                onClick={() => handleClick(btn.class)}\n                className={cn(\n                  \"w-6 mx-1 py-1 rounded-md text-black text-center cursor-pointer hover:bg-gray-200\",\n                  [\n                    btn.class,\n                    { \"bg-gray-100\": existingStyles.includes(btn.class) },\n                  ],\n                )}\n              >\n                {btn.content}\n              </button>\n            ))}\n          </div>\n          <div className=\"w-px self-stretch bg-gray-200\" />\n          <div className=\"flex items-center gap-1\">\n            <button\n              type=\"button\"\n              data-testid=\"message-rename\"\n              className={cn(\n                \"px-2 py-1 rounded-md text-[11px] uppercase tracking-wide text-black text-center cursor-pointer hover:bg-gray-200\",\n                {\n                  \"opacity-40 pointer-events-none\":\n                    messageData.current.labelStart < 0 ||\n                    messageData.current.labelEnd < 0,\n                },\n              )}\n              title={\n                messageData.current.labelStart < 0 ||\n                messageData.current.labelEnd < 0\n                  ? \"Cannot rename: message has no label\"\n                  : \"Rename message label\"\n              }\n              onClick={handleRenameClick}\n            >\n              Rename\n            </button>\n          </div>\n          <div className=\"w-px self-stretch bg-gray-200\" />\n          {/* Type submenu trigger */}\n          <div\n            className=\"relative\"\n            onPointerEnter={() => openSub(\"type\")}\n            onPointerLeave={closeSub}\n          >\n            <button\n              type=\"button\"\n              data-testid=\"message-type-menu\"\n              className={cn(\n                \"px-2 py-1 rounded-md text-[11px] uppercase tracking-wide text-black text-center cursor-pointer hover:bg-gray-200\",\n                { \"bg-gray-100\": openSubmenu === \"type\" },\n              )}\n              title=\"Change message type\"\n              aria-expanded={openSubmenu === \"type\"}\n              aria-haspopup=\"true\"\n              onClick={() => openSub(\"type\")}\n            >\n              {messageData.current.currentType} ▾\n            </button>\n            {openSubmenu === \"type\" && (\n              <div className=\"absolute left-0 top-full mt-1 bg-white shadow-lg rounded-md border border-gray-200 p-1 flex flex-col gap-0.5 z-50 min-w-[90px]\">\n                {([\"sync\", \"async\", \"return\", \"creation\"] as MessageArrowType[]).map((type) => {\n                  const canTransform = canTransformMessageType({\n                    line: messageData.current.line,\n                    currentType: messageData.current.currentType,\n                    targetType: type,\n                    source: messageData.current.source,\n                    target: messageData.current.target,\n                    signature: messageData.current.signature,\n                  });\n                  const isCurrent = messageData.current.currentType === type;\n                  const disabledTitle = isCurrent\n                    ? `Already ${type}`\n                    : !canTransform && type === \"sync\"\n                    ? \"Label must be a valid method name (no spaces) to switch to sync\"\n                    : !canTransform && messageData.current.currentType === \"creation\"\n                    ? \"Cannot convert creation messages\"\n                    : !canTransform\n                    ? `Cannot convert to ${type}`\n                    : undefined;\n                  return (\n                    <button\n                      type=\"button\"\n                      key={type}\n                      data-testid={`message-type-${type}`}\n                      aria-label={`Change to ${type} message type`}\n                      aria-pressed={isCurrent}\n                      title={disabledTitle}\n                      onClick={() => { handleTypeClick(type); setOpenSubmenu(null); }}\n                      className={cn(\n                        \"px-2 py-1 rounded-md text-[11px] uppercase tracking-wide text-black text-left hover:bg-gray-100\",\n                        {\n                          \"bg-gray-100 font-semibold\": isCurrent,\n                          \"opacity-40 cursor-not-allowed\": !canTransform,\n                          \"cursor-pointer\": canTransform && !isCurrent,\n                        },\n                      )}\n                    >\n                      {type}\n                    </button>\n                  );\n                })}\n              </div>\n            )}\n          </div>\n          <div className=\"w-px self-stretch bg-gray-200\" />\n          {/* Wrap submenu trigger */}\n          <div\n            className=\"relative\"\n            onPointerEnter={() => openSub(\"wrap\")}\n            onPointerLeave={closeSub}\n          >\n            <button\n              type=\"button\"\n              data-testid=\"message-wrap-menu\"\n              className={cn(\n                \"px-2 py-1 rounded-md text-[11px] uppercase tracking-wide text-black text-center cursor-pointer hover:bg-gray-200\",\n                { \"bg-gray-100\": openSubmenu === \"wrap\" },\n              )}\n              title=\"Wrap in fragment\"\n              aria-expanded={openSubmenu === \"wrap\"}\n              aria-haspopup=\"true\"\n              onClick={() => openSub(\"wrap\")}\n            >\n              Wrap ▾\n            </button>\n            {openSubmenu === \"wrap\" && (\n              <div className=\"absolute left-0 top-full mt-1 bg-white shadow-lg rounded-md border border-gray-200 p-1 flex flex-col gap-0.5 z-50 min-w-[70px]\">\n                {wrapTypes.map((type) => (\n                  <button\n                    type=\"button\"\n                    key={type}\n                    data-testid={`message-wrap-${type}`}\n                    className=\"px-2 py-1 rounded-md text-[11px] uppercase tracking-wide text-black text-left cursor-pointer hover:bg-gray-100\"\n                    title={`Wrap in ${type} fragment`}\n                    aria-label={`Wrap in ${type} fragment`}\n                    onClick={() => handleWrapClick(type)}\n                  >\n                    {type}\n                  </button>\n                ))}\n              </div>\n            )}\n          </div>\n        </div>\n      )}\n    </div>\n    </FloatingPortal>\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Block } from \"./Block/Block\";\nimport { centerOf } from \"./Block/Statement/utils\";\nimport { StylePanel } from \"./StylePanel\";\nimport { useAtomValue } from \"jotai\";\nimport { coordinatesAtom, modeAtom, RenderMode, rootContextAtom } from \"@/store/Store\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport \"./MessageLayer.scss\";\n\nimport parentLogger from \"../../../../logger/logger\";\n\nconst logger = parentLogger.child({ name: \"MessageLayer\" });\nexport const MessageLayer = (props: {\n  context: any;\n  style?: React.CSSProperties;\n}) => {\n  const rootContext = useAtomValue(rootContextAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const mode = useAtomValue(modeAtom);\n\n  const origin = useMemo(() => {\n    const ownableMessages = AllMessages(rootContext);\n    if (ownableMessages.length === 0) return _STARTER_;\n    return ownableMessages[0].from || _STARTER_;\n  }, [rootContext]);\n\n  const paddingLeft = centerOf(coordinates, origin) + 1;\n\n  const [mounted, setMounted] = useState(false);\n  if (mounted) {\n    logger.debug(\"MessageLayer updated\");\n  }\n  useEffect(() => {\n    setMounted(true);\n    logger.debug(\"MessageLayer mounted\");\n  }, []);\n\n  return (\n    <div\n      className=\"message-layer relative z-30 pt-14 pb-10\"\n      style={props.style}\n    >\n      <Block\n        context={props.context}\n        style={{ paddingLeft: `${paddingLeft}px` }}\n        origin={origin}\n        enableGapHandles={mode === RenderMode.Dynamic}\n        isRoot\n      />\n      <StylePanel />\n    </div>\n  );\n};\n","import { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { specialCharRegex } from \"@/utils/messageNormalizers\";\n\nexport type ParticipantInsertType =\n  | \"default\"\n  | \"Actor\"\n  | \"Boundary\"\n  | \"Control\"\n  | \"Entity\"\n  | \"Database\"\n  | \"Queue\";\n\ntype InsertParticipantInput = {\n  code: string;\n  rootContext: any;\n  insertIndex: number;\n  name: string;\n  type: ParticipantInsertType;\n};\n\nconst normalizeName = (text: string) => {\n  let next = text.trim().replace(/\\s+/g, \" \");\n  if (specialCharRegex.test(next)) {\n    next = next.replace(/\"/g, \"\");\n    next = `\"${next}\"`;\n    specialCharRegex.lastIndex = 0;\n  }\n  return next;\n};\n\nconst formatParticipantDeclaration = (participant: {\n  name: string;\n  label?: string;\n  type?: string;\n  stereotype?: string;\n  color?: string;\n  emoji?: string;\n}) => {\n  const parts: string[] = [];\n  if (participant.type) {\n    parts.push(`@${participant.type}`);\n  }\n  if (participant.stereotype) {\n    parts.push(`<<${participant.stereotype}>>`);\n  }\n  if (participant.emoji) {\n    parts.push(`[${participant.emoji}]`);\n  }\n  parts.push(normalizeName(participant.name));\n  if (participant.label && participant.label !== participant.name) {\n    parts.push(`as ${normalizeName(participant.label)}`);\n  }\n  if (participant.color) {\n    parts.push(participant.color);\n  }\n  return parts.join(\" \");\n};\n\nconst buildParticipantLines = (\n  rootContext: any,\n  insertIndex: number,\n  name: string,\n  type: ParticipantInsertType,\n) => {\n  const current = OrderedParticipants(rootContext)\n    .filter((participant) => participant.name !== _STARTER_)\n    .map((participant) => ({\n      name: participant.name,\n      label: participant.label,\n      type: participant.type,\n      stereotype: participant.stereotype,\n      color: participant.color,\n      emoji: participant.emoji,\n    }));\n\n  current.splice(insertIndex, 0, {\n    name,\n    type: type === \"default\" ? undefined : type,\n  });\n\n  return current.map(formatParticipantDeclaration).join(\"\\n\");\n};\n\nexport const insertParticipantIntoDsl = ({\n  code,\n  rootContext,\n  insertIndex,\n  name,\n  type,\n}: InsertParticipantInput) => {\n  const participantLines = buildParticipantLines(\n    rootContext,\n    insertIndex,\n    name,\n    type,\n  );\n  const head = rootContext?.head?.();\n  const block = rootContext?.block?.();\n  const title = rootContext?.title?.();\n\n  if (head) {\n    const headStart = head.start.start;\n    const headEnd = head.stop.stop + 1;\n    const starter = head.starterExp?.();\n    const starterText = starter\n      ? code.slice(starter.start.start, starter.stop.stop + 1)\n      : \"\";\n    const nextHead = starterText\n      ? `${participantLines}\\n${starterText}`\n      : participantLines;\n    return code.slice(0, headStart) + nextHead + code.slice(headEnd);\n  }\n\n  const insertionPoint = block\n    ? block.start.start\n    : title\n    ? title.stop.stop + 1\n    : 0;\n  const prefix = code.slice(0, insertionPoint);\n  const suffix = code.slice(insertionPoint);\n  const separator =\n    prefix.length > 0 && !prefix.endsWith(\"\\n\") ? \"\\n\" : \"\";\n  return `${prefix}${separator}${participantLines}\\n${suffix}`;\n};\n","import { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport {\n  coordinatesAtom,\n  enableParticipantInsertionAtom,\n  modeAtom,\n  onContentChangeAtom,\n  RenderMode,\n  rootContextAtom,\n} from \"@/store/Store\";\nimport { insertParticipantIntoDsl } from \"@/utils/participantInsertTransform\";\nimport { MARGIN } from \"@/positioning/Constants\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport { codeAtom } from \"@/store/Store\";\nimport { useLayoutEffect, useMemo, useRef, useState } from \"react\";\n\ninterface AnchorCoordinates {\n  // DOM-measured edges of the rendered participant box, relative to the\n  // insert-controls layer.\n  boxLeft(name: string): number;\n  boxRight(name: string): number;\n}\n\n// Fixed offset from the leading/trailing participant edge to its prepend/\n// append \"+\" button. Chosen so the leading/trailing buttons are at the same\n// distance from the participant regardless of how many participants exist.\nconst EDGE_BUTTON_OFFSET = MARGIN / 2;\n\n// Midpoint of the gap between two adjacent participants. Both DOM boxes have\n// symmetric internal padding, so the box-edge midpoint equals the visible-\n// content midpoint.\nexport const computeGapAnchor = (\n  coordinates: AnchorCoordinates,\n  leftName: string,\n  rightName: string,\n): number =>\n  (coordinates.boxRight(leftName) + coordinates.boxLeft(rightName)) / 2;\n\nexport const computeAppendAnchor = (\n  coordinates: AnchorCoordinates,\n  participantNames: string[],\n): number | null => {\n  if (participantNames.length === 0) return null;\n  const last = participantNames[participantNames.length - 1];\n  return coordinates.boxRight(last) + EDGE_BUTTON_OFFSET;\n};\n\nexport const computePrependAnchor = (\n  coordinates: AnchorCoordinates,\n  participantNames: string[],\n): number | null => {\n  if (participantNames.length === 0) return null;\n  const first = participantNames[0];\n  return coordinates.boxLeft(first) - EDGE_BUTTON_OFFSET;\n};\n\nconst BUTTON_CENTER_Y = 40;\nconst BUTTON_SIZE = 16;\nconst HIT_AREA_SIZE = 36;\nconst HIT_AREA_TOP = BUTTON_CENTER_Y - HIT_AREA_SIZE / 2;\nconst BUTTON_INSET = (HIT_AREA_SIZE - BUTTON_SIZE) / 2;\n\nconst generateName = (existingNames: Set<string>) => {\n  for (let i = 1; ; i++) {\n    const candidate = String.fromCharCode(64 + i);\n    if (candidate.length === 1 && i <= 26 && !existingNames.has(candidate)) {\n      return candidate;\n    }\n    if (i > 26) {\n      const fallback = `P${i - 26}`;\n      if (!existingNames.has(fallback)) return fallback;\n    }\n  }\n};\n\nexport const ParticipantInsertControls = () => {\n  const mode = useAtomValue(modeAtom);\n  const enabled = useAtomValue(enableParticipantInsertionAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const rootContext = useAtomValue(rootContextAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n\n  const participantModels = useMemo(\n    () =>\n      OrderedParticipants(rootContext)\n        .filter((participant) => participant.name !== _STARTER_),\n    [rootContext],\n  );\n\n  const existingNames = useMemo(\n    () => new Set(participantModels.map((p) => p.name)),\n    [participantModels],\n  );\n\n  const participantNames = useMemo(\n    () => participantModels.map((p) => p.name),\n    [participantModels],\n  );\n\n  const sentinelRef = useRef<HTMLDivElement>(null);\n  const [domEdges, setDomEdges] = useState<\n    Record<string, { boxLeft: number; boxRight: number }>\n  >({});\n\n  useLayoutEffect(() => {\n    if (!sentinelRef.current || participantNames.length === 0) return;\n    const sentinelLeft = sentinelRef.current.getBoundingClientRect().left;\n    const next: Record<string, { boxLeft: number; boxRight: number }> = {};\n    for (const name of participantNames) {\n      const el = document.querySelector(\n        `[data-participant-id=\"${CSS.escape(name)}\"]`,\n      );\n      if (!el) continue;\n      const r = el.getBoundingClientRect();\n      next[name] = {\n        boxLeft: r.left - sentinelLeft,\n        boxRight: r.right - sentinelLeft,\n      };\n    }\n    setDomEdges(next);\n  }, [participantNames, coordinates]);\n\n  const anchorCoordinates: AnchorCoordinates = useMemo(\n    () => ({\n      // Layout edges are inset by MARGIN/2 to approximate the DOM box for the\n      // first render before useLayoutEffect runs.\n      boxLeft: (name: string) =>\n        domEdges[name]?.boxLeft ?? coordinates.left(name) + MARGIN / 2,\n      boxRight: (name: string) =>\n        domEdges[name]?.boxRight ?? coordinates.right(name) - MARGIN / 2,\n    }),\n    [coordinates, domEdges],\n  );\n\n  const gapAnchors = useMemo(() => {\n    if (participantModels.length < 2) return [];\n    const anchors: number[] = [];\n    for (let i = 0; i < participantModels.length - 1; i++) {\n      anchors.push(\n        computeGapAnchor(\n          anchorCoordinates,\n          participantModels[i].name,\n          participantModels[i + 1].name,\n        ),\n      );\n    }\n    return anchors;\n  }, [anchorCoordinates, participantModels]);\n\n  const prependAnchor = useMemo(\n    () => computePrependAnchor(anchorCoordinates, participantNames),\n    [anchorCoordinates, participantNames],\n  );\n\n  const appendAnchor = useMemo(\n    () => computeAppendAnchor(anchorCoordinates, participantNames),\n    [anchorCoordinates, participantNames],\n  );\n\n  const handleInsert = (insertIndex: number) => {\n    if (!rootContext) return;\n    const name = generateName(existingNames);\n    const nextCode = insertParticipantIntoDsl({\n      code,\n      rootContext,\n      insertIndex,\n      name,\n      type: \"default\",\n    });\n    setCode(nextCode);\n    onContentChange(nextCode);\n  };\n\n  if (\n    !enabled ||\n    mode !== RenderMode.Dynamic ||\n    participantModels.length === 0\n  ) {\n    return null;\n  }\n\n  const insertButtonClass = \"absolute flex items-center justify-center rounded-full border border-slate-300 bg-white text-slate-400 text-xs leading-none opacity-0 transition-all group-hover:opacity-80 hover:!opacity-100 hover:border-sky-400 hover:text-sky-500 hover:shadow-sm focus-visible:opacity-100 focus-visible:border-sky-400 focus-visible:text-sky-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300\";\n  const insertButtonStyle = { top: BUTTON_INSET, left: BUTTON_INSET, width: BUTTON_SIZE, height: BUTTON_SIZE };\n\n  return (\n    <>\n      <div\n        ref={sentinelRef}\n        aria-hidden\n        style={{\n          position: \"absolute\",\n          left: 0,\n          top: 0,\n          width: 0,\n          height: 0,\n          pointerEvents: \"none\",\n        }}\n      />\n      {prependAnchor !== null && (\n        <div\n          className=\"group absolute -translate-x-1/2\"\n          style={{\n            left: prependAnchor,\n            top: HIT_AREA_TOP,\n            width: HIT_AREA_SIZE,\n            height: HIT_AREA_SIZE,\n            pointerEvents: \"auto\",\n          }}\n        >\n          <button\n            type=\"button\"\n            data-testid=\"participant-prepend-button\"\n            title=\"Add participant\"\n            aria-label=\"Add participant at the start\"\n            className={insertButtonClass}\n            style={insertButtonStyle}\n            onClick={() => handleInsert(0)}\n          >\n            +\n          </button>\n        </div>\n      )}\n      {gapAnchors.map((left, index) => (\n        <div\n          key={index}\n          className=\"group absolute -translate-x-1/2\"\n          style={{\n            left,\n            top: HIT_AREA_TOP,\n            width: HIT_AREA_SIZE,\n            height: HIT_AREA_SIZE,\n            pointerEvents: \"auto\",\n          }}\n        >\n          <button\n            type=\"button\"\n            data-testid={`participant-insert-button-${index}`}\n            title={`Insert participant between ${participantModels[index].name} and ${participantModels[index + 1].name}`}\n            aria-label={`Insert participant between ${participantModels[index].name} and ${participantModels[index + 1].name}`}\n            className={insertButtonClass}\n            style={insertButtonStyle}\n            onClick={() => handleInsert(index + 1)}\n          >\n            +\n          </button>\n        </div>\n      ))}\n      {appendAnchor !== null && (\n        <div\n          className=\"group absolute -translate-x-1/2\"\n          style={{\n            left: appendAnchor,\n            top: HIT_AREA_TOP,\n            width: HIT_AREA_SIZE,\n            height: HIT_AREA_SIZE,\n            pointerEvents: \"auto\",\n          }}\n        >\n          <button\n            type=\"button\"\n            data-testid=\"participant-append-button\"\n            title=\"Add participant\"\n            aria-label=\"Add participant\"\n            className={insertButtonClass}\n            style={insertButtonStyle}\n            onClick={() => handleInsert(participantModels.length)}\n          >\n            +\n          </button>\n        </div>\n      )}\n    </>\n  );\n};\n","type ParticipantUpdates = {\n  color?: string | null;   // null = remove color\n  type?: string | null;    // null = remove type\n};\n\nconst formatParticipantDeclaration = (participant: {\n  name: string;\n  label?: string;\n  type?: string | null;\n  stereotype?: string;\n  color?: string | null;\n  emoji?: string;\n}): string => {\n  const parts: string[] = [];\n  if (participant.type) parts.push(`@${participant.type}`);\n  if (participant.stereotype) parts.push(`<<${participant.stereotype}>>`);\n  if (participant.emoji) parts.push(`[${participant.emoji}]`);\n  parts.push(participant.name);\n  if (participant.label && participant.label !== participant.name)\n    parts.push(`as ${participant.label}`);\n  if (participant.color) parts.push(participant.color);\n  return parts.join(\" \");\n};\n\nconst getParticipantCtx = (rootContext: any, name: string) => {\n  const participants: any[] = rootContext?.head?.()?.participant?.() ?? [];\n  return participants.find((ctx: any) => {\n    const ctxName = ctx?.name()?.getFormattedText();\n    return ctxName === name || ctxName === name.split(\":\")[1];\n  });\n};\n\nexport const setParticipantStyleInDsl = (\n  code: string,\n  rootContext: any,\n  participantName: string,\n  updates: ParticipantUpdates,\n): string => {\n  const ctx = getParticipantCtx(rootContext, participantName);\n  if (!ctx) return code;\n\n  const existingType = ctx?.participantType()?.getFormattedText()?.replace(\"@\", \"\") ?? undefined;\n  const existingColor = ctx?.COLOR?.()?.getText() ?? undefined;\n  const existingLabel = ctx.label?.()?.name()?.getFormattedText();\n  const existingStereotype = ctx.stereotype?.()?.name()?.getFormattedText();\n  const existingEmoji = ctx.emoji?.()?.name?.()?.getFormattedText();\n\n  const nextType = \"type\" in updates ? (updates.type ?? undefined) : existingType;\n  const nextColor = \"color\" in updates ? (updates.color ?? undefined) : existingColor;\n\n  const newDeclaration = formatParticipantDeclaration({\n    name: ctx?.name()?.getFormattedText(),\n    label: existingLabel,\n    type: nextType,\n    stereotype: existingStereotype,\n    color: nextColor,\n    emoji: existingEmoji,\n  });\n\n  const start = ctx.start.start;\n  const end = ctx.stop.stop + 1;\n  return code.slice(0, start) + newDeclaration + code.slice(end);\n};\n","import {\n  codeAtom,\n  createMessageDragAtom,\n  diagramElementAtom,\n  enableParticipantStyleEditingAtom,\n  modeAtom,\n  onContentChangeAtom,\n  RenderMode,\n  rootContextAtom,\n  selectedAtom,\n} from \"@/store/Store\";\nimport { setParticipantStyleInDsl } from \"@/utils/participantStyleTransform\";\nimport { insertParticipantIntoDsl } from \"@/utils/participantInsertTransform\";\nimport { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { FloatingPortal } from \"@floating-ui/react\";\n\nconst PRESET_COLORS: { hex: string; name: string }[] = [\n  { hex: \"#ef4444\", name: \"Red\" },\n  { hex: \"#f97316\", name: \"Orange\" },\n  { hex: \"#eab308\", name: \"Yellow\" },\n  { hex: \"#22c55e\", name: \"Green\" },\n  { hex: \"#14b8a6\", name: \"Teal\" },\n  { hex: \"#3b82f6\", name: \"Blue\" },\n  { hex: \"#8b5cf6\", name: \"Purple\" },\n  { hex: \"#ec4899\", name: \"Pink\" },\n  { hex: \"#94a3b8\", name: \"Gray\" },\n  { hex: \"#ffffff\", name: \"White\" },\n];\n\nconst PARTICIPANT_TYPES = [\n  { key: \"Actor\", label: \"Actor\", icon: \"👤\" },\n  { key: \"Boundary\", label: \"Boundary\", icon: \"⬡\" },\n  { key: \"Control\", label: \"Control\", icon: \"⟳\" },\n  { key: \"Entity\", label: \"Entity\", icon: \"□\" },\n  { key: \"Database\", label: \"Database\", icon: \"🗄\" },\n  { key: \"Queue\", label: \"Queue\", icon: \"≡\" },\n];\n\nexport const ParticipantStylePanel = () => {\n  const mode = useAtomValue(modeAtom);\n  const enabled = useAtomValue(enableParticipantStyleEditingAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n  const rootContext = useAtomValue(rootContextAtom);\n  const [selected, setSelected] = useAtom(selectedAtom);\n  const diagramElement = useAtomValue(diagramElementAtom);\n  const dragState = useAtomValue(createMessageDragAtom);\n  const [isOpen, setIsOpen] = useState(false);\n  const [panelPos, setPanelPos] = useState<{ top: number; left: number } | null>(null);\n  const panelRef = useRef<HTMLDivElement>(null);\n  const participantName = selected[0] ?? null;\n\n  const currentParticipant = participantName\n    ? OrderedParticipants(rootContext).find((p) => p.name === participantName)\n    : null;\n  const currentColor = currentParticipant?.color?.toLowerCase() ?? null;\n  const currentType = currentParticipant?.type ?? null;\n\n  useEffect(() => {\n    if (selected.length === 1 && diagramElement && !dragState) {\n      const el = diagramElement.querySelector(\n        `[data-participant-id=\"${selected[0]}\"]`,\n      ) as HTMLElement | null;\n      if (el) {\n        const rect = el.getBoundingClientRect();\n        setPanelPos({ top: rect.bottom + 6, left: rect.left });\n      }\n      setIsOpen(true);\n    } else {\n      setIsOpen(false);\n      setPanelPos(null);\n    }\n  }, [selected, diagramElement, dragState]);\n\n  // Clamp panel position to stay within viewport after it renders\n  useEffect(() => {\n    if (!isOpen || !panelRef.current || !panelPos) return;\n    const panel = panelRef.current.getBoundingClientRect();\n    let { top, left } = panelPos;\n    const margin = 8;\n    if (left + panel.width > window.innerWidth - margin) {\n      left = window.innerWidth - panel.width - margin;\n    }\n    if (left < margin) left = margin;\n    if (top + panel.height > window.innerHeight - margin) {\n      top = panelPos.top - panel.height - 12; // flip above participant\n    }\n    if (top !== panelPos.top || left !== panelPos.left) {\n      setPanelPos({ top, left });\n    }\n  }, [isOpen, panelPos]);\n\n  useEffect(() => {\n    if (!isOpen) return;\n    const onPointerDown = (e: PointerEvent) => {\n      if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n        setIsOpen(false);\n        setSelected([]);\n      }\n    };\n    const onKeyDown = (e: KeyboardEvent) => {\n      if (e.key === \"Escape\") {\n        setIsOpen(false);\n        setSelected([]);\n      }\n    };\n    document.addEventListener(\"pointerdown\", onPointerDown);\n    document.addEventListener(\"keydown\", onKeyDown);\n    return () => {\n      document.removeEventListener(\"pointerdown\", onPointerDown);\n      document.removeEventListener(\"keydown\", onKeyDown);\n    };\n  }, [isOpen, setSelected]);\n\n  if (\n    !enabled ||\n    mode !== RenderMode.Dynamic ||\n    !isOpen ||\n    !participantName ||\n    !panelPos\n  ) {\n    return null;\n  }\n\n  const applyStyle = (updates: { color?: string | null; type?: string | null }) => {\n    let workingCode = code;\n    const workingContext = rootContext;\n\n    // If participant has no explicit declaration, insert one first\n    const participants = OrderedParticipants(rootContext).filter(\n      (p) => p.name !== _STARTER_,\n    );\n    const hasExplicitDecl =\n      (rootContext?.head?.()?.participant?.() ?? []).some(\n        (ctx: any) => ctx?.name()?.getFormattedText() === participantName,\n      );\n    if (!hasExplicitDecl) {\n      const insertIndex = participants.findIndex((p) => p.name === participantName);\n      workingCode = insertParticipantIntoDsl({\n        code: workingCode,\n        rootContext: workingContext,\n        insertIndex,\n        name: participantName,\n        type: \"default\",\n      });\n      const newCode = setParticipantStyleInDsl(workingCode, workingContext, participantName, updates);\n      const finalCode = newCode !== workingCode ? newCode : workingCode;\n      setCode(finalCode);\n      onContentChange(finalCode);\n      setIsOpen(false);\n      setSelected([]);\n      return;\n    }\n\n    const newCode = setParticipantStyleInDsl(workingCode, workingContext, participantName, updates);\n    if (newCode === workingCode) return;\n    setCode(newCode);\n    onContentChange(newCode);\n    setIsOpen(false);\n    setSelected([]);\n  };\n\n  return (\n    <FloatingPortal>\n    <div\n      ref={panelRef}\n      className=\"bg-white rounded-lg shadow-lg border border-gray-200 p-2 flex flex-col gap-2\"\n      style={{ position: \"fixed\", zIndex: 50, minWidth: 180, top: panelPos.top, left: panelPos.left }}\n      data-testid=\"participant-style-panel\"\n    >\n      <div className=\"text-[10px] uppercase tracking-wide text-gray-400 font-semibold px-1\">Color</div>\n      <div className=\"flex flex-wrap gap-1 px-1\">\n        {PRESET_COLORS.map(({ hex, name }) => {\n          const isActive = currentColor === hex.toLowerCase();\n          return (\n            <button\n              key={hex}\n              type=\"button\"\n              className={`w-5 h-5 rounded-full border hover:scale-110 transition-transform focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300 ${\n                isActive ? \"border-sky-500 ring-2 ring-sky-400 ring-offset-1\" : \"border-gray-300\"\n              }`}\n              style={{ backgroundColor: hex }}\n              title={isActive ? `${name} (current)` : name}\n              aria-label={`Set color to ${name}`}\n              aria-pressed={isActive}\n              onClick={() => applyStyle({ color: hex })}\n            />\n          );\n        })}\n        <button\n          type=\"button\"\n          className=\"w-5 h-5 rounded-full border border-dashed border-gray-400 text-gray-400 text-[9px] hover:scale-110 transition-transform flex items-center justify-center\"\n          title=\"Remove color\"\n          aria-label=\"Remove color\"\n          onClick={() => applyStyle({ color: null })}\n        >\n          ✕\n        </button>\n      </div>\n\n      <div className=\"w-full h-px bg-gray-100\" />\n\n      <div className=\"text-[10px] uppercase tracking-wide text-gray-400 font-semibold px-1\">Type</div>\n      <div className=\"flex flex-wrap gap-1 px-1\">\n        {PARTICIPANT_TYPES.map(({ key, label, icon }) => {\n          const isActive = currentType?.toLowerCase() === key.toLowerCase();\n          return (\n            <button\n              key={key}\n              type=\"button\"\n              className={`flex flex-col items-center gap-0.5 px-1.5 py-1 rounded border text-[10px] min-w-[36px] hover:bg-gray-100 ${\n                isActive\n                  ? \"border-sky-400 bg-sky-50 text-sky-700\"\n                  : \"border-gray-200 text-gray-700\"\n              }`}\n              title={isActive ? `${label} (current)` : `Set type to ${label}`}\n              aria-label={`Set type to ${label}`}\n              aria-pressed={isActive}\n              onClick={() => applyStyle({ type: key })}\n            >\n              <span className=\"text-sm leading-none\">{icon}</span>\n              <span>{label}</span>\n            </button>\n          );\n        })}\n        <button\n          type=\"button\"\n          className=\"flex flex-col items-center gap-0.5 px-1.5 py-1 rounded border border-dashed border-gray-300 text-gray-400 hover:bg-gray-100 text-[10px] min-w-[36px]\"\n          title=\"Remove type\"\n          aria-label=\"Remove type\"\n          onClick={() => applyStyle({ type: null })}\n        >\n          <span className=\"text-sm leading-none\">□</span>\n          <span>None</span>\n        </button>\n      </div>\n    </div>\n    </FloatingPortal>\n  );\n};\n","import { codeAtom, modeAtom, onContentChangeAtom, RenderMode } from \"@/store/Store\";\nimport { useAtom, useAtomValue } from \"jotai\";\n\nexport const EmptyDiagramPrompt = () => {\n  const mode = useAtomValue(modeAtom);\n  const [code, setCode] = useAtom(codeAtom);\n  const onContentChange = useAtomValue(onContentChangeAtom);\n\n  if (mode !== RenderMode.Dynamic) return null;\n\n  const handleClick = () => {\n    const nextCode = code.trim() ? `${code.trim()}\\nA` : \"A\";\n    setCode(nextCode);\n    onContentChange(nextCode);\n  };\n\n  return (\n    <div className=\"flex items-center justify-center\" style={{ minHeight: 120 }}>\n      <button\n        type=\"button\"\n        data-testid=\"empty-diagram-prompt\"\n        onClick={handleClick}\n        className=\"flex flex-col items-center gap-2 rounded-xl border-2 border-dashed border-slate-300 px-8 py-6 text-slate-400 transition-colors hover:border-sky-400 hover:text-sky-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300\"\n      >\n        <span className=\"text-2xl leading-none\">+</span>\n        <span className=\"text-sm\">Click to add your first participant</span>\n      </button>\n    </div>\n  );\n};\n","import FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport {\n  coordinatesAtom,\n  diagramElementAtom,\n  modeAtom,\n  RenderMode,\n  rootContextAtom,\n  selectedAtom,\n  selectedMessageAtom,\n  themeAtom,\n} from \"@/store/Store\";\nimport { useAtomValue, useSetAtom } from \"jotai\";\nimport {\n  CSSProperties,\n  useEffect,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n} from \"react\";\nimport { TotalWidth } from \"./WidthOfContext\";\nimport \"./SeqDiagram.css\";\nimport { cn } from \"@/utils\";\nimport { LifeLineLayer } from \"./LifeLineLayer/LifeLineLayer\";\nimport { MessageLayer } from \"./MessageLayer/MessageLayer\";\nimport { ParticipantInsertControls } from \"./LifeLineLayer/ParticipantInsertControls\";\nimport { ParticipantStylePanel } from \"./LifeLineLayer/ParticipantStylePanel\";\nimport { EmptyDiagramPrompt } from \"./EmptyDiagramPrompt\";\n\nexport const SeqDiagram = (props: {\n  className?: string;\n  style?: CSSProperties;\n  ref?: React.Ref<HTMLDivElement>;\n}) => {\n  const theme = useAtomValue(themeAtom);\n  const mode = useAtomValue(modeAtom);\n  const rootContext = useAtomValue(rootContextAtom);\n  const coordinates = useAtomValue(coordinatesAtom);\n  const isEmpty = useMemo(\n    () => coordinates.orderedParticipantNames().length === 0,\n    [coordinates],\n  );\n  const setDiagramElement = useSetAtom(diagramElementAtom);\n  const setSelectedParticipants = useSetAtom(selectedAtom);\n  const setSelectedMessage = useSetAtom(selectedMessageAtom);\n\n  const diagramRef = useRef<HTMLDivElement>(null);\n  useEffect(() => {\n    setDiagramElement(diagramRef.current);\n  });\n\n  useImperativeHandle(props.ref, () => {\n    return diagramRef.current!;\n  });\n\n  const frameBorderLeft = useMemo(() => {\n    const allParticipants = coordinates.orderedParticipantNames();\n    const frameBuilder = new FrameBuilder(allParticipants);\n    const frame = frameBuilder.getFrame(rootContext);\n    return frame ? FrameBorder(frame).left : 0;\n  }, [coordinates, rootContext]);\n\n  const width = useMemo(() => {\n    const contextWidth = TotalWidth(rootContext, coordinates);\n    //   [MessageLayer width] <- contextWidth\n    //  [Frame width        ]\n    // || <- frameBorderLeft extra width provided by container\n    return contextWidth - frameBorderLeft;\n  }, [rootContext, coordinates, frameBorderLeft]);\n\n  return (\n    <div\n      className={cn(\n        \"zenuml sequence-diagram relative box-border text-left overflow-visible px-2.5\",\n        theme,\n        props.className,\n      )}\n      style={props.style}\n      ref={diagramRef}\n      onClick={(event) => {\n        const target = event.target as HTMLElement | null;\n        if (\n          target?.closest(\".interaction\") ||\n          target?.closest(\".participant\") ||\n          target?.closest(\"#style-panel\")\n        ) {\n          return;\n        }\n        setSelectedParticipants([]);\n        setSelectedMessage(null);\n      }}\n    >\n      {/* .zenuml is used to make sure tailwind css takes effect when naked == true;\n      .bg-skin-base is repeated because .zenuml reset it to default theme. */}\n      <div\n        style={{ paddingLeft: `${frameBorderLeft}px` }}\n        className=\"relative z-container\"\n      >\n        {mode === RenderMode.Dynamic ? (\n          <>\n            {isEmpty && <EmptyDiagramPrompt />}\n            {/* Why do we have two `life-line-layer`s? This is introduced when we add support of\n              floating participant. Essentially, the Participant labels must be on the top\n              of message layer and the lines of lifelines must be under the message layer. */}\n            <LifeLineLayer\n              leftGap={frameBorderLeft}\n              context={rootContext?.head()}\n              renderLifeLine\n            />\n            <MessageLayer\n              context={rootContext?.block()}\n              style={{ width: `${width}px` }}\n            />\n            <LifeLineLayer\n              leftGap={frameBorderLeft}\n              context={rootContext?.head()}\n              renderParticipants\n            />\n            {/* Insert controls on a separate layer above participants.\n               pointer-events: none lets clicks pass through to the participant\n               layer below; individual \"+\" buttons opt back in. */}\n            <div\n              className=\"absolute h-full top-0 pt-2\"\n              style={{\n                width: `calc(100% - ${frameBorderLeft}px)`,\n                pointerEvents: \"none\",\n                zIndex: 40,\n              }}\n            >\n              <div className=\"relative grow h-full\">\n                <ParticipantInsertControls />\n              </div>\n            </div>\n            <ParticipantStylePanel />\n          </>\n        ) : (\n          <>\n            <LifeLineLayer\n              leftGap={frameBorderLeft}\n              context={rootContext?.head()}\n              renderParticipants\n              renderLifeLine\n            />\n            <MessageLayer\n              context={rootContext?.block()}\n              style={{ width: `${width}px` }}\n            />\n          </>\n        )}\n      </div>\n    </div>\n  );\n};\n","import {\n  RenderMode,\n  modeAtom,\n  rootContextAtom,\n  showTipsAtom,\n  scaleAtom,\n  themeAtom,\n  enableNumberingAtom,\n  enableMultiThemeAtom,\n} from \"@/store/Store\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport * as htmlToImage from \"html-to-image\";\nimport {\n  PropsWithChildren,\n  RefObject,\n  useImperativeHandle,\n  useRef,\n} from \"react\";\nimport { cn } from \"@/utils\";\nimport { Debug } from \"./Debug\";\nimport { Privacy } from \"./Privacy\";\nimport { DiagramTitle } from \"./DiagramTitle\";\nimport { TipsDialog } from \"./Tutorial/TipsDialog\";\nimport Icon from \"../Icon/Icons\";\nimport { ThemeSelector } from \"./ThemeSelector\";\nimport { SeqDiagram } from \"./SeqDiagram/SeqDiagram\";\n\nconst exportConfig = {\n  backgroundColor: \"white\",\n  filter: (node: HTMLElement) => {\n    return !node?.classList?.contains(\"hide-export\");\n  },\n};\n\nexport const DiagramFrame = ({\n  ref,\n  children,\n}: PropsWithChildren<{\n  ref?: RefObject<{\n    toPng: () => Promise<string | undefined>;\n    toSvg: () => Promise<string | undefined>;\n    toBlob: () => Promise<Blob | null | undefined>;\n    toJpeg: () => Promise<string | undefined>;\n    zoomIn: () => void;\n    zoomOut: () => void;\n  }>;\n}>) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const contentRef = useRef<HTMLDivElement>(null);\n  const rootContext = useAtomValue(rootContextAtom);\n  const [showTips, setShowTips] = useAtom(showTipsAtom);\n  const [scale, setScale] = useAtom(scaleAtom);\n  const [theme, setTheme] = useAtom(themeAtom);\n  const [enableNumbering, setEnableNumbering] = useAtom(enableNumberingAtom);\n  const enableMultiTheme = useAtomValue(enableMultiThemeAtom);\n  const mode = useAtomValue(modeAtom);\n  const title = rootContext?.title();\n\n  const showTipsDialog = () => {\n    setShowTips(true);\n\n    // try {\n    //   this.$gtag?.event(\"view\", {\n    //     event_category: \"help\",\n    //     event_label: \"tips dialog\",\n    //   });\n    // } catch (e) {\n    //   console.error(e);\n    // }\n  };\n\n  const toPng = async () => {\n    if (!containerRef.current) return;\n    return htmlToImage.toPng(containerRef.current, exportConfig);\n  };\n  const toSvg = async () => {\n    if (!containerRef.current) return;\n    return htmlToImage.toSvg(containerRef.current, exportConfig);\n  };\n  const toBlob = async () => {\n    if (!containerRef.current) return;\n    return htmlToImage.toBlob(containerRef.current, exportConfig);\n  };\n  const toJpeg = async () => {\n    if (!containerRef.current) return;\n    return htmlToImage.toJpeg(containerRef.current, exportConfig);\n  };\n  const zoomIn = () => {\n    const newScale = Math.min(1, scale + 0.1);\n    setScale(newScale);\n  };\n  const zoomOut = () => {\n    setScale(scale - 0.1);\n  };\n  const setStyle = (style: string) => {\n    const styleElementId = \"zenuml-style\";\n    const styleElement = document.createElement(\"style\");\n    styleElement.id = styleElementId;\n    document.head.append(styleElement);\n    styleElement.textContent = style;\n  };\n  const setRemoteCss = (url: string) => {\n    const hostname = new URL(url).hostname;\n\n    // if url is from GitHub, we fetch the raw content and set the style\n    // if url contains GitHub.com or githubusercontent.com, we fetch the raw content and set the style\n    if (\n      hostname === \"https://github.com\" ||\n      hostname === \"https://githubusercontent.com\"\n    ) {\n      fetch(\n        url\n          .replace(\"github.com\", \"raw.githubusercontent.com\")\n          .replace(\"blob/\", \"\"),\n      )\n        .then((response) => response.text())\n        .then((text) => {\n          setStyle(text);\n        });\n      return;\n    }\n    const remoteCssUrlId = \"zenuml-remote-css\";\n    // check if remote css element exists\n    const remoteCssElement = document.createElement(\"link\");\n    remoteCssElement.id = remoteCssUrlId;\n    remoteCssElement.rel = \"stylesheet\";\n    document.head.append(remoteCssElement);\n    remoteCssElement.href = url;\n  };\n\n  useImperativeHandle(ref, () => ({\n    toPng,\n    toSvg,\n    toBlob,\n    toJpeg,\n    zoomIn,\n    zoomOut,\n    setTheme,\n    setRemoteCss,\n  }));\n\n  return (\n    // The Tailwind utilities (p-1, bg-skin-canvas, inline-block) work here because this component\n    // is rendered inside a parent div with .zenuml class in core.tsx. The Tailwind configuration\n    // uses important: \".zenuml\" which generates selectors like \".zenuml .p-1\" for scoped styling.\n    <div\n      ref={containerRef}\n      className={cn(\"p-1 bg-skin-canvas inline-block\", theme)}\n    >\n      <Debug />\n      <div className=\"frame text-skin-base bg-skin-frame border-skin-frame relative m-1 origin-top-left whitespace-nowrap border rounded\">\n        <div ref={contentRef}>\n          <div className=\"header text-skin-title bg-skin-title border-skin-frame border-b p-1 flex justify-between rounded-t\">\n            <div className=\"left hide-export\">{children}</div>\n            <div className=\"right flex-grow flex justify-between\">\n              <DiagramTitle context={title} />\n              {/* Knowledge: how to vertically align a svg icon. */}\n              <Privacy className=\"hide-export flex items-center\" />\n            </div>\n          </div>\n          {showTips && (\n            <div\n              className=\"fixed z-40 inset-0 overflow-y-auto\"\n              aria-labelledby=\"modal-title\"\n              role=\"dialog\"\n              aria-modal=\"true\"\n            >\n              <TipsDialog />\n            </div>\n          )}\n          <SeqDiagram\n            className=\"origin-top-left\"\n            style={{ transform: `scale(${scale})` }}\n          />\n        </div>\n        <div className=\"footer rounded text-skin-control bg-skin-title px-4 py-1 flex justify-between items-center gap-3\">\n          {mode === RenderMode.Dynamic && (\n            <>\n              <div className=\"flex items-center gap-3 color-base\">\n                <button\n                  className=\"bottom-1 flex items-center left-1 hide-export\"\n                  onClick={showTipsDialog}\n                >\n                  <Icon name=\"tip\" className=\"filter grayscale w-4 h-4\" />\n                </button>\n                {enableMultiTheme && <ThemeSelector />}\n                <div className=\"flex items-center\">\n                  <input\n                    type=\"checkbox\"\n                    id=\"order-display\"\n                    className=\"mr-1\"\n                    checked={Boolean(enableNumbering)}\n                    onChange={() => setEnableNumbering(!enableNumbering)}\n                  />\n                  <label\n                    htmlFor=\"order-display\"\n                    title=\"Numbering the diagram\"\n                    className=\"select-none\"\n                  >\n                    <Icon name=\"numbering\" className=\"w-6 h-6\" />\n                  </label>\n                </div>\n              </div>\n              <div className=\"zoom-controls flex hide-export gap-1\">\n                <button className=\"zoom-in\" onClick={zoomIn}>\n                  <Icon name=\"zoom-in\" className=\"w-4 h-4\" />\n                </button>\n                <label className=\"w-12 block text-center\">\n                  {Number(scale * 100).toFixed(0)}%\n                </label>\n                <button className=\"zoom-out\" onClick={zoomOut}>\n                  <Icon name=\"zoom-out\" className=\"w-4 h-4\" />\n                </button>\n              </div>\n              <a\n                target=\"_blank\"\n                href=\"https://zenuml.com\"\n                className=\"brand text-xs hover:underline\"\n              >\n                ZenUML.com\n              </a>\n            </>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { Component, type ErrorInfo, type ReactNode } from \"react\";\n\ninterface Props {\n  children: ReactNode;\n}\n\ninterface State {\n  hasError: boolean;\n  error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<Props, State> {\n  constructor(props: Props) {\n    super(props);\n    this.state = { hasError: false, error: null };\n  }\n\n  static getDerivedStateFromError(error: Error): State {\n    return { hasError: true, error };\n  }\n\n  componentDidCatch(error: Error, info: ErrorInfo) {\n    console.error(\"[ZenUML] Rendering error:\", error, info.componentStack);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return (\n        <div style={{ padding: 16, color: \"#c00\", fontFamily: \"monospace\", fontSize: 13 }}>\n          <strong>ZenUML rendering error</strong>\n          <pre style={{ whiteSpace: \"pre-wrap\", marginTop: 8 }}>\n            {this.state.error?.message}\n          </pre>\n        </div>\n      );\n    }\n    return this.props.children;\n  }\n}\n","/**\n * The version is managed by merge-release during npm publish:\n * - Git repository shows 3.0.0 in package.json\n * - npm package shows the actual released version (e.g. 3.27.0)\n * - Git tags track the released versions (v3.27.0)\n */\nexport const VERSION = process.env.VITE_VERSION || \"\";\n","import logger from \"@/logger/logger\";\n\nfunction buildCostDesc(diff: number): string {\n  const seconds = Math.floor(diff / 1000);\n  const milliseconds = Math.floor(diff % 1000);\n  const microseconds = Math.floor(((diff % 1000) - milliseconds) * 1000);\n  return seconds + \"s \" + milliseconds + \"ms \" + microseconds + \"μs\";\n}\n\nexport const calculateCostTime = (\n  processName: string,\n  processStartTime: number,\n) => {\n  const now = getStartTime();\n  const diff = now - processStartTime;\n  logger.debug(processName + \" cost: \" + buildCostDesc(diff));\n  return diff;\n};\n\nexport const getStartTime = () => {\n  // Performance.now is more accurate than Date.now： https://developer.mozilla.org/en-US/docs/Web/API/Performance/now\n  return performance.now();\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  needsPaint = !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 shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\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 (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\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            }\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 () {\n  needsPaint = !0;\n};\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 = shouldYieldToHost;\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","/**\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 getActivityInstanceFromFiber(fiber) {\n  if (31 === fiber.tag) {\n    var activityState = fiber.memoizedState;\n    null === activityState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (activityState = fiber.memoizedState));\n    if (null !== activityState) return activityState.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_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_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar 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 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_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_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return type.displayName || \"Context\";\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  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\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 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$1) {\n                control = x$1;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$2) {\n              control = x$2;\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, childFiber) {\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 fiber.child !== childFiber && null !== childFiber\n        ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n        : 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 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\",\n      previous = null;\n    do\n      (info += describeFiber(workInProgress, previous)),\n        (previous = 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}\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 nextTransitionUpdateLane = 256,\n  nextTransitionDeferredLane = 262144,\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      return 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      return lanes & 261888;\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 3932160;\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 & 4194048)))\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    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\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 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$7 = 31 - clz32(remainingLanes),\n      lane = 1 << index$7;\n    entanglements[index$7] = 0;\n    expirationTimes[index$7] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$7];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$7] = null, index$7 = 0;\n        index$7 < hiddenUpdatesForLane.length;\n        index$7++\n      ) {\n        var update = hiddenUpdatesForLane[index$7];\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 & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$8 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$8;\n    (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n      (root[index$8] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = renderLanes & -renderLanes;\n  renderLane =\n    0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n  return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n    ? 0\n    : renderLane;\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 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 = 128;\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 = getParentHydrationBoundary(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentHydrationBoundary(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      31 === 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}\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$10 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\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}\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, valueField, currentValue) {\n  var descriptor = Object.getOwnPropertyDescriptor(\n    node.constructor.prototype,\n    valueField\n  );\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  if (!node._valueTracker) {\n    var valueField = isCheckable(node) ? \"checked\" : \"value\";\n    node._valueTracker = trackValueOnNode(\n      node,\n      valueField,\n      \"\" + node[valueField]\n    );\n  }\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      track(element);\n      return;\n    }\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  track(element);\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  track(element);\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    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  } 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}\nfunction noop$1() {}\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$286;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_427 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_427) {\n      var element$jscomp$inline_428 = document.createElement(\"div\");\n      element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_427 =\n        \"function\" === typeof element$jscomp$inline_428.oninput;\n    }\n    JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n  } else JSCompiler_inline_result$jscomp$286 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$286 &&\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 toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\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        },\n  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  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\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 = {};\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_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\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      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\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 createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiberImplClass(18, null, null, 0);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\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 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 forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\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}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\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(\n    formatProdErrorMessage(\n      418,\n      1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n        ? \"text\"\n        : \"HTML\",\n      \"\"\n    )\n  );\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      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  }\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, !0);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 31:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\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 tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === 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 && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else if (31 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    nextHydratableInstance =\n      getNextHydratableInstanceAfterHydrationBoundary(fiber);\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\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 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 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}\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 prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  globalMostRecentTransitionTime = now();\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 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 trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$1, noop$1), (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$1, noop$1);\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}\nfunction resolveLazy(lazyType) {\n  try {\n    var init = lazyType._init;\n    return init(lazyType._payload);\n  } catch (x) {\n    if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n      throw ((suspendedThenable = x), SuspenseException);\n    throw x;\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 thenableState$1 = null,\n  thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(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 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          return (\n            (newChild = resolveLazy(newChild)),\n            createChild(returnFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\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      throwOnInvalidObjectTypeImpl(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            (newChild = resolveLazy(newChild)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\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      throwOnInvalidObjectTypeImpl(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          return (\n            (newChild = resolveLazy(newChild)),\n            updateFromMap(\n              existingChildren,\n              returnFiber,\n              newIdx,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\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      throwOnInvalidObjectTypeImpl(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 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            (newChild = resolveLazy(newChild)),\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.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      throwOnInvalidObjectTypeImpl(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$1 = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState$1 = 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  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 & 4194048))) {\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 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 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 pushDehydratedActivitySuspenseHandler(fiber) {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, fiber);\n  null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  22 === fiber.tag\n    ? (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary && (shellBoundary = fiber))\n    : 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          isSuspenseInstancePending(state) ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (\n      19 === node.tag &&\n      (\"forwards\" === node.memoizedProps.revealOrder ||\n        \"backwards\" === node.memoizedProps.revealOrder ||\n        \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n        \"together\" === node.memoizedProps.revealOrder)\n    ) {\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 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 = 0,\n  thenableState = null,\n  globalClientIdCounter = 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 = 0;\n  thenableState = 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 = null);\n    thenableIndexCounter = 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 = localIdCounter = 0;\n  thenableState = 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;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  thenable = trackUsedThenable(thenableState, 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$60 = !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                gesture: null,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$60 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$60 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            gesture: null,\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          gesture: update.gesture,\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$60 &&\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      { destroy: void 0 },\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 & 127) ||\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      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n        (ReactSharedInternals.T = prevTransition);\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$66) {\n      onActionError(actionQueue, node, error$66);\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      { destroy: void 0 },\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 updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    { destroy: void 0 },\n    create,\n    void 0 === deps ? null : 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 (\n    void 0 === initialValue ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\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 (\n    0 === (renderLanes & 42) ||\n    (0 !== (renderLanes & 1073741824) &&\n      0 === (workInProgressRootRenderLanes & 261930))\n  )\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      null !== prevTransition &&\n        null !== currentTransition.types &&\n        (prevTransition.types = currentTransition.types),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop() {}\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\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 stateHook = ensureFormComponentIsStateful(formFiber);\n  null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n  dispatchSetStateInternal(\n    formFiber,\n    stateHook.next.queue,\n    {},\n    requestUpdateLane()\n  );\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) {\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$69 = enqueueUpdate(provider, fiber, lane);\n        null !== root$69 &&\n          (scheduleUpdateOnFiber(root$69, provider, lane),\n          entangleTransitions(root$69, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = 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    gesture: null,\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    gesture: null,\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    gesture: null,\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 & 4194048)) {\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 & 127) ||\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        { destroy: void 0 },\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 JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"_\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"_\" +\n            identifierPrefix +\n            \"r_\" +\n            JSCompiler_inline_result.toString(32) +\n            \"_\");\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;\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$73 in Component)\n      void 0 === newProps[propName$73] &&\n        (newProps[propName$73] = Component[propName$73]);\n  }\n  return newProps;\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$74) {\n    setTimeout(function () {\n      throw e$74;\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$75) {\n    setTimeout(function () {\n      throw e$75;\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 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    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 31:\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\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          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\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(\n  current,\n  workInProgress,\n  renderLanes,\n  nextProps\n) {\n  var nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  null === current &&\n    null === workInProgress.stateNode &&\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      prevState =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextProps = workInProgress.child = current.child;\n        for (nextChildren = 0; null !== nextProps; )\n          (nextChildren =\n            nextChildren | nextProps.lanes | nextProps.childLanes),\n            (nextProps = nextProps.sibling);\n        nextProps = nextChildren & ~prevState;\n      } else (nextProps = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        prevState,\n        renderLanes,\n        nextProps\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        (nextProps = workInProgress.lanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes,\n          nextProps\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 bailoutOffscreenComponent(current, workInProgress) {\n  (null !== current && 22 === current.tag) ||\n    null !== workInProgress.stateNode ||\n    (workInProgress.stateNode = {\n      _visibility: 1,\n      _pendingMarkers: null,\n      _retryCache: null,\n      _transitions: null\n    });\n  return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes,\n  remainingChildLanes\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  workInProgress.childLanes = remainingChildLanes;\n  return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n  nextProps = mountWorkInProgressOffscreenFiber(\n    { mode: nextProps.mode, children: nextProps.children },\n    workInProgress.mode\n  );\n  nextProps.ref = workInProgress.ref;\n  workInProgress.child = nextProps;\n  nextProps.return = workInProgress;\n  return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n  current.flags |= 2;\n  popSuspenseHandler(workInProgress);\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    didSuspend = 0 !== (workInProgress.flags & 128);\n  workInProgress.flags &= -129;\n  if (null === current) {\n    if (isHydrating) {\n      if (\"hidden\" === nextProps.mode)\n        return (\n          (current = mountActivityChildren(workInProgress, nextProps)),\n          (workInProgress.lanes = 536870912),\n          bailoutOffscreenComponent(null, current)\n        );\n      pushDehydratedActivitySuspenseHandler(workInProgress);\n      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" === current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      workInProgress.lanes = 536870912;\n      return null;\n    }\n    return mountActivityChildren(workInProgress, nextProps);\n  }\n  var prevState = current.memoizedState;\n  if (null !== prevState) {\n    var dehydrated = prevState.dehydrated;\n    pushDehydratedActivitySuspenseHandler(workInProgress);\n    if (didSuspend)\n      if (workInProgress.flags & 256)\n        (workInProgress.flags &= -257),\n          (workInProgress = retryActivityComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          ));\n      else if (null !== workInProgress.memoizedState)\n        (workInProgress.child = current.child),\n          (workInProgress.flags |= 128),\n          (workInProgress = null);\n      else throw Error(formatProdErrorMessage(558));\n    else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (didSuspend = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || didSuspend)\n    ) {\n      nextProps = workInProgressRoot;\n      if (\n        null !== nextProps &&\n        ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n        0 !== dehydrated && dehydrated !== prevState.retryLane)\n      )\n        throw (\n          ((prevState.retryLane = dehydrated),\n          enqueueConcurrentRenderForLane(current, dehydrated),\n          scheduleUpdateOnFiber(nextProps, current, dehydrated),\n          SelectiveHydrationException)\n        );\n      renderDidSuspendDelayIfPossible();\n      workInProgress = retryActivityComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      (current = prevState.treeContext),\n        (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n        (hydrationParentFiber = workInProgress),\n        (isHydrating = !0),\n        (hydrationErrors = null),\n        (rootOrSingletonContext = !1),\n        null !== current &&\n          restoreSuspendedTreeContext(workInProgress, current),\n        (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n        (workInProgress.flags |= 4096);\n    return workInProgress;\n  }\n  current = createWorkInProgress(current.child, {\n    mode: nextProps.mode,\n    children: nextProps.children\n  });\n  current.ref = workInProgress.ref;\n  workInProgress.child = current;\n  current.return = workInProgress;\n  return current;\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      (current = nextHydratableInstance)\n        ? ((current = canHydrateHydrationBoundary(\n            current,\n            rootOrSingletonContext\n          )),\n          (current = null !== current && \"&\" !== current.data ? current : null),\n          null !== current &&\n            ((workInProgress.memoizedState = {\n              dehydrated: current,\n              treeContext:\n                null !== treeContextProvider\n                  ? { id: treeContextId, overflow: treeContextOverflow }\n                  : null,\n              retryLane: 536870912,\n              hydrationErrors: null\n            }),\n            (renderLanes = createFiberFromDehydratedFragment(current)),\n            (renderLanes.return = workInProgress),\n            (workInProgress.child = renderLanes),\n            (hydrationParentFiber = workInProgress),\n            (nextHydratableInstance = null)))\n        : (current = null);\n      if (null === current) throw throwOnHydrationMismatch(workInProgress);\n      isSuspenseInstanceFallback(current)\n        ? (workInProgress.lanes = 32)\n        : (workInProgress.lanes = 536870912);\n      return null;\n    }\n    var nextPrimaryChildren = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextPrimaryChildren },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextPrimaryChildren.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextPrimaryChildren.sibling = nextProps),\n        (workInProgress.child = nextPrimaryChildren),\n        (nextProps = workInProgress.child),\n        (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        bailoutOffscreenComponent(null, nextProps)\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n  }\n  var prevState = current.memoizedState;\n  if (\n    null !== prevState &&\n    ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\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            (nextPrimaryChildren = nextProps.fallback),\n            (showFallback = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              showFallback\n            )),\n            (nextPrimaryChildren = createFiberFromFragment(\n              nextPrimaryChildren,\n              showFallback,\n              renderLanes,\n              null\n            )),\n            (nextPrimaryChildren.flags |= 2),\n            (nextProps.return = workInProgress),\n            (nextPrimaryChildren.return = workInProgress),\n            (nextProps.sibling = nextPrimaryChildren),\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 = bailoutOffscreenComponent(null, nextProps)));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      isSuspenseInstanceFallback(nextPrimaryChildren))\n    ) {\n      JSCompiler_temp =\n        nextPrimaryChildren.nextSibling &&\n        nextPrimaryChildren.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\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 = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n        0 !== nextProps && nextProps !== prevState.retryLane)\n      )\n        throw (\n          ((prevState.retryLane = nextProps),\n          enqueueConcurrentRenderForLane(current, nextProps),\n          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n          SelectiveHydrationException)\n        );\n      isSuspenseInstancePending(nextPrimaryChildren) ||\n        renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      isSuspenseInstancePending(nextPrimaryChildren)\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((current = prevState.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextPrimaryChildren.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            restoreSuspendedTreeContext(workInProgress, current),\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      (nextPrimaryChildren = nextProps.fallback),\n      (showFallback = workInProgress.mode),\n      (prevState = current.child),\n      (digest = prevState.sibling),\n      (nextProps = createWorkInProgress(prevState, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n      null !== digest\n        ? (nextPrimaryChildren = createWorkInProgress(\n            digest,\n            nextPrimaryChildren\n          ))\n        : ((nextPrimaryChildren = createFiberFromFragment(\n            nextPrimaryChildren,\n            showFallback,\n            renderLanes,\n            null\n          )),\n          (nextPrimaryChildren.flags |= 2)),\n      (nextPrimaryChildren.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = nextPrimaryChildren),\n      (workInProgress.child = nextProps),\n      bailoutOffscreenComponent(null, nextProps),\n      (nextProps = workInProgress.child),\n      (nextPrimaryChildren = current.child.memoizedState),\n      null === nextPrimaryChildren\n        ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n        : ((showFallback = nextPrimaryChildren.cachePool),\n          null !== showFallback\n            ? ((prevState = CacheContext._currentValue),\n              (showFallback =\n                showFallback.parent !== prevState\n                  ? { parent: prevState, pool: prevState }\n                  : showFallback))\n            : (showFallback = getSuspendedCache()),\n          (nextPrimaryChildren = {\n            baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n            cachePool: showFallback\n          })),\n      (nextProps.memoizedState = nextPrimaryChildren),\n      (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      bailoutOffscreenComponent(current.child, 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 mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  return offscreenProps;\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  treeForkCount\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        treeForkCount: treeForkCount\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      (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  nextProps = nextProps.children;\n  var suspenseContext = suspenseStackCursor.current,\n    shouldForceFallback = 0 !== (suspenseContext & 2);\n  shouldForceFallback\n    ? ((suspenseContext = (suspenseContext & 1) | 2),\n      (workInProgress.flags |= 128))\n    : (suspenseContext &= 1);\n  push(suspenseStackCursor, suspenseContext);\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  nextProps = isHydrating ? treeForkCount : 0;\n  if (!shouldForceFallback && 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  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        nextProps\n      );\n      break;\n    case \"backwards\":\n    case \"unstable_legacy-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        nextProps\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        null,\n        null,\n        void 0,\n        nextProps\n      );\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 31:\n      if (null !== workInProgress.memoizedState)\n        return (\n          (workInProgress.flags |= 128),\n          pushDehydratedActivitySuspenseHandler(workInProgress),\n          null\n        );\n      break;\n    case 13:\n      var state$102 = workInProgress.memoizedState;\n      if (null !== state$102) {\n        if (null !== state$102.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$102 = 0 !== (renderLanes & workInProgress.childLanes);\n      state$102 ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state$102)\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$102) break;\n      else return null;\n    case 22:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(\n          current,\n          workInProgress,\n          renderLanes,\n          workInProgress.pendingProps\n        )\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        var props = workInProgress.pendingProps;\n        current = resolveLazy(workInProgress.elementType);\n        workInProgress.type = current;\n        if (\"function\" === typeof current)\n          shouldConstruct(current)\n            ? ((props = resolveClassComponentProps(current, props)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== current && null !== current) {\n            var $$typeof = current.$$typeof;\n            if ($$typeof === REACT_FORWARD_REF_TYPE) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            } else if ($$typeof === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                current,\n                props,\n                renderLanes\n              );\n              break a;\n            }\n          }\n          workInProgress = getComponentNameFromType(current) || current;\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        (props = workInProgress.type),\n        ($$typeof = resolveClassComponentProps(\n          props,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          props,\n          $$typeof,\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        props = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        $$typeof = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, props, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        props = nextState.cache;\n        pushProvider(workInProgress, CacheContext, props);\n        props !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        props = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: props,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else if (props !== $$typeof) {\n            $$typeof = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError($$typeof);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              props,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (props === $$typeof) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(current, workInProgress, props, 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              (props = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (props[internalInstanceKey] = workInProgress),\n              (props[internalPropsKey] = current),\n              setInitialProperties(props, renderLanes, current),\n              markNodeAsHoistable(props),\n              (workInProgress.stateNode = props))\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          ((props = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          ($$typeof = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n              (nextHydratableInstance = getNextHydratable(props.firstChild)))\n            : (nextHydratableInstance = $$typeof)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if (($$typeof = props = nextHydratableInstance))\n          (props = canHydrateInstance(\n            props,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== props\n              ? ((workInProgress.stateNode = props),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(props.firstChild)),\n                (rootOrSingletonContext = !1),\n                ($$typeof = !0))\n              : ($$typeof = !1);\n        $$typeof || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      $$typeof = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      props = prevState.children;\n      shouldSetTextContent($$typeof, prevState)\n        ? (props = null)\n        : null !== nextState &&\n          shouldSetTextContent($$typeof, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        (($$typeof = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = $$typeof));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, props, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\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                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (props = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              props,\n              renderLanes\n            ))\n          : reconcileChildren(current, workInProgress, props, renderLanes),\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        (props = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, props.value),\n        reconcileChildren(current, workInProgress, props.children, renderLanes),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        ($$typeof = workInProgress.type._context),\n        (props = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        ($$typeof = readContext($$typeof)),\n        (props = props($$typeof)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, props, 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 31:\n      return updateActivityComponent(current, workInProgress, renderLanes);\n    case 22:\n      return updateOffscreenComponent(\n        current,\n        workInProgress,\n        renderLanes,\n        workInProgress.pendingProps\n      );\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (props = readContext(CacheContext)),\n        null === current\n          ? (($$typeof = peekCacheFromPool()),\n            null === $$typeof &&\n              (($$typeof = workInProgressRoot),\n              (prevState = createCache()),\n              ($$typeof.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n              ($$typeof = prevState)),\n            (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, $$typeof))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            ($$typeof = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            $$typeof.parent !== props\n              ? (($$typeof = { parent: props, cache: props }),\n                (workInProgress.memoizedState = $$typeof),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      $$typeof),\n                pushProvider(workInProgress, CacheContext, props))\n              : ((props = prevState.cache),\n                pushProvider(workInProgress, CacheContext, props),\n                props !== $$typeof.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 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n  workInProgress,\n  type,\n  oldProps,\n  newProps,\n  renderLanes\n) {\n  if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n  if (type) {\n    if (\n      ((workInProgress.flags |= 16777216),\n      (renderLanes & 335544128) === renderLanes)\n    )\n      if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n      else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n      else\n        throw (\n          ((suspendedThenable = noopSuspenseyCommitThenable),\n          SuspenseyCommitException)\n        );\n  } else workInProgress.flags &= -16777217;\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    if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n    else\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\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$106 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$106\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$106.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$107 = completedWork.child; null !== child$107; )\n      (newChildLanes |= child$107.lanes | child$107.childLanes),\n        (subtreeFlags |= child$107.subtreeFlags & 65011712),\n        (subtreeFlags |= child$107.flags & 65011712),\n        (child$107.return = completedWork),\n        (child$107 = child$107.sibling);\n  else\n    for (child$107 = completedWork.child; null !== child$107; )\n      (newChildLanes |= child$107.lanes | child$107.childLanes),\n        (subtreeFlags |= child$107.subtreeFlags),\n        (subtreeFlags |= child$107.flags),\n        (child$107.return = completedWork),\n        (child$107 = child$107.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\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      var type = workInProgress.type,\n        nextResource = workInProgress.memoizedState;\n      null === current\n        ? (markUpdate(workInProgress),\n          null !== nextResource\n            ? (bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              preloadInstanceAndSuspendIfNeeded(\n                workInProgress,\n                type,\n                null,\n                newProps,\n                renderLanes\n              )))\n        : nextResource\n          ? nextResource !== current.memoizedState\n            ? (markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n            : (bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217))\n          : ((current = current.memoizedProps),\n            current !== newProps && markUpdate(workInProgress),\n            bubbleProperties(workInProgress),\n            preloadInstanceAndSuspendIfNeeded(\n              workInProgress,\n              type,\n              current,\n              newProps,\n              renderLanes\n            ));\n      return null;\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      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          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      return null;\n    case 5:\n      popHostContext(workInProgress);\n      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          return null;\n        }\n        nextResource = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, nextResource);\n        else {\n          var ownerDocument = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (nextResource) {\n            case 1:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                type\n              );\n              break;\n            case 2:\n              nextResource = ownerDocument.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                type\n              );\n              break;\n            default:\n              switch (type) {\n                case \"svg\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    type\n                  );\n                  break;\n                case \"math\":\n                  nextResource = ownerDocument.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    type\n                  );\n                  break;\n                case \"script\":\n                  nextResource = ownerDocument.createElement(\"div\");\n                  nextResource.innerHTML = \"<script>\\x3c/script>\";\n                  nextResource = nextResource.removeChild(\n                    nextResource.firstChild\n                  );\n                  break;\n                case \"select\":\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(\"select\", {\n                          is: newProps.is\n                        })\n                      : ownerDocument.createElement(\"select\");\n                  newProps.multiple\n                    ? (nextResource.multiple = !0)\n                    : newProps.size && (nextResource.size = newProps.size);\n                  break;\n                default:\n                  nextResource =\n                    \"string\" === typeof newProps.is\n                      ? ownerDocument.createElement(type, { is: newProps.is })\n                      : ownerDocument.createElement(type);\n              }\n          }\n          nextResource[internalInstanceKey] = workInProgress;\n          nextResource[internalPropsKey] = newProps;\n          a: for (\n            ownerDocument = workInProgress.child;\n            null !== ownerDocument;\n\n          ) {\n            if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n              nextResource.appendChild(ownerDocument.stateNode);\n            else if (\n              4 !== ownerDocument.tag &&\n              27 !== ownerDocument.tag &&\n              null !== ownerDocument.child\n            ) {\n              ownerDocument.child.return = ownerDocument;\n              ownerDocument = ownerDocument.child;\n              continue;\n            }\n            if (ownerDocument === workInProgress) break a;\n            for (; null === ownerDocument.sibling; ) {\n              if (\n                null === ownerDocument.return ||\n                ownerDocument.return === workInProgress\n              )\n                break a;\n              ownerDocument = ownerDocument.return;\n            }\n            ownerDocument.sibling.return = ownerDocument.return;\n            ownerDocument = ownerDocument.sibling;\n          }\n          workInProgress.stateNode = nextResource;\n          a: switch (\n            (setInitialProperties(nextResource, type, newProps), type)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              newProps = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              newProps = !0;\n              break a;\n            default:\n              newProps = !1;\n          }\n          newProps && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      preloadInstanceAndSuspendIfNeeded(\n        workInProgress,\n        workInProgress.type,\n        null === current ? null : current.memoizedProps,\n        workInProgress.pendingProps,\n        renderLanes\n      );\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, !0);\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 31:\n      renderLanes = workInProgress.memoizedState;\n      if (null === current || null !== current.memoizedState) {\n        newProps = popHydrationState(workInProgress);\n        if (null !== renderLanes) {\n          if (null === current) {\n            if (!newProps) throw Error(formatProdErrorMessage(318));\n            current = workInProgress.memoizedState;\n            current = null !== current ? current.dehydrated : null;\n            if (!current) throw Error(formatProdErrorMessage(557));\n            current[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          current = !1;\n        } else\n          (renderLanes = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = renderLanes),\n            (current = !0);\n        if (!current) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n        if (0 !== (workInProgress.flags & 128))\n          throw Error(formatProdErrorMessage(558));\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      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        (nextResource = null),\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (nextResource = newProps.memoizedState.cachePool.pool),\n        nextResource !== type && (newProps.flags |= 2048));\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      newProps = workInProgress.memoizedState;\n      if (null === newProps) return bubbleProperties(workInProgress), null;\n      type = 0 !== (workInProgress.flags & 128);\n      nextResource = newProps.rendering;\n      if (null === nextResource)\n        if (type) cutOffTailIfNeeded(newProps, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              nextResource = findFirstSuspended(current);\n              if (null !== nextResource) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(newProps, !1);\n                current = nextResource.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                isHydrating &&\n                  pushTreeFork(workInProgress, newProps.treeForkCount);\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== newProps.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (type = !0),\n            cutOffTailIfNeeded(newProps, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!type)\n          if (\n            ((current = findFirstSuspended(nextResource)), null !== current)\n          ) {\n            if (\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(newProps, !0),\n              null === newProps.tail &&\n                \"hidden\" === newProps.tailMode &&\n                !nextResource.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - newProps.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (type = !0),\n              cutOffTailIfNeeded(newProps, !1),\n              (workInProgress.lanes = 4194304));\n        newProps.isBackwards\n          ? ((nextResource.sibling = workInProgress.child),\n            (workInProgress.child = nextResource))\n          : ((current = newProps.last),\n            null !== current\n              ? (current.sibling = nextResource)\n              : (workInProgress.child = nextResource),\n            (newProps.last = nextResource));\n      }\n      if (null !== newProps.tail)\n        return (\n          (current = newProps.tail),\n          (newProps.rendering = current),\n          (newProps.tail = current.sibling),\n          (newProps.renderingStartTime = now()),\n          (current.sibling = null),\n          (renderLanes = suspenseStackCursor.current),\n          push(\n            suspenseStackCursor,\n            type ? (renderLanes & 1) | 2 : renderLanes & 1\n          ),\n          isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n          current\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 && (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 null;\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 31:\n      if (null !== workInProgress.memoizedState) {\n        popSuspenseHandler(workInProgress);\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 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 31:\n      null !== interruptedWork.memoizedState &&\n        popSuspenseHandler(interruptedWork);\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}\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              destroy_ = destroy;\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          instanceToUse = current.stateNode;\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$140) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$140);\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 && isSingletonScope(fiber.type)) ||\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 && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\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        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(node, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(node),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      isSingletonScope(node.type) &&\n      ((parent = node.stateNode), (before = null)),\n    (node = node.child),\n    null !== node)\n  )\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  else if (\n    4 !== tag &&\n    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\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  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            if (\n              0 !== (root & 4) &&\n              ((root = firstChild.updateQueue),\n              (root = null !== root ? root.events : null),\n              null !== root)\n            )\n              for (\n                JSCompiler_temp = 0;\n                JSCompiler_temp < root.length;\n                JSCompiler_temp++\n              )\n                (anchorOffset = root[JSCompiler_temp]),\n                  (anchorOffset.ref.impl = anchorOffset.nextImpl);\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.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          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\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$139) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$139\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 (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\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 31:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        prevProps = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevProps;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      break;\n    case 30:\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      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(deletedFiber.stateNode);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearHydrationBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearHydrationBoundary(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      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        (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 commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n  ) {\n    finishedRoot = finishedRoot.dehydrated;\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\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 31:\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    if (!retryCache.has(wakeable)) {\n      retryCache.add(wakeable);\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n      wakeable.then(retry, retry);\n    }\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\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            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\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 & 13886)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\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);\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);\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);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href || \"\" === current.href\n                              ? null\n                              : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\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          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.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      }\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\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;\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);\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);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 31:\n      recursivelyTraverseMutationEffects(root, finishedWork);\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 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\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      hoistableRoot = null !== finishedWork.memoizedState;\n      var wasHidden = null !== current && null !== current.memoizedState,\n        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = hoistableRoot\n              ? root._visibility & -2\n              : root._visibility | 1,\n            hoistableRoot &&\n              (null === current ||\n                wasHidden ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag || 26 === root.tag) {\n            if (null === current) {\n              wasHidden = current = root;\n              try {\n                if (((currentResource = wasHidden.stateNode), hoistableRoot))\n                  (maybeNodes = currentResource.style),\n                    \"function\" === typeof maybeNodes.setProperty\n                      ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n                      : (maybeNodes.display = \"none\");\n                else {\n                  i = wasHidden.stateNode;\n                  var styleProp = wasHidden.memoizedProps.style,\n                    display =\n                      void 0 !== styleProp &&\n                      null !== styleProp &&\n                      styleProp.hasOwnProperty(\"display\")\n                        ? styleProp.display\n                        : null;\n                  i.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                wasHidden.stateNode.nodeValue = hoistableRoot\n                  ? \"\"\n                  : wasHidden.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (18 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                var instance = wasHidden.stateNode;\n                hoistableRoot\n                  ? hideOrUnhideDehydratedBoundary(instance, !0)\n                  : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.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);\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      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 5:\n          var parent$141 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n          var before$142 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n          break;\n        case 3:\n        case 4:\n          var parent$143 = hostParentFiber.stateNode.containerInfo,\n            before$144 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$144,\n            parent$143\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\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 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 27:\n        releaseSingletonInstance(finishedWork.stateNode);\n      case 26:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 30:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\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 27:\n        commitHostSingletonAcquisition(finishedWork);\n      case 26:\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 31:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitActivityHydrationCallbacks(finishedRoot, finishedWork);\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        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  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\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      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = 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              finishedRoot.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 31:\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        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256) || !1\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    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 &&\n    (0 !== (parentFiber.subtreeFlags & 10256) || !1);\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 & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\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(\n  parentFiber,\n  committedLanes,\n  suspendedState\n) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(\n        parentFiber,\n        committedLanes,\n        suspendedState\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n  fiber,\n  committedLanes,\n  suspendedState\n) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          suspendedState,\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\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(\n              fiber,\n              committedLanes,\n              suspendedState\n            ),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(\n              fiber,\n              committedLanes,\n              suspendedState\n            ));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(\n        fiber,\n        committedLanes,\n        suspendedState\n      );\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 & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\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 & 2 &&\n          ((i._visibility &= -3),\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}\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    cacheSignal: function () {\n      return readContext(CacheContext).controller.signal;\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  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  globalMostRecentTransitionTime = 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  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n    ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n    : null !== ReactSharedInternals.T\n      ? requestTransitionLane()\n      : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  if (0 === workInProgressDeferredLane)\n    if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n      var lane = nextTransitionDeferredLane;\n      nextTransitionDeferredLane <<= 1;\n      0 === (nextTransitionDeferredLane & 3932160) &&\n        (nextTransitionDeferredLane = 262144);\n      workInProgressDeferredLane = lane;\n    } else workInProgressDeferredLane = 536870912;\n  lane = suspenseHandlerStackCursor.current;\n  null !== lane && (lane.flags |= 32);\n  return workInProgressDeferredLane;\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 & 127) &&\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 & 4194048) !== 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          pendingEffectsLanes = lanes;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              \"Throttled\",\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          null,\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  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  suspendedCommitReason = finishedWork.subtreeFlags;\n  if (\n    suspendedCommitReason & 8192 ||\n    16785408 === (suspendedCommitReason & 16785408)\n  ) {\n    suspendedCommitReason = {\n      stylesheets: null,\n      count: 0,\n      imgCount: 0,\n      imgBytes: 0,\n      suspenseyImages: [],\n      waitingForImages: !0,\n      waitingForViewTransition: !1,\n      unsuspend: noop$1\n    };\n    accumulateSuspenseyCommitOnFiber(\n      finishedWork,\n      lanes,\n      suspendedCommitReason\n    );\n    var timeoutOffset =\n      (lanes & 62914560) === lanes\n        ? globalMostRecentFallbackTime - now()\n        : (lanes & 4194048) === lanes\n          ? globalMostRecentTransitionTime - now()\n          : 0;\n    timeoutOffset = waitForCommitToBeReady(\n      suspendedCommitReason,\n      timeoutOffset\n    );\n    if (null !== timeoutOffset) {\n      pendingEffectsLanes = lanes;\n      root.cancelPendingCommit = timeoutOffset(\n        commitRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          exitStatus,\n          suspendedCommitReason,\n          null,\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    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$6 = 31 - clz32(lanes),\n      lane = 1 << index$6;\n    didAttemptEntireTree[index$6] = -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$1 = null),\n        (thenableIndexCounter$1 = 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  pendingEffectsLanes = 0;\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  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$4 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$4;\n      lanes |= root[index$4];\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 shouldRemainOnPreviousScreen() {\n  var handler = suspenseHandlerStackCursor.current;\n  return null === handler\n    ? !0\n    : (workInProgressRootRenderLanes & 4194048) ===\n        workInProgressRootRenderLanes\n      ? null === shellBoundary\n        ? !0\n        : !1\n      : (workInProgressRootRenderLanes & 62914560) ===\n            workInProgressRootRenderLanes ||\n          0 !== (workInProgressRootRenderLanes & 536870912)\n        ? handler === shellBoundary\n        : !1;\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 & 4194048) !==\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 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$165) {\n      handleThrow(root, thrownValue$165);\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 (\n                  resource\n                    ? preloadResource(resource)\n                    : hostFiber.stateNode.complete\n                ) {\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$167) {\n      handleThrow(root, thrownValue$167);\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$1 = null;\n  thenableIndexCounter$1 = 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  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    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? ((root.callbackNode = null),\n        (root.callbackPriority = 0),\n        scheduleCallback$1(NormalPriority$1, function () {\n          flushPassiveEffects();\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(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (ReactDOMSharedInternals.p = transitions),\n          (ReactSharedInternals.T = recoverableErrors);\n      }\n    }\n    pendingEffectsStatus = 1;\n    flushMutationEffects();\n    flushLayoutEffects();\n    flushSpawnedWork();\n  }\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\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);\n        var priorSelectionInformation = selectionInformation,\n          curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = priorSelectionInformation.focusedElem,\n          priorSelectionRange = priorSelectionInformation.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    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    var remainingLanes = root.pendingLanes;\n    0 === remainingLanes && (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      remainingLanes = 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 = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 261930) && 0 !== (remainingLanes & 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() {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects();\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    pendingFinishedWork = 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 31:\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$170 = firstScheduledRoot; null !== root$170; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$170.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$170.suspendedLanes,\n                pingedLanes = root$170.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 & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$170,\n                root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$170.cancelPendingCommit ||\n                  -1 !== root$170.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n        root$170 = root$170.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  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  (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n    flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n  0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\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$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$5] = 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() && 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  if (0 === currentEventTransitionLane) {\n    var actionScopeLane = currentEntangledLane;\n    0 === actionScopeLane &&\n      ((actionScopeLane = nextTransitionUpdateLane),\n      (nextTransitionUpdateLane <<= 1),\n      0 === (nextTransitionUpdateLane & 261888) &&\n        (nextTransitionUpdateLane = 256));\n    currentEventTransitionLane = actionScopeLane;\n  }\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_1577 = 0;\n  i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1577++\n) {\n  var eventName$jscomp$inline_1578 =\n      simpleEventPluginEvents[i$jscomp$inline_1577],\n    domEventName$jscomp$inline_1579 =\n      eventName$jscomp$inline_1578.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1580 =\n      eventName$jscomp$inline_1578[0].toUpperCase() +\n      eventName$jscomp$inline_1578.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1579,\n    \"on\" + capitalizedEvent$jscomp$inline_1580\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 (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === 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 = getParent;\n                reactEventName = SyntheticEventCtor;\n                instance = reactEventType;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = inCapturePhase(_instance)\n                )\n                  lastHostComponent++;\n                _instance = 0;\n                for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n                  _instance++;\n                for (; 0 < lastHostComponent - _instance; )\n                  (reactEventName = inCapturePhase(reactEventName)),\n                    lastHostComponent--;\n                for (; 0 < _instance - lastHostComponent; )\n                  (instance = inCapturePhase(instance)), _instance--;\n                for (; lastHostComponent--; ) {\n                  if (\n                    reactEventName === instance ||\n                    (null !== instance && reactEventName === instance.alternate)\n                  ) {\n                    inCapturePhase = reactEventName;\n                    break b;\n                  }\n                  reactEventName = inCapturePhase(reactEventName);\n                  instance = inCapturePhase(instance);\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    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\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 setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\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      break;\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      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\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      break;\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  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\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      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\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          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\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$184 = props[hasSrc];\n          if (null != propValue$184)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$184;\n                break;\n              case \"type\":\n                propValue = propValue$184;\n                break;\n              case \"checked\":\n                checked = propValue$184;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$184;\n                break;\n              case \"value\":\n                propKey = propValue$184;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$184;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$184)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$184, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\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      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(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\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$184 in props)\n          props.hasOwnProperty(propValue$184) &&\n            ((hasSrc = props[propValue$184]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$184,\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$201 in nextProps) {\n        var propKey = nextProps[propKey$201];\n        lastProp = lastProps[propKey$201];\n        if (\n          nextProps.hasOwnProperty(propKey$201) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$201) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\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$201,\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$201 = 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              propKey$201 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\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$201\n        ? updateOptions(domElement, !!lastProps, propKey$201, !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$201 = 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              propKey$201 = name;\n              break;\n            case \"defaultValue\":\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$201, propKey);\n      return;\n    case \"option\":\n      for (var propKey$217 in lastProps)\n        if (\n          ((propKey$201 = lastProps[propKey$217]),\n          lastProps.hasOwnProperty(propKey$217) &&\n            null != propKey$201 &&\n            !nextProps.hasOwnProperty(propKey$217))\n        )\n          switch (propKey$217) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$217,\n                null,\n                nextProps,\n                propKey$201\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$201 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$201 !== propKey &&\n            (null != propKey$201 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$201 &&\n                \"function\" !== typeof propKey$201 &&\n                \"symbol\" !== typeof propKey$201;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$201,\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$222 in lastProps)\n        (propKey$201 = lastProps[propKey$222]),\n          lastProps.hasOwnProperty(propKey$222) &&\n            null != propKey$201 &&\n            !nextProps.hasOwnProperty(propKey$222) &&\n            setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n      for (checked in nextProps)\n        if (\n          ((propKey$201 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$201 !== propKey &&\n            (null != propKey$201 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$201)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$201,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$227 in lastProps)\n          (propKey$201 = lastProps[propKey$227]),\n            lastProps.hasOwnProperty(propKey$227) &&\n              void 0 !== propKey$201 &&\n              !nextProps.hasOwnProperty(propKey$227) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$227,\n                void 0,\n                nextProps,\n                propKey$201\n              );\n        for (defaultChecked in nextProps)\n          (propKey$201 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$201 === propKey ||\n              (void 0 === propKey$201 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$201,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$232 in lastProps)\n    (propKey$201 = lastProps[propKey$232]),\n      lastProps.hasOwnProperty(propKey$232) &&\n        null != propKey$201 &&\n        !nextProps.hasOwnProperty(propKey$232) &&\n        setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n  for (lastProp in nextProps)\n    (propKey$201 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$201 === propKey ||\n        (null == propKey$201 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n  switch (initiatorType) {\n    case \"css\":\n    case \"script\":\n    case \"font\":\n    case \"img\":\n    case \"image\":\n    case \"input\":\n    case \"link\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction estimateBandwidth() {\n  if (\"function\" === typeof performance.getEntriesByType) {\n    for (\n      var count = 0,\n        bits = 0,\n        resourceEntries = performance.getEntriesByType(\"resource\"),\n        i = 0;\n      i < resourceEntries.length;\n      i++\n    ) {\n      var entry = resourceEntries[i],\n        transferSize = entry.transferSize,\n        initiatorType = entry.initiatorType,\n        duration = entry.duration;\n      if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n        initiatorType = 0;\n        duration = entry.responseEnd;\n        for (i += 1; i < resourceEntries.length; i++) {\n          var overlapEntry = resourceEntries[i],\n            overlapStartTime = overlapEntry.startTime;\n          if (overlapStartTime > duration) break;\n          var overlapTransferSize = overlapEntry.transferSize,\n            overlapInitiatorType = overlapEntry.initiatorType;\n          overlapTransferSize &&\n            isLikelyStaticResource(overlapInitiatorType) &&\n            ((overlapEntry = overlapEntry.responseEnd),\n            (initiatorType +=\n              overlapTransferSize *\n              (overlapEntry < duration\n                ? 1\n                : (duration - overlapStartTime) /\n                  (overlapEntry - overlapStartTime))));\n        }\n        --i;\n        bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n        count++;\n        if (10 < count) break;\n      }\n    }\n    if (0 < count) return bits / count / 1e6;\n  }\n  return navigator.connection &&\n    ((count = navigator.connection.downlink), \"number\" === typeof count)\n    ? count\n    : 5;\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 isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n  var node = hydrationInstance,\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 || \"/&\" === node)) {\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(hydrationInstance);\n          return;\n        }\n        depth--;\n      } else if (\n        \"$\" === node ||\n        \"$?\" === node ||\n        \"$~\" === node ||\n        \"$!\" === node ||\n        \"&\" === node\n      )\n        depth++;\n      else if (\"html\" === node)\n        releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n      else if (\"head\" === node) {\n        node = parentInstance.ownerDocument.head;\n        releaseSingletonInstance(node);\n        for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n          var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n            nodeName = node$jscomp$0.nodeName;\n          node$jscomp$0[internalHoistableMarker] ||\n            \"SCRIPT\" === nodeName ||\n            \"STYLE\" === nodeName ||\n            (\"LINK\" === nodeName &&\n              \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n            node.removeChild(node$jscomp$0);\n          node$jscomp$0 = nextNode$jscomp$0;\n        }\n      } else\n        \"body\" === node &&\n          releaseSingletonInstance(parentInstance.ownerDocument.body);\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n  var node = suspenseInstance;\n  suspenseInstance = 0;\n  do {\n    var nextNode = node.nextSibling;\n    1 === node.nodeType\n      ? isHidden\n        ? ((node._stashedDisplay = node.style.display),\n          (node.style.display = \"none\"))\n        : ((node.style.display = node._stashedDisplay || \"\"),\n          \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n      : 3 === node.nodeType &&\n        (isHidden\n          ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n          : (node.nodeValue = node._stashedText || \"\"));\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node))\n        if (0 === suspenseInstance) break;\n        else suspenseInstance--;\n      else\n        (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n          suspenseInstance++;\n    node = nextNode;\n  } while (node);\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 canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n  for (; 8 !== 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 isSuspenseInstancePending(instance) {\n  return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$~\" === instance.data) instance._reactRetry = callback;\n  else if (\"$?\" !== instance.data || \"loading\" !== 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        \"$~\" === nodeType ||\n        \"&\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n  hydrationInstance = hydrationInstance.nextSibling;\n  for (var depth = 0; hydrationInstance; ) {\n    if (8 === hydrationInstance.nodeType) {\n      var data = hydrationInstance.data;\n      if (\"/$\" === data || \"/&\" === data) {\n        if (0 === depth)\n          return getNextHydratable(hydrationInstance.nextSibling);\n        depth--;\n      } else\n        (\"$\" !== data &&\n          \"$!\" !== data &&\n          \"$?\" !== data &&\n          \"$~\" !== data &&\n          \"&\" !== data) ||\n          depth++;\n    }\n    hydrationInstance = hydrationInstance.nextSibling;\n  }\n  return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\n        \"$\" === data ||\n        \"$!\" === data ||\n        \"$?\" === data ||\n        \"$~\" === data ||\n        \"&\" === data\n      ) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else (\"/$\" !== data && \"/&\" !== 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}\nfunction releaseSingletonInstance(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : 9 === container.nodeType\n      ? container\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$243 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$244 = styles$243.get(type);\n        resource$244 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$244 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$243.set(type, resource$244),\n          (styles$243 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$243._p &&\n            ((resource$244.instance = styles$243),\n            (resource$244.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$243 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$244.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$244;\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$249 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$249)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$249),\n            markNodeAsHoistable(instance$249),\n            instance$249\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$249 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$249);\n        var linkInstance = instance$249;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$249, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$249, props.precedence, hoistableRoot);\n        return (resource.instance = instance$249);\n      case \"script\":\n        instance$249 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$249)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$249)))\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}\nfunction suspendResource(state, hoistableRoot, resource, props) {\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}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count || 0 < state.imgCount\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 + timeoutOffset);\n        0 < state.imgBytes &&\n          0 === estimatedBytesWithinLimit &&\n          (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n        var imgTimer = setTimeout(\n          function () {\n            state.waitingForImages = !1;\n            if (\n              0 === state.count &&\n              (state.stylesheets &&\n                insertSuspendedStylesheets(state, state.stylesheets),\n              state.unsuspend)\n            ) {\n              var unsuspend = state.unsuspend;\n              state.unsuspend = null;\n              unsuspend();\n            }\n          },\n          (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n            timeoutOffset\n        );\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n          clearTimeout(imgTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\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  onDefaultTransitionIndicator,\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  formState,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  onDefaultTransitionIndicator\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    onDefaultTransitionIndicator,\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 || 31 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n  if (13 === fiber.tag || 31 === fiber.tag) {\n    var lane = requestUpdateLane();\n    lane = getBumpedLaneForHydrationByLane(lane);\n    var root = enqueueConcurrentRenderForLane(fiber, lane);\n    null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n    markRetryLaneIfNotHydrated(fiber, lane);\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 31:\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 (31 === tag) {\n        targetNode = getActivityInstanceFromFiber(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            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (31 === targetInst) {\n        if (\n          ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\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 defaultOnDefaultTransitionIndicator() {\n  function handleNavigate(event) {\n    event.canIntercept &&\n      \"react-transition\" === event.info &&\n      event.intercept({\n        handler: function () {\n          return new Promise(function (resolve) {\n            return (pendingResolve = resolve);\n          });\n        },\n        focusReset: \"manual\",\n        scroll: \"manual\"\n      });\n  }\n  function handleNavigateComplete() {\n    null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n    isCancelled || setTimeout(startFakeNavigation, 20);\n  }\n  function startFakeNavigation() {\n    if (!isCancelled && !navigation.transition) {\n      var currentEntry = navigation.currentEntry;\n      currentEntry &&\n        null != currentEntry.url &&\n        navigation.navigate(currentEntry.url, {\n          state: currentEntry.getState(),\n          info: \"react-transition\",\n          history: \"replace\"\n        });\n    }\n  }\n  if (\"object\" === typeof navigation) {\n    var isCancelled = !1,\n      pendingResolve = null;\n    navigation.addEventListener(\"navigate\", handleNavigate);\n    navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n    navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n    setTimeout(startFakeNavigation, 100);\n    return function () {\n      isCancelled = !0;\n      navigation.removeEventListener(\"navigate\", handleNavigate);\n      navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n      navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n      null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\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_1840 = React.version;\nif (\n  \"19.2.3\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1840\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1840,\n      \"19.2.3\"\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_2347 = {\n  bundleType: 0,\n  version: \"19.2.3\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.2.3\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2348.isDisabled &&\n    hook$jscomp$inline_2348.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2348.inject(\n        internals$jscomp$inline_2347\n      )),\n        (injectedHook = hook$jscomp$inline_2348);\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  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  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    null,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\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    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.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    formState,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    defaultOnDefaultTransitionIndicator\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.2.3\";\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","/**\n * SVG-specific constants for geometry building.\n * These compensate for differences between HTML CSS layout and native SVG rendering.\n */\nimport {\n  PARTICIPANT_TOP_SPACE_FOR_GROUP as _HTML_PARTICIPANT_TOP,\n} from \"@/positioning/Constants\";\n\n/**\n * SVG-specific participant top offset.\n * The HTML renderer's .life-line-layer has .pt-2 (8px) CSS padding that pushes\n * participants down. SVG has no such padding, so we add 8px to match the effective\n * HTML position and keep messages close to participant boxes.\n */\nexport const PARTICIPANT_TOP_SPACE = _HTML_PARTICIPANT_TOP + 8;\n\n/**\n * Internal padding inside the HTML participant box that the positioning engine\n * does not account for. The engine's labelWidth is pure text width, but the HTML\n * box adds: 2×2px border + 2×2px padding + 2×4px inner text padding (px-1) = 16px.\n *\n * Assignee participants (e.g. \"b:Type\") render TWO EditableSpan components\n * in HTML, each with 4px left + 4px right padding (from EditableSpan.css\n * `.editable-span-base { padding: 0 4px }`). The extra span adds 8px.\n */\nexport const PARTICIPANT_BOX_PADDING = 16;\n// HTML assignee participants render \"assignee\" \":\" \"label\" as separate spans.\n// The SVG measures the full \"assignee:label\" string, which is narrower than the\n// sum of the individual HTML spans. Use 14px padding to match HTML's box width.\nexport const PARTICIPANT_BOX_PADDING_ASSIGNEE = 16;\nexport const PARTICIPANT_ICON_ROW_WIDTH = 28; // 24px icon + 4px right margin\n/**\n * Extra width for an emoji prefix in the participant label.\n * The SVG renderer prepends a `<tspan>` with one emoji character (~16px at 16px font)\n * plus an em-space (&#x2003; ≈ 16px), but the label text measurement only covers\n * the plain name. Add ~20px to account for both glyphs.\n */\nexport const PARTICIPANT_EMOJI_WIDTH = 20;\n\n/** Visual height of participant box, matching HTML renderer's h-10 (40px) */\nexport const PARTICIPANT_VISUAL_HEIGHT = 40;\n/** Max visual width of participant box, matching HTML CSS max-width: 250px (SeqDiagram.css) */\nexport const PARTICIPANT_MAX_WIDTH = 250;\n\n/**\n * Pass through X coordinate without rounding — sub-pixel precision improves\n * parity with the HTML renderer.\n */\nexport function snapX(x: number): number {\n  return x;\n}\n\n/**\n * Convert React CSSProperties to SVG-compatible style record.\n * Maps CSS property names to SVG equivalents (e.g., `color` → `fill` for text).\n * Returns undefined if the style is empty.\n */\nexport function cssToSvgStyle(css: import(\"react\").CSSProperties): Record<string, string> | undefined {\n  const result: Record<string, string> = {};\n  let hasKeys = false;\n  for (const [key, value] of Object.entries(css)) {\n    if (value == null) continue;\n    hasKeys = true;\n    // SVG text uses `fill` for color, not CSS `color`\n    if (key === \"color\") {\n      result[\"fill\"] = String(value);\n    } else {\n      // Convert camelCase to kebab-case for SVG style attribute\n      const svgKey = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n      result[svgKey] = String(value);\n    }\n  }\n  return hasKeys ? result : undefined;\n}\n","/**\n * Builds participant, lifeline, and group geometry from parser models\n * and the positioning engine output.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n  measureSvgParticipantLabelWidth,\n} from \"@/positioning/WidthProviderFunc\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\nimport {\n  MARGIN,\n  MIN_PARTICIPANT_WIDTH,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { ParticipantGeometry, LifelineGeometry, GroupGeometry } from \"./geometry\";\nimport {\n  PARTICIPANT_TOP_SPACE,\n  PARTICIPANT_BOX_PADDING,\n  PARTICIPANT_BOX_PADDING_ASSIGNEE,\n  PARTICIPANT_ICON_ROW_WIDTH,\n  PARTICIPANT_EMOJI_WIDTH,\n  PARTICIPANT_VISUAL_HEIGHT,\n  PARTICIPANT_MAX_WIDTH,\n  snapX,\n} from \"./svgConstants\";\n\nexport function buildParticipants(\n  models: IParticipantModel[],\n  coordinates: Coordinates,\n  verticalCoordinates: VerticalCoordinates,\n  measureText?: (text: string, type: TextType) => number,\n): ParticipantGeometry[] {\n  return models\n    .map((m) => {\n      const centerX = snapX(coordinates.getPosition(m.name));\n      const halfWidth = coordinates.half(m.name);\n      // Compute visual box width from raw text measurement + CSS decorations.\n      // The positioning engine clamps labelWidth to MIN_PARTICIPANT_WIDTH, losing\n      // the actual text width.  Re-measure here to get the correct box size.\n      // HTML box = max(textWidth + BOX_PADDING, MIN_PARTICIPANT_WIDTH).\n      // Assignee participants (name contains \":\") render two EditableSpan components\n      // in HTML, each with 8px horizontal padding (EditableSpan.css .editable-span-base).\n      const isAssignee = m.name.includes(\":\") && m.getDisplayName() === m.name;\n      let width: number;\n      let measuredTextWidth: number | undefined;\n      let measuredStereotypeWidth: number | undefined;\n      if (measureText && m.name !== _STARTER_) {\n        const textWidth = measureSvgParticipantLabelWidth(m.getDisplayName());\n        measuredTextWidth = textWidth;\n        const padding = isAssignee ? PARTICIPANT_BOX_PADDING_ASSIGNEE : PARTICIPANT_BOX_PADDING;\n        const iconWidth = m.hasIcon() ? PARTICIPANT_ICON_ROW_WIDTH : 0;\n        const emojiWidth = m.emoji ? PARTICIPANT_EMOJI_WIDTH : 0;\n        // When a stereotype is present, the participant box must be wide enough to fit the\n        // stereotype text. HTML's box = max(contentRowWidth + padding, stereotypeGlyphWidth + 8, minWidth).\n        // The +8 = 4px box padding (2px * 2) + 4px border (2px * 2), both included in border-box sizing.\n        const STEREOTYPE_BOX_OVERHEAD = 8;\n        if (m.stereotype) {\n          measuredStereotypeWidth = measureSvgParticipantLabelWidth(`«${m.stereotype}»`);\n        }\n        const stereotypeBoxWidth = measuredStereotypeWidth != null\n          ? measuredStereotypeWidth + STEREOTYPE_BOX_OVERHEAD\n          : 0;\n        width = Math.min(Math.max(textWidth + padding + iconWidth + emojiWidth, stereotypeBoxWidth, MIN_PARTICIPANT_WIDTH), PARTICIPANT_MAX_WIDTH);\n      } else {\n        width = Math.min(halfWidth * 2 - MARGIN, PARTICIPANT_MAX_WIDTH);\n      }\n      if (m.name === _STARTER_) width = Math.min(width, 80); // match HTML min-width: 80px\n      const creationTop = verticalCoordinates.getCreationTop(m.name);\n      const isStarter = m.name === _STARTER_;\n      // updateCreationTop subtracts 8px for HTML CSS padding (.life-line-layer .pt-2);\n      // SVG has no such padding, so add 8 back to recover the raw VM top, plus the\n      // SVG stroke-model offset is already accounted for by PARTICIPANT_TOP_SPACE.\n      const y =\n        creationTop != null\n          ? Math.max(PARTICIPANT_TOP_SPACE, creationTop + 8)\n          : PARTICIPANT_TOP_SPACE;\n\n      return {\n        name: m.name,\n        label: m.getDisplayName(),\n        x: centerX,\n        y,\n        width,\n        height: PARTICIPANT_VISUAL_HEIGHT,\n        isStarter,\n        showBottom: creationTop == null && !isStarter,\n        labelWidth: measuredTextWidth,\n        type: m.type,\n        stereotype: m.stereotype,\n        stereotypeWidth: measuredStereotypeWidth,\n        color: m.color,\n        emoji: m.emoji,\n        groupId: m.groupId,\n      };\n    });\n}\n\nexport function buildLifelines(\n  participants: ParticipantGeometry[],\n  diagramHeight: number,\n): LifelineGeometry[] {\n  return participants.map((p) => ({\n    participantName: p.name,\n    x: p.x, // align with occurrence bar center (same as participant center)\n    topY: p.y + p.height, // starts at bottom of participant box (visible part)\n    bottomY: diagramHeight,\n    dashed: true,\n  }));\n}\n\n/**\n * Build group geometry by grouping participants that share the same groupId.\n * Each group gets a bounding box from leftmost to rightmost participant,\n * with a small margin matching the HTML renderer's LIFELINE_GROUP_OUTLINE_MARGIN.\n */\nexport function buildGroups(\n  participants: ParticipantGeometry[],\n  diagramHeight: number,\n): GroupGeometry[] {\n  // Group outline extends 2px outside the participant bounding box on each side.\n  const GROUP_OUTLINE_MARGIN = -2;\n\n  // Collect participants by groupId\n  const groupMap = new Map<string | number, ParticipantGeometry[]>();\n  for (const p of participants) {\n    if (p.groupId != null) {\n      const existing = groupMap.get(p.groupId);\n      if (existing) {\n        existing.push(p);\n      } else {\n        groupMap.set(p.groupId, [p]);\n      }\n    }\n  }\n\n  const groups: GroupGeometry[] = [];\n  for (const [groupId, members] of groupMap) {\n    if (members.length === 0) continue;\n\n    // Find bounding box from leftmost to rightmost participant\n    let minLeft = Infinity;\n    let maxRight = -Infinity;\n    let minY = Infinity;\n    for (const m of members) {\n      const left = m.x - m.width / 2;\n      const right = m.x + m.width / 2;\n      if (left < minLeft) minLeft = left;\n      if (right > maxRight) maxRight = right;\n      if (m.y < minY) minY = m.y;\n    }\n\n    // Group box: from leftmost participant left edge to rightmost participant right edge,\n    // with a small margin inset (matching HTML's outline positioning).\n    const x = minLeft + GROUP_OUTLINE_MARGIN;\n    const width = maxRight - minLeft - 2 * GROUP_OUTLINE_MARGIN;\n    // The HTML group container starts at the top of the content region and uses an\n    // absolutely-positioned title strip, so the outer outline should stop at the\n    // content bottom rather than adding a separate header band to its height.\n    // +1.5 corrects for the SVG dominant-baseline=\"middle\" rendering offset so that\n    // the title text screen position matches the HTML title bar center exactly.\n    const y = minY - 20 + 1.5;\n    // renderGroup uses rectH = g.height + sw (= g.height + 1.5) with rectY = g.y - sw.\n    // Rendered rect bottom = 34 + (g.y - sw) + (g.height + sw) = 34 + g.y + g.height.\n    // The rect must extend past the HTML group's visible bottom to ensure visual coverage\n    // of the full group area while keeping the measured <g> height close to HTML's.\n    // K=14: g.height=212.5, rendered bottom=256 (clipped by viewBox=255), <g> h≈214 (dh=+2)\n    // K=12: g.height=210.5, rendered bottom=254 (not clipped), <g> h=212 (dh=0) — worse pixel match\n    // K=13 is a compromise: g.height=211.5, rendered bottom=255 (viewBox edge), <g> h≈213 (dh≈+1)\n    const height = Math.max(0, diagramHeight - y + 13);\n\n    // Use groupId as the display name (the parser sets groupId = group name from DSL)\n    groups.push({\n      name: String(groupId),\n      x,\n      y,\n      width,\n      height,\n    });\n  }\n\n  return groups;\n}\n","/**\n * Builds FragmentGeometry from statement info + positioning engine.\n * Extracted from buildGeometry.ts for clarity and to enable\n * fragment-aware comment positioning.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport { measureSvgFragmentLabelWidth } from \"@/positioning/WidthProviderFunc\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport {\n  FRAGMENT_MIN_WIDTH,\n} from \"@/positioning/Constants\";\nimport type { TextType } from \"@/positioning/Coordinate\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { Participants } from \"@/parser/index.js\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport type { FragmentGeometry, FragmentSectionGeometry, CommentGeometry } from \"./geometry\";\nimport type { StatementInfo } from \"./walkStatements\";\n\nexport interface BuildFragmentResult {\n  fragment: FragmentGeometry;\n  comment?: CommentGeometry;\n}\n\nfunction snapX(x: number): number {\n  return x;\n}\n\nconst COMMENT_FONT_ASCENT = 15;\n\nexport function buildFragmentGeometry(\n  info: StatementInfo,\n  coord: { top: number; height: number },\n  coordinates: Coordinates,\n  verticalCoordinates: VerticalCoordinates,\n  allParticipants: string[],\n  measureText?: (text: string, type: TextType) => number,\n  commentHeight: number = 0,\n  commentText?: string,\n  commentStyle?: Record<string, string>,\n  commentYBase?: number,\n): BuildFragmentResult | null {\n  // Get the fragment's parse tree node to find local participants\n  const statNode = info.statNode;\n  if (!statNode) return null;\n\n  // Find the fragment context node (loop, alt, opt, etc.)\n  const fragmentCtx = findFragmentContext(statNode);\n  if (!fragmentCtx) {\n    // Fallback: use full diagram width\n    return {\n      fragment: {\n        kind: info.fragmentKind!,\n        label: info.fragmentLabel || \"\",\n        labelWidth: info.fragmentLabel ? measureSvgFragmentLabelWidth(resolveEmojiInText(info.fragmentLabel)) : undefined,\n        x: 0,\n        y: coord.top,\n        width: coordinates.getWidth(),\n        height: coord.height,\n        headerY: coord.top + 1 + commentHeight,\n        sections: [],\n        number: info.number,\n        depth: info.depth,\n      },\n      comment: commentText && commentYBase != null ? {\n        x: 1,\n        y: commentYBase + 1 + COMMENT_FONT_ASCENT,\n        text: commentText,\n        style: commentStyle,\n        fragmentComment: true,\n      } : undefined,\n    };\n  }\n\n  // Compute fragment width from local participants, including nested fragments.\n  // getLocalParticipantNames only does shallow extraction; we also walk inner\n  // section blocks to capture participants inside nested par/alt/loop/etc.\n  const localNames = getDeepParticipantNames(fragmentCtx, info.fragmentSections);\n  const leftParticipant = allParticipants.find((p) => localNames.includes(p)) || \"\";\n  const rightParticipant = allParticipants.slice().reverse().find((p) => localNames.includes(p)) || \"\";\n\n  // Fragment's own border — use statNode (not fragmentCtx) to match HTML's\n  // TotalWidth which receives the stat context containing the fragment.\n  const frameBuilder = new FrameBuilder(allParticipants as string[]);\n  const frame = frameBuilder.getFrame(statNode);\n  const fragBorder = FrameBorder(frame);\n\n  let fragWidth: number;\n  let fragX: number;\n\n  if (leftParticipant && rightParticipant) {\n    const participantWidth =\n      coordinates.distance(leftParticipant, rightParticipant) +\n      coordinates.half(leftParticipant) +\n      coordinates.half(rightParticipant);\n    // Self-call extra width — matches HTML's TotalWidth (WidthOfContext.ts)\n    const selfMessages = AllMessages(statNode).filter((m: any) => m.from === m.to);\n    const extraWidths = selfMessages.map(\n      (m: any) =>\n        coordinates.getMessageWidth(m) -\n        coordinates.distance(m.from || _STARTER_, rightParticipant) -\n        coordinates.half(rightParticipant),\n    );\n    const extraWidth = Math.max(0, ...extraWidths);\n    fragWidth = Math.max(participantWidth, FRAGMENT_MIN_WIDTH) + fragBorder.left + fragBorder.right + extraWidth;\n    fragX = snapX(coordinates.getPosition(leftParticipant)) - coordinates.half(leftParticipant);\n  } else {\n    fragWidth = Math.max(FRAGMENT_MIN_WIDTH, coordinates.getWidth());\n    fragX = 0;\n  }\n\n  // No explicit nesting indent needed — fragBorder.left/right from FrameBorder\n  // already accounts for inner nesting depth, matching HTML's TotalWidth formula.\n\n  // Build section geometry for multi-section fragments (alt, tcf)\n  const sections: FragmentSectionGeometry[] = [];\n  if (info.fragmentSections && info.fragmentSections.length > 1) {\n    // For multi-section fragments, compute section positions from inner block coordinates\n    let sectionY = coord.top;\n    for (let i = 0; i < info.fragmentSections.length; i++) {\n      const section = info.fragmentSections[i];\n      // First section starts at fragment top (no separator line)\n      // Subsequent sections need separator lines\n      if (i > 0) {\n        // Find the first statement key in this section's block to determine the divider Y\n        const sectionBlock = section.blockNode;\n        if (sectionBlock) {\n          const innerStats = sectionBlock.stat?.() || [];\n          if (innerStats.length > 0) {\n            const firstStatKey = createStatementKeyFromStat(innerStats[0]);\n            if (firstStatKey) {\n              const innerCoord = verticalCoordinates.getStatementCoordinate(firstStatKey);\n              if (innerCoord) {\n                // Section separator is positioned above the first inner statement\n                // with label space (20px) and padding (8+8+1px border)\n                sectionY = innerCoord.top - 20 - 8 - 8 - 1;\n              }\n            }\n          }\n        }\n      }\n\n      const sectionHeight = i < info.fragmentSections.length - 1\n        ? 0  // Height computed by renderer from next section's Y\n        : coord.top + coord.height - sectionY;\n\n      sections.push({\n        label: section.label,\n        y: sectionY,\n        height: sectionHeight,\n        labelWidth: section.label ? measureSvgFragmentLabelWidth(resolveEmojiInText(section.label)) : undefined,\n        innerLabel: /^\\[\\s*.*\\s*\\]$/.test(section.label) ? section.label.slice(1, -1).trim() : undefined,\n        innerLabelWidth: /^\\[\\s*.*\\s*\\]$/.test(section.label)\n          ? measureSvgFragmentLabelWidth(resolveEmojiInText(section.label.slice(1, -1).trim()))\n          : undefined,\n        keyword: (() => {\n          const spaceIdx = section.label.indexOf(\" \");\n          if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n            return section.label.substring(0, spaceIdx);\n          }\n          return undefined;\n        })(),\n        keywordWidth: (() => {\n          const spaceIdx = section.label.indexOf(\" \");\n          if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n            return measureSvgFragmentLabelWidth(section.label.substring(0, spaceIdx));\n          }\n          return undefined;\n        })(),\n        detail: (() => {\n          const spaceIdx = section.label.indexOf(\" \");\n          if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n            return section.label.substring(spaceIdx + 1);\n          }\n          return undefined;\n        })(),\n        detailWidth: (() => {\n          const spaceIdx = section.label.indexOf(\" \");\n          if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n            return measureSvgFragmentLabelWidth(section.label.substring(spaceIdx + 1));\n          }\n          return undefined;\n        })(),\n      });\n    }\n  }\n\n  // Par fragment dividers: HTML renders a 1px border-top between par child statements.\n  // The par block has a flat list of statements; add separator sections so the renderer\n  // draws lines between them. The renderer iterates from sections[1] onwards, drawing\n  // a separator line at each section.y, so we need a dummy first section + one per divider.\n  if (info.fragmentKind === \"par\" && sections.length === 0) {\n    const parBlock = info.fragmentSections?.[0]?.blockNode;\n    const innerStats = parBlock?.stat?.() || [];\n    if (innerStats.length > 1) {\n      // Dummy first section (renderer skips i=0)\n      sections.push({ label: \"\", y: coord.top, height: 0 });\n      for (let i = 1; i < innerStats.length; i++) {\n        const statKey = createStatementKeyFromStat(innerStats[i]);\n        if (!statKey) continue;\n        const innerCoord = verticalCoordinates.getStatementCoordinate(statKey);\n        if (!innerCoord) continue;\n        // HTML par divider: border-top on .statement-container with .my-4 (16px margin).\n        // CSS margin collapse makes the gap 16px between statements.\n        // The border-top sits at the statement-container's top edge, which is\n        // messageY - messageHeight/2 in the vertical coordinate system.\n        // fragment.ts adds HALF_STROKE (+0.5) to separator Y for stroke centering.\n        // Net Y = innerCoord.top - 1 + 0.5 = innerCoord.top - 0.5, which places\n        // the stroke center 0.5px above the HTML border — matching the pixel row.\n        const dividerY = innerCoord.top - 1;\n        sections.push({\n          label: \"\",\n          y: dividerY,\n          height: 0,\n          contentInsetLeft: fragBorder.left + coordinates.half(leftParticipant),\n        });\n      }\n    }\n  }\n\n  // Fragment comment: positioned at the fragment's left border edge (fragX),\n  // not at the sender's lifeline. HTML renders fragment comments inside the\n  // fragment container, aligned with its left edge.\n  let fragmentComment: CommentGeometry | undefined;\n  if (commentText && commentYBase != null) {\n    fragmentComment = {\n      x: fragX + 1,\n      y: commentYBase + 1 + COMMENT_FONT_ASCENT,\n      text: commentText,\n      style: commentStyle,\n      fragmentComment: true,\n    };\n  }\n\n  return {\n    fragment: {\n      kind: info.fragmentKind!,\n      label: info.fragmentLabel || \"\",\n      labelWidth: info.fragmentLabel ? measureSvgFragmentLabelWidth(resolveEmojiInText(info.fragmentLabel)) : undefined,\n      x: fragX,\n      y: coord.top,\n      width: fragWidth,\n      height: coord.height,\n      headerY: coord.top + 1 + commentHeight,\n      sections,\n      number: info.number,\n      depth: info.depth,\n    },\n    comment: fragmentComment,\n  };\n}\n\nfunction findFragmentContext(stat: any): any {\n  for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n    const frag = stat[kind]?.();\n    if (frag) return frag;\n  }\n  const alt = stat.alt?.();\n  if (alt) return alt;\n  const tcf = stat.tcf?.();\n  if (tcf) return tcf;\n  const ref = stat.ref?.();\n  if (ref) return ref;\n  return null;\n}\n\n/** Inline version of createStatementKey to avoid circular import issues */\nfunction createStatementKeyFromStat(statement: any): string {\n  if (!statement?.start || !statement?.stop) return \"\";\n  return `${statement.start.start}-${statement.stop.stop}`;\n}\n\n/**\n * Collects participants from the fragment context and recursively from\n * inner section blocks.  getLocalParticipantNames only does shallow\n * extraction, so nested fragments (e.g. par inside alt) are missed.\n */\nfunction getDeepParticipantNames(\n  fragmentCtx: any,\n  sections?: { label: string; blockNode: any }[],\n): string[] {\n  const names = new Set(getLocalParticipantNames(fragmentCtx));\n\n  // Walk each section's inner block to find participants in nested content\n  if (sections) {\n    for (const section of sections) {\n      if (!section.blockNode) continue;\n      const innerNames = Participants(section.blockNode).Names() as string[];\n      for (const n of innerNames) names.add(n);\n    }\n  }\n\n  return [...names];\n}\n","/**\n * Walks the ANTLR parse tree and extracts statement metadata\n * (from, to, label, kind) that the positioning engine doesn't store.\n *\n * Returns one entry per statement, keyed by the same key used in\n * VerticalCoordinates so they can be joined.\n */\nimport { createStatementKey } from \"@/positioning/vertical/StatementIdentifier\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { FragmentKind } from \"./geometry\";\nimport type { RootContextNode, BlockNode, StatNode } from \"@/parser/AntlrTypes\";\n\nexport interface FragmentSectionInfo {\n  label: string;\n  /** The parse tree block node for this section (used for inner statement key lookups) */\n  blockNode: BlockNode | undefined;\n}\n\nexport interface StatementInfo {\n  key: string;\n  kind: \"sync\" | \"async\" | \"creation\" | \"return\" | \"divider\" | \"fragment\" | \"empty\";\n  from: string;\n  to: string;\n  label: string;\n  isSelf: boolean;\n  /** Whether this statement has a block body (creates an occurrence on the target) */\n  hasBlock: boolean;\n  /** For fragments: specific fragment type */\n  fragmentKind?: FragmentKind;\n  /** For fragments: condition/label text */\n  fragmentLabel?: string;\n  /** For fragments: section info (for alt/tcf with multiple sections) */\n  fragmentSections?: FragmentSectionInfo[];\n  /** Inline comment text (e.g. // String line) */\n  comment?: string;\n  /** The ANTLR parse tree node — needed for local participant extraction */\n  statNode?: StatNode;\n  /** Nesting depth of active occurrences on the sender (0 = none, 1 = one level, etc.) */\n  senderOccurrenceDepth: number;\n  /** Whether the target (to) already has an active occurrence (new one will be nested) */\n  targetHasOccurrence?: boolean;\n  /** Nesting depth of active occurrences on the target (0 = none, 1 = one level, etc.) */\n  targetOccurrenceDepth?: number;\n  /** Sequence number (e.g. \"1\", \"2.1\") computed from block nesting and statement index */\n  number?: string;\n  /** Nesting depth (0 = root block, 1 = first nested block, etc.) */\n  depth: number;\n  /** Kind of the parent block that contains this statement (\"sync\" | \"creation\" | null for root) */\n  parentBlockKind?: \"sync\" | \"creation\" | null;\n  /** True on first statement of a non-first fragment section (else, catch, finally).\n   *  Used by computeReturnDebt to reset debt between independent CSS sections. */\n  sectionReset?: boolean;\n}\n\nexport function walkStatements(rootContext: RootContextNode): StatementInfo[] {\n  const block = rootContext?.block?.();\n  if (!block) return [];\n  return walkBlock(block, _STARTER_, new Map(), \"\", 0, null, 0);\n}\n\nfunction normalizeLabel(label: string): string {\n  return label.trim();\n}\n\nfunction walkBlock(\n  block: BlockNode,\n  currentOrigin: string,\n  activeOccurrences: Map<string, number>,\n  parentNumber: string,\n  depth: number,\n  parentBlockKind: \"sync\" | \"creation\" | null,\n  indexOffset: number,\n): StatementInfo[] {\n  const statements = block?.stat?.() || [];\n  const results: StatementInfo[] = [];\n  let index = 0;\n\n  for (const stat of statements) {\n    const key = createStatementKey(stat);\n    if (!key) continue;\n\n    index++;\n    const ordinal = indexOffset + index;\n    const number = parentNumber ? `${parentNumber}.${ordinal}` : String(ordinal);\n    const comment = stat.getComment?.() || \"\";\n\n    const message = stat.message?.();\n    if (message) {\n      const from = message.From?.() || currentOrigin;\n      const to = message.Owner?.() || _STARTER_;\n      const label = normalizeLabel(message.SignatureText?.() || \"\");\n      const nestedBlock = message.braceBlock?.()?.block?.();\n      results.push({ key, kind: \"sync\", from, to, label, isSelf: from === to, hasBlock: !!nestedBlock, comment, statNode: stat, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), targetOccurrenceDepth: activeOccurrences.get(to) || 0, number, depth, parentBlockKind });\n\n      if (nestedBlock) {\n        const innerOccs = new Map(activeOccurrences);\n        innerOccs.set(to, (innerOccs.get(to) || 0) + 1);\n        results.push(...walkBlock(nestedBlock, to, innerOccs, number, depth + 1, \"sync\", 0));\n      }\n      continue;\n    }\n\n    const asyncMsg = stat.asyncMessage?.();\n    if (asyncMsg) {\n      const from = asyncMsg.From?.() || asyncMsg.ProvidedFrom?.() || asyncMsg.Origin?.() || currentOrigin;\n      const to = asyncMsg.Owner?.() || asyncMsg.to?.()?.getFormattedText?.() || from;\n      const label = normalizeLabel(asyncMsg.content?.()?.getText?.() || asyncMsg.SignatureText?.() || \"\");\n      results.push({ key, kind: \"async\", from, to, label, isSelf: from === to, hasBlock: false, comment, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), number, depth });\n      continue;\n    }\n\n    const creation = stat.creation?.();\n    if (creation) {\n      const from = creation.From?.() || currentOrigin;\n      const to = creation.Owner?.() || \"\";\n      const label = normalizeLabel(creation.SignatureText?.() || \"«create»\");\n      const creationBlock = creation.braceBlock?.()?.block?.();\n      results.push({ key, kind: \"creation\", from, to, label, isSelf: false, hasBlock: !!creationBlock, comment, statNode: stat, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), number, depth, parentBlockKind });\n\n      if (creationBlock) {\n        const innerOccs = new Map(activeOccurrences);\n        innerOccs.set(to, (innerOccs.get(to) || 0) + 1);\n        results.push(...walkBlock(creationBlock, to || currentOrigin, innerOccs, number, depth + 1, \"creation\", 0));\n      }\n      continue;\n    }\n\n    const ret = stat.ret?.();\n    if (ret) {\n      const label = normalizeLabel(ret.SignatureText?.() || \"\");\n      const asyncMessage = ret?.asyncMessage?.();\n      const from = asyncMessage?.From?.() || ret?.From?.() || currentOrigin;\n      const to = asyncMessage?.to?.()?.getFormattedText?.() || ret?.ReturnTo?.() || _STARTER_;\n      results.push({ key, kind: \"return\", from, to, label, isSelf: from === to, hasBlock: false, comment, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetOccurrenceDepth: activeOccurrences.get(to) || 0, number, depth, parentBlockKind });\n      continue;\n    }\n\n    const divider = stat.divider?.();\n    if (divider) {\n      const label = normalizeLabel(divider.getFormattedText?.() || divider.getText?.() || \"\");\n      results.push({ key, kind: \"divider\", from: \"\", to: \"\", label, isSelf: false, hasBlock: false, senderOccurrenceDepth: 0, number, depth });\n      continue;\n    }\n\n    // Fragments — record with enriched metadata and recurse into their blocks\n    const fragmentInfo = extractFragmentInfo(stat);\n    results.push({\n      key,\n      kind: \"fragment\",\n      from: currentOrigin,\n      to: \"\",\n      label: fragmentInfo.label,\n      isSelf: false,\n      hasBlock: false,\n      fragmentKind: fragmentInfo.fragmentKind,\n      fragmentLabel: fragmentInfo.label,\n      fragmentSections: fragmentInfo.sections,\n      comment,\n      statNode: stat,\n      senderOccurrenceDepth: activeOccurrences.get(currentOrigin) || 0,\n      number,\n      depth,\n    });\n    walkFragmentBlocks(stat, currentOrigin, results, activeOccurrences, number, depth);\n  }\n\n  return results;\n}\n\ninterface FragmentExtract {\n  fragmentKind: FragmentKind;\n  label: string;\n  sections: FragmentSectionInfo[];\n}\n\nfunction extractFragmentInfo(stat: StatNode): FragmentExtract {\n  // Single-block fragments: loop, opt, par, critical, section\n  for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n    const frag = stat[kind]?.();\n    if (frag) {\n      const condition = frag.parExpr?.()?.condition?.();\n      const label = condition?.getFormattedText?.() || \"\";\n      return {\n        fragmentKind: kind,\n        label,\n        sections: [{ label, blockNode: frag.braceBlock?.()?.block?.() }],\n      };\n    }\n  }\n\n  // Alt (if/else if/else) — multiple sections\n  // Section labels match HTML visible text: \"Alt\", \"[cond2]\", \"[else]\"\n  const alt = stat.alt?.();\n  if (alt) {\n    const sections: FragmentSectionInfo[] = [];\n    const ifBlock = alt.ifBlock?.();\n    if (ifBlock) {\n      // First section label = kind name (matches HTML header visible text)\n      sections.push({ label: \"Alt\", blockNode: ifBlock.braceBlock?.()?.block?.() });\n    }\n    for (const elseIf of alt.elseIfBlock?.() || []) {\n      const condition = elseIf.parExpr?.()?.condition?.();\n      const label = condition?.getFormattedText?.() || \"\";\n      // HTML renders as \"[ cond ]\" (condition in brackets with spaces, \"else if\" is hidden)\n      sections.push({ label: `[ ${label} ]`, blockNode: elseIf.braceBlock?.()?.block?.() });\n    }\n    const elseBlock = alt.elseBlock?.();\n    if (elseBlock) {\n      sections.push({ label: \"[else]\", blockNode: elseBlock.braceBlock?.()?.block?.() });\n    }\n\n    const ifCondition = alt.ifBlock?.()?.parExpr?.()?.condition?.();\n    const firstLabel = ifCondition?.getFormattedText?.() || \"\";\n    return { fragmentKind: \"alt\", label: firstLabel, sections };\n  }\n\n  // Try/catch/finally — multiple sections\n  // Section labels match HTML visible text: \"Try\", \"catch e\", \"finally\"\n  const tcf = stat.tcf?.();\n  if (tcf) {\n    const sections: FragmentSectionInfo[] = [];\n    const tryBlock = tcf.tryBlock?.();\n    if (tryBlock) {\n      // First section label = capitalized kind name (matches HTML header)\n      sections.push({ label: \"Try\", blockNode: tryBlock.braceBlock?.()?.block?.() });\n    }\n    for (const catchBlock of tcf.catchBlock?.() || []) {\n      const exception = catchBlock.invocation?.()?.parameters?.()?.getFormattedText?.() || \"\";\n      sections.push({ label: `catch ${exception}`, blockNode: catchBlock.braceBlock?.()?.block?.() });\n    }\n    const finallyBlock = tcf.finallyBlock?.();\n    if (finallyBlock) {\n      sections.push({ label: \"finally\", blockNode: finallyBlock.braceBlock?.()?.block?.() });\n    }\n\n    return { fragmentKind: \"tcf\", label: \"\", sections };\n  }\n\n  // Ref fragment\n  const ref = stat.ref?.();\n  if (ref) {\n    const label = ref.getFormattedText?.() || \"\";\n    return { fragmentKind: \"ref\", label, sections: [] };\n  }\n\n  return { fragmentKind: \"loop\", label: \"\", sections: [] };\n}\n\nfunction blockLength(block: BlockNode): number {\n  return (block?.stat?.() || []).filter((stat: StatNode) => !!createStatementKey(stat)).length;\n}\n\n/** Recurse into fragment inner blocks (loop, opt, alt, try/catch, etc.) */\nfunction walkFragmentBlocks(stat: StatNode, origin: string, results: StatementInfo[], activeOccurrences: Map<string, number>, parentNumber: string, depth: number): void {\n  // Single-block fragments: loop, opt, par, critical, section\n  for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n    const frag = stat[kind]?.();\n    if (frag) {\n      const block = frag.braceBlock?.()?.block?.();\n      if (block) results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, 0));\n      return;\n    }\n  }\n\n  // Alt (if/else if/else) — multiple blocks\n  const alt = stat.alt?.();\n  if (alt) {\n    const ifBlock = alt.ifBlock?.();\n    let sectionOffset = 0;\n    if (ifBlock) {\n      const block = ifBlock.braceBlock?.()?.block?.();\n      if (block) {\n        results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset));\n        sectionOffset += blockLength(block);\n      }\n    }\n    for (const elseIf of alt.elseIfBlock?.() || []) {\n      const block = elseIf.braceBlock?.()?.block?.();\n      if (block) {\n        const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n        if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n        results.push(...sectionStmts);\n        sectionOffset += blockLength(block);\n      }\n    }\n    const elseBlock = alt.elseBlock?.();\n    if (elseBlock) {\n      const block = elseBlock.braceBlock?.()?.block?.();\n      if (block) {\n        const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n        if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n        results.push(...sectionStmts);\n      }\n    }\n    return;\n  }\n\n  // Try/catch/finally — multiple blocks\n  const tcf = stat.tcf?.();\n  if (tcf) {\n    const tryBlock = tcf.tryBlock?.();\n    let sectionOffset = 0;\n    if (tryBlock) {\n      const block = tryBlock.braceBlock?.()?.block?.();\n      if (block) {\n        results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset));\n        sectionOffset += blockLength(block);\n      }\n    }\n    for (const catchBlock of tcf.catchBlock?.() || []) {\n      const block = catchBlock.braceBlock?.()?.block?.();\n      if (block) {\n        const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n        if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n        results.push(...sectionStmts);\n        sectionOffset += blockLength(block);\n      }\n    }\n    const finallyBlock = tcf.finallyBlock?.();\n    if (finallyBlock) {\n      const block = finallyBlock.braceBlock?.()?.block?.();\n      if (block) {\n        const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n        if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n        results.push(...sectionStmts);\n      }\n    }\n    return;\n  }\n}\n","/**\n * Compute per-statement Y adjustment to compensate for ReturnStatementVM.height=0.\n *\n * In the positioning engine, non-self return statements have height=0, but in HTML\n * they render as ~16px elements. This function walks the DFS-ordered statement list\n * and computes how much each statement's coord.top should be increased.\n *\n * The debt is scoped per block (identified by depth). When a block ends (depth decreases),\n * its accumulated debt propagates to the parent block — because the parent sync/creation\n * statement's coord.height is underestimated by the same amount.\n *\n * Returns a Map with:\n *   key -> adjustment for coord.top\n *   \"inner:key\" -> total inner debt for sync/creation statements (for occurrence height)\n */\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport type { walkStatements } from \"./walkStatements\";\n\nexport function computeReturnDebt(\n  statements: ReturnType<typeof walkStatements>,\n  verticalCoordinates: VerticalCoordinates,\n  returnHeight: number,\n): Map<string, number> {\n  const result = new Map<string, number>();\n\n  // Stack tracks per-depth cumulative debt. Index = depth.\n  const debtByDepth: number[] = [0];\n  // Track only direct returns at each depth (excludes child-propagated debt)\n  const directDebtByDepth: number[] = [0];\n  let maxDepth = 0;\n\n  // Track which sync/creation statements own each depth level\n  // so we can assign inner debt when closing their blocks\n  const blockOwnerKeys: (string | null)[] = [null]; // depth 0 = root (no owner)\n  const blockOwnerKinds: (string | null)[] = [null]; // \"sync\" | \"creation\" | null\n  // Track whether each block has non-return children (for mixed-content detection)\n  const hasNonReturnChild: boolean[] = [false];\n  // Non-block assignment shift: tracks +1px CSS height excess per depth.\n  // This shifts subsequent statements down but does NOT propagate as inner debt\n  // (parent occurrences shouldn't grow for this).\n  const nbAssignShift: number[] = [0];\n  // Track whether each block owner has an assignment return (+5px compensation).\n  // The positioning engine adds +11 for assignment returns, but HTML renders ~16px.\n  // This +5 gap must be propagated as debt so subsequent statements shift down.\n  const blockHasAssignment: boolean[] = [false];\n\n  for (const info of statements) {\n    const depth = info.depth;\n\n    // When depth decreases, close child blocks and propagate debt upward\n    while (maxDepth > depth) {\n      const closedDebt = debtByDepth[maxDepth] || 0;\n      const ownerKey = blockOwnerKeys[maxDepth];\n      const ownerKind = blockOwnerKinds[maxDepth];\n      const directDebt = directDebtByDepth[maxDepth] || 0;\n      // Record inner debt on the block owner (for occurrence height).\n      // Two components:\n      // 1. nestedDebt: debt propagated from child blocks (closedDebt - directDebt).\n      //    The parent occurrence must grow to contain child content that the\n      //    positioning engine underestimates.\n      // 2. directShift: when 2+ direct returns exist at the same depth, each\n      //    return's debt shifts the NEXT return down via the adjust mechanism.\n      //    The last return is shifted by (N-1)*returnHeight = directDebt - returnHeight.\n      //    The occurrence must grow to contain this shifted last return.\n      // A single direct return has directShift=0 (its own debt doesn't shift itself).\n      const nestedDebt = closedDebt - directDebt;\n      const directShift = Math.max(directDebt - returnHeight, 0);\n      const occInnerDebt = nestedDebt + directShift;\n      if (ownerKey && occInnerDebt > 0) {\n        result.set(`inner:${ownerKey}`, occInnerDebt);\n      }\n      // Record whether block had mixed content (returns + non-return children).\n      // Return-only blocks don't get the CSS border +1px correction.\n      const hasMixed = hasNonReturnChild[maxDepth] || false;\n      if (ownerKey && hasMixed) {\n        result.set(`mixed:${ownerKey}`, 1);\n      }\n      const hasAssign = blockHasAssignment[maxDepth] || false;\n      debtByDepth.pop();\n      directDebtByDepth.pop();\n      blockOwnerKeys.pop();\n      blockOwnerKinds.pop();\n      hasNonReturnChild.pop();\n      blockHasAssignment.pop();\n      nbAssignShift.pop();\n      maxDepth--;\n      // Propagate the occurrence's actual inner growth to the parent depth,\n      // so subsequent statements are shifted down to match HTML CSS layout.\n      // Using occInnerDebt (not raw directDebt) prevents over-counting when\n      // the positioning engine already allocates height for some returns.\n      if (ownerKey && ownerKind === \"sync\") {\n        debtByDepth[maxDepth] += occInnerDebt;\n        // Assignment return compensation: the occurrence gets +4 (12→16px gap),\n        // but the positioning engine doesn't account for this extra height.\n        // Propagate it as debt so subsequent statements shift down to match HTML.\n        if (hasAssign) {\n          debtByDepth[maxDepth] += 4;\n        }\n      }\n    }\n\n    // When depth increases, start fresh debt tracking for new block\n    while (maxDepth < depth) {\n      maxDepth++;\n      debtByDepth.push(0);\n      directDebtByDepth.push(0);\n      blockOwnerKeys.push(null);\n      blockOwnerKinds.push(null);\n      hasNonReturnChild.push(false);\n      blockHasAssignment.push(false);\n      nbAssignShift.push(0);\n    }\n\n    // Fragment section boundary: reset debt at this depth.\n    // Each fragment section (if/else, try/catch/finally) is independent in HTML CSS.\n    // Without reset, returns in earlier sections inflate Y positions of later sections.\n    if (info.sectionReset && depth < debtByDepth.length) {\n      debtByDepth[depth] = 0;\n      directDebtByDepth[depth] = 0;\n    }\n\n    // Total adjustment = sum of all debt across all depths\n    // Include nbAssignShift (non-propagating) for Y positioning\n    let totalDebt = 0;\n    for (let d = 0; d <= depth; d++) {\n      totalDebt += (debtByDepth[d] || 0) + (nbAssignShift[d] || 0);\n    }\n    result.set(info.key, totalDebt);\n\n    // Non-self returns add debt at their depth — but only when the positioning\n    // engine gives them height=0. The first return at a depth typically gets\n    // coord.height>0 (the engine allocates 16px), so it doesn't need debt.\n    // Subsequent returns at the same depth get height=0 and need debt.\n    if (info.kind === \"return\" && !info.isSelf) {\n      const returnCoord = verticalCoordinates.getStatementCoordinate(info.key);\n      const engineAllocatesHeight = returnCoord && returnCoord.height > 0;\n      if (!engineAllocatesHeight) {\n        const isFirstAtDepth = (directDebtByDepth[depth] || 0) === 0;\n        debtByDepth[depth] += returnHeight;\n        directDebtByDepth[depth] += returnHeight;\n        // When the first return in a sync block has adjust>0 (from child-block\n        // debt), it uses returnOffset=16 instead of 15. This removes the 15→16\n        // transition that normally adds +1px to the gap between consecutive\n        // returns. Compensate with +1 via nbAssignShift (non-propagating) to\n        // avoid inflating inner debt / occurrence height calculations.\n        if (isFirstAtDepth && totalDebt !== 0 && info.parentBlockKind === \"sync\") {\n          nbAssignShift[depth] = (nbAssignShift[depth] || 0) + 1;\n        }\n      }\n    } else if (info.kind !== \"return\") {\n      // Track that this block has non-return children\n      if (depth < hasNonReturnChild.length) {\n        hasNonReturnChild[depth] = true;\n      }\n    }\n\n    // Non-block sync with assignment: with cursor+=12, the positioning engine's\n    // coord.height now matches HTML's CSS container height (both ~50px).\n    // No shift needed — the gap was from the old cursor+=11.\n\n    // Sync/creation with blocks: the NEXT statement in the flat list at depth+1\n    // belongs to this statement's block. Record owner for debt propagation.\n    if ((info.kind === \"sync\" || info.kind === \"creation\") && info.hasBlock) {\n      // Check if this sync has an assignment return (e.g. `ret = B.method { ... }`)\n      const msgCtx = info.statNode?.message?.();\n      const hasAssign = !!(msgCtx?.Assignment?.()?.assignee) && !info.isSelf;\n      // The next depth level's block belongs to this statement\n      if (depth + 1 > maxDepth) {\n        maxDepth = depth + 1;\n        debtByDepth.push(0);\n        directDebtByDepth.push(0);\n        blockOwnerKeys.push(info.key);\n        blockOwnerKinds.push(info.kind);\n        hasNonReturnChild.push(false);\n        blockHasAssignment.push(hasAssign);\n      } else {\n        blockOwnerKeys[depth + 1] = info.key;\n        blockOwnerKinds[depth + 1] = info.kind;\n        debtByDepth[depth + 1] = 0; // reset for new block\n        directDebtByDepth[depth + 1] = 0;\n        hasNonReturnChild[depth + 1] = false;\n        blockHasAssignment[depth + 1] = hasAssign;\n      }\n    }\n  }\n\n  // Close remaining open blocks (same propagation rules as main loop)\n  while (maxDepth > 0) {\n    const closedDebt = debtByDepth[maxDepth] || 0;\n    const ownerKey = blockOwnerKeys[maxDepth];\n    const ownerKind = blockOwnerKinds[maxDepth];\n    const directDebtEnd = directDebtByDepth[maxDepth] || 0;\n    const nestedDebtEnd = closedDebt - directDebtEnd;\n    const directShiftEnd = Math.max(directDebtEnd - returnHeight, 0);\n    const occInnerDebtEnd = nestedDebtEnd + directShiftEnd;\n    if (ownerKey && occInnerDebtEnd > 0) {\n      result.set(`inner:${ownerKey}`, occInnerDebtEnd);\n    }\n    const hasMixedEnd = hasNonReturnChild[maxDepth] || false;\n    if (ownerKey && hasMixedEnd) {\n      result.set(`mixed:${ownerKey}`, 1);\n    }\n    const hasAssignEnd = blockHasAssignment[maxDepth] || false;\n    debtByDepth.pop();\n    directDebtByDepth.pop();\n    blockOwnerKeys.pop();\n    blockOwnerKinds.pop();\n    hasNonReturnChild.pop();\n    blockHasAssignment.pop();\n    maxDepth--;\n    // Propagate occurrence inner growth — see main loop comment\n    if (ownerKey && ownerKind === \"sync\") {\n      debtByDepth[maxDepth] += occInnerDebtEnd;\n      if (hasAssignEnd) {\n        debtByDepth[maxDepth] += 4;\n      }\n    }\n  }\n\n  // Store total root debt for diagram height adjustment\n  result.set(\"__totalDebt__\", debtByDepth[0] || 0);\n\n  return result;\n}\n","/**\n * Builds message, occurrence, creation, fragment, return, divider, and comment\n * geometry from the statement tree walker output and positioning engine.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n  OCCURRENCE_WIDTH,\n  OCCURRENCE_BAR_SIDE_WIDTH,\n  LIFELINE_WIDTH,\n  OCCURRENCE_EMPTY_HEIGHT,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { buildFragmentGeometry } from \"./buildFragmentGeometry\";\nimport { measureSvgFragmentLabelWidth } from \"@/positioning/WidthProviderFunc\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { walkStatements } from \"./walkStatements\";\nimport { computeReturnDebt } from \"./computeReturnDebt\";\nimport CommentClass from \"@/components/Comment/Comment\";\nimport type {\n  ParticipantGeometry,\n  MessageGeometry,\n  SelfCallGeometry,\n  OccurrenceGeometry,\n  CreationGeometry,\n  FragmentGeometry,\n  ReturnGeometry,\n  DividerGeometry,\n  CommentGeometry,\n} from \"./geometry\";\nimport { PARTICIPANT_VISUAL_HEIGHT, snapX, cssToSvgStyle } from \"./svgConstants\";\nimport type { RootContextNode } from \"@/parser/AntlrTypes\";\n\nexport interface BuildMessagesResult {\n  messages: MessageGeometry[];\n  selfCalls: SelfCallGeometry[];\n  occurrences: OccurrenceGeometry[];\n  creations: CreationGeometry[];\n  fragments: FragmentGeometry[];\n  returns: ReturnGeometry[];\n  dividers: DividerGeometry[];\n  comments: CommentGeometry[];\n  totalReturnDebt: number;\n  maxReturnBottom: number;\n}\n\nexport function buildMessages(\n  rootContext: RootContextNode,\n  coordinates: Coordinates,\n  verticalCoordinates: VerticalCoordinates,\n  participants: ParticipantGeometry[],\n  measureText?: (text: string, type: TextType) => number,\n): BuildMessagesResult {\n  const statements = walkStatements(rootContext);\n  const messages: MessageGeometry[] = [];\n  const selfCalls: SelfCallGeometry[] = [];\n  const occurrences: OccurrenceGeometry[] = [];\n  const creations: CreationGeometry[] = [];\n  const fragments: FragmentGeometry[] = [];\n  const returns: ReturnGeometry[] = [];\n  const dividers: DividerGeometry[] = [];\n  const comments: CommentGeometry[] = [];\n\n  let maxReturnBottom = 0;\n  const diagramWidth = coordinates.getWidth();\n  const allParticipants = coordinates.orderedParticipantNames();\n\n  // --- Block child count: how many direct children each parent number has ---\n  // Used to compute assignment return seq numbers (e.g. block with 3 children → return is N.4)\n  const blockChildCount = new Map<string, number>();\n  for (const s of statements) {\n    if (s.number) {\n      const lastDot = s.number.lastIndexOf(\".\");\n      const parent = lastDot >= 0 ? s.number.substring(0, lastDot) : \"\";\n      const ordinal = parseInt(s.number.substring(lastDot + 1), 10);\n      const prev = blockChildCount.get(parent) || 0;\n      if (ordinal > prev) blockChildCount.set(parent, ordinal);\n    }\n  }\n\n  // --- Scope-aware return height debt computation ---\n  // ReturnStatementVM.measure() reports height=0 for non-self returns, but in HTML\n  // the return element takes ~16px of visual space. This causes all subsequent\n  // elements to be positioned too high. We compute a per-statement adjustment.\n  const RETURN_VISUAL_HEIGHT = 16;\n  const adjustMap = computeReturnDebt(statements, verticalCoordinates, RETURN_VISUAL_HEIGHT);\n\n  for (const info of statements) {\n    const coord = verticalCoordinates.getStatementCoordinate(info.key);\n    if (!coord) continue;\n    const adjust = adjustMap.get(info.key) || 0;\n\n    // --- Parse styling comments (e.g. // [red] text) ---\n    let commentObj: CommentClass | undefined;\n    if (info.comment) {\n      commentObj = new CommentClass(info.comment);\n    }\n\n    // --- Comments (inline, above the statement) ---\n    // Fragment comments are positioned inside buildFragmentGeometry (at fragX, not sender lifeline).\n    if (commentObj?.text && info.kind !== \"fragment\") {\n      // For RTL creation statements, HTML positions the comment at the target (left side).\n      // For all other cases, the comment is at the sender's position.\n      let commentParticipant = info.from;\n      if (info.kind === \"creation\" && info.from && info.to) {\n        const fX = coordinates.getPosition(info.from);\n        const tX = coordinates.getPosition(info.to);\n        if (fX > tX) commentParticipant = info.to;\n      }\n      const commentX = commentParticipant\n        ? snapX(coordinates.getPosition(commentParticipant))\n        : 10;\n      // SVG text y = baseline; HTML positions by visual top. Add font ascent (~12px for 14px text).\n      const COMMENT_FONT_ASCENT = 15;\n      // Inside an occurrence, HTML positions the comment at the occurrence\n      // bar's inner edge (OCCURRENCE_BAR_SIDE_WIDTH + 1). At the top level\n      // (no active occurrence), the comment sits near the lifeline center.\n      const commentXOffset = info.senderOccurrenceDepth >= 1\n        ? OCCURRENCE_BAR_SIDE_WIDTH + 1\n        : 1;\n      // HTML wraps backtick text in <code> with padding:2px (Cosmetic.scss).\n      // Add the same left-padding offset so SVG text aligns with HTML.\n      const codeSpanPadding = commentObj.text.trimStart().startsWith(\"`\") ? 2 : 0;\n      comments.push({\n        x: commentX + commentXOffset + codeSpanPadding,\n        y: coord.top + adjust + COMMENT_FONT_ASCENT,\n        text: commentObj.text,\n        style: cssToSvgStyle(commentObj.commentStyle),\n      });\n    }\n\n    // Message style from styling comment (applied to message/self-call/creation labels)\n    const messageStyle = commentObj ? cssToSvgStyle(commentObj.messageStyle) : undefined;\n\n    // --- Sync / Async messages ---\n    if (info.kind === \"sync\" || info.kind === \"async\") {\n      let fromX = snapX(coordinates.getPosition(info.from));\n      const toX = snapX(coordinates.getPosition(info.to));\n      const messageHeight = info.isSelf ? 30 : 16;\n      // Comment height: HTML renders comment <p> above the message in CSS flow.\n      // coord.top doesn't include comment height, so offset manually (same as fragments).\n      const msgCommentHeight = commentObj?.text\n        ? (info.comment?.trim().split(\"\\n\").length || 0) * 20\n        : 0;\n      const messageY = coord.top + adjust + msgCommentHeight + messageHeight - 0.5;\n\n      // D4: When sender has an active occurrence, arrow starts from its near edge.\n      // LTR: near edge is the RIGHT side → center + depth*side (each level shifts bar right).\n      // RTL: near edge is the LEFT side → center - side + (depth-1)*side = center + (depth-2)*side.\n      //   depth=1: center - side (outer bar left edge)\n      //   depth=2: center            (second bar left edge)\n      //   depth=3: center + side     (third bar left edge)\n      if (info.senderOccurrenceDepth >= 1 && !info.isSelf) {\n        const depth = info.senderOccurrenceDepth;\n        const occOffset = depth * OCCURRENCE_BAR_SIDE_WIDTH;\n        const isLTR = fromX < toX;\n        fromX = isLTR\n          ? fromX + occOffset\n          : fromX - OCCURRENCE_BAR_SIDE_WIDTH + (depth - 1) * OCCURRENCE_BAR_SIDE_WIDTH;\n      }\n\n      // When target already has active occurrences, the new occurrence is nested\n      // (stacked inward by OCCURRENCE_BAR_SIDE_WIDTH per level). Arrow endpoints shift accordingly.\n      const targetDepth = info.targetOccurrenceDepth || (info.targetHasOccurrence ? 1 : 0);\n      const nestingOffset = targetDepth * OCCURRENCE_BAR_SIDE_WIDTH;\n\n      if (info.isSelf) {\n        // Async self-calls: HTML renders label (flex-col) then a 30×24 SVG arrow.\n        // The label and arrow are laid out by renderSelfCall from s.y, so no Y offset\n        // is needed here — otherwise the label height gets double-counted.\n        const isAsync = info.kind === \"async\";\n        const selfYOffset = 0;\n        const selfWidth = isAsync ? 28 : OCCURRENCE_WIDTH;\n        // Async: full visual extent = label(~20px) + arrow SVG(24px) = 44px\n        const selfHeight = isAsync ? 44 : messageHeight;\n        // For self-calls inside an occurrence, the HTML component renders\n        // inside the occurrence div — starting at the occurrence's right edge.\n        // For nested occurrences, offset further by OCCURRENCE_BAR_SIDE_WIDTH per extra level.\n        const selfX = (info.senderOccurrenceDepth >= 1)\n          ? fromX + OCCURRENCE_BAR_SIDE_WIDTH + (info.senderOccurrenceDepth - 1) * OCCURRENCE_BAR_SIDE_WIDTH\n          : fromX;\n        selfCalls.push({\n          x: selfX,\n          y: coord.top + selfYOffset + msgCommentHeight,\n          width: selfWidth,\n          height: selfHeight,\n          label: info.label,\n          arrowStyle: isAsync ? \"open\" : \"solid\",\n          number: info.number,\n          style: messageStyle,\n        });\n      } else {\n        // Arrow tip stops at near edge of target's occurrence bar.\n        // Sync: creates new occ → toX ∓ OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n        //   (points at inner edge where new occ starts)\n        // Async with existing target occ → toX ∓ nestingOffset\n        //   (points at outer edge of existing occ)\n        const isLTR = fromX < toX;\n        const syncOffset = info.kind === \"sync\" && !info.isSelf;\n        const asyncTargetOcc = info.kind === \"async\" && !info.isSelf && targetDepth > 0;\n        const arrowToX =\n          syncOffset\n            ? isLTR\n              ? toX - OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n              : toX + OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n          : asyncTargetOcc\n            ? isLTR\n              ? toX - nestingOffset\n              : toX + nestingOffset\n            : toX;\n\n        messages.push({\n          fromX,\n          toX: arrowToX,\n          y: messageY,\n          label: info.label,\n          arrowStyle: info.kind === \"async\" ? \"open\" : \"solid\",\n          isSelf: false,\n          isReverse: arrowToX < fromX,\n          number: info.number,\n          style: messageStyle,\n        });\n      }\n\n      // Occurrence: activation box centered on the target participant's lifeline\n      if (info.kind === \"sync\") {\n        const occX = toX - OCCURRENCE_BAR_SIDE_WIDTH;\n        const occY = messageY - 1.5;\n        // +2: SVG stroke extends 1px beyond rect on each side (centered model).\n        // renderOccurrence insets by 1px, so fill area = geometry - 2 matches\n        // HTML border-box height. Stroke extends to geometry size visually.\n        // Subtract msgCommentHeight: coord.height includes the comment above the\n        // message, but the occurrence starts BELOW the comment (at messageY - 1.5),\n        // so the comment height must not inflate the occurrence bar.\n        let occHeight = coord.height - messageHeight - msgCommentHeight + 2;\n\n        // Adjust occurrence height for inner return debt.\n        // The positioning engine underestimates block heights because non-self returns\n        // have height=0. Each missing return adds exactly RETURN_VISUAL_HEIGHT (16px)\n        // of visual space in HTML that the positioning engine doesn't account for.\n        const innerDebtKey = `inner:${info.key}`;\n        const innerDebt = adjustMap.get(innerDebtKey) || 0;\n        if (innerDebt > 0) {\n          occHeight += innerDebt;\n        }\n\n        const messageCtx = info.statNode?.message?.();\n        const assignment = messageCtx?.Assignment?.();\n\n        // Assignment return compensation: the positioning engine adds +12 for\n        // assignee returns (SyncMessageStatementVM line 41), but HTML renders\n        // the assignment return as ~16px inside the occurrence. Add the 4px\n        // difference so the occurrence bar extends to match HTML.\n        if (assignment?.assignee && !info.isSelf && info.hasBlock) {\n          occHeight += 4;\n        }\n\n        // With cursor+=12, the positioning engine now correctly accounts for\n        // the CSS border height in both mixed-content and non-block assignment\n        // cases. No additional +1 corrections needed.\n\n        // Assignment return Y: sits 2px above the occurrence bottom,\n        // matching HTML's return position inside the CSS border.\n        // Must be computed AFTER all height corrections so the gap is\n        // consistently 2px from the final occurrence bottom.\n        const returnArrowY = occY + occHeight - 2;\n\n        if (occHeight > 0) {\n          occurrences.push({\n            x: occX,\n            y: occY,\n            width: OCCURRENCE_WIDTH,\n            height: occHeight,\n            participantName: info.to,\n          });\n\n          // Assignment return: e.g. `ret0 = C.method() { ... }`\n          if (assignment?.assignee && !info.isSelf) {\n            // Return goes from target (toX) back to sender (fromX).\n            // Target always has occurrence; start from its near edge toward sender.\n            // When target has nested occurrence, shift by OCCURRENCE_BAR_SIDE_WIDTH.\n            // +1: OCCURRENCE_WIDTH (15) = 2*OCCURRENCE_BAR_SIDE_WIDTH (14) + 1 center pixel.\n            // The arrow starts from the occurrence edge (inner border in HTML, fill edge in SVG).\n            const isLTR = fromX < toX;\n            const retFromX = isLTR\n              ? toX - OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset + 1\n              : toX + OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset + 1;\n            // Sender's fromX is D4-adjusted for its occurrence edge.\n            // For bare lifelines (no occurrences), adjust to match HTML Anchor2's\n            // edge offset. HTML places the return endpoint at:\n            //   rightEdgeOfRightWall + LIFELINE_WIDTH + 1 (LTR message → RTL return)\n            //   position + LIFELINE_WIDTH (RTL message → LTR return)\n            // For occupied senders, D4 positions at the fill edge; add +2 for the\n            // center pixel + stroke that extends beyond the occurrence rect\n            // (matching the keyword return's +1 at the right wall edge).\n            let senderX = fromX;\n            if (info.senderOccurrenceDepth === 0) {\n              senderX += isLTR ? LIFELINE_WIDTH + 1 : LIFELINE_WIDTH;\n            } else if (isLTR) {\n              senderX += 2;\n            }\n            // Assignment return seq number: HTML numbers it as (blockChildCount + 1)\n            // For non-block sync (e.g. `ret = B.method`), it's N.1 (no block children).\n            // For block sync (e.g. `ret = B.method { ... }`), it's N.(children+1).\n            const assignReturnNumber = info.number\n              ? `${info.number}.${(blockChildCount.get(info.number) || 0) + 1}`\n              : undefined;\n            returns.push({\n              fromX: retFromX, toX: senderX, y: returnArrowY,\n              label: assignment.assignee, isReverse: fromX < toX, isSelf: false,\n              number: assignReturnNumber,\n            });\n            maxReturnBottom = Math.max(maxReturnBottom, returnArrowY + 46);\n          }\n        }\n      }\n      continue;\n    }\n\n    // --- Creation arrows ---\n    if (info.kind === \"creation\") {\n      const CREATION_MSG_HEIGHT = 40; // from CreationStatementVM.ts\n      let fromX = snapX(coordinates.getPosition(info.from));\n      const toX = snapX(coordinates.getPosition(info.to));\n\n      // When sender has an active occurrence, arrow starts from its near edge\n      // For nested occurrences, offset further by OCCURRENCE_BAR_SIDE_WIDTH per extra level\n      if (info.senderOccurrenceDepth >= 1) {\n        const occOffset = OCCURRENCE_BAR_SIDE_WIDTH + (info.senderOccurrenceDepth - 1) * OCCURRENCE_BAR_SIDE_WIDTH;\n        const isLTR = fromX < toX;\n        fromX = isLTR ? fromX + occOffset : fromX - occOffset;\n      }\n\n      // Find the already-built participant (buildParticipants handles creationTop)\n      const targetParticipant = participants.find(p => p.name === info.to);\n      // Center the arrow on the participant box visual center (y + height/2).\n      const messageY = targetParticipant\n        ? targetParticipant.y + PARTICIPANT_VISUAL_HEIGHT / 2\n        : coord.top + CREATION_MSG_HEIGHT / 2;\n      if (targetParticipant) {\n        creations.push({\n          participant: targetParticipant,\n          message: {\n            fromX,\n            toX,\n            y: messageY,\n            label: info.label, // already «guillemet-wrapped» from SignatureText()\n            arrowStyle: \"open\",\n            isSelf: false,\n            isReverse: toX < fromX,\n            number: info.number,\n            style: messageStyle,\n          },\n        });\n      }\n\n      // Creation always reserves occurrence space\n      const occX = toX - OCCURRENCE_BAR_SIDE_WIDTH;\n      // -2px matches HTML's Occurrence mt-[-2px]\n      const occY = targetParticipant\n        ? targetParticipant.y + PARTICIPANT_VISUAL_HEIGHT - 2\n        : coord.top + CREATION_MSG_HEIGHT - 2;\n      // Compute occurrence from its top to the bottom of the statement coordinate.\n      // Align the bottom edge with HTML's CSS-computed occurrence bottom.\n      const occHeight = Math.max(\n        (coord.top + coord.height) - occY,\n        OCCURRENCE_EMPTY_HEIGHT,\n      );\n      if (occHeight > 0) {\n        occurrences.push({\n          x: occX,\n          y: occY,\n          width: OCCURRENCE_WIDTH,\n          height: occHeight,\n          participantName: info.to,\n        });\n\n        // Assignment return for creation: e.g. `b = new B()`\n        // Creation occurrences have minimal extra height in HTML (no block content gap),\n        // so the return line sits right at occurrence bottom — no +5 offset needed\n        // (contrast with sync assignment returns which need +5 to compensate for\n        // HTML occurrence being taller due to the return container's my-4 margins).\n        const creationCtx = info.statNode?.creation?.();\n        const creationAssign = creationCtx?.Assignment?.();\n        if (creationAssign?.assignee) {\n          // -2 aligns with HTML return position: -1 for SVG stroke inset (occurrence.ts),\n          // -1 because HTML return sits 1px above occurrence bottom\n          const occBottom = occY + occHeight - 2;\n          // Compute both endpoints from raw lifeline centers.\n          // HTML return line starts 1px beyond sender occurrence edge (CSS gap),\n          // and ends at the created occurrence edge.\n          const rawFromX = snapX(coordinates.getPosition(info.from));\n          const isLTR = rawFromX < toX;\n          const occHalf = OCCURRENCE_BAR_SIDE_WIDTH;\n          // Sender (A) side: occurrence near edge facing the created participant.\n          // LTR: sender's right edge = rawFromX + occHalf + 1 (center pixel).\n          // RTL: sender's left edge = rawFromX - occHalf.\n          const senderNest = Math.max(info.senderOccurrenceDepth - 1, 0) * OCCURRENCE_BAR_SIDE_WIDTH;\n          const senderRetX = info.senderOccurrenceDepth >= 1\n            ? rawFromX + senderNest + (isLTR ? occHalf + 2 : -occHalf)\n            : rawFromX;\n          // Created (B) side: occurrence near edge facing the sender.\n          // LTR: created's left edge + 1 (HTML starts 1px past border).\n          // RTL: created's right edge = toX + occHalf + 1 (center pixel).\n          const createdRetX = isLTR\n            ? toX - occHalf + 1\n            : toX + occHalf + 1;\n          // fromX = line start (created side), toX = arrow tip (sender side)\n          // renderReturn places arrow head at toX\n          returns.push({\n            fromX: createdRetX, toX: senderRetX, y: occBottom,\n            label: creationAssign.assignee, isReverse: createdRetX > senderRetX, isSelf: false,\n            number: info.number\n              ? `${info.number}.${(blockChildCount.get(info.number) || 0) + 1}`\n              : undefined,\n          });\n          maxReturnBottom = Math.max(maxReturnBottom, occBottom + 46);\n        }\n      }\n      continue;\n    }\n\n    // --- Fragments ---\n    if (info.kind === \"fragment\" && info.fragmentKind) {\n      const adjustedCoord = { top: coord.top + adjust, height: coord.height };\n      // Compute comment height: the HTML renderer places the header BELOW any\n      // inline comment. MarkdownMeasurer uses lines * 20 for height.\n      const fragmentCommentHeight = commentObj?.text\n        ? (info.comment?.trim().split(\"\\n\").length || 0) * 20\n        : 0;\n      const fragmentResult = buildFragmentGeometry(\n        info,\n        adjustedCoord,\n        coordinates,\n        verticalCoordinates,\n        allParticipants,\n        measureText,\n        fragmentCommentHeight,\n        commentObj?.text,\n        commentObj?.commentStyle ? cssToSvgStyle(commentObj.commentStyle) : undefined,\n        coord.top + adjust,\n      );\n      if (fragmentResult) {\n        fragments.push(fragmentResult.fragment);\n        if (fragmentResult.comment) {\n          comments.push(fragmentResult.comment);\n        }\n      }\n      continue;\n    }\n\n    // --- Returns ---\n    if (info.kind === \"return\") {\n      const rawFromX = snapX(coordinates.getPosition(info.from));\n      const rawToX = snapX(coordinates.getPosition(info.to));\n      const isReverse = rawToX < rawFromX;\n      // HTML Anchor2 positions return lines edge-to-edge between occurrence walls.\n      // rightEdgeOfRightWall = position + BAR_SIDE_WIDTH * layers\n      // leftEdgeOfRightWall  = layers === 0 ? position : centerOfRightWall - BAR_SIDE_WIDTH\n      //   where centerOfRightWall = layers <= 1 ? position : position + BAR_SIDE_WIDTH * (layers - 1)\n      // LTR: from.rightEdge → to;  RTL: to ← from.leftEdge\n      const fromLayers = info.senderOccurrenceDepth;\n      let fromX: number;\n      if (isReverse) {\n        // RTL: line starts from from's left edge of right wall\n        fromX = fromLayers === 0\n          ? rawFromX\n          : (fromLayers <= 1 ? rawFromX : rawFromX + OCCURRENCE_BAR_SIDE_WIDTH * (fromLayers - 1)) - OCCURRENCE_BAR_SIDE_WIDTH;\n      } else {\n        // LTR: line starts from from's right edge of right wall.\n        // +1: occurrence stroke extends 1px beyond fill area (stroke-width=2, centered).\n        fromX = rawFromX + OCCURRENCE_BAR_SIDE_WIDTH * fromLayers + 1;\n      }\n      // Target also needs occurrence edge offset (Anchor2 uses the near edge facing the source)\n      const toLayers = info.targetOccurrenceDepth || 0;\n      let toX: number;\n      if (isReverse) {\n        // RTL: target is on the left, use its right edge\n        toX = rawToX + OCCURRENCE_BAR_SIDE_WIDTH * toLayers;\n      } else {\n        // LTR: target is on the right, use its left edge\n        toX = toLayers === 0\n          ? rawToX\n          : (toLayers <= 1 ? rawToX : rawToX + OCCURRENCE_BAR_SIDE_WIDTH * (toLayers - 1)) - OCCURRENCE_BAR_SIDE_WIDTH;\n      }\n      // HTML Anchor2.edgeOffset subtracts LIFELINE_WIDTH from the container width.\n      // For RTL returns, add LIFELINE_WIDTH to reach the inner edge of the target.\n      // For LTR returns, the +1 stroke correction on fromX (line 680) already\n      // accounts for the Anchor2 LIFELINE_WIDTH subtraction — applying it again\n      // on toX would double-count and shrink the arrow by 2px instead of 1px.\n      if (isReverse) {\n        toX += LIFELINE_WIDTH;\n      }\n      // Return Y positioning: subpixel browser measurement (scoring coord = attrY + 21)\n      // shows the two sub-cases that the positioning engine distinguishes with 0 vs 16px:\n      //   - return with coord.height=0: HTML collapses margin (CSS margin-bottom:-16px on\n      //     last child inside occurrence), SVG needs 16.5. This applies to returns inside\n      //     sync blocks AND returns inside fragment sections that are themselves inside an\n      //     occurrence (e.g. Alt inside a sync method call).\n      //   - all other returns (root/async, or height>0): SVG needs 15.5\n      // These are +0.5 adjustments on the original 16/15 split, validated by\n      // emoji-async-return (root returns: 87.4%->97%) and emoji-return-chain (block returns: 94.5%->98%).\n      const returnOffset = coord.height === 0 ? 16.5 : 15.5;\n      const returnY = coord.top + adjust + returnOffset;\n      returns.push({\n        fromX,\n        toX,\n        y: returnY,\n        label: info.label,\n        isReverse,\n        isSelf: info.isSelf,\n        number: info.number,\n      });\n      const returnBottomPad = coord.height === 0 ? 45.5 : 44.5;\n      maxReturnBottom = Math.max(maxReturnBottom, returnY + returnBottomPad);\n      continue;\n    }\n\n    // --- Dividers ---\n    if (info.kind === \"divider\") {\n      const cleanLabel = info.label.replace(/^=+\\s*|\\s*=+$/g, \"\").trim();\n      dividers.push({\n        y: coord.top + adjust + coord.height / 2,\n        width: diagramWidth,\n        label: info.label,\n        labelWidth: measureSvgFragmentLabelWidth(resolveEmojiInText(cleanLabel)),\n      });\n      continue;\n    }\n  }\n\n  // With scope-aware return debt adjustments, returns are naturally spaced.\n  // Only enforce minimum gap if returns genuinely overlap (e.g., assignment returns\n  // at occurrence bottom that coincide with explicit returns).\n  const MIN_RETURN_GAP = 16;\n  returns.sort((a, b) => a.y - b.y);\n  for (let i = 1; i < returns.length; i++) {\n    if (returns[i].y - returns[i - 1].y < MIN_RETURN_GAP) {\n      returns[i] = { ...returns[i], y: returns[i - 1].y + MIN_RETURN_GAP };\n    }\n  }\n\n  // Offset nested occurrences: in HTML, inner occurrences on the same participant\n  // are rendered inside the outer occurrence DOM element, offset right by\n  // OCCURRENCE_BAR_SIDE_WIDTH (7px) per nesting level. Detect nesting by Y-range containment.\n  for (let i = 0; i < occurrences.length; i++) {\n    const inner = occurrences[i];\n    let depth = 0;\n    for (let j = 0; j < occurrences.length; j++) {\n      if (i === j) continue;\n      const outer = occurrences[j];\n      if (outer.participantName === inner.participantName &&\n          outer.y <= inner.y &&\n          outer.y + outer.height >= inner.y + inner.height) {\n        depth++;\n      }\n    }\n    if (depth > 0) {\n      occurrences[i] = { ...inner, x: inner.x + depth * OCCURRENCE_BAR_SIDE_WIDTH };\n    }\n  }\n\n  const totalReturnDebt = adjustMap.get(\"__totalDebt__\") || 0;\n  return { messages, selfCalls, occurrences, creations, fragments, returns, dividers, comments, totalReturnDebt, maxReturnBottom };\n}\n","/**\n * Builds DiagramGeometry from parser output + positioning engine.\n * Pure function — no DOM, no React, no side effects.\n *\n * This is the orchestrator — geometry construction for participants,\n * statements, and groups is delegated to focused modules.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n  FRAGMENT_MIN_WIDTH,\n  FRAGMENT_PADDING_X,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport type { DiagramGeometry, FragmentGeometry } from \"./geometry\";\nimport type { RootContextNode } from \"@/parser/AntlrTypes\";\nimport { PARTICIPANT_VISUAL_HEIGHT } from \"./svgConstants\";\nimport { buildParticipants, buildLifelines, buildGroups } from \"./buildParticipantGeometry\";\nimport { buildMessages } from \"./buildStatementGeometry\";\n\nexport interface BuildGeometryInput {\n  rootContext: RootContextNode;\n  coordinates: Coordinates;\n  verticalCoordinates: VerticalCoordinates;\n  title?: string;\n  measureText?: (text: string, type: TextType) => number;\n}\n\nexport function buildGeometry(input: BuildGeometryInput): DiagramGeometry {\n  const { rootContext, coordinates, verticalCoordinates, title, measureText } = input;\n  const participantModels = OrderedParticipants(rootContext);\n  const totalHeight = verticalCoordinates.getTotalHeight();\n\n  // Compute FrameBorder — extra left/right padding from fragment nesting depth.\n  // Matches HTML renderer's SeqDiagram.tsx frameBorderLeft calculation.\n  const allParticipantNames = coordinates.orderedParticipantNames();\n  const frameBuilder = new FrameBuilder(allParticipantNames as string[]);\n  const frame = frameBuilder.getFrame(rootContext);\n  const frameBorder = FrameBorder(frame);\n\n  const participants = buildParticipants(\n    participantModels,\n    coordinates,\n    verticalCoordinates,\n    measureText,\n  );\n  const buildResult = buildMessages(\n    rootContext,\n    coordinates,\n    verticalCoordinates,\n    participants,\n    measureText,\n  );\n  const { messages, selfCalls, occurrences, creations, fragments, returns, dividers, comments } = buildResult;\n\n  // Compute diagram height from the positioning engine's totalHeight (primary) or\n  // max rendered content Y (fallback). Returns need more bottom overhead than other elements\n  // because their Y = coord.top + adjust + 16 represents the visual bottom of a 16px element,\n  // and HTML's CSS adds ~60px of space below the last return. Empirically: +47 (= viewHeight\n  // overhead) gives the right frame height matching HTML. Other content uses +13 (= SVG\n  // bottom space = viewHeight_overhead(47) - headerLineY(34)).\n  let maxOccBottom = 0;\n  let maxOtherY = 0;\n  for (const o of occurrences) maxOccBottom = Math.max(maxOccBottom, o.y + o.height);\n  for (const m of messages) maxOtherY = Math.max(maxOtherY, m.y);\n  for (const s of selfCalls) maxOtherY = Math.max(maxOtherY, s.y + s.height);\n  for (const c of creations) maxOtherY = Math.max(maxOtherY, c.message.y + PARTICIPANT_VISUAL_HEIGHT);\n  for (const f of fragments) maxOtherY = Math.max(maxOtherY, f.y + f.height);\n  for (const d of dividers) maxOtherY = Math.max(maxOtherY, d.y);\n  const diagramHeight = Math.max(\n    totalHeight + 28,\n    maxOccBottom + 13,\n    maxOtherY + 13,\n    buildResult.maxReturnBottom,\n  );\n  const lifelineBottom = diagramHeight + PARTICIPANT_VISUAL_HEIGHT - 28;\n\n  // Build lifelines AFTER height adjustment so they extend to the correct bottom\n  const lifelines = buildLifelines(\n    participants,\n    lifelineBottom,\n  );\n\n  // Compute diagramWidth matching HTML's TotalWidth formula (WidthOfContext.ts).\n  // HTML uses participantWidth = distance(left, right) + half(left) + half(right),\n  // NOT coordinates.getWidth() (which can include extra left(firstParticipant) offset).\n  // In SVG, border.left/.right are added separately in composeSvg, so we include only\n  // participantWidth + extraWidthDueToSelfMessage here.\n  const localParticipants = getLocalParticipantNames(rootContext);\n  const orderedNames = coordinates.orderedParticipantNames();\n  const leftParticipant = orderedNames.find(p => localParticipants.includes(p)) || \"\";\n  const rightParticipant = orderedNames.slice().reverse().find(p => localParticipants.includes(p)) || \"\";\n\n  const participantWidth =\n    coordinates.distance(leftParticipant, rightParticipant) +\n    coordinates.half(leftParticipant) +\n    coordinates.half(rightParticipant);\n\n  const selfMessages = AllMessages(rootContext).filter(m => m.from === m.to);\n  const extraWidths = selfMessages.map(m =>\n    coordinates.getMessageWidth(m) -\n    coordinates.distance(m.from || _STARTER_, rightParticipant) -\n    coordinates.half(rightParticipant)\n  );\n  const extraWidthDueToSelfMessage = Math.max(0, ...extraWidths);\n\n  let diagramWidth = Math.max(participantWidth, FRAGMENT_MIN_WIDTH) + extraWidthDueToSelfMessage;\n\n  // Expand width to fit labels that extend beyond\n  if (measureText) {\n    // Title does not expand diagramWidth. The HTML renderer does not expand the\n    // sequence diagram width for the title — TotalWidth() is participant-based only.\n    // The frame may expand via CSS whitespace-nowrap for very long titles, but the\n    // old * 1.15 multiplier grossly over-corrected, causing 28px+ mismatches.\n\n    // Expand for message labels extending beyond diagram edge\n    const LABEL_PAD = 10;\n    for (const msg of messages) {\n      const labelW = measureText(msg.label, TextType.MessageContent);\n      const midX = (msg.fromX + msg.toX) / 2;\n      const rightExtent = midX + labelW / 2 + LABEL_PAD;\n      if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n    }\n    for (const ret of returns) {\n      const labelW = measureText(ret.label, TextType.MessageContent);\n      const midX = (ret.fromX + ret.toX) / 2;\n      const rightExtent = midX + labelW / 2 + LABEL_PAD;\n      if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n    }\n    for (const cr of creations) {\n      const labelW = measureText(cr.message.label, TextType.MessageContent);\n      const midX = (cr.message.fromX + cr.message.toX) / 2;\n      const rightExtent = midX + labelW / 2 + LABEL_PAD;\n      if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n    }\n  }\n\n  // Shift fragment left edges into the diagram padding area (matching HTML CSS\n  // where fragments use left: -frameBorderLeft). Position-only shift.\n  // Also shift fragment-level comments by the same amount so they stay aligned.\n  for (const f of fragments) {\n    f.x -= frameBorder.left;\n  }\n  for (const c of comments) {\n    if (c.fragmentComment) {\n      c.x -= frameBorder.left;\n    }\n  }\n\n  // Compute spatial nesting depth for each fragment (how many other fragments\n  // fully contain it). This is more accurate than info.depth which includes\n  // message block nesting, not just fragment nesting.\n  const nestDepths = new Map<FragmentGeometry, number>();\n  for (const inner of fragments) {\n    let nestDepth = 0;\n    for (const outer of fragments) {\n      if (outer === inner) continue;\n      if (outer.x <= inner.x && outer.y <= inner.y &&\n          outer.x + outer.width >= inner.x + inner.width &&\n          outer.y + outer.height >= inner.y + inner.height) {\n        nestDepth++;\n      }\n    }\n    nestDepths.set(inner, nestDepth);\n    inner.x += nestDepth * FRAGMENT_PADDING_X;\n  }\n\n  // Extend fragment right edges into the frameBorder area ONLY when the\n  // fragment already spans (nearly) the full diagram width. Fragments whose\n  // local participants are a subset of all participants should keep their\n  // computed width — they don't stretch to the full diagram in HTML either.\n  const contentRightEdge = diagramWidth + frameBorder.right;\n  for (const f of fragments) {\n    const nd = nestDepths.get(f) || 0;\n    const targetRight = contentRightEdge - nd * FRAGMENT_PADDING_X;\n    const currentRight = f.x + f.width;\n    // Only extend if the fragment is already within 20px of the target\n    // (i.e., it spans nearly all participants and just needs the frameBorder extension)\n    if (currentRight >= targetRight - 20 && currentRight < targetRight) {\n      f.width = targetRight - f.x;\n    }\n  }\n\n  // Build group geometry from participants that share a groupId\n  const groups = buildGroups(participants, diagramHeight);\n\n  return {\n    width: diagramWidth,\n    height: diagramHeight,\n    frameBorderLeft: frameBorder.left,\n    frameBorderRight: frameBorder.right,\n    title,\n    participants,\n    lifelines,\n    messages,\n    selfCalls,\n    occurrences,\n    creations,\n    fragments,\n    dividers,\n    returns,\n    comments,\n    groups,\n  };\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n  <g>\\n    <path d=\\\"M15.5489 4.19771C15.5489 5.18773 15.1485 6.13721 14.4358 6.83726C13.7231 7.53731 12.7565 7.93058 11.7486 7.93058C10.7407 7.93058 9.77403 7.53731 9.06133 6.83726C8.34863 6.13721 7.94824 5.18773 7.94824 4.19771C7.94824 3.20768 8.34863 2.25822 9.06133 1.55818C9.77403 0.858126 10.7407 0.464844 11.7486 0.464844C12.7565 0.464844 13.7231 0.858126 14.4358 1.55818C15.1485 2.25822 15.5489 3.20768 15.5489 4.19771Z\\\" stroke=\\\"currentColor\\\"/>\\n    <path d=\\\"M6.54883 11.2152L17.2025 11.2073M11.7471 8.06641V19.5806V8.06641ZM11.7471 19.4385L6.79789 23.5738L11.7471 19.4385ZM11.7551 19.4385L17.1864 23.3055L11.7551 19.4385Z\\\" stroke=\\\"currentColor\\\"/>\\n  </g>\\n</svg>\\n\"","export default \"<svg width=\\\"101\\\" height=\\\"78\\\" viewBox=\\\"0 0 101 78\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path d=\\\"M96.3563 39.4479C96.3563 48.4904 92.6755 57.1625 86.1237 63.5566C79.5718 69.9506 70.6856 73.5427 61.4199 73.5427C52.1541 73.5427 43.2679 69.9506 36.7161 63.5566C30.1642 57.1625 26.4834 48.4904 26.4834 39.4479C26.4834 30.147 30.1642 21.2271 36.7161 14.6504C43.2679 8.07366 52.1541 4.37891 61.4199 4.37891C70.6856 4.37891 79.5718 8.07366 86.1237 14.6504C92.6755 21.2271 96.3563 30.147 96.3563 39.4479V39.4479Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t<path d=\\\"M27.3611 39.4482H3.93945\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t<path d=\\\"M4.91504 4.37891V74.5168\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"77\\\" height=\\\"86\\\" viewBox=\\\"0 0 77 86\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<g>\\n\\t\\t<path d=\\\"M74.0149 46.8888C74.0149 51.5755 73.0918 56.2163 71.2983 60.5463C69.5048 64.8762 66.876 68.8105 63.562 72.1245C60.248 75.4385 56.3137 78.0673 51.9838 79.8608C47.6538 81.6543 43.013 82.5774 38.3263 82.5774C33.6396 82.5774 28.9988 81.6543 24.6689 79.8608C20.3389 78.0673 16.4046 75.4385 13.0907 72.1245C9.77666 68.8105 7.14785 64.8762 5.35433 60.5463C3.56081 56.2163 2.6377 51.5755 2.6377 46.8888C2.6377 42.2021 3.56081 37.5613 5.35433 33.2314C7.14785 28.9014 9.77666 24.9671 13.0907 21.6532C16.4046 18.3392 20.3389 15.7104 24.6689 13.9168C28.9988 12.1233 33.6396 11.2002 38.3263 11.2002C43.013 11.2002 47.6538 12.1233 51.9838 13.9168C56.3137 15.7104 60.248 18.3392 63.562 21.6532C66.876 24.9671 69.5048 28.9014 71.2983 33.2314C73.0918 37.5613 74.0149 42.2021 74.0149 46.8888V46.8888Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4.98203\\\"/>\\n\\t\\t<path d=\\\"M47.5352 2.30371L37.5352 11.5001L47.5352 20.6966\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"6\\\"/>\\n\\t</g>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n  <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.258 0.001L12.514 0.005L12.769 0.01L13.022 0.018L13.273 0.028L13.522 0.04L13.769 0.055L14.015 0.071L14.257 0.09L14.498 0.11L14.737 0.133L14.973 0.157L15.206 0.184L15.437 0.212L15.666 0.243L15.891 0.275L16.114 0.309L16.334 0.345L16.551 0.383L16.765 0.423L16.976 0.464L17.184 0.507L17.389 0.552L17.59 0.598L17.788 0.646L17.982 0.696L18.173 0.747L18.36 0.8L18.543 0.854L18.723 0.91L18.898 0.967L19.07 1.026L19.238 1.086L19.401 1.147L19.561 1.21L19.716 1.274L19.866 1.34L19.94 1.373L20.013 1.406L20.084 1.44L20.154 1.474L20.223 1.509L20.291 1.544L20.358 1.579L20.424 1.614L20.488 1.65L20.552 1.686L20.614 1.722L20.674 1.758L20.734 1.795L20.792 1.832L20.85 1.869L20.905 1.907L20.96 1.945L21.013 1.983L21.065 2.021L21.116 2.06L21.166 2.099L21.214 2.138L21.261 2.177L21.306 2.217L21.35 2.257L21.393 2.297L21.434 2.337L21.474 2.378L21.513 2.419L21.55 2.46L21.586 2.501L21.62 2.542L21.653 2.584L21.685 2.626L21.715 2.668L21.744 2.71L21.771 2.752L21.797 2.795L21.821 2.838L21.844 2.881L21.865 2.924L21.885 2.967L21.903 3.011L21.92 3.054L21.935 3.098L21.948 3.142L21.96 3.186L21.971 3.231L21.98 3.275L21.987 3.32L21.993 3.365L21.997 3.41L21.999 3.455L22 3.5V20.5L21.999 20.545L21.997 20.59L21.993 20.635L21.987 20.68L21.98 20.725L21.971 20.769L21.96 20.814L21.948 20.858L21.935 20.902L21.92 20.946L21.903 20.989L21.885 21.033L21.865 21.076L21.844 21.119L21.821 21.162L21.797 21.205L21.771 21.248L21.744 21.29L21.715 21.332L21.685 21.374L21.653 21.416L21.62 21.458L21.586 21.499L21.55 21.54L21.513 21.581L21.474 21.622L21.434 21.663L21.393 21.703L21.35 21.743L21.306 21.783L21.261 21.823L21.214 21.862L21.166 21.901L21.116 21.94L21.065 21.979L21.013 22.017L20.96 22.055L20.905 22.093L20.85 22.131L20.792 22.168L20.734 22.205L20.674 22.242L20.614 22.278L20.552 22.314L20.488 22.35L20.424 22.386L20.358 22.421L20.291 22.456L20.223 22.491L20.154 22.526L20.084 22.56L20.013 22.594L19.94 22.627L19.866 22.66L19.716 22.726L19.561 22.79L19.401 22.853L19.238 22.914L19.07 22.974L18.898 23.033L18.723 23.09L18.543 23.146L18.36 23.2L18.173 23.253L17.982 23.304L17.788 23.354L17.59 23.402L17.389 23.448L17.184 23.493L16.976 23.536L16.765 23.577L16.551 23.617L16.334 23.655L16.114 23.691L15.891 23.725L15.666 23.757L15.437 23.788L15.206 23.816L14.973 23.843L14.737 23.867L14.498 23.89L14.257 23.91L14.015 23.929L13.769 23.945L13.522 23.96L13.273 23.972L13.022 23.982L12.769 23.99L12.514 23.995L12.258 23.999L12 24L11.742 23.999L11.486 23.995L11.231 23.99L10.978 23.982L10.727 23.972L10.478 23.96L10.231 23.945L9.986 23.929L9.743 23.91L9.502 23.89L9.264 23.867L9.028 23.843L8.794 23.816L8.563 23.788L8.335 23.757L8.109 23.725L7.886 23.691L7.666 23.655L7.449 23.617L7.235 23.577L7.024 23.536L6.816 23.493L6.612 23.448L6.411 23.402L6.213 23.354L6.018 23.304L5.828 23.253L5.641 23.2L5.457 23.146L5.278 23.09L5.102 23.033L4.93 22.974L4.763 22.914L4.599 22.853L4.44 22.79L4.285 22.726L4.134 22.66L4.06 22.627L3.988 22.594L3.916 22.56L3.846 22.526L3.777 22.491L3.709 22.456L3.642 22.421L3.576 22.386L3.512 22.35L3.449 22.314L3.387 22.278L3.326 22.242L3.266 22.205L3.208 22.168L3.151 22.131L3.095 22.093L3.04 22.055L2.987 22.017L2.935 21.979L2.884 21.94L2.835 21.901L2.786 21.862L2.74 21.823L2.694 21.783L2.65 21.743L2.607 21.703L2.566 21.663L2.526 21.622L2.487 21.581L2.45 21.54L2.414 21.499L2.38 21.458L2.347 21.416L2.315 21.374L2.285 21.332L2.256 21.29L2.229 21.248L2.203 21.205L2.179 21.162L2.156 21.119L2.135 21.076L2.115 21.033L2.097 20.989L2.08 20.946L2.065 20.902L2.052 20.858L2.04 20.814L2.029 20.769L2.02 20.725L2.013 20.68L2.007 20.635L2.003 20.59L2.001 20.545L2 20.5V3.5L2.001 3.455L2.003 3.41L2.007 3.365L2.013 3.32L2.02 3.275L2.029 3.231L2.04 3.186L2.052 3.142L2.065 3.098L2.08 3.054L2.097 3.011L2.115 2.967L2.135 2.924L2.156 2.881L2.179 2.838L2.203 2.795L2.229 2.752L2.256 2.71L2.285 2.668L2.315 2.626L2.347 2.584L2.38 2.542L2.414 2.501L2.45 2.46L2.487 2.419L2.526 2.378L2.566 2.337L2.607 2.297L2.65 2.257L2.694 2.217L2.74 2.177L2.786 2.138L2.835 2.099L2.884 2.06L2.935 2.021L2.987 1.983L3.04 1.945L3.095 1.907L3.151 1.869L3.208 1.832L3.266 1.795L3.326 1.758L3.387 1.722L3.449 1.686L3.512 1.65L3.576 1.614L3.642 1.579L3.709 1.544L3.777 1.509L3.846 1.474L3.916 1.44L3.988 1.406L4.06 1.373L4.134 1.34L4.285 1.274L4.44 1.21L4.599 1.147L4.763 1.086L4.93 1.026L5.102 0.967L5.278 0.91L5.457 0.854L5.641 0.8L5.828 0.747L6.018 0.696L6.213 0.646L6.411 0.598L6.612 0.552L6.816 0.507L7.024 0.464L7.235 0.423L7.449 0.383L7.666 0.345L7.886 0.309L8.109 0.275L8.335 0.243L8.563 0.212L8.794 0.184L9.028 0.157L9.264 0.133L9.502 0.11L9.743 0.09L9.986 0.071L10.231 0.055L10.478 0.04L10.727 0.028L10.978 0.018L11.231 0.01L11.486 0.005L11.742 0.001L12 0L12.258 0.001V0.001ZM3 20.5V20.51L3.001 20.531L3.004 20.552L3.008 20.574L3.013 20.595L3.019 20.617L3.026 20.639L3.035 20.662L3.045 20.684L3.056 20.707L3.068 20.73L3.081 20.753L3.096 20.776L3.112 20.8L3.129 20.823L3.147 20.847L3.166 20.871L3.187 20.895L3.209 20.92L3.232 20.944L3.256 20.969L3.308 21.018L3.364 21.068L3.425 21.119L3.491 21.17L3.561 21.221L3.636 21.272L3.715 21.324L3.799 21.376L3.887 21.428L3.979 21.48L4.076 21.532L4.178 21.583L4.283 21.635L4.393 21.687L4.507 21.738L4.626 21.789L4.749 21.84L4.876 21.89L5.007 21.94L5.142 21.99L5.281 22.038L5.425 22.087L5.572 22.134L5.724 22.181L5.879 22.228L6.039 22.273L6.202 22.318L6.369 22.361L6.54 22.404L6.716 22.445L6.894 22.486L7.077 22.525L7.264 22.564L7.454 22.601L7.648 22.636L7.845 22.671L8.047 22.704L8.251 22.735L8.46 22.765L8.672 22.794L8.888 22.821L9.107 22.846L9.329 22.87L9.555 22.891L9.785 22.911L10.018 22.929L10.254 22.945L10.494 22.96L10.737 22.972L10.983 22.982L11.232 22.99L11.485 22.995L11.741 22.999L12 23L12.26 22.999L12.517 22.995L12.771 22.99L13.021 22.982L13.268 22.971L13.512 22.959L13.753 22.945L13.99 22.929L14.223 22.911L14.454 22.89L14.68 22.869L14.904 22.845L15.124 22.819L15.34 22.792L15.552 22.764L15.762 22.733L15.967 22.702L16.169 22.668L16.367 22.634L16.561 22.598L16.752 22.561L16.939 22.522L17.122 22.482L17.301 22.442L17.476 22.4L17.648 22.357L17.816 22.313L17.979 22.268L18.139 22.222L18.294 22.176L18.446 22.129L18.594 22.081L18.737 22.032L18.876 21.983L19.012 21.933L19.143 21.883L19.269 21.833L19.392 21.782L19.51 21.73L19.624 21.679L19.734 21.627L19.84 21.575L19.941 21.523L20.037 21.471L20.129 21.419L20.217 21.366L20.3 21.315L20.379 21.263L20.453 21.211L20.523 21.16L20.588 21.109L20.648 21.058L20.704 21.008L20.755 20.958L20.778 20.934L20.801 20.909L20.822 20.885L20.842 20.861L20.861 20.837L20.879 20.813L20.896 20.789L20.911 20.766L20.925 20.742L20.938 20.719L20.95 20.696L20.96 20.673L20.97 20.651L20.978 20.629L20.984 20.607L20.99 20.585L20.994 20.563L20.998 20.542L20.999 20.521L21 20.5V16.373L20.923 16.428L20.843 16.481L20.76 16.535L20.675 16.588L20.588 16.64L20.498 16.692L20.405 16.743L20.31 16.793L20.213 16.843L20.113 16.892L20.011 16.941L19.906 16.989L19.8 17.036L19.691 17.083L19.58 17.129L19.466 17.174L19.351 17.219L19.233 17.263L19.113 17.306L18.991 17.348L18.867 17.39L18.741 17.431L18.613 17.471L18.483 17.511L18.351 17.549L18.217 17.587L18.082 17.624L17.944 17.661L17.805 17.696L17.663 17.731L17.52 17.765L17.376 17.798L17.229 17.83L17.081 17.861L16.931 17.891L16.78 17.921L16.627 17.95L16.473 17.977L16.317 18.004L16.159 18.03L16 18.055L15.839 18.079L15.677 18.102L15.514 18.124L15.349 18.145L15.183 18.165L15.016 18.184L14.847 18.202L14.678 18.219L14.507 18.235L14.334 18.25L14.161 18.264L13.986 18.277L13.811 18.289L13.634 18.3L13.456 18.31L13.277 18.318L13.098 18.326L12.917 18.332L12.735 18.337L12.553 18.341L12.369 18.344L12.185 18.346H11.815L11.631 18.344L11.447 18.341L11.265 18.337L11.083 18.332L10.902 18.326L10.723 18.318L10.544 18.31L10.366 18.3L10.19 18.289L10.014 18.277L9.839 18.264L9.666 18.25L9.494 18.235L9.323 18.219L9.153 18.202L8.984 18.184L8.817 18.165L8.651 18.145L8.486 18.124L8.323 18.102L8.161 18.079L8 18.055L7.841 18.03L7.684 18.004L7.528 17.977L7.373 17.95L7.22 17.921L7.069 17.891L6.919 17.861L6.771 17.83L6.625 17.798L6.48 17.765L6.337 17.731L6.196 17.696L6.056 17.661L5.919 17.624L5.783 17.587L5.649 17.549L5.517 17.511L5.387 17.471L5.259 17.431L5.133 17.39L5.009 17.348L4.887 17.306L4.767 17.262L4.65 17.219L4.534 17.174L4.421 17.129L4.309 17.083L4.2 17.036L4.094 16.989L3.989 16.941L3.887 16.892L3.787 16.843L3.69 16.793L3.595 16.743L3.502 16.691L3.412 16.64L3.325 16.588L3.24 16.535L3.157 16.481L3.077 16.427L3 16.373V20.5V20.5ZM3 14.846V14.857L3.001 14.878L3.004 14.899L3.008 14.92L3.013 14.942L3.019 14.964L3.026 14.986L3.035 15.008L3.045 15.03L3.056 15.053L3.068 15.076L3.081 15.099L3.096 15.123L3.112 15.146L3.129 15.17L3.147 15.194L3.166 15.218L3.187 15.242L3.209 15.266L3.232 15.291L3.256 15.315L3.308 15.365L3.364 15.415L3.425 15.465L3.491 15.516L3.561 15.567L3.636 15.619L3.715 15.67L3.799 15.722L3.887 15.774L3.979 15.826L4.076 15.878L4.178 15.93L4.283 15.982L4.393 16.033L4.507 16.084L4.626 16.136L4.749 16.186L4.876 16.237L5.007 16.287L5.142 16.336L5.281 16.385L5.425 16.433L5.572 16.481L5.724 16.528L5.879 16.574L6.039 16.619L6.202 16.664L6.369 16.708L6.54 16.75L6.716 16.792L6.894 16.832L7.077 16.872L7.264 16.91L7.454 16.947L7.648 16.983L7.845 17.017L8.047 17.05L8.251 17.082L8.46 17.112L8.672 17.14L8.888 17.167L9.107 17.192L9.329 17.216L9.555 17.238L9.785 17.258L10.018 17.276L10.254 17.292L10.494 17.306L10.737 17.318L10.983 17.328L11.232 17.336L11.485 17.342L11.741 17.345L12 17.346L12.26 17.345L12.517 17.342L12.771 17.336L13.021 17.328L13.268 17.318L13.512 17.306L13.753 17.291L13.99 17.275L14.223 17.257L14.454 17.237L14.68 17.215L14.904 17.191L15.124 17.166L15.34 17.139L15.552 17.11L15.762 17.08L15.967 17.048L16.169 17.015L16.367 16.98L16.561 16.944L16.752 16.907L16.939 16.868L17.122 16.829L17.301 16.788L17.476 16.746L17.648 16.703L17.816 16.659L17.979 16.614L18.139 16.569L18.294 16.522L18.446 16.475L18.594 16.427L18.737 16.379L18.876 16.329L19.012 16.28L19.143 16.23L19.269 16.179L19.392 16.128L19.51 16.077L19.624 16.025L19.734 15.973L19.84 15.921L19.941 15.869L20.037 15.817L20.129 15.765L20.217 15.713L20.3 15.661L20.379 15.609L20.453 15.558L20.523 15.506L20.588 15.455L20.648 15.405L20.704 15.354L20.755 15.305L20.778 15.28L20.801 15.256L20.822 15.231L20.842 15.207L20.861 15.183L20.879 15.159L20.896 15.135L20.911 15.112L20.925 15.089L20.938 15.065L20.95 15.043L20.96 15.02L20.97 14.997L20.978 14.975L20.984 14.953L20.99 14.931L20.994 14.91L20.998 14.888L20.999 14.867L21 14.846V10.707L20.923 10.761L20.843 10.815L20.76 10.869L20.675 10.921L20.588 10.974L20.498 11.025L20.405 11.076L20.31 11.127L20.213 11.177L20.113 11.226L20.011 11.275L19.906 11.323L19.8 11.37L19.691 11.417L19.58 11.463L19.466 11.508L19.351 11.552L19.233 11.596L19.113 11.64L18.991 11.682L18.867 11.724L18.741 11.765L18.613 11.805L18.483 11.844L18.351 11.883L18.217 11.921L18.082 11.958L17.944 11.994L17.805 12.03L17.663 12.065L17.52 12.098L17.376 12.131L17.229 12.164L17.081 12.195L16.931 12.225L16.78 12.255L16.627 12.283L16.473 12.311L16.317 12.338L16.159 12.364L16 12.389L15.839 12.413L15.677 12.436L15.514 12.458L15.349 12.479L15.183 12.499L15.016 12.518L14.847 12.536L14.678 12.553L14.507 12.569L14.334 12.584L14.161 12.598L13.986 12.611L13.811 12.623L13.634 12.634L13.456 12.643L13.277 12.652L13.098 12.659L12.917 12.666L12.735 12.671L12.553 12.675L12.369 12.678L12.185 12.68H11.815L11.631 12.678L11.447 12.675L11.265 12.671L11.083 12.666L10.902 12.659L10.723 12.652L10.544 12.643L10.366 12.634L10.19 12.623L10.014 12.611L9.839 12.598L9.666 12.584L9.494 12.569L9.323 12.553L9.153 12.536L8.984 12.518L8.817 12.499L8.651 12.479L8.486 12.458L8.323 12.436L8.161 12.413L8 12.389L7.841 12.364L7.684 12.338L7.528 12.311L7.373 12.283L7.22 12.255L7.069 12.225L6.919 12.195L6.771 12.164L6.625 12.131L6.48 12.098L6.337 12.065L6.196 12.03L6.056 11.994L5.919 11.958L5.783 11.921L5.649 11.883L5.517 11.844L5.387 11.805L5.259 11.765L5.133 11.724L5.009 11.682L4.887 11.639L4.767 11.596L4.65 11.552L4.534 11.508L4.421 11.462L4.309 11.416L4.2 11.37L4.094 11.323L3.989 11.275L3.887 11.226L3.787 11.177L3.69 11.127L3.595 11.076L3.502 11.025L3.412 10.974L3.325 10.921L3.24 10.869L3.157 10.815L3.077 10.761L3 10.707V14.846V14.846ZM3 9.18V9.191L3.001 9.211L3.004 9.233L3.008 9.254L3.013 9.276L3.019 9.297L3.026 9.319L3.035 9.342L3.045 9.364L3.056 9.387L3.068 9.41L3.081 9.433L3.096 9.456L3.112 9.48L3.129 9.504L3.147 9.527L3.166 9.551L3.187 9.576L3.209 9.6L3.232 9.624L3.256 9.649L3.308 9.699L3.364 9.749L3.425 9.799L3.491 9.85L3.561 9.901L3.636 9.953L3.715 10.004L3.799 10.056L3.887 10.108L3.979 10.16L4.076 10.212L4.178 10.264L4.283 10.315L4.393 10.367L4.507 10.418L4.626 10.469L4.749 10.52L4.876 10.57L5.007 10.62L5.142 10.67L5.281 10.719L5.425 10.767L5.572 10.815L5.724 10.862L5.879 10.908L6.039 10.953L6.202 10.998L6.369 11.041L6.54 11.084L6.716 11.126L6.894 11.166L7.077 11.206L7.264 11.244L7.454 11.281L7.648 11.317L7.845 11.351L8.047 11.384L8.251 11.416L8.46 11.446L8.672 11.474L8.888 11.501L9.107 11.526L9.329 11.55L9.555 11.571L9.785 11.591L10.018 11.609L10.254 11.626L10.494 11.64L10.737 11.652L10.983 11.662L11.232 11.67L11.485 11.676L11.741 11.679L12 11.68L12.26 11.679L12.517 11.676L12.771 11.67L13.021 11.662L13.268 11.652L13.512 11.639L13.753 11.625L13.99 11.609L14.223 11.591L14.454 11.571L14.68 11.549L14.904 11.525L15.124 11.5L15.34 11.473L15.552 11.444L15.762 11.414L15.967 11.382L16.169 11.349L16.367 11.314L16.561 11.278L16.752 11.241L16.939 11.202L17.122 11.163L17.301 11.122L17.476 11.08L17.648 11.037L17.816 10.993L17.979 10.948L18.139 10.903L18.294 10.856L18.446 10.809L18.594 10.761L18.737 10.712L18.876 10.663L19.012 10.614L19.143 10.563L19.269 10.513L19.392 10.462L19.51 10.41L19.624 10.359L19.734 10.307L19.84 10.255L19.941 10.203L20.037 10.151L20.129 10.099L20.217 10.047L20.3 9.995L20.379 9.943L20.453 9.891L20.523 9.84L20.588 9.789L20.648 9.738L20.704 9.688L20.755 9.639L20.778 9.614L20.801 9.589L20.822 9.565L20.842 9.541L20.861 9.517L20.879 9.493L20.896 9.469L20.911 9.446L20.925 9.422L20.938 9.399L20.95 9.376L20.96 9.354L20.97 9.331L20.978 9.309L20.984 9.287L20.99 9.265L20.994 9.243L20.998 9.222L20.999 9.201L21 9.18V5.027L20.923 5.081L20.843 5.135L20.76 5.188L20.675 5.241L20.588 5.294L20.498 5.345L20.405 5.396L20.31 5.447L20.213 5.497L20.113 5.546L20.011 5.594L19.906 5.642L19.8 5.69L19.691 5.736L19.58 5.782L19.466 5.828L19.351 5.872L19.233 5.916L19.113 5.959L18.991 6.002L18.867 6.044L18.741 6.085L18.613 6.125L18.483 6.164L18.351 6.203L18.217 6.241L18.082 6.278L17.944 6.314L17.805 6.35L17.663 6.384L17.52 6.418L17.376 6.451L17.229 6.483L17.081 6.515L16.931 6.545L16.78 6.575L16.627 6.603L16.473 6.631L16.317 6.658L16.159 6.684L16 6.708L15.839 6.732L15.677 6.755L15.514 6.778L15.349 6.799L15.183 6.819L15.016 6.838L14.847 6.856L14.678 6.873L14.507 6.889L14.334 6.904L14.161 6.918L13.986 6.931L13.811 6.943L13.634 6.953L13.456 6.963L13.277 6.972L13.098 6.979L12.917 6.985L12.735 6.991L12.553 6.995L12.369 6.998L12.185 6.999L12 7L11.815 6.999L11.631 6.998L11.447 6.995L11.265 6.991L11.083 6.985L10.902 6.979L10.723 6.972L10.544 6.963L10.366 6.953L10.19 6.943L10.014 6.931L9.839 6.918L9.666 6.904L9.494 6.889L9.323 6.873L9.153 6.856L8.984 6.838L8.817 6.819L8.651 6.799L8.486 6.778L8.323 6.755L8.161 6.732L8 6.708L7.841 6.684L7.684 6.658L7.528 6.631L7.373 6.603L7.22 6.575L7.069 6.545L6.919 6.515L6.771 6.483L6.625 6.451L6.48 6.418L6.337 6.384L6.196 6.35L6.056 6.314L5.919 6.278L5.783 6.241L5.649 6.203L5.517 6.164L5.387 6.125L5.259 6.084L5.133 6.043L5.009 6.002L4.887 5.959L4.767 5.916L4.65 5.872L4.534 5.828L4.421 5.782L4.309 5.736L4.2 5.69L4.094 5.642L3.989 5.594L3.887 5.546L3.787 5.496L3.69 5.447L3.595 5.396L3.502 5.345L3.412 5.293L3.325 5.241L3.24 5.188L3.157 5.135L3.077 5.081L3 5.027V9.18V9.18ZM11.74 1.001L11.483 1.005L11.229 1.01L10.979 1.018L10.732 1.029L10.488 1.041L10.247 1.055L10.01 1.071L9.777 1.089L9.546 1.11L9.32 1.132L9.096 1.155L8.876 1.181L8.66 1.208L8.448 1.236L8.238 1.267L8.033 1.299L7.831 1.332L7.633 1.366L7.439 1.402L7.248 1.44L7.061 1.478L6.878 1.518L6.699 1.559L6.524 1.601L6.352 1.644L6.184 1.687L6.021 1.732L5.861 1.778L5.706 1.824L5.554 1.872L5.406 1.92L5.263 1.968L5.124 2.017L4.988 2.067L4.857 2.117L4.731 2.168L4.608 2.219L4.49 2.27L4.376 2.322L4.266 2.374L4.16 2.426L4.059 2.478L3.963 2.53L3.871 2.582L3.783 2.634L3.7 2.686L3.621 2.738L3.547 2.789L3.477 2.841L3.412 2.892L3.352 2.942L3.296 2.992L3.245 3.042L3.222 3.067L3.199 3.091L3.178 3.115L3.158 3.14L3.139 3.164L3.121 3.188L3.104 3.211L3.089 3.235L3.075 3.258L3.062 3.281L3.05 3.304L3.04 3.327L3.03 3.349L3.022 3.371L3.016 3.394L3.01 3.415L3.006 3.437L3.002 3.458L3.001 3.479L3 3.5L3.001 3.521L3.002 3.542L3.006 3.563L3.01 3.585L3.016 3.606L3.022 3.629L3.03 3.651L3.04 3.673L3.05 3.696L3.062 3.719L3.075 3.742L3.089 3.765L3.104 3.789L3.121 3.812L3.139 3.836L3.158 3.86L3.178 3.885L3.199 3.909L3.222 3.933L3.245 3.958L3.296 4.008L3.352 4.058L3.412 4.108L3.477 4.159L3.547 4.211L3.621 4.262L3.7 4.314L3.783 4.366L3.871 4.418L3.963 4.47L4.059 4.522L4.16 4.574L4.266 4.626L4.376 4.678L4.49 4.73L4.608 4.781L4.731 4.832L4.857 4.883L4.988 4.933L5.124 4.983L5.263 5.032L5.406 5.08L5.554 5.128L5.706 5.176L5.861 5.222L6.021 5.268L6.184 5.313L6.352 5.356L6.524 5.399L6.699 5.441L6.878 5.482L7.061 5.522L7.248 5.56L7.439 5.598L7.633 5.634L7.831 5.668L8.033 5.701L8.238 5.733L8.448 5.764L8.66 5.792L8.876 5.819L9.096 5.845L9.32 5.868L9.546 5.89L9.777 5.911L10.01 5.929L10.247 5.945L10.488 5.959L10.732 5.971L10.979 5.982L11.229 5.99L11.483 5.995L11.74 5.999L12 6L12.26 5.999L12.517 5.995L12.771 5.99L13.021 5.982L13.268 5.971L13.512 5.959L13.753 5.945L13.99 5.929L14.223 5.911L14.454 5.89L14.68 5.868L14.904 5.845L15.124 5.819L15.34 5.792L15.552 5.764L15.762 5.733L15.967 5.701L16.169 5.668L16.367 5.634L16.561 5.598L16.752 5.56L16.939 5.522L17.122 5.482L17.301 5.441L17.476 5.399L17.648 5.356L17.816 5.313L17.979 5.268L18.139 5.222L18.294 5.176L18.446 5.128L18.594 5.08L18.737 5.032L18.876 4.983L19.012 4.933L19.143 4.883L19.269 4.832L19.392 4.781L19.51 4.73L19.624 4.678L19.734 4.626L19.84 4.574L19.941 4.522L20.037 4.47L20.129 4.418L20.217 4.366L20.3 4.314L20.379 4.262L20.453 4.211L20.523 4.159L20.588 4.108L20.648 4.058L20.704 4.008L20.755 3.958L20.778 3.933L20.801 3.909L20.822 3.885L20.842 3.86L20.861 3.836L20.879 3.812L20.896 3.789L20.911 3.765L20.925 3.742L20.938 3.719L20.95 3.696L20.96 3.673L20.97 3.651L20.978 3.629L20.984 3.606L20.99 3.585L20.994 3.563L20.998 3.542L20.999 3.521L21 3.5L20.999 3.479L20.998 3.458L20.994 3.437L20.99 3.415L20.984 3.394L20.978 3.371L20.97 3.349L20.96 3.327L20.95 3.304L20.938 3.281L20.925 3.258L20.911 3.235L20.896 3.211L20.879 3.188L20.861 3.164L20.842 3.14L20.822 3.115L20.801 3.091L20.778 3.067L20.755 3.042L20.704 2.992L20.648 2.942L20.588 2.892L20.523 2.841L20.453 2.789L20.379 2.738L20.3 2.686L20.217 2.634L20.129 2.582L20.037 2.53L19.941 2.478L19.84 2.426L19.734 2.374L19.624 2.322L19.51 2.27L19.392 2.219L19.269 2.168L19.143 2.117L19.012 2.067L18.876 2.017L18.737 1.968L18.594 1.92L18.446 1.872L18.294 1.824L18.139 1.778L17.979 1.732L17.816 1.687L17.648 1.644L17.476 1.601L17.301 1.559L17.122 1.518L16.939 1.478L16.752 1.44L16.561 1.402L16.367 1.366L16.169 1.332L15.967 1.299L15.762 1.267L15.552 1.236L15.34 1.208L15.124 1.181L14.904 1.155L14.68 1.132L14.454 1.11L14.223 1.089L13.99 1.071L13.753 1.055L13.512 1.041L13.268 1.029L13.021 1.018L12.771 1.01L12.517 1.005L12.26 1.001L12 1L11.74 1.001V1.001Z\\\" fill=\\\"currentColor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"77\\\" height=\\\"80\\\" viewBox=\\\"0 0 77 80\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<g>\\n\\t\\t<path d=\\\"M74.0149 38.8888C74.0149 43.5755 73.0918 48.2163 71.2983 52.5463C69.5048 56.8762 66.876 60.8105 63.562 64.1245C60.248 67.4385 56.3137 70.0673 51.9838 71.8608C47.6538 73.6543 43.013 74.5774 38.3263 74.5774C33.6396 74.5774 28.9988 73.6543 24.6689 71.8608C20.3389 70.0673 16.4046 67.4385 13.0907 64.1245C9.77666 60.8105 7.14785 56.8762 5.35433 52.5463C3.56081 48.2163 2.6377 43.5755 2.6377 38.8888C2.6377 34.2021 3.56081 29.5613 5.35433 25.2314C7.14785 20.9014 9.77666 16.9671 13.0907 13.6532C16.4046 10.3392 20.3389 7.71035 24.6689 5.91683C28.9988 4.12331 33.6396 3.2002 38.3263 3.2002C43.013 3.2002 47.6538 4.12331 51.9838 5.91683C56.3137 7.71035 60.248 10.3392 63.562 13.6532C66.876 16.9671 69.5048 20.9014 71.2983 25.2314C73.0918 29.5613 74.0149 34.2021 74.0149 38.8888V38.8888Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4.98203\\\"/>\\n\\t\\t<path d=\\\"M2.69922 75.4727L75.6992 75.5154\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t</g>\\n</svg>\\n\"","/**\n * Inline SVG icon paths for common participant types.\n * Build from the same raw SVG assets used by the HTML renderer so source\n * icons stay identical across renderers.\n */\n\nimport ActorSvg from \"@/assets/actor.svg?raw\";\nimport BoundarySvg from \"@/assets/Robustness_Diagram_Boundary.svg?raw\";\nimport ControlSvg from \"@/assets/Robustness_Diagram_Control.svg?raw\";\nimport DatabaseSvg from \"@/assets/database.svg?raw\";\nimport EntitySvg from \"@/assets/Robustness_Diagram_Entity.svg?raw\";\nimport Ec2Svg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_Amazon-EC2_Instance_48.svg?raw\";\nimport IamSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Security-Identity-Compliance/Res_AWS-Identity-Access-Management_IAM-Access-Analyzer_48.svg?raw\";\nimport LambdaSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_AWS-Lambda_Lambda-Function_48.svg?raw\";\nimport SnsSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Notification-Service_Topic_48.svg?raw\";\nimport SqsSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Queue-Service_Queue_48.svg?raw\";\nimport AzureFunctionSvg from \"@/assets/Azure_Public_Service_Icons/Icons/Compute/10029-icon-service-Function-Apps.svg?raw\";\n\nexport interface IconDefinition {\n  /** ViewBox for the icon (default \"0 0 24 24\") */\n  viewBox?: string;\n  /** Presentation attributes from the source <svg> wrapper (e.g. fill=\"none\") */\n  attributes?: string;\n  /** SVG path data or full SVG content (without outer <svg> tag) */\n  content: string;\n}\n\nconst PRESENTATION_ATTRIBUTES = new Set([\n  \"fill\",\n  \"fill-rule\",\n  \"fill-opacity\",\n  \"stroke\",\n  \"stroke-width\",\n  \"stroke-linecap\",\n  \"stroke-linejoin\",\n  \"stroke-miterlimit\",\n  \"stroke-opacity\",\n  \"clip-rule\",\n  \"opacity\",\n  \"color\",\n  \"style\",\n  \"preserveAspectRatio\",\n]);\n\nfunction parseRawSvg(raw: string): IconDefinition {\n  const outer = raw.match(/<svg\\b([^>]*)>/i)?.[1];\n  const viewBox = raw.match(/viewBox=\"([^\"]+)\"/i)?.[1];\n  const inner = raw.match(/<svg\\b[^>]*>([\\s\\S]*?)<\\/svg>/i)?.[1]?.trim();\n  if (!outer || !viewBox || !inner) {\n    throw new Error(\"Invalid raw SVG asset\");\n  }\n\n  const attributes = Array.from(\n    outer.matchAll(/([:\\w-]+)=\"([^\"]*)\"/g),\n    ([, name, value]) => ({ name, value }),\n  )\n    .filter(({ name }) => PRESENTATION_ATTRIBUTES.has(name))\n    .map(({ name, value }) => `${name}=\"${value}\"`)\n    .join(\" \");\n\n  return { viewBox, attributes, content: inner };\n}\n\n/**\n * Common icons for SVG renderer.\n * Icons are built from the same raw SVG assets as AsyncIcon/LazyIcons.\n */\nexport const ICONS: Record<string, IconDefinition> = {\n  actor: parseRawSvg(ActorSvg),\n  database: parseRawSvg(DatabaseSvg),\n  ec2: parseRawSvg(Ec2Svg),\n  lambda: parseRawSvg(LambdaSvg),\n  azurefunction: parseRawSvg(AzureFunctionSvg),\n  sqs: parseRawSvg(SqsSvg),\n  sns: parseRawSvg(SnsSvg),\n  iam: parseRawSvg(IamSvg),\n  boundary: parseRawSvg(BoundarySvg),\n  control: parseRawSvg(ControlSvg),\n  entity: parseRawSvg(EntitySvg),\n};\n\n/**\n * Get icon definition for a participant type.\n * Returns undefined if icon not available (will fall back to text label).\n */\nexport function getIcon(type: string | undefined): IconDefinition | undefined {\n  if (!type) return undefined;\n  const key = type.toLowerCase();\n  return ICONS[key];\n}\n","/**\n * Shared SVG rendering utilities for XML-safe string escaping\n * and CSS-to-SVG style conversion.\n */\n\nexport function esc(s: string): string {\n  return s\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(/\"/g, \"&quot;\");\n}\n\nexport function styleToAttr(style: Record<string, string>): string {\n  return Object.entries(style)\n    .map(([k, v]) => `${esc(k)}: ${esc(v)}`)\n    .join(\"; \");\n}\n","import { getEmojiUnicode } from \"@/emoji/resolveEmoji\";\nimport type { ParticipantGeometry } from \"../geometry\";\nimport { getIcon } from \"../icons\";\nimport { PARTICIPANT_EMOJI_WIDTH } from \"../svgConstants\";\nimport { esc } from \"./svgUtils\";\n\n/**\n * Stroke inset for SVG border-box emulation.\n * CSS border-box keeps the border INSIDE the element's width/height.\n * SVG centered stroke extends half the stroke width OUTSIDE the rect.\n * Inset the rect by half the stroke width on each side so the outer\n * stroke edge aligns with the CSS border outer edge.\n */\nconst STROKE_WIDTH = 2;\nconst HALF_STROKE = STROKE_WIDTH / 2; // 1px inset\nconst ICON_SIZE = 24;\nconst ICON_MARGIN_RIGHT = 4;\nconst ICON_PAINT_OFFSET_X = 4;\nconst LABEL_PAD_LEFT = 8;\nconst LABEL_HORIZONTAL_PADDING = 16;\nconst STEREOTYPE_VERTICAL_OFFSET = 8;\nconst STEREOTYPE_FONT_SIZE = 16;\nconst BOUNDARY_ICON_VERTICAL_TWEAK = 2.75;\nconst PARTICIPANT_TEXT_FILL = \"#222\";\n\nexport function renderParticipant(p: ParticipantGeometry): string {\n  if (p.isStarter) return renderStarterParticipant(p);\n\n  // rx=3 so that with stroke-width:2 centered, outer visible radius is 3+1=4, matching CSS border-radius:4\n  const rx = 3;\n  const x = p.x - p.width / 2 + HALF_STROKE;\n  const rectY = p.y + HALF_STROKE;\n  const rectW = p.width - STROKE_WIDTH;\n  const rectH = p.height - STROKE_WIDTH;\n\n  const EMOJI_FONT_ATTRS = `font-family=\"'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji','Twemoji Mozilla',sans-serif\"`;\n\n  // Icon positioning (if present)\n  const icon = getIcon(p.type);\n  let iconSvg = \"\";\n  let emojiIconSvg = \"\";\n  let textX = p.x;\n  let textAnchor: \"start\" | \"middle\" = \"middle\";\n\n  const textY = p.y + p.height / 2 - 0.25;\n  const labelY = p.stereotype ? textY + STEREOTYPE_VERTICAL_OFFSET : textY;\n\n  if (icon) {\n    const textWidth = p.labelWidth ?? 0;\n    // HTML centers the whole icon+label row. The label glyphs sit inside a span\n    // with 8px left/right inline padding, so SVG needs to place text from the\n    // padded glyph origin rather than the visual center of the participant box.\n    // When both a type icon and emoji are present, the emoji tspan is rendered\n    // inside the <text> element but textWidth only covers the plain label.\n    // Add PARTICIPANT_EMOJI_WIDTH to account for the emoji glyph + space.\n    const emojiExtra = p.emoji ? PARTICIPANT_EMOJI_WIDTH : 0;\n    const groupWidth = ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_HORIZONTAL_PADDING + textWidth + emojiExtra;\n    const groupX = p.x - groupWidth / 2;\n    const iconX = groupX + ICON_PAINT_OFFSET_X;\n    const iconType = p.type?.toLowerCase();\n    const iconY = p.y + (p.height - ICON_SIZE) / 2 + (iconType === \"boundary\" ? BOUNDARY_ICON_VERTICAL_TWEAK : 0);\n    if (p.emoji) {\n      // When both type icon and emoji are present, render the emoji as a separate\n      // <text> element (like emoji-only participants) positioned immediately after\n      // the type icon. The label text starts after the emoji + gap.\n      // HTML layout: [4px iconOffset][icon 24px][4px iconMargin][emoji 16px][4px mr-1 margin][4px px-1 padding][labelText]\n      const emojiTextX = iconX + ICON_SIZE + ICON_MARGIN_RIGHT;\n      textX = emojiTextX + PARTICIPANT_EMOJI_WIDTH + 4;\n      emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${labelY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n    } else {\n      textX = groupX + ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_PAD_LEFT;\n    }\n    textAnchor = \"start\";\n\n    const [, , vbW, vbH] = (icon.viewBox || \"0 0 24 24\").split(\" \").map(Number);\n    const scale = ICON_SIZE / Math.max(vbW, vbH);\n    const iconAttrs = icon.attributes ? ` ${icon.attributes}` : \"\";\n\n    iconSvg = `<g class=\"participant-icon\" transform=\"translate(${iconX}, ${iconY}) scale(${scale})\"${iconAttrs}>\n    ${icon.content}\n  </g>`;\n  } else if (p.emoji) {\n    // Emoji-only participant (no SVG type icon): render emoji as a separate text element\n    // positioned to the left of the label, matching HTML's flex row layout.\n    // HTML layout: [emoji:16px][gap:4px][leftpad:4px][labelText][rightpad:4px]\n    // PARTICIPANT_EMOJI_WIDTH (20) covers emoji(16) + gap(4).\n    // When a stereotype is present, the inner column width = max(emojiRowWidth, stereotypeGlyphWidth).\n    // The entire inner column is centered at p.x: emojiX = p.x - innerColWidth/2.\n    const textWidth = p.labelWidth ?? 0;\n    const groupWidth = PARTICIPANT_EMOJI_WIDTH + 8 + textWidth; // 8 = leftpad(4) + rightpad(4)\n    const innerColWidth = Math.max(groupWidth, p.stereotypeWidth ?? 0);\n    const groupX = p.x - innerColWidth / 2;\n    const emojiTextX = groupX;\n    textX = groupX + PARTICIPANT_EMOJI_WIDTH + 4; // after emoji(16)+gap(4)=20, then leftpad(4)\n    textAnchor = \"start\";\n\n    emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${labelY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n  }\n\n  // Match the current HTML renderer: stereotypes inherit the same 16px text styling\n  // and theme-default participant text color rather than SVG-side contrast heuristics.\n  let stereotypeSvg = \"\";\n  if (p.stereotype) {\n    // Stereotype is always centered over the full participant box (text-anchor=\"middle\").\n    // When a type icon is present, center over the label portion only.\n    // When no icon (plain or emoji-only), center at p.x (participant center).\n    const stereoX = icon && p.labelWidth != null\n      ? textX + p.labelWidth / 2\n      : p.x;\n    const stereoAnchor = \"middle\";\n    const stereoY = textY - STEREOTYPE_VERTICAL_OFFSET;\n    stereotypeSvg = `<text x=\"${stereoX}\" y=\"${stereoY}\" text-anchor=\"${stereoAnchor}\" dominant-baseline=\"central\" class=\"stereotype-label\" font-size=\"${STEREOTYPE_FONT_SIZE}\"${participantTextStyle()}>${esc(\"«\" + p.stereotype + \"»\")}</text>`;\n  }\n\n  // Aliased labels (e.g. \"b:B\") — use textLength to pin the text extent to the\n  // measured glyph width. HTML renders the label at natural glyph width with CSS\n  // padding around it (not between characters). Setting textLength = glyphWidth\n  // ensures SVG matches the HTML glyph rendering without artificial stretching.\n  const useTextLength = p.labelWidth != null && p.name.includes(\":\");\n  const textLengthAttr = useTextLength\n    ? ` textLength=\"${p.labelWidth}\" lengthAdjust=\"spacing\"`\n    : \"\";\n\n  const { fillStyle, textStyle } = colorAttrs(p.color);\n\n  // When emoji is rendered as a separate <text> element (either emoji-only or icon+emoji),\n  // do not include it as a tspan inside the label text element.\n  const emojiTspan = \"\";\n\n  return `<g class=\"participant\" data-participant=\"${esc(p.name)}\">\n  <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n  ${iconSvg}\n  ${emojiIconSvg}\n  ${stereotypeSvg}\n  <text x=\"${textX}\" y=\"${labelY}\" text-anchor=\"${textAnchor}\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${emojiTspan}${esc(p.label)}</text>\n</g>`;\n}\n\nexport function renderParticipantBottom(p: ParticipantGeometry, bottomY: number): string {\n  if (!p.showBottom || p.isStarter) return \"\";\n  const rx = 3;\n  const x = p.x - p.width / 2 + HALF_STROKE;\n  const rectY = bottomY + HALF_STROKE;\n  const rectW = p.width - STROKE_WIDTH;\n  const rectH = p.height - STROKE_WIDTH;\n  const textY = bottomY + p.height / 2 - 0.25;\n\n  const useTextLength = p.labelWidth != null && p.name.includes(\":\");\n  const textLengthAttr = useTextLength\n    ? ` textLength=\"${p.labelWidth}\" lengthAdjust=\"spacing\"`\n    : \"\";\n\n  const { fillStyle, textStyle } = colorAttrs(p.color);\n\n  const EMOJI_FONT_ATTRS = `font-family=\"'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji','Twemoji Mozilla',sans-serif\"`;\n  const icon = getIcon(p.type);\n\n  // Emoji-only bottom participant: render emoji as separate element, same as top box.\n  // Apply same inner-column centering as top box: innerColWidth = max(emojiRowWidth, stereotypeGlyphWidth).\n  if (p.emoji && !icon) {\n    const textWidth = p.labelWidth ?? 0;\n    const groupWidth = PARTICIPANT_EMOJI_WIDTH + 8 + textWidth;\n    const innerColWidth = Math.max(groupWidth, p.stereotypeWidth ?? 0);\n    const groupX = p.x - innerColWidth / 2;\n    const emojiTextX = groupX;\n    const textX = groupX + PARTICIPANT_EMOJI_WIDTH + 4;\n    const emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${textY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n    return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n  <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n  ${emojiIconSvg}\n  <text x=\"${textX}\" y=\"${textY}\" text-anchor=\"start\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n  }\n\n  // Icon+emoji case: render emoji as a separate element, same as top box\n  if (p.emoji && icon) {\n    const textWidth = p.labelWidth ?? 0;\n    const emojiExtra = PARTICIPANT_EMOJI_WIDTH;\n    const groupWidth = ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_HORIZONTAL_PADDING + textWidth + emojiExtra;\n    const groupX = p.x - groupWidth / 2;\n    const iconX = groupX + ICON_PAINT_OFFSET_X;\n    const emojiTextX = iconX + ICON_SIZE + ICON_MARGIN_RIGHT;\n    const textX = emojiTextX + PARTICIPANT_EMOJI_WIDTH + 4;\n    const emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${textY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n    return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n  <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n  ${emojiIconSvg}\n  <text x=\"${textX}\" y=\"${textY}\" text-anchor=\"start\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n  }\n\n  return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n  <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n  <text x=\"${p.x}\" y=\"${textY}\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n}\n\nfunction renderStarterParticipant(p: ParticipantGeometry): string {\n  const icon = getIcon(\"actor\");\n  if (!icon) {\n    return \"\";\n  }\n\n  const rx = 3;\n  const boxX = p.x - p.width / 2 + HALF_STROKE;\n  const rectY = p.y + HALF_STROKE;\n  const rectW = p.width - STROKE_WIDTH;\n  const rectH = p.height - STROKE_WIDTH;\n\n  // HTML renderer places icon 2px left of box center due to CSS box-model padding.\n  const iconX = p.x - ICON_SIZE / 2 - 2;\n  const iconY = p.y + (p.height - ICON_SIZE) / 2;\n  const [, , vbW, vbH] = (icon.viewBox || \"0 0 24 24\").split(\" \").map(Number);\n  const scale = ICON_SIZE / Math.max(vbW, vbH);\n  const iconAttrs = icon.attributes ? ` ${icon.attributes}` : \"\";\n\n  return `<g class=\"participant participant-starter\" data-participant=\"${esc(p.name)}\">\n  <rect x=\"${boxX}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"/>\n  <g class=\"participant-icon\" transform=\"translate(${iconX}, ${iconY}) scale(${scale})\"${iconAttrs}>\n    ${icon.content}\n  </g>\n</g>`;\n}\n\n/**\n * Normalize a color string to a # prefixed hex value.\n * Parser may provide \"FFEBE6\" or \"#FFEBE6\".\n */\nfunction normalizeHexColor(color: string): string {\n  const c = color.startsWith(\"#\") ? color : `#${color}`;\n  return c;\n}\n\n/**\n * Build fill and text-color style attributes for a participant with a background color.\n */\nfunction colorAttrs(color: string | undefined): { fillStyle: string; textStyle: string } {\n  if (!color) {\n    return { fillStyle: \"\", textStyle: \"\" };\n  }\n  const hex = normalizeHexColor(color);\n  return {\n    fillStyle: ` style=\"fill:${hex};\"`,\n    textStyle: participantTextStyle(),\n  };\n}\n\nfunction participantTextStyle(): string {\n  return ` style=\"fill:${PARTICIPANT_TEXT_FILL};\"`;\n}\n\n","import type { LifelineGeometry } from \"../geometry\";\n\nexport function renderLifeline(l: LifelineGeometry): string {\n  // Use x+0.5 to align 1px stroke to pixel grid (avoids anti-aliased 2px blur)\n  const x = l.x + 0.5;\n  return `<line x1=\"${x}\" y1=\"${l.topY}\" x2=\"${x}\" y2=\"${l.bottomY}\" class=\"lifeline\" stroke-dasharray=\"${l.dashed ? \"5,5\" : \"none\"}\" stroke-dashoffset=\"${l.dashed ? \"5\" : \"0\"}\" shape-rendering=\"crispEdges\"/>`;\n}\n","import type { MessageGeometry, SelfCallGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nexport function renderMessage(m: MessageGeometry): string {\n  // HTML arrow SVG container spans from left_lifeline_center+1 to right_lifeline_center.\n  // Left endpoint = center+1 (right edge of 2px lifeline), right endpoint = center.\n  const isLTR = m.fromX < m.toX;\n  const fromX = isLTR ? m.fromX + 1 : m.fromX;\n  const toX = isLTR ? m.toX : m.toX + 1;\n\n  // HTML centers the label between source lifeline and arrowhead tip.\n  // The arrowhead is 7px wide, so CSS centering excludes half the arrowhead (3.5px),\n  // shifting the label center toward the source. +0.5 for lifeline width averaging.\n  const direction = Math.sign(m.toX - m.fromX);\n  const labelX = (m.fromX + m.toX) / 2 - direction * 3.5 + 0.5;\n  const labelY = m.y - 3.5;\n\n  const dashAttr = m.arrowStyle === \"dashed\" ? ' stroke-dasharray=\"6,4\"' : \"\";\n  const styleAttr = m.style ? ` style=\"${styleToAttr(m.style)}\"` : \"\";\n\n  // Sequence number: positioned to the LEFT of the message with 4px gap (matching HTML pr-1).\n  const numberX = Math.min(fromX, toX) - 4;\n  const numberSvg = m.number\n    ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(m.number)}</text>`\n    : \"\";\n\n  const lineY = m.y - 0.5;\n  return `<g class=\"message\">\n  <line x1=\"${fromX}\" y1=\"${lineY}\" x2=\"${toX}\" y2=\"${lineY}\" class=\"message-line\"${dashAttr}/>\n  ${renderArrowHead(toX, lineY, m.isReverse, m.arrowStyle)}\n  <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"message-label\"${styleAttr}>${esc(resolveEmojiInText(m.label))}</text>\n  ${numberSvg}\n</g>`;\n}\n\nexport function renderSelfCall(s: SelfCallGeometry): string {\n  const x1 = s.x;\n  // HTML SelfInvocation layout (flex-col): label on top, SVG arrow below.\n  // s.y = coord.top = top of the self-invocation element.\n  // Label: sync self calls sit 1px lower than async in the DOM.\n  const isAsync = s.arrowStyle === \"open\";\n  const labelX = x1 + 6;\n  const labelY = s.y + (isAsync ? 15 : 12);\n\n  // Sequence number: positioned to the left of the self-call origin.\n  // HTML positions the number at the container top (flush), while the label is 2px below.\n  // For async, labelY = s.y + 15, but number should be at s.y + 11 (4px higher).\n  // For sync, labelY = s.y + 11, number at same Y (both flush with container).\n  const numberY = s.y + 12;\n  const numberSvg = s.number\n    ? `<text x=\"${x1 - 3}\" y=\"${numberY}\" text-anchor=\"end\" class=\"seq-number\">${esc(s.number)}</text>`\n    : \"\";\n\n  // Reuse the exact same SVG structure as the HTML SelfInvocation component:\n  //   <svg width=\"30\" height=\"24\">\n  //     <path d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 L{1|14},15\"/>\n  //     <g transform=\"translate({0|7}, 10)\"><ArrowHead {open|fill} rtl/></g>\n  //   </svg>\n  // Position: +1px right of s.x (matching HTML CSS border offset).\n  // Browser-native screenshots show sync self-call arrows need to sit 2px lower\n  // than the previous SVG placement, while async self-call arrows already match.\n  const svgX = x1 + 1;\n  const svgY = s.y + (isAsync ? 20 : 14);\n\n  // Async: open arrowhead at left edge (L1,15, translate(0,10), fill=none, no Z)\n  // Sync: filled arrowhead at midpoint (L14,15, translate(7,10), fill=#000, Z)\n  const pathEnd = isAsync ? \"L1,15\" : \"L14,15\";\n  const arrowTx = isAsync ? 0 : 7;\n  const arrowFill = isAsync ? \"none\" : \"#000\";\n  const arrowPath = isAsync\n    ? 'M1 1.25 L6.15 4.5 L1 7.75'\n    : 'M1 1.25 L6.15 4.5 L1 7.75 Z';\n\n  return `<g class=\"message self-call\">\n  <svg x=\"${svgX}\" y=\"${svgY}\" width=\"30\" height=\"24\">\n    <path d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 ${pathEnd}\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\"/>\n    <g transform=\"translate(${arrowTx}, 10)\">\n      <svg height=\"10\" width=\"7\" viewBox=\"0 0 7 9\">\n        <g transform=\"scale(-1, 1) translate(-7, 0)\">\n          <path d=\"${arrowPath}\" stroke=\"#000\" stroke-linecap=\"round\" fill=\"${arrowFill}\" stroke-width=\"2\"/>\n        </g>\n      </svg>\n    </g>\n  </svg>\n  <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"start\" class=\"message-label\"${s.style ? ` style=\"${styleToAttr(s.style)}\"` : \"\"}>${esc(resolveEmojiInText(s.label.trim()))}</text>\n  ${numberSvg}\n</g>`;\n}\n\n/**\n * Renders an arrowhead using the exact same structure as HTML's ArrowHead.tsx:\n * <svg width=\"7\" height=\"10\" viewBox=\"0 0 7 9\"> with path M1,1.25 L6.15,4.5 L1,7.75\n * RTL uses scale(-1,1) translate(-7,0) to mirror.\n *\n * The viewBox 7x9 → display 7x10 creates a slight vertical stretch (10/9)\n * that matches HTML's rendering. The tip is at viewBox (6.15, 4.5).\n */\nfunction renderArrowHead(\n  tipX: number,\n  tipY: number,\n  pointsLeft: boolean,\n  style: string,\n): string {\n  const isFilled = style !== \"open\" && style !== \"dashed\";\n  const pathD = isFilled\n    ? \"M1 1.25 L6.15 4.5 L1 7.75 Z\"\n    : \"M1 1.25 L6.15 4.5 L1 7.75\";\n  const fillAttr = isFilled ? \"#000\" : \"none\";\n\n  // Match the HTML renderer's placement exactly: the 7x10 arrowhead SVG is\n  // anchored flush to the message edge, and the path sits inside that box.\n  // Aligning the mathematical tip directly makes the native SVG paint about\n  // 0.85px too far outward on both LTR and RTL arrows.\n  const svgX = pointsLeft ? tipX : tipX - 7;\n  const svgY = tipY - 5;\n  const rtlTransform = pointsLeft ? ' transform=\"scale(-1, 1) translate(-7, 0)\"' : \"\";\n\n  return `<svg x=\"${svgX}\" y=\"${svgY}\" width=\"7\" height=\"10\" viewBox=\"0 0 7 9\" overflow=\"visible\" class=\"arrow-head${isFilled ? \"\" : \" arrow-open\"}\">\n    <g${rtlTransform}>\n      <path d=\"${pathD}\" stroke=\"#000\" stroke-linecap=\"round\" stroke-width=\"2\" fill=\"${fillAttr}\"/>\n    </g>\n  </svg>`;\n}\n\n","import type { OccurrenceGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\n\nexport function renderOccurrence(o: OccurrenceGeometry): string {\n  // SVG stroke is centered on the rect boundary (1px inside, 1px outside).\n  // HTML uses border-box with border-2 (fully inside the 15px element).\n  // Inset rect by 1px so the stroke stays within the same visual footprint.\n  const strokeHalf = 1; // half of stroke-width: 2\n  const rx = o.x + strokeHalf;\n  return `<rect x=\"${rx}\" y=\"${o.y + strokeHalf}\" width=\"${o.width - strokeHalf * 2}\" height=\"${o.height - strokeHalf * 2}\" rx=\"1\" class=\"occurrence\" data-participant=\"${esc(o.participantName)}\"/>`;\n}\n\n","import type { FragmentGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nconst HEADER_HEIGHT = 25;\nconst BRACKET_WIDTH = 3.89;\nconst TEXT_PAD_X = 4;\n\n/**\n * Stroke inset for SVG border-box emulation.\n * CSS border-box keeps the border INSIDE the element's width/height.\n * SVG centered stroke extends half the stroke width OUTSIDE the rect.\n * Inset the rect by half the stroke width on each side so the outer\n * stroke edge aligns with the CSS border outer edge.\n */\nconst STROKE_WIDTH = 1;\nconst HALF_STROKE = STROKE_WIDTH / 2; // 0.5px inset\n\nexport function renderFragment(f: FragmentGeometry): string {\n  const parts: string[] = [];\n\n  // Fragment border rect — inset by half stroke width so outer stroke\n  // edge matches CSS border-box model (border inside the bounding box)\n  parts.push(\n    `<rect x=\"${f.x + HALF_STROKE}\" y=\"${f.y + HALF_STROKE}\" width=\"${f.width - STROKE_WIDTH}\" height=\"${f.height - STROKE_WIDTH}\" rx=\"4\" class=\"fragment-border\"/>`,\n  );\n\n  // Full-width header bar (matches HTML's bg-skin-fragment-header)\n  // 1px inside the border on all sides, offset by any comment height\n  const headerX = f.x + 1;\n  const headerY = f.headerY;\n  const headerW = f.width - 2;\n  parts.push(\n    `<rect x=\"${headerX}\" y=\"${headerY}\" width=\"${headerW}\" height=\"${HEADER_HEIGHT}\" class=\"fragment-header\"/>`,\n  );\n\n\n  // Kind-specific icon inside the header bar\n  // Each fragment type uses its own icon matching the HTML/React renderer\n  const iconX = headerX + 4;\n  const iconY = headerY;\n  parts.push(getFragmentIcon(f.kind, iconX, iconY));\n\n  const kindLabel = getKindLabel(f.kind);\n  const labelX = headerX + 26; // after the diamond icon\n  parts.push(\n    `<text x=\"${labelX}\" y=\"${headerY + HEADER_HEIGHT / 2 - 0.5}\" dominant-baseline=\"central\" class=\"fragment-label\">${esc(kindLabel)}</text>`,\n  );\n\n  // Sequence number: positioned to the left of the fragment with 4px gap (matching HTML pr-1)\n  if (f.number) {\n    parts.push(\n      `<text x=\"${f.x - 3}\" y=\"${headerY + HEADER_HEIGHT / 2 - 4.5}\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"seq-number\">${esc(f.number)}</text>`,\n    );\n  }\n\n  // Condition label below the header (matches HTML's text-skin-fragment div)\n  // HTML: .text-skin-fragment div top = headerBottom, span.condition top = headerBottom + 2 (padding)\n  // SVG dominant-baseline=\"hanging\" puts text top ~2.6px above y → need y = htmlTextTop + 2.6\n  if (f.label) {\n    const condY = headerY + HEADER_HEIGHT + 15;\n    parts.push(renderBracketedLabel(headerX, condY, f.label, f.labelWidth, \"fragment-condition\"));\n  }\n\n  // Section separator lines and labels (for multi-section fragments like alt, tcf)\n  if (f.sections.length > 1) {\n    for (let i = 1; i < f.sections.length; i++) {\n      const section = f.sections[i];\n      const lineY = section.y;\n      const separatorY = lineY + HALF_STROKE;\n      // Separator line (inset for par content areas, full width for alt/tcf)\n      const sepX1 = f.x + 1 + (section.contentInsetLeft ?? 0);\n      const sepX2 = f.x + f.width - 1;\n      parts.push(\n        `<line x1=\"${sepX1}\" y1=\"${separatorY}\" x2=\"${sepX2}\" y2=\"${separatorY}\" class=\"fragment-separator\"/>`,\n      );\n      // Section label — split into keyword + condition (e.g. \"catch\" + \"error\") as separate elements\n      // Both catch and finally have a semi-transparent white background (bg-skin-frame opacity-65)\n      if (section.label) {\n        const labelY = lineY + 16;\n        const isFinally = section.label.startsWith(\"finally\");\n        const isBracketed = !!section.innerLabel && section.label !== \"[else]\";\n        if (isBracketed) {\n          const labelX = f.x + 1;\n          parts.push(\n            renderBracketedLabel(labelX, labelY, section.innerLabel!, section.innerLabelWidth, \"fragment-section-label\"),\n          );\n          continue;\n        }\n        // Split \"catch error\" → [\"catch\", \"error\"], \"else [cond]\" → [\"else\", \"[cond]\"], \"finally\" → [\"finally\"]\n        const spaceIdx = section.label.indexOf(\" \");\n        if (spaceIdx > 0 && !isFinally) {\n          const keyword = section.keyword || section.label.substring(0, spaceIdx);\n          const condition = section.detail || section.label.substring(spaceIdx + 1);\n          const keywordWidth = section.keywordWidth ?? keyword.length * 7;\n          const keywordX = f.x + 5;\n          const conditionX = keywordX + keywordWidth + TEXT_PAD_X * 2;\n          // Group with opacity 0.65 matches HTML parent opacity (affects both bg and text together)\n          const bgWidth = (section.keywordWidth ?? keyword.length * 7) + (section.detailWidth ?? condition.length * 7) + TEXT_PAD_X * 4;\n          parts.push(\n            `<g opacity=\"0.65\">` +\n            `<rect x=\"${keywordX - TEXT_PAD_X}\" y=\"${lineY + 1}\" width=\"${bgWidth}\" height=\"20\" fill=\"#fff\"/>` +\n            `<text x=\"${keywordX}\" y=\"${labelY}\" class=\"fragment-section-label\" fill=\"#222\">${esc(keyword)}</text>` +\n            `<text x=\"${conditionX}\" y=\"${labelY}\" class=\"fragment-section-label\" fill=\"#222\">${esc(condition)}</text>` +\n            `</g>`,\n          );\n        } else {\n          const finallyX = f.x + 5;\n          const finallyY = labelY;\n          if (section.label === \"[else]\") {\n            parts.push(\n              `<text x=\"${finallyX}\" y=\"${finallyY}\" class=\"fragment-section-label\">${esc(section.label)}</text>`,\n            );\n            continue;\n          }\n          const bgWidth = (section.labelWidth ?? section.label.length * 7) + TEXT_PAD_X * 2;\n          const bgY = lineY + 1;\n          const bgHeight = 20;\n          parts.push(\n            `<g opacity=\"0.65\">` +\n            `<rect x=\"${finallyX - TEXT_PAD_X}\" y=\"${bgY}\" width=\"${bgWidth}\" height=\"${bgHeight}\" fill=\"#fff\"/>` +\n            `<text x=\"${finallyX}\" y=\"${finallyY}\" class=\"fragment-section-label\">${esc(section.label)}</text>` +\n            `</g>`,\n          );\n        }\n      }\n    }\n  }\n\n  return `<g class=\"fragment fragment-${f.kind}\">\\n  ${parts.join(\"\\n  \")}\\n</g>`;\n}\n\nfunction renderBracketedLabel(x: number, y: number, innerText: string, innerWidth?: number, cls: string = \"fragment-condition\"): string {\n  const measuredInnerWidth = innerWidth ?? innerText.length * 7;\n  const innerX = x + BRACKET_WIDTH + TEXT_PAD_X;\n  const closeX = innerX + measuredInnerWidth + TEXT_PAD_X;\n  return (\n    `<g>` +\n    `<text x=\"${x}\" y=\"${y}\" class=\"${cls}\">[</text>` +\n    `<text x=\"${innerX}\" y=\"${y}\" class=\"${cls}\" opacity=\"0.65\">${esc(resolveEmojiInText(innerText))}</text>` +\n    `<text x=\"${closeX}\" y=\"${y}\" class=\"${cls}\">]</text>` +\n    `</g>`\n  );\n}\n\nfunction getKindLabel(kind: string): string {\n  switch (kind) {\n    case \"alt\": return \"Alt\";\n    case \"loop\": return \"Loop\";\n    case \"opt\": return \"Opt\";\n    case \"par\": return \"Par\";\n    case \"critical\": return \"Critical\";\n    case \"section\": return \"Section\";\n    case \"tcf\": return \"Try\";\n    case \"ref\": return \"Ref\";\n    default: return kind.charAt(0).toUpperCase() + kind.slice(1);\n  }\n}\n\nfunction getFragmentIcon(kind: string, x: number, y: number): string {\n  // Icons match src/components/Icon/icons/*-fragment.svg from the HTML renderer\n  const w = 20;\n  const h = 24;\n  switch (kind) {\n    case \"loop\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 1024 1024\" fill=\"#000\" stroke=\"none\">\n      <path d=\"M960 101.84l-896.002.002c-35.344 0-64 28.656-64 64v576c0 35.36 28.656 64 64 64h160c20.496 0 32-26.32 32-31.984v-.016c0-5.824-10.88-32.416-32-32.416h-120.96c-21.376 0-38.72-17.344-38.72-38.72V206.002c0-21.391 17.328-38.72 38.72-38.72l818.272-1.007c21.376 0 38.72 17.328 38.72 38.72V702.69c0 21.376-17.344 38.72-38.72 38.72H518.142l75.984-68.912c9.344-8.944 12.369-23.408 3.025-32.336l-5.472-8.064c-9.376-8.945-24.496-8.945-33.84 0L428.111 750.53c-.192.16-.368.224-.528.368l-8.48 8.096c-4.672 4.431-7.008 10.335-6.976 16.223-.032 5.904 2.288 11.777 6.977 16.288l8.48 8.096c.16.16.368.192.528.336L555.84 915.44c9.344 8.944 24.464 8.944 33.84 0l5.472-8.065c9.344-8.944 6.32-23.44-3.025-32.368l-77.135-69.168H960c35.343 0 64-28.64 64-64v-576c0-35.344-28.657-64-64-64z\"/>\n    </svg>`;\n    case \"opt\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <circle cx=\"12\" cy=\"12\" r=\"7\" stroke=\"#000\" stroke-width=\"1.5\" stroke-dasharray=\"3 2\" stroke-linecap=\"round\"/>\n    </svg>`;\n    case \"par\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <path d=\"M5 10H19\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      <path d=\"M5 14H19\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>`;\n    case \"critical\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <path d=\"M12 5L19 12L12 19L5 12L12 5Z\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      <path d=\"M12 9V13\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      <path d=\"M12 15V15.5\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>`;\n    case \"tcf\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 76 76\" fill=\"#000\" stroke=\"none\">\n      <path d=\"M 26,22.0001L 27,21.9998L 27,27L 26.0001,27.0003C 23.2386,27.0003 21.0001,29.2389 21.0001,32.0003L 21,46.0002C 21,48.7616 23.2386,51.0002 25.9999,51.0002L 27,51.0002L 27,47L 33.75,53.5L 27,60L 27,56L 26,56C 20.4771,56 16,51.5229 16,46L 16,32.0001C 16,26.4773 20.4771,22.0001 26,22.0001 Z M 33,27L 59,27L 59,32L 33,32L 33,27 Z M 36,35L 59,35L 59,40L 36,40L 36,35 Z M 33,43L 59,43L 59,48L 33,48L 33,43 Z\"/>\n    </svg>`;\n    case \"ref\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <path d=\"M10 6H18C19.1046 6 20 6.89543 20 8V16C20 17.1046 19.1046 18 18 18H10\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n      <path d=\"M10 6L6 12L10 18\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>`;\n    case \"section\":\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 15 15\" fill=\"#000\" stroke=\"none\">\n      <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\"/>\n    </svg>`;\n    case \"alt\":\n    default:\n      // Diamond icon (alt-fragment.svg) — default for alt and unknown types\n      return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n      <path d=\"M12 8L20 12L12 16L4 12L12 8Z\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>`;\n  }\n}\n\n","import type { CreationGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\n\nexport function renderCreation(c: CreationGeometry): string {\n  const m = c.message;\n  const p = c.participant;\n\n  // Arrow stops at participant box edge (not center)\n  const isRTL = m.toX < m.fromX;\n  const adjustedToX = isRTL\n    ? p.x + p.width / 2\n    : p.x - p.width / 2;\n\n  // fromX: +1 on left endpoint (matching message.ts lifeline offset convention).\n  // toX: stop AT the participant rect edge — no +1, because SVG has no\n  // z-ordering to hide arrowhead overlap like CSS does in HTML.\n  const fromX = isRTL ? m.fromX : m.fromX + 1;\n  const toX = isRTL ? adjustedToX : adjustedToX;\n\n  // HTML label sits ~3px toward the sender side of the arrow midpoint.\n  // LTR fromX has +1 lifeline offset shifting midpoint +0.5px, so offset is -3.\n  // RTL fromX has no +1, so offset is +3.5 to match HTML positioning.\n  const labelX = fromX + (toX - fromX) / 2 + (isRTL ? 3.5 : -3);\n  const labelY = m.y - 3;\n\n  const styleAttr = m.style ? ` style=\"${styleToAttr(m.style)}\"` : \"\";\n\n  const numberX = Math.min(fromX, toX) - 4;\n  const numberSvg = m.number\n    ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(m.number)}</text>`\n    : \"\";\n\n  // Creation labels like «payload» are rendered by HTML as three spans:\n  // <span>«</span><span class=\"editable-span-base\" padding:4px>payload</span><span>»</span>\n  // The 4px padding makes HTML wider. Replicate with tspan dx offsets.\n  const labelContent = renderGuillemets(m.label, styleAttr);\n\n  return `<g class=\"creation\">\n  <line x1=\"${fromX}\" y1=\"${m.y}\" x2=\"${toX}\" y2=\"${m.y}\" class=\"message-line\" stroke-dasharray=\"6,4\"/>\n  ${renderOpenArrow(toX, m.y, isRTL)}\n  <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"message-label\">${labelContent}</text>\n  ${numberSvg}\n</g>`;\n}\n\nfunction renderGuillemets(label: string, styleAttr: string): string {\n  const match = label.match(/^«(.+)»$/);\n  if (match) {\n    const inner = match[1];\n    // HTML renders «create» (default, no params) as a single element.\n    // Only «param» labels (with arguments) use three separate spans with\n    // 4px padding on the middle editable-span. Skip dx for the default label.\n    if (inner === \"create\") {\n      return `<tspan${styleAttr}>${esc(label)}</tspan>`;\n    }\n    return `<tspan${styleAttr}>${esc(\"«\")}</tspan><tspan dx=\"4\"${styleAttr}>${esc(inner)}</tspan><tspan dx=\"4\"${styleAttr}>${esc(\"»\")}</tspan>`;\n  }\n  return `<tspan${styleAttr}>${esc(label)}</tspan>`;\n}\n\nfunction renderOpenArrow(tipX: number, tipY: number, pointsLeft: boolean): string {\n  // Match HTML renderer's ArrowHead.tsx path: M1,1.25 L6.15,4.5 L1,7.75\n  const w = 5.15;\n  const halfH = 3.25;\n  const dir = pointsLeft ? 1 : -1;\n  const x1 = tipX + dir * w;\n  const y1 = tipY - halfH;\n  const y2 = tipY + halfH;\n  return `<polyline points=\"${x1},${y1} ${tipX},${tipY} ${x1},${y2}\" fill=\"none\" stroke-linecap=\"round\" class=\"arrow-head arrow-open\"/>`;\n}\n\n","import type { ReturnGeometry } from \"../geometry\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { esc } from \"./svgUtils\";\n\nexport function renderReturn(r: ReturnGeometry): string {\n  if (r.isSelf) {\n    return renderSelfReturn(r);\n  }\n\n  const minX = Math.min(r.fromX, r.toX);\n  // HTML centers the label text within a container that has 7px padding on the\n  // arrow-tip side (for the arrowhead SVG). This shifts text center 3.5px away\n  // from the tip. SVG has no such padding, so offset the label accordingly.\n  const ARROW_PADDING_HALF = 3.5;\n  const labelX = minX + Math.abs(r.toX - r.fromX) / 2\n    + (r.isReverse ? ARROW_PADDING_HALF : -ARROW_PADDING_HALF);\n  // HTML CSS snaps the return line to integer CSS pixels. SVG may produce fractional\n  // coordinates (e.g. 153.5). Floor to match HTML's integer-snapped line position.\n  const lineY = Math.floor(r.y);\n  // Label sits 3px above the line. Use lineY (floored integer) so that both integer\n  // r.y (assignment returns) and half-pixel r.y (keyword returns) produce the same\n  // integer labelY that matches HTML. Previously \"-3.5 from r.y\" caused a -0.5px\n  // offset when r.y is an integer (assignment return case).\n  const labelY = lineY - 3;\n\n  // Match HTML renderer's ArrowHead.tsx path: M1,1.25 L6.15,4.5 L1,7.75\n  const arrowTipX = r.toX;\n  const w = 5.15;\n  const halfH = 3.25;\n  const dir = r.isReverse ? -1 : 1;\n  const ax1 = arrowTipX - dir * w;\n  const ay1 = lineY - halfH;\n  const ay2 = lineY + halfH;\n\n  // Sequence number: always to the left of the return\n  const numberX = Math.min(r.fromX, r.toX) - 4;\n  const numberSvg = r.number\n    ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(r.number)}</text>`\n    : \"\";\n\n  return `<g class=\"return\">\n  <line x1=\"${r.fromX}\" y1=\"${lineY}\" x2=\"${r.toX}\" y2=\"${lineY}\" class=\"return-line\"/>\n  <polyline points=\"${ax1},${ay1} ${arrowTipX},${lineY} ${ax1},${ay2}\" fill=\"none\" stroke-linecap=\"round\" class=\"return-arrow\"/>\n  <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"return-label\">${esc(resolveEmojiInText(r.label))}</text>\n  ${numberSvg}\n</g>`;\n}\n\n/**\n * Self-return: from === to (same participant). HTML renders a circular arrow\n * icon (12x12) + label text with no line/arrow. Match that layout.\n */\nfunction renderSelfReturn(r: ReturnGeometry): string {\n  // HTML: icon is w-3 h-3 (12x12) with m-1 (4px margin), then label text.\n  // r.y includes a +16 offset (for non-self return line positioning).\n  // HTML container top = r.y - 16. Icon is 4px below container top (m-1 margin).\n  const iconSize = 12;\n  const iconMargin = 4;\n  const iconX = r.fromX + iconMargin;\n  const iconY = r.y - 12; // container top + 4px margin = (r.y - 16) + 4\n  const labelX = iconX + iconSize + iconMargin;\n  const labelY = r.y - 1; // text baseline: vertically center with icon\n\n  // Circular arrow icon — simplified from HTML's 512x512 SVG path, scaled to 12x12\n  return `<g class=\"return return-self\">\n  <g transform=\"translate(${iconX},${iconY}) scale(${iconSize / 512})\">\n    <path d=\"M256 0C114.84 0 0 114.84 0 256s114.84 256 256 256 256-114.84 256-256S397.16 0 256 0Zm0 469.33c-117.63 0-213.33-95.7-213.33-213.33S138.37 42.67 256 42.67 469.33 138.37 469.33 256 373.63 469.33 256 469.33Z\" class=\"return-icon\"/>\n    <path d=\"M288 192h-87.16l27.58-27.58a21.33 21.33 0 1 0-30.17-30.17l-64 64a21.33 21.33 0 0 0 0 30.17l64 64a21.33 21.33 0 0 0 30.17-30.17l-27.58-27.58H288a53.33 53.33 0 0 1 0 106.67h-32a21.33 21.33 0 0 0 0 42.66h32a96 96 0 0 0 0-192Z\" class=\"return-icon\"/>\n  </g>\n  <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"start\" class=\"return-label\">${esc(resolveEmojiInText(r.label))}</text>\n</g>`;\n}\n\n","import type { DividerGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nconst PAD_X = 8;\nconst BOX_HEIGHT = 28;\n\nexport function renderDivider(d: DividerGeometry): string {\n  const rawLabel = d.label.replace(/^=+\\s*|\\s*=+$/g, \"\").trim();\n  const label = resolveEmojiInText(rawLabel);\n  const centerX = d.width / 2;\n  const textWidth = d.labelWidth ?? label.length * 8;\n  // Match HTML box-sizing: border-box with 1px border.\n  // Total visual width = textWidth + 2*padding + 2*border = textWidth + 18.\n  // SVG stroke is centered on the rect edge (0.5px inside, 0.5px outside),\n  // so the rect dimensions are the border-box dimensions minus the stroke overshoot.\n  const borderWidth = 1;\n  const totalWidth = textWidth + PAD_X * 2 + borderWidth * 2;\n  const innerWidth = totalWidth - borderWidth; // rect width (stroke centered)\n  const innerHeight = BOX_HEIGHT - borderWidth;\n  const boxX = centerX - innerWidth / 2;\n  const boxY = d.y - innerHeight / 2;\n  const outerLeft = boxX - borderWidth / 2; // visual left edge of stroke\n  const outerRight = boxX + innerWidth + borderWidth / 2; // visual right edge\n  const textY = d.y;\n\n  return `<g class=\"divider\">\n  <line x1=\"0\" y1=\"${d.y}\" x2=\"${outerLeft}\" y2=\"${d.y}\" class=\"divider-line\"/>\n  <line x1=\"${outerRight}\" y1=\"${d.y}\" x2=\"${d.width}\" y2=\"${d.y}\" class=\"divider-line\"/>\n  <rect x=\"${boxX}\" y=\"${boxY}\" width=\"${innerWidth}\" height=\"${innerHeight}\" rx=\"2\" class=\"divider-bg\"/>\n  <text x=\"${centerX}\" y=\"${textY}\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"divider-label\">${esc(label)}</text>\n</g>`;\n}\n","import { marked } from \"marked\";\nimport type { CommentGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\n\n/**\n * Convert markdown text to SVG-safe content using the same parser (marked)\n * that the HTML renderer uses. This ensures code spans like `text` have\n * their backticks stripped, bold/italic get SVG-equivalent tspan styling,\n * and the rendered text content matches what HTML shows.\n */\nfunction markdownToSvgLines(text: string): string[] {\n  const tokens = marked.lexer(text, { gfm: true, breaks: true });\n  return collectLines(tokens);\n}\n\nfunction collectLines(tokens: marked.TokensList | marked.Token[]): string[] {\n  const lines: string[][] = [[]];\n\n  const pushFragment = (fragment: string) => {\n    if (fragment) {\n      lines[lines.length - 1].push(fragment);\n    }\n  };\n\n  const pushLineBreak = () => {\n    lines.push([]);\n  };\n\n  const walkTokens = (tokenList: marked.TokensList | marked.Token[]) => {\n    tokenList.forEach((token, index) => {\n      walkToken(token);\n\n      if (\n        index < tokenList.length - 1 &&\n        (token.type === \"paragraph\" || token.type === \"code\")\n      ) {\n        pushLineBreak();\n      }\n    });\n  };\n\n  const walkToken = (token: marked.Token): void => {\n    switch (token.type) {\n      case \"paragraph\":\n        walkTokens(token.tokens || []);\n        return;\n      case \"code\": {\n        const codeLines = token.text.split(\"\\n\");\n        codeLines.forEach((line, index) => {\n          if (index > 0) {\n            pushLineBreak();\n          }\n          pushFragment(`<tspan font-family=\"monospace\">${esc(line)}</tspan>`);\n        });\n        return;\n      }\n      case \"codespan\":\n        pushFragment(esc(token.text));\n        return;\n      case \"strong\":\n        pushFragment(`<tspan font-weight=\"bold\">${collectLines(token.tokens || []).join(\"\")}</tspan>`);\n        return;\n      case \"em\":\n        pushFragment(`<tspan font-style=\"italic\">${collectLines(token.tokens || []).join(\"\")}</tspan>`);\n        return;\n      case \"text\":\n        if (\"tokens\" in token && token.tokens) {\n          walkTokens(token.tokens);\n          return;\n        }\n        pushFragment(esc(token.raw));\n        return;\n      case \"br\":\n        pushLineBreak();\n        return;\n      case \"space\":\n        return;\n      default:\n        pushFragment(esc(token.raw || \"\"));\n    }\n  };\n\n  walkTokens(tokens);\n\n  return lines.map((line) => line.join(\"\"));\n}\n\nexport function renderComment(c: CommentGeometry): string {\n  const styleAttr = c.style ? ` style=\"${styleToAttr(c.style)}\"` : \"\";\n  const lines = markdownToSvgLines(c.text);\n  const tspans = lines\n    .map((line, index) =>\n      index === 0\n        ? `<tspan x=\"${c.x}\" y=\"${c.y}\">${line || \" \"}</tspan>`\n        : `<tspan x=\"${c.x}\" dy=\"20\">${line || \" \"}</tspan>`,\n    )\n    .join(\"\");\n  return `<text class=\"comment-text\"${styleAttr}>${tspans}</text>`;\n}\n","import type { GroupGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\n\n/**\n * Renders a participant group as a dashed outline with a title bar,\n * matching the HTML renderer's outline-dashed style on LifeLineGroup.\n * Uses CSS classes from DEFAULT_THEME_STYLES for colors/typography parity.\n * Stroke width is applied inline from `sw` so geometry math and painted width\n * stay in sync.\n */\nexport function renderGroup(g: GroupGeometry): string {\n  const titleBarHeight = 18;\n  const sw = 1;   // stroke-width\n  const sw2 = sw / 2; // 0.5 — half stroke-width\n  // SVG stroke is centered on the rect boundary. To align the stroke's outer edge with\n  // HTML's CSS outline outer edge (which is drawn outside the border-box), the SVG rect\n  // must be shifted outward by sw2 on each side. This aligns visual strokes at the cost\n  // of a small sub-pixel offset in measured bounding boxes.\n  const rectX = g.x - sw2;\n  const rectY = g.y - sw - 1;     // shift top up 0.5px to align with HTML outline outer edge\n  const rectW = g.width + sw;\n  const rectH = g.height + sw + 0.5; // compensate to keep bottom in place\n  // Title text uses a small +0.85 adjustment to match HTML's chip text centering\n  // after dominant-baseline differences between SVG and DOM text rendering.\n  const titleY = g.y + titleBarHeight / 2 + 1;\n  const titleText = g.name ? esc(g.name) : \"\";\n  // Title background is inset by sw2 from the outline rect on all sides so the\n  // full dashed border (including the inner half of the centered stroke) stays visible.\n  const tbX = g.x + sw2;\n  const tbY = rectY + sw2;      // inner edge of top stroke\n  const tbWidth = g.width - sw;  // inset sw2 on each side\n  const tbHeight = titleBarHeight + 1 + sw2; // cover through the title bar\n  return `<g class=\"participant-group\">\n  <rect x=\"${rectX}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" class=\"group-outline\" stroke-width=\"${sw}\" stroke-dasharray=\"4 3\"/>\n  ${titleText ? `<rect x=\"${tbX}\" y=\"${tbY}\" width=\"${tbWidth}\" height=\"${tbHeight}\" class=\"group-title-bg\"/>` : \"\"}\n  ${titleText ? `<text x=\"${g.x + g.width / 2}\" y=\"${titleY}\" text-anchor=\"middle\" dominant-baseline=\"middle\" class=\"group-title-text\">${titleText}</text>` : \"\"}\n</g>`;\n}\n\n","/**\n * renderToSvg — Renders ZenUML DSL to native SVG content.\n *\n * Pipeline: parse → layout → geometry IR → SVG primitives → compose\n */\nimport { RootContext } from \"@/parser\";\nimport { Coordinates } from \"@/positioning/Coordinates\";\nimport { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport { WidthProviderOnCanvas } from \"@/positioning/WidthProviderFunc\";\nimport { buildGeometry } from \"./buildGeometry\";\nimport { renderParticipant } from \"./components/participant\";\nimport { renderLifeline } from \"./components/lifeline\";\nimport { renderMessage, renderSelfCall } from \"./components/message\";\nimport { renderOccurrence } from \"./components/occurrence\";\nimport { renderFragment } from \"./components/fragment\";\nimport { renderCreation } from \"./components/creation\";\nimport { renderReturn } from \"./components/return\";\nimport { renderDivider } from \"./components/divider\";\nimport { renderComment } from \"./components/comment\";\nimport { renderGroup } from \"./components/group\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport type { DiagramGeometry } from \"./geometry\";\n\nexport interface RenderOptions {\n  theme?: \"theme-default\" | \"theme-mermaid\";\n  /** Optional emoji shortcode-to-Unicode cache (for future use by Task 8) */\n  emojiCache?: Map<string, string>;\n}\n\nexport interface RenderResult {\n  svg: string;\n  /** Inner SVG content (defs + g) for embedding into an existing SVG container */\n  innerSvg: string;\n  width: number;\n  height: number;\n  viewBox: string;\n  /** The geometry IR used to produce this SVG (undefined for empty input) */\n  geometry?: DiagramGeometry;\n}\n\nconst FRAME_HEADER_HEIGHT = 28;\nconst FRAME_BORDER_RADIUS = 4;\n\nconst DEFAULT_THEME_STYLES = `\n  .frame-border-outer { fill: #666; }\n  .frame-border-inner { fill: #ffffff; }\n  .frame-header-bg { fill: #ffffff; }\n  .frame-header-line { stroke: #666; stroke-width: 1; shape-rendering: crispEdges; }\n  .frame-title { font-family: Helvetica, Verdana, serif; font-size: 16px; font-weight: 600; fill: #222; }\n  .participant-box { fill: #ffffff; stroke: #666; stroke-width: 2; }\n  .participant-label { font-family: Helvetica, Verdana, serif; font-size: 16px; fill: #222; }\n  .participant-icon { color: #222; }\n  .participant-icon [fill=\"currentColor\"]:not([stroke]) { stroke: #666; stroke-width: 1; }\n  .lifeline { stroke: #666; stroke-width: 1; }\n  .message-line { stroke: #000; stroke-width: 2; shape-rendering: crispEdges; }\n  .message-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #222; }\n  .arrow-head { fill: #000; stroke: #000; stroke-width: 2; }\n  .arrow-open { fill: none; }\n  .occurrence { fill: #dedede; stroke: #666; stroke-width: 2; shape-rendering: crispEdges; }\n  .fragment-border { fill: none; stroke: #666; stroke-width: 1; shape-rendering: crispEdges; }\n  .fragment-header { fill: #dedede; fill-opacity: 0.498; stroke: none; shape-rendering: crispEdges; }\n  .fragment-label { font-family: Helvetica, Verdana, serif; font-size: 14px; font-weight: 600; fill: #000; }\n  .fragment-condition { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #000; }\n  .fragment-separator { stroke: #e5e7eb; stroke-width: 1; shape-rendering: crispEdges; }\n  .fragment-section-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #000; }\n  .return-line { stroke: #000; stroke-width: 2; stroke-dasharray: 6,4; shape-rendering: crispEdges; }\n  .return-arrow { stroke: #000; stroke-width: 2; fill: none; }\n  .return-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #222; }\n  .return-icon { fill: #222; }\n  .divider-line { stroke: #aaaa33; stroke-width: 1; }\n  .divider-bg { fill: #fff5ad; stroke: #aaaa33; stroke-width: 1; }\n  .divider-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #333; }\n  .comment-text { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #333; opacity: 0.5; }\n  .seq-number { font-family: Helvetica, Verdana, serif; font-size: 12px; font-weight: 100; fill: #6b7280; }\n  .group-outline { fill: none; stroke: #666; }\n  .group-title-bg { fill: #ffffff; stroke: none; }\n  .group-title-text { font-family: Helvetica, Verdana, serif; font-size: 13px; font-weight: 400; fill: #222; }\n`;\n\nexport function renderToSvg(code: string, options?: RenderOptions): RenderResult {\n  // 1. Parse\n  const rootContext = RootContext(code);\n  if (!rootContext) {\n    return { svg: \"<svg></svg>\", innerSvg: \"\", width: 0, height: 0, viewBox: \"0 0 0 0\", geometry: undefined };\n  }\n\n  // 2. Layout (uses canvas provider — no DOM)\n  const coordinates = new Coordinates(rootContext, WidthProviderOnCanvas);\n  const verticalCoordinates = new VerticalCoordinates(rootContext);\n\n  // 3. Extract title (resolve emoji shortcodes)\n  const titleContext = rootContext.title?.();\n  const rawTitle =\n    titleContext && typeof (titleContext as any).content === \"function\"\n      ? (titleContext as any).content()\n      : undefined;\n  const title = rawTitle ? resolveEmojiInText(rawTitle) : undefined;\n\n  // 4. Build geometry IR\n  const geometry = buildGeometry({\n    rootContext,\n    coordinates,\n    verticalCoordinates,\n    title,\n    measureText: WidthProviderOnCanvas,\n  });\n\n  // 5. Render to SVG\n  return { ...composeSvg(geometry, options), geometry };\n}\n\nfunction composeSvg(g: DiagramGeometry, options?: RenderOptions): RenderResult {\n  void options;\n  const padding = 10;\n  const headerH = FRAME_HEADER_HEIGHT;\n  // Content left offset = 1 (frame border) + 10 (seq-diagram px-2.5 padding) + frameBorderLeft\n  // This matches the HTML layout: .frame(1px border) > .sequence-diagram(px-2.5) > div(paddingLeft:frameBorderLeft) > content\n  const contentLeftMargin = 1 + padding + g.frameBorderLeft;\n  const viewWidth = g.width + contentLeftMargin + padding + g.frameBorderRight + 1;\n  const viewHeight = g.height + padding * 2 + headerH - 1; // -1 to match HTML CSS border-box visual height\n\n  const parts: string[] = [];\n\n  // Groups (behind everything, dashed outline containers)\n  for (const grp of g.groups) {\n    parts.push(renderGroup(grp));\n  }\n\n  // Lifelines (behind everything except groups)\n  for (const l of g.lifelines) {\n    parts.push(renderLifeline(l));\n  }\n\n  // Participants — split into non-creation (painted before occurrences) and\n  // creation (painted after occurrences so the participant box covers the bar)\n  const creationNames = new Set(g.creations.map(c => c.participant.name));\n  for (const p of g.participants) {\n    if (!creationNames.has(p.name)) {\n      parts.push(renderParticipant(p));\n    }\n  }\n\n  // Occurrences (activation boxes on lifelines — before messages so arrows paint on top)\n  for (const o of g.occurrences) {\n    parts.push(renderOccurrence(o));\n  }\n\n  // Creation participants (painted after occurrences so they appear on top of bars)\n  for (const p of g.participants) {\n    if (creationNames.has(p.name)) {\n      parts.push(renderParticipant(p));\n    }\n  }\n\n  // Messages\n  for (const m of g.messages) {\n    parts.push(renderMessage(m));\n  }\n\n  // Self-calls\n  for (const s of g.selfCalls) {\n    parts.push(renderSelfCall(s));\n  }\n\n  // Creation arrows (dashed line to newly created participant)\n  for (const c of g.creations) {\n    parts.push(renderCreation(c));\n  }\n\n  // Returns (dashed lines)\n  for (const r of g.returns) {\n    parts.push(renderReturn(r));\n  }\n\n  // Fragments (on top of occurrences, below dividers/comments)\n  for (const f of g.fragments) {\n    parts.push(renderFragment(f));\n  }\n\n  // Dividers (full-width lines with labels)\n  for (const d of g.dividers) {\n    parts.push(renderDivider(d));\n  }\n\n  // Comments (inline text above statements)\n  for (const c of g.comments) {\n    parts.push(renderComment(c));\n  }\n\n  // Frame: border as two nested rects (matches CSS border-box rendering)\n  const r = FRAME_BORDER_RADIUS;\n  const frameSvg = [\n    `<rect class=\"frame-border-outer\" x=\"0\" y=\"0\" width=\"${viewWidth}\" height=\"${viewHeight}\" rx=\"${r}\" fill=\"#666\"/>`,\n    `<rect class=\"frame-border-inner\" x=\"1\" y=\"1\" width=\"${viewWidth - 2}\" height=\"${viewHeight - 2}\" rx=\"${Math.max(0, r - 1)}\" fill=\"#fff\"/>`,\n  ].join(\"\\n\");\n  const contentPaddingTop = 6; // tuned to match HTML content Y offset (~34px below frame top)\n  const headerLineY = headerH + contentPaddingTop; // 34 — content group Y offset\n  const headerLineDrawY = headerLineY - 0.5; // 33.5 — half-pixel for crisp 1px line at pixel row 33, matching HTML header border-bottom\n  const headerLineSvg = `<line class=\"frame-header-line\" x1=\"1\" y1=\"${headerLineDrawY}\" x2=\"${viewWidth - 1}\" y2=\"${headerLineDrawY}\"/>`;\n  const titleSvg = g.title\n    ? `<text x=\"5\" y=\"${headerLineDrawY / 2}\" dominant-baseline=\"central\" class=\"frame-title\">${escXml(g.title)}</text>`\n    : \"\";\n\n  const viewBox = `0 0 ${viewWidth} ${viewHeight}`;\n\n  const defs = `<defs>\\n  <style>${DEFAULT_THEME_STYLES}</style>\\n</defs>`;\n  const frame = `${frameSvg}\\n${headerLineSvg}\\n${titleSvg}`;\n  const content = `<g transform=\"translate(${contentLeftMargin}, ${headerLineY})\">\\n${parts.join(\"\\n\")}\\n</g>`;\n  const innerSvg = `${defs}\\n${frame}\\n${content}`;\n\n  const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${viewWidth}\" height=\"${viewHeight}\" viewBox=\"${viewBox}\">\\n${innerSvg}\\n</svg>`;\n\n  return { svg, innerSvg, width: viewWidth, height: viewHeight, viewBox };\n}\n\nfunction escXml(s: string): string {\n  return s\n    .replace(/&/g, \"&amp;\")\n    .replace(/</g, \"&lt;\")\n    .replace(/>/g, \"&gt;\")\n    .replace(/\"/g, \"&quot;\");\n}\n","import parentLogger from \"./logger/logger\";\nimport {\n  codeAtom,\n  enableDividerInsertionAtom,\n  enableMessageInsertionAtom,\n  enableMultiThemeAtom,\n  enableParticipantInsertionAtom,\n  enableParticipantStyleEditingAtom,\n  enableScopedThemingAtom,\n  lifelineReadyAtom,\n  modeAtom,\n  onContentChangeAtom,\n  onEventEmitAtom,\n  onThemeChangeAtom,\n  renderingReadyAtom,\n  RenderMode,\n  stickyOffsetAtom,\n  themeAtom,\n  verticalModeAtom,\n} from \"./store/Store\";\nimport { DiagramFrame } from \"./components/DiagramFrame/DiagramFrame\";\nimport { ErrorBoundary } from \"./components/ErrorBoundary\";\nimport { VERSION } from \"./version.ts\";\nimport * as htmlToImage from \"html-to-image\";\nimport Parser from \"./parser/index.js\";\n\nimport \"./assets/tailwind.css\";\nimport \"./assets/tailwind-preflight.less\";\nimport \"./components/Cosmetic.scss\";\nimport \"./components/Cosmetic-blue.scss\";\nimport \"./components/Cosmetic-black-white.scss\";\nimport \"./components/Cosmetic-star-uml.scss\";\nimport \"./components/theme-blue-river.scss\";\nimport \"./themes/theme-dark.css\";\n\nimport { getStartTime, calculateCostTime } from \"./utils/CostTime\";\nimport { clearCache } from \"./utils/RenderingCache\";\nimport { createRoot } from \"react-dom/client\";\nimport { StrictMode } from \"react\";\nimport { createStore, Provider } from \"jotai\";\nimport { SeqDiagram } from \"./components/DiagramFrame/SeqDiagram/SeqDiagram.tsx\";\nexport { renderToSvg } from \"./svg/renderToSvg\";\nexport type { RenderResult, RenderOptions } from \"./svg/renderToSvg\";\nconst logger = parentLogger.child({ name: \"core\" });\n\ninterface Config {\n  theme?: string;\n  enableScopedTheming?: boolean;\n  onThemeChange?: (data: { theme: string; scoped?: boolean }) => void;\n  enableMultiTheme?: boolean;\n  stickyOffset?: number | false;\n  onContentChange?: (code: string) => void;\n  onEventEmit?: (name: string, data: unknown) => void;\n  mode?: RenderMode;\n  // Editing feature flags. Default off; opt in per surface.\n  // Message insertion is currently broken for nested messages, so the flag\n  // exists to ship participant insertion independently.\n  enableParticipantInsertion?: boolean;\n  enableMessageInsertion?: boolean;\n  enableDividerInsertion?: boolean;\n  enableParticipantStyleEditing?: boolean;\n}\n\nexport interface ParseResult {\n  pass: boolean;\n  errorDetails: ErrorDetail[];\n}\nexport interface  ErrorDetail {\n  line: number;\n  column: number;\n  msg: string;\n}\n\n\ninterface IZenUml {\n  get code(): string | undefined;\n  get theme(): string | undefined;\n  parse(text: string): Promise<ParseResult>;\n  // Resolve after rendering is finished.\n  render(\n    code: string | undefined,\n    config: Config | undefined,\n  ): Promise<IZenUml>;\n}\n\nexport default class ZenUml implements IZenUml {\n  static readonly version = VERSION;\n  // UMD Compatibility Layer - Support both window.zenuml and window.zenuml.default\n  // The problem was introduced at commit 4c46879f when we remove the named export VueSequence\n  static readonly default = ZenUml; // Self-reference for UMD compatibility\n\n  private readonly el: HTMLElement;\n  private _code: string | undefined;\n  private _theme: string | undefined;\n  private readonly store: ReturnType<typeof createStore>;\n  private _currentTimeout: NodeJS.Timeout | undefined;\n  private _lastRenderingCostMilliseconds = 0;\n  private initialRender = true;\n  constructor(el: HTMLElement | string, naked: boolean = false) {\n    this.el = typeof el === \"string\" ? document.querySelector(el)! : el;\n    this.store = createStore();\n\n    this.store.sub(themeAtom, () => {\n      this.store.get(onThemeChangeAtom)({\n        theme: this.store.get(themeAtom),\n        scoped: this.store.get(enableScopedThemingAtom),\n      });\n    });\n\n    createRoot(this.el).render(\n      <StrictMode>\n        <Provider store={this.store}>\n          {/* IMPORTANT: The .zenuml class here works with Tailwind's important: \".zenuml\" configuration.\n              With this setup, Tailwind generates selectors like \".zenuml .bg-skin-canvas\" instead of\n              just \".bg-skin-canvas\". This means all Tailwind utilities used in child components\n              (like DiagramFrame) will only work when they are descendants of an element with the\n              .zenuml class. This provides scoped styling for the ZenUML library. */}\n          <div className=\"zenuml\">\n            <ErrorBoundary>\n              {naked ? <SeqDiagram /> : <DiagramFrame />}\n            </ErrorBoundary>\n          </div>\n        </Provider>\n      </StrictMode>,\n    );\n    this.addPortalRootElement();\n  }\n\n  // DON'T REMOVE: headlessui portal root hack\n  // ref: https://github.com/tailwindlabs/headlessui/discussions/666#discussioncomment-4966117\n  private addPortalRootElement(): void {\n    const portalRootElement = document.createElement(\"div\");\n    portalRootElement.id = \"headlessui-portal-root\";\n    portalRootElement.className = \"zenuml\";\n    portalRootElement.append(document.createElement(\"div\"));\n    document.body.append(portalRootElement);\n  }\n\n  setVerticalMode(mode: \"html\" | \"legacy\") {\n    this.store.set(verticalModeAtom, mode);\n  }\n\n  async render(\n    code: string | undefined,\n    config: Config | undefined,\n  ): Promise<IZenUml> {\n    if (this._currentTimeout) {\n      logger.debug(\"rendering clearTimeout\");\n      clearTimeout(this._currentTimeout);\n    }\n    logger.debug(\"rendering\", code, config);\n    this._code = code === undefined ? this._code : code;\n    this._theme = config?.theme || this._theme;\n    this.store.set(stickyOffsetAtom, config?.stickyOffset ?? 0);\n    this.store.set(themeAtom, this._theme || \"default\");\n    this.store.set(\n      enableScopedThemingAtom,\n      config?.enableScopedTheming || false,\n    );\n    this.store.set(modeAtom, config?.mode || RenderMode.Dynamic);\n\n    // this.initialRender is used to avoid the first rendering is debounced by setTimeout.\n    // The first rendering should be executed immediately. It fixes the issue that causes the blank screen on mermaid live editor.\n    if (this.initialRender) {\n      this.initialRender = false;\n      await this.doRender(config);\n    } else {\n      this._currentTimeout = setTimeout(\n        async () => await this.doRender(config),\n        this.calculateDebounceMilliseconds(),\n      );\n    }\n\n    return this;\n  }\n\n  async doRender(config: Config | undefined) {\n    logger.debug(\"rendering start\");\n    const start = getStartTime();\n    clearCache();\n    this.store.set(onContentChangeAtom, config?.onContentChange || (() => {}));\n    this.store.set(onThemeChangeAtom, config?.onThemeChange || (() => {}));\n    this.store.set(onEventEmitAtom, config?.onEventEmit || (() => {}));\n    if (config?.enableMultiTheme !== undefined) {\n      this.store.set(enableMultiThemeAtom, config?.enableMultiTheme);\n    }\n    if (config?.enableParticipantInsertion !== undefined) {\n      this.store.set(\n        enableParticipantInsertionAtom,\n        config.enableParticipantInsertion,\n      );\n    }\n    if (config?.enableMessageInsertion !== undefined) {\n      this.store.set(enableMessageInsertionAtom, config.enableMessageInsertion);\n    }\n    if (config?.enableDividerInsertion !== undefined) {\n      this.store.set(enableDividerInsertionAtom, config.enableDividerInsertion);\n    }\n    if (config?.enableParticipantStyleEditing !== undefined) {\n      this.store.set(\n        enableParticipantStyleEditingAtom,\n        config.enableParticipantStyleEditing,\n      );\n    }\n    if (this._code === this.store.get(codeAtom)) {\n      return true;\n    } else {\n      await new Promise((resolve) => {\n        this.store.set(lifelineReadyAtom, []);\n        this.store.sub(renderingReadyAtom, () => {\n          if (this.store.get(renderingReadyAtom)) {\n            resolve(true);\n          }\n        });\n        this.store.set(codeAtom, this._code || \"\");\n      });\n    }\n    setTimeout(() => {\n      this._lastRenderingCostMilliseconds = calculateCostTime(\n        \"rendering end\",\n        start,\n      );\n    }, 0);\n  }\n\n  calculateDebounceMilliseconds(): number {\n    let debounce = this._lastRenderingCostMilliseconds;\n    if (debounce > 2000) debounce = 2000;\n    logger.debug(\"rendering debounce: \" + debounce + \"ms\");\n    return debounce;\n  }\n\n  get code(): string | undefined {\n    return this._code;\n  }\n\n  get theme(): string | undefined {\n    return this._theme;\n  }\n\n  parse(codeOrText: string): Promise<ParseResult> {\n    return new Promise((resolve) => {\n      try {\n        // Clear any previous errors\n        Parser.ErrorDetails.length = 0;\n        const result = Parser.RootContext(codeOrText);\n        logger.debug(\"errors\", Parser.ErrorDetails);\n        const errors = [...Parser.ErrorDetails];\n        // Clear errors after reading\n        Parser.ErrorDetails.length = 0;\n        if (errors.length > 0 || result === null) {\n          // Return ParseResult indicating failure with structured error info\n          const parseResult: ParseResult = {\n            pass: false,\n            errorDetails: errors,\n          };\n          resolve(parseResult);\n          return;\n        }\n        const parseResult: ParseResult = {\n          pass: true,\n          errorDetails: [],\n        };\n        resolve(parseResult);\n      } catch {\n        const parseResult: ParseResult = {\n          pass: false,\n          errorDetails: [],\n        };\n        resolve(parseResult);\n      }\n    });\n  }\n\n  async getPng(): Promise<string> {\n    return htmlToImage.toPng(this.el, {\n      backgroundColor: \"white\",\n      filter: (node) => {\n        return !node?.classList?.contains(\"hide-export\");\n      },\n    });\n  }\n\n  async getSvg(): Promise<string> {\n    return htmlToImage.toSvg(this.el, {\n      filter: (node) => {\n        return !node?.classList?.contains(\"hide-export\");\n      },\n    });\n  }\n}\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","jsxRuntimeModule","require$$0","tryStringify","o","quickFormatUnescaped","format","f","args","opts","ss","offset","len","objects","index","argLen","str","a","lastPos","flen","i","browserModule","pino","_console","pfGlobalThisOrFallback","stdSerializers","mock","passthrough","asErrValue","levelToValue","level","logger","baseLogFunctionSymbol","hierarchySymbol","logFallbackMap","appendChildLogger","parentLogger","childLogger","newEntry","setupBaseLogFunctions","levels","proto","logFunctions","noop","shouldSerialize","serialize","serializers","k","transmit","stdErrSerialize","customLevels","getLevelVal","getLevel","setLevel","setOpts","getTimeFunction","getLevels","child","createLogEventShape","set","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","parent","newLogger","values","labels","invertObject","obj","inverted","nullTime","epochTime","unixTime","isoTime","getBindingChain","hierarchy","self","rootLogger","createWrap","prependBindingsInArguments","logFunc","write","ts","asObject","transmitLevel","transmitValue","methodValue","formatters","levelFormatter","logObjectFormatter","argsCloned","msg","logObject","lvl","send","methodLevel","val","arg","err","defd","LEVELS","PINO_LEVEL","isEnabled","target","bind","consoleFn","bind2","prefix","prettify","childFn","hasInitialValue","atom","isActuallyWritableAtom","isAtomStateInitialized","atomState","returnAtomValue","__vite_import_meta_env__","promiseStateMap","isPendingPromise","value","_a","isPromiseLike","abortPromise","promise","promiseState","fn","registerAbortHandler","abortHandler","settle","p","addPendingPromiseToDependency","dependencyAtomState","cleanup","getMountedOrPendingDependents","mountedMap","dependents","atomWithPendingPromise","BUILDING_BLOCK_atomRead","_store","params","BUILDING_BLOCK_atomWrite","BUILDING_BLOCK_atomOnInit","store","BUILDING_BLOCK_atomOnMount","setAtom","BUILDING_BLOCK_ensureAtomState","buildingBlocks","getInternalBuildingBlocks","atomStateMap","storeHooks","atomOnInit","BUILDING_BLOCK_flushCallbacks","changedAtoms","mountCallbacks","unmountCallbacks","recomputeInvalidatedAtoms","errors","call","e","callbacks","add","BUILDING_BLOCK_recomputeInvalidatedAtoms","invalidatedAtoms","ensureAtomState","readAtomState","mountDependencies","topSortedReversed","visiting","visited","stack","aState","d","hasChangedDeps","dep","storeMutationSet","BUILDING_BLOCK_readAtomState","_b","atomRead","flushCallbacks","writeAtomState","setAtomStateValueOrPromise","n","isSync","mountDependenciesIfAsync","getter","_a2","aState2","controller","setSelf","options","prevEpochNumber","valueOrPromise","error","BUILDING_BLOCK_invalidateDependents","dState","BUILDING_BLOCK_writeAtomState","atomWrite","invalidateDependents","setter","args2","v","BUILDING_BLOCK_mountDependencies","mountAtom","unmountAtom","mounted","aMounted","BUILDING_BLOCK_mountAtom","atomOnMount","processOnMount","onUnmount","BUILDING_BLOCK_unmountAtom","isDependent","BUILDING_BLOCK_setAtomStateValueOrPromise","hasPrevValue","prevValue","BUILDING_BLOCK_storeGet","BUILDING_BLOCK_storeSet","BUILDING_BLOCK_storeSub","listener","listeners","buildingBlockMap","buildStore","buildArgs","storeGet","storeSet","storeSub","keyCount","read","defaultRead","defaultWrite","get","createStore","INTERNAL_buildStoreRev2","defaultStore","getDefaultStore","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","MAYBE_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","ReactNoopUpdateQueue","assign","emptyObject","Component","props","context","updater","partialState","callback","ComponentDummy","PureComponent","pureComponentPrototype","isArrayImpl","ReactSharedInternals","hasOwnProperty","ReactElement","refProp","cloneAndReplaceKey","oldElement","newKey","isValidElement","object","escape","escaperLookup","match","userProvidedKeyEscapeRegex","getElementKey","element","resolveThenable","thenable","fulfilledValue","mapIntoArray","children","array","escapedPrefix","nameSoFar","invokeCallback","c","nextNamePrefix","mapChildren","func","result","count","lazyInitializer","payload","ctor","moduleObject","reportGlobalError","event","Children","forEachFunc","forEachContext","react_production","size","childArray","defaultValue","childrenLength","render","compare","scope","prevTransition","currentTransition","returnValue","onStartTransitionFinish","usable","action","initialState","permalink","deps","Context","initialValue","create","ref","reducer","initialArg","init","subscribe","getSnapshot","getServerSnapshot","reactModule","StoreContext","createContext","useStore","useContext","Provider","storeRef","useRef","createElement","x","attachPromiseStatus","use","React","continuablePromiseMap","createContinuablePromise","getValue","continuablePromise","resolve","reject","curr","onFulfilled","me","onRejected","onAbort","nextValue","INTERNAL_registerAbortHandler","useAtomValue","delay","promiseStatus","valueFromReducer","storeFromReducer","atomFromReducer","rerender","useReducer","prev","useEffect","unsub","value2","useDebugValue","useSetAtom","useCallback","useAtom","atomWithLocalStorage","baseAtom","item","update","atomWithFunctionValue","_","h1b","k1","remainder","bytes","h1","c1","c2","defineProperty","$defineProperty","codePointAt","position","string","first","second","stringFromCharCode","floor","fromCodePoint","codeUnits","highSurrogate","lowSurrogate","length","codePoint","Token","text","equalArrays","b","HashCode","hash","standardHashCodeFunction","standardEqualsFunction","valueToString","arrayToString","HASH_KEY_PREFIX","HashSet","hashFunction","equalsFunction","accum","SemanticContext","parser","outerContext","AND","OR","operands","precedencePredicates","filterPrecedencePredicates","reduced","other","differs","evaluated","s","checkParams","isCfg","ATNConfig","Interval","start","stop","IntervalSet","l","h","toAdd","pos","existing","current","next","toRemove","replace","literalNames","symbolicNames","elemsAreChar","names","j","token","interval","acc","ATNState","trans","RuleStopState","Transition","RuleTransition","ruleStart","ruleIndex","precedence","followState","symbol","minVocabSymbol","maxVocabSymbol","SetTransition","NotSetTransition","WildcardTransition","AbstractPredicateTransition","Tree","SyntaxTree","ParseTree","RuleNode","TerminalNode","ErrorNode","escapeWhitespace","escapeSpaces","Trees","tree","ruleNames","recog","res","t","altNumber","list","ancestors","ttype","findTokens","nodes","RuleContext","invokingState","visitor","ri","ruleName","PredictionContext","cachedHashCode","ArrayPredictionContext","parents","returnStates","hashCode","SingletonPredictionContext","returnState","up","EmptyPredictionContext","HashMap","hashKey","entries","entry","oldValue","predictionContextFromRuleContext","atn","transition","getCachedPredictionContext","contextCache","changed","updated","merge","rootIsWildcard","mergeCache","mergeSingletons","mergeArrays","previous","mergedReturnStates","mergedParents","a_parent","b_parent","a_","M","combineCommonParents","uniqueParents","q","rootMerge","mergeRoot","spc","singleParent","payloads","apc","BitSet","alt","LL1Analyzer","look","lookBusy","stopState","ctx","r","seeThruPreds","lookContext","calledRuleStack","addEOF","removed","newContext","ATN","grammarType","maxTokenType","state","decision","stateNumber","following","expected","rt","ATNType","BasicState","DecisionState","BlockStartState","BlockEndState","LoopEndState","RuleStartState","TokensStartState","PlusLoopbackState","StarLoopbackState","StarLoopEntryState","PlusBlockStartState","StarBlockStartState","BasicBlockStartState","AtomTransition","label","RangeTransition","ActionTransition","actionIndex","isCtxDependent","EpsilonTransition","outermostPrecedenceReturn","Predicate","predIndex","localctx","PredicateTransition","PrecedencePredicate","PrecedencePredicateTransition","ATNDeserializationOptions","copyFrom","LexerActionType","LexerAction","LexerSkipAction","lexer","LexerChannelAction","channel","LexerCustomAction","LexerMoreAction","LexerTypeAction","LexerPushModeAction","mode","LexerPopModeAction","LexerModeAction","SERIALIZED_VERSION","initArray","tmp","ATNDeserializer","data","legacy","sets","adjust","temp","version","pair","loopBackStateNumbers","endStateNumbers","nstates","stype","loopBackStateNumber","endStateNumber","numNonGreedyStates","numPrecedenceStates","nrules","tokenType","nmodes","reader","m","iset","i1","i2","nedges","src","trg","arg1","arg2","arg3","ndecisions","decState","actionType","data1","data2","idx","bypassStart","bypassStop","excludeTransition","endState","ruleToStartState","matchState","maybeLoopEndState","condition","message","low","high","sf","af","ErrorListener","recognizer","offendingSymbol","line","column","dfa","startIndex","stopIndex","exact","ambigAlts","configs","conflictingAlts","prediction","ConsoleErrorListener","ProxyErrorListener","delegates","Recognizer","toolVersion","runtimeVersion","tokenNames","tokenName","CommonToken","source","txt","input","TokenFactory","CommonTokenFactory","copyText","RecognitionException","LexerNoViableAltException","deadEndConfigs","Lexer","tokenStartMarker","continueOuter","cpos","lpos","eof","tokens","re","hashATNConfig","equalATNConfigs","ATNConfigSet","fullCtx","merged","states","preds","interpreter","coll","readOnly","DFAState","alts","ATNSimulator","sharedContextCache","OrderedATNConfigSet","LexerATNConfig","lexerActionExecutor","LexerIndexedCustomAction","LexerActionExecutor","lexerActions","updatedLexerActions","requiresSeek","lexerAction","numActions","resetSimState","sim","SimState","LexerATNSimulator","decisionToDFA","simulator","mark","startState","old_mode","s0_closure","suppressEdge","predict","ds0","reach","prevAccept","closure","skipAlt","cfg","currentAltReachedAcceptState","treatEofAsEpsilon","charPos","initialContext","speculative","savedcolumn","savedLine","marker","settings","dfaState","from_","tk","to","cfgs","proposed","firstConfigWithRuleStopState","newState","tt","PredPrediction","pred","AltDict","PredictionMode","dup","altsets","all","configToAlts","minAlt","NoViableAltException","startToken","offendingToken","DoubleDict","defaultMapCtor","ParserATNSimulator","s0","previousD","D","conflictIndex","edges","predictedAlt","altSubSets","decisionState","nalts","altsToCollectPredsFrom","altToPred","foundExactAmbig","intermediate","skippedStopStates","closureBusy","lookToEndOfRule","endOfRuleState","statesFromAlt1","configSet","updatedContext","nPredAlts","pairs","containsPredicate","semValidConfigs","semInvalidConfigs","succeeded","failed","predPredictions","complete","predictions","predicateEvaluationResult","collectPredicates","depth","parms","continueCollecting","newDepth","numCtxs","blockEndStateNum","blockEndState","returnStateNumber","returnStateTarget","inContext","pt","currentPosition","predSucceeds","newSemCtx","nvae","decs","atn$2","DFASerializer","buf","baseStateStr","LexerDFASerializer","DFA","atnStartState","precedenceState","precedenceDfa","ParseTreeListener","node","ParseTreeVisitor","ParseTreeWalker","InputMismatchException","FailedPredicateException","predicate","formatMessage","DiagnosticErrorListener","exactOnly","reportedAlts","ParseCancellationException","ErrorStrategy","DefaultErrorStrategy","followSet","la","nextTokens","expecting","whatFollowsLoopIterationOrRule","matchedSymbol","currentSymbolType","nextTokenType","currentSymbol","expectedTokenType","tokenText","lookback","recoverSet","follow","BailErrorStrategy","InputStream","decodeToUnicodeCodePoints","codeUnit","_index","fs","CharStreams","blob","encoding","onLoad","onError","is","buffer","path","FileStream","fileName","TokenStream","BufferedTokenStream","tokenSource","skipEofCheck","types","subset","tokenIndex","nextOnChannel","prevOnChannel","left","right","hidden","CommonTokenStream","TraceListener","factory","serializedAtn","deserializationOptions","hasListener","altNum","parentCtx","retCtx","parseListeners","seenOne","trace","Parser","PredictionContextCache","TerminalNodeImpl","ErrorNodeImpl","invokingStateNumber","badToken","ctxType","contexts","ParserRuleContext","Utils","antlr4","serializedATN","decisionsToDFA","ds","sequenceLexer","currentPos","SPACE","TAB","EOF","DOT","EQUALS","OPEN_PAREN","sequenceParserListener","sequenceParser","ProgContext","_la","la_","TitleContext","HeadContext","_alt","GroupContext","StarterExpContext","StarterContext","ParticipantContext","StereotypeContext","LabelContext","ParticipantTypeContext","NameContext","WidthContext","EmojiContext","BlockContext","RetContext","ReturnAsyncMessageContext","DividerContext","DividerNoteContext","StatContext","ParContext","OptContext","CriticalContext","SectionContext","CreationContext","RefContext","CreationBodyContext","MessageContext","MessageBodyContext","FromToContext","FuncContext","FromContext","ToContext","SignatureContext","InvocationContext","AssignmentContext","AsyncMessageContext","ContentContext","ConstructContext","TypeContext","AssigneeContext","MethodNameContext","ParametersContext","ParameterContext","NamedParameterContext","DeclarationContext","TcfContext","TryBlockContext","CatchBlockContext","FinallyBlockContext","AltContext","IfBlockContext","ElseIfBlockContext","ElseBlockContext","BraceBlockContext","LoopContext","_p","_parentctx","_parentState","ExprContext","_prevctx","_startState","AtomExprContext","UnaryMinusExprContext","NotExprContext","FuncExprContext","CreationExprContext","ParenthesizedExprContext","AssignmentExprContext","MultiplicationExprContext","AdditiveExprContext","RelationalExprContext","EqualityExprContext","AndExprContext","OrExprContext","PlusExprContext","AtomContext","NumberAtomContext","NumberUnitAtomContext","MoneyAtomContext","BooleanAtomContext","IdAtomContext","DigitLeadingNameAtomContext","StringAtomContext","NilAtomContext","ParExprContext","ConditionContext","InExprContext","TextExprContext","ProgContext$3","TitleContext$1","GroupContext$1","ParticipantContext$1","RetContext$3","ReturnAsyncMessageContext$2","DividerContext$1","StatContext$3","CreationContext$8","RefContext$1","MessageContext$8","AsyncMessageContext$3","ParametersContext$1","IfBlockContext$1","LoopContext$1","blankParticipant","Participant$2","name","stereotype","width","groupId","explicit","isStarter","color","comment","assignee","emoji","Participants$1","participant","Participant","assigneePosition","participants","isBlind","ToCollector","onParticipant","labelCtx","nameCtx","end","labelNameCtx","onTo","participantInstance","returnFrom","returnTo","walker","Participants","ChildFragmentDetector","cursor","max","seqParser","isCurrent","RetMessageContext","toCtx","getOwnerFromAncestor","asyncToCtx","asyncTo","blockParent","receiver","formattedText","formatParameter","param","namedParam","expr","decl","formatParameters","Assignment","typePosition","extractAssignmentFromContext","assignmentContext","assigneeCtx","typeCtx","fromCtx","formatText","getLineHead","code","getPrevLineHead","lineHead","getPrevLine","prevLineHead","errorDetails","SeqErrorListener","rootContext","chars","hiddenTokensToLeft","RootContext","Parser$1","childFragmentDetector","TextType","dic","persistDic","getCache","cacheValue","setCache","persist","clearCache","FONT_FAMILY","FONT_SIZE_PARTICIPANT","FONT_SIZE_FRAGMENT","getFontSpec","canvasCtx","getCanvasContext","WidthProviderOnCanvas","measured","cacheKey","EMOJI_PATTERN","measureWithSvg","fontSize","svg","textEl","measureTextWithFont","hasEmoji","svgWidth","px","measureSvgFragmentLabelWidth","measureSvgParticipantLabelWidth","WidthProviderOnBrowser","hiddenDiv","newDiv","scrollWidth","FRAGMENT_PADDING_X","FRAGMENT_MIN_WIDTH","MARGIN","ARROW_HEAD_WIDTH","OCCURRENCE_WIDTH","OCCURRENCE_BAR_SIDE_WIDTH","MIN_PARTICIPANT_WIDTH","PARTICIPANT_HEIGHT","PARTICIPANT_ICON_WIDTH","LIFELINE_WIDTH","PARTICIPANT_TOP_SPACE_FOR_GROUP","OCCURRENCE_EMPTY_HEIGHT","OwnableMessageType","MessageCollector","from","owner","signature","assignment","AllMessages","_STARTER_","Participant$1","OrderedParticipants","participantEntries","allMessages","emptyContext","someMessagesMissFrom","previousName","Dual","dualPlus","y","epsilon","dualLessThan","DeltaTracker","lessThan","graphFromMatrix","matrix","graph","longestPathTable","gaps","tracker","maximum","table","argument","edge","freezeCriticalGaps","advanceGaps","delta","positionsFromTable","positions","find_optimal","Coordinates","widthProvider","participantName","cachedPosition","pIndex","lastParticipant","calculatedWidth","halfSelf","messageWidth","ownableMessages","participantModels","indexFrom","indexTo","leftIndex","rightIndex","cachedWidth","iconWidth","emojiWidth","labelWidth","participantWidth","createStatementKey","statement","NodeVM","runtime","blockContext","origin","startTop","parentKind","BlockVM","getLocalParticipantNames","getDefaults","defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","html","encode","unescapeTest","unescape","caret","edit","regex","opt","nonWordAndColonTest","originIndependentUrl","cleanUrl","sanitize","base","href","prot","resolveUrl","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","splitCells","tableRow","row","escaped","cells","invert","suffLen","currChar","findClosingBracket","checkSanitizeDeprecation","repeatString","pattern","outputLink","cap","link","raw","title","indentCodeCompensation","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","Tokenizer","trimmed","top","istask","ischecked","indent","blankLine","endsWithBlankLine","nextLine","rawLine","itemContents","endEarly","bull","isordered","itemRegex","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","spacers","hasMultipleLineBreaks","tag","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","nextChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","hasNonSpaceChars","hasSpaceCharsOnBothEnds","mangle","prevCapZero","smartypants","block","inline","out","rules","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","Renderer","infostring","lang","quote","slugger","id","body","ordered","startatt","checked","header","content","flags","TextRenderer","Slugger","originalSlug","isDryRun","slug","occurenceAccumulator","l2","l3","cell","loose","itemBody","task","checkbox","ret","renderer","Hooks","markdown","silent","async","parseMarkdown","origOpt","marked","throwError","highlight","done","pending","extensions","pack","ext","prevRenderer","prop","tokenizer","prevTokenizer","hooks","prevHook","walkTokens","childTokens","cssColors","fontStyles","fontWeights","textDecorations","getStyle","styles","textStyle","classNames","BUILTIN_EMOJIS","knownEmojis","isEmojiCandidate","resolveBracketContent","colonMatch","resolveEmojiInText","resolution","getEmojiUnicode","shortcode","cache","parseLine","lastMatchIndex","CommentClass","lines","lastLine","commentOnlyStyles","messageOnlyStyles","commonStyles","resolved","emojiSet","stylesForGetStyle","commentStyle","commentClassNames","messageStyle","messageClassNames","commonStyle","commonClassNames","baseText","emojiPrefix","defaultTokensOptions","MarkdownMeasurer","_text","commentObj","Comment","StatementVM","fallbackOrigin","local","minHeight","contentInset","blockStart","height","statCtx","statements","altContext","elseIfBlocks","hasElse","AsyncMessageStatementVM","asyncMessage","asyncContext","commentHeight","CREATION_MESSAGE_HEIGHT","CreationStatementVM","creation","originParticipant","fragmentOrigin","DividerStatementVM","EmptyStatementVM","FragmentVM","headerHeight","FragmentAltVM","leftParticipant","ifBlock","elseBlock","FragmentSingleBlockVM","fragment","FragmentCriticalVM","FragmentLoopVM","FragmentOptVM","FragmentParVM","FragmentRefVM","FragmentSectionVM","FragmentTryCatchVM","tcf","tryBlock","catchBlock","finallyBlock","ReturnStatementVM","isSelf","siblings","isLast","isInsideOccurrence","SyncMessageStatementVM","createStatementVM","loop","par","section","critical","metrics","coordinate","SPACING_UNIT","tw","DEFAULT_LAYOUT_METRICS","VerticalCoordinates","rootBlock","messages","paddingTop","rootBlockVM","resolveVerticalMode","resolveWidthProvider","RenderMode","codeAtom","rootContextAtom","titleContext","participantsAtom","coordinatesAtom","verticalModeAtom","verticalCoordinatesAtom","themeAtom","enableScopedThemingAtom","themeIconDotAtom","enableMultiThemeAtom","scaleAtom","selectedAtom","onSelectAtom","selected","cursorAtom","showTipsAtom","modeAtom","enableParticipantInsertionAtom","enableMessageInsertionAtom","enableDividerInsertionAtom","enableParticipantStyleEditingAtom","enableNumberingAtom","stickyOffsetAtom","diagramElementAtom","onElementClickAtom","codeRange","onMessageClickAtom","selectedMessageAtom","onContentChangeAtom","pendingEditableRangeAtom","onThemeChangeAtom","onEventEmitAtom","createMessageDragAtom","messageReorderDragAtom","messageReorderPendingAtom","messageReorderDropAtom","lifelineReadyAtom","renderingReadyAtom","lifeLineReady","url","baseUrl","doc","uuid","counter","random","toArray","arrayLike","arr","styleProps","getStyleProperties","styleProperty","getNodeWidth","leftBorder","rightBorder","getNodeHeight","topBorder","bottomBorder","getImageSize","targetNode","getPixelRatio","ratio","FINAL_PROCESS","canvasDimensionLimit","checkCanvasDimensions","canvas","canvasToBlob","binaryString","binaryArray","createImage","img","svgToDataURL","nodeToDataURL","xmlns","foreignObject","isInstanceOfElement","instance","nodePrototype","formatCSSText","style","formatCSSProperties","priority","getPseudoElementStyle","className","pseudo","selector","cssText","clonePseudoElement","nativeNode","clonedNode","styleElement","clonePseudoElements","WOFF","JPEG","mimes","getExtension","getMimeType","extension","getContentFromDataUrl","dataURL","isDataUrl","makeDataUrl","mimeType","fetchAsDataURL","process","getCacheKey","contentType","includeQueryParams","resourceToDataURL","resourceUrl","cloneCanvasElement","cloneVideoElement","video","poster","cloneIFrameElement","iframe","cloneNode","cloneSingleNode","isSVGElement","isSlotElement","cloneChildren","deferred","clonedChild","cloneCSSStyle","targetStyle","sourceStyle","cloneInputValue","cloneSelectValue","clonedSelect","selectedOption","decorate","ensureSVGSymbols","clone","uses","processedDefs","exist","definition","ns","defs","isRoot","URL_REGEX","URL_WITH_FORMAT_REGEX","FONT_SRC_REGEX","toRegex","parseURLs","urls","quotation","embed","resourceURL","baseURL","getContentFromUrl","resolvedURL","filterPreferredFontFormat","preferredFontFormat","shouldEmbed","embedResources","filteredCSSText","css","embedProp","propValue","cssString","embedBackground","embedImageNode","isImageElement","attributes","image","embedChildren","deferreds","embedImages","applyStyle","manual","cssFetchCache","fetchCSS","embedFonts","regexUrl","loadFonts","loc","parseCSS","commentsRegex","keyframesRegex","matches","importRegex","combinedCSSRegex","unifiedRegex","getCSSRules","styleSheets","sheet","importIndex","metadata","rule","getWebFontRules","cssRules","parseWebFontRules","normalizeFontFamily","font","getUsedFonts","fonts","traverse","getWebFontCSS","usedFonts","embedWebFonts","styleNode","sytleContent","toSvg","toCanvas","canvasWidth","canvasHeight","toPng","toJpeg","toBlob","clsx","concatArrays","array1","array2","combinedArray","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getGroupIdForArbitraryProperty","classParts","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","classRest","validatorsLength","validatorObj","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","parts","part","createLruCache","maxCacheSize","cacheSize","previousCache","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","SvgClose","React.createElement","SvgCollapseExpanded","SvgCollapseUnexpanded","SvgDebug","SvgNonSelectedCycle","SvgNumbering","SvgPrivacy","SvgSelectedCycle","SvgTheme","SvgTip","SvgZoomIn","SvgZoomOut","SvgAltFragment","SvgCriticalFragment","SvgLoopFragment","SvgOptFragment","SvgRefFragment","SvgParFragment","SvgSectionFragment","SvgTryCatchFragment","icons","IconClose","IconCollapseExpanded","IconCollapseUnexpanded","IconDebug","IconNonSelectedCycle","IconNumbering","IconPrivacy","IconSelectedCycle","IconTheme","IconTip","IconZoomIn","IconZoomOut","IconAltFragment","IconCriticalFragment","IconLoopFragment","IconOptFragment","IconRefFragment","IconParFragment","IconSectionFragment","IconTryCatchFragment","Icon","jsx","Debug","debugEnabled","setDebugEnabled","useState","handleKeyPress","jsxs","Privacy","EditableSpan","isEditable","onSave","autoEditToken","selectAllOnEdit","editing","setEditing","isHovered","setIsHovered","originalTextRef","spanRef","cancelRef","pendingFocusRef","applyFocus","clickPoint","selection","range","useLayoutEffect","startEditing","handleClick","handleMouseEnter","handleMouseLeave","saveText","newText","handleBlur","handleKeydown","handleKeyup","getEditableClasses","classes","DiagramTitle","setCode","onContentChange","PLACEHOLDER","rawTitle","displayTitle","hasTitle","handleSave","contentStart","contentEnd","newCode","coreIcons","actor","Robustness_Diagram_Boundary","Robustness_Diagram_Control","database","Robustness_Diagram_Entity","cloudChunk","cloudLoaders","AsyncIcon","iconKey","iconContent","setIconContent","lazyIcons","module","IconList","standardTypes","awsServices","azureServices","googleServices","code1","code2","code3","code4","TipsDialog","setShowTips","closeTipsDialog","$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$HgANd$react","$8ae05eaa5c114e9c$var$_React_useInsertionEffect","$8ae05eaa5c114e9c$var$useEarlyEffect","$lmaYr$react","$8ae05eaa5c114e9c$export$7f54fc3180508a52","$lmaYr$useRef","$lmaYr$useCallback","$431fbd86ca7dc216$export$b204af158042fbac","el","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$431fbd86ca7dc216$var$isNode","$431fbd86ca7dc216$export$af51f0f06c0f328a","$f4e2df6bd15f8569$var$_shadowDOM","$f4e2df6bd15f8569$export$98658e8c59125e6a","$d4ee10de306f2510$export$4282f70798064fe0","otherNode","$lcSu5$shadowDOM","currentNode","$d4ee10de306f2510$export$cd4e5573fbe2b576","_activeElement_shadowRoot","activeElement","$d4ee10de306f2510$export$e58f029f0fbfdb29","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","brands","brand","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$a11b0059900ceec8","$03deb23ff14920c4$export$4eaf04e54aa8eed6","globalListeners","$lPAwt$useRef","addGlobalListener","$lPAwt$useCallback","eventTarget","removeGlobalListener","_globalListeners_current_get","removeAllGlobalListeners","$lPAwt$useEffect","$6a7db85432448f7f$export$60278871457622de","formatProdErrorMessage","Internals","createPortal$1","containerInfo","implementation","getCrossOriginStringAs","as","reactDom_production","container","previousTransition","previousUpdatePriority","crossOrigin","integrity","fetchPriority","form","checkDCE","reactDomModule","$8a9cb279dc87e130$export$525bc4921d56d4a","nativeEvent","$8a9cb279dc87e130$export$c2b7abe5d61ec696","$8a9cb279dc87e130$export$715c682d09d639cc","onBlur","stateRef","$6dfIe$useRef","$6dfIe$useLayoutEffect","dispatchBlur","$6dfIe$useEffectEvent","$6dfIe$useCallback","onBlurHandler","_stateRef_current_observer","relatedTargetEl","$8a9cb279dc87e130$export$fda7da73ab5d4c48","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","handler","$507fabe10e71c6fb$var$isValidKey","$28AnR$isMac","$507fabe10e71c6fb$var$handleKeyboardEvent","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$28AnR$isVirtualClick","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","$28AnR$getOwnerWindow","windowObject","documentObject","$28AnR$getOwnerDocument","focus","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$export$b9b3dfddab17db27","$507fabe10e71c6fb$var$nonTextInputTypes","$507fabe10e71c6fb$var$isKeyboardFocusEvent","isTextInput","document1","IHTMLInputElement","IHTMLTextAreaElement","IHTMLElement","IKeyboardEvent","$507fabe10e71c6fb$export$ec71b4b83ac08ec3","$28AnR$useEffect","$a1ea59d68270f0dd$export$f8168d8dd8fd66e6","isDisabled","onFocusProp","onBlurProp","onFocusChange","$hf0lj$useCallback","onSyntheticFocus","onFocus","ownerDocument","$hf0lj$getOwnerDocument","$hf0lj$getActiveElement","$hf0lj$getEventTarget","$9ab94262bd0047c7$export$420e68273165f4ec","onBlurWithin","onFocusWithin","onFocusWithinChange","$3b9Q0$useRef","$3b9Q0$useGlobalListeners","$3b9Q0$useCallback","$3b9Q0$getOwnerDocument","$3b9Q0$getActiveElement","$3b9Q0$getEventTarget","currentTarget","$3b9Q0$nodeContains","$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$hoverCount","$6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$handleGlobalPointerEvent","$6179b936705e76d3$var$setupGlobalTouchEvents","$6179b936705e76d3$export$ae780daf29e6d456","onHoverStart","onHoverChange","onHoverEnd","setHovered","$AWxnT$useState","$AWxnT$useRef","$AWxnT$useEffect","$AWxnT$useGlobalListeners","hoverProps","triggerHoverEnd","$AWxnT$useMemo","triggerHoverStart","pointerType","$AWxnT$getOwnerDocument","$AWxnT$nodeContains","$f7dceffc5ad7768b$export$4e328f61c538687f","autoFocus","within","$isWE5$useRef","$isWE5$isFocusVisible","isFocused","setFocused","$isWE5$useState","isFocusVisibleState","setFocusVisible","updateState","$isWE5$useCallback","$isWE5$useFocusVisibleListener","isFocusVisible","focusProps","$isWE5$useFocus","focusWithinProps","$isWE5$useFocusWithin","o$7","u","A","C","K","$","U","I","P","F","O","T","g","R","N","H","S","V","Y","w","E","L","n.isHTMLFieldSetElement","n.isHTMLLegendElement","G","B","m.isInteractiveElement","m.isHTMLLabelElement","m.isHTMLInputElement","Z","T$2","o$1","objectIs","useSyncExternalStore","useMemo","useSyncExternalStoreWithSelector_production","isEqual","instRef","inst","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelectorModule","c.isHTMLElement","d.isHTMLorSVGElement","d.isHTMLIframeElement","i.isHTMLorSVGElement","i.hasInlineStyle","i.isHTMLInputElement","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","_ref","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflow","overflowX","overflowY","display","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","getContainingBlock","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","getFrameElement","min","round","createCoords","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","rectToClientRect","rect","candidateSelectors","candidateSelector","NoElement","getRootNode","_element$getRootNode","isInert","lookUp","_node$getAttribute","inertAtt","inert","isContentEditable","_node$getAttribute2","attValue","getCandidates","includeContainer","filter","candidates","getCandidatesIteratively","elements","elementsToCheck","assigned","nestedCandidates","validCandidate","shadowRoot","validShadowRoot","_nestedCandidates","hasTabIndex","getTabIndex","getSortOrderTabIndex","isScope","tabIndex","sortOrderedTabbables","isInput","isHiddenInput","isDetailsWithSummary","getCheckedRadio","isTabbableRadio","radioScope","queryRadios","radioSet","isRadio","isNonTabbableRadio","isNodeAttached","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isZeroArea","_node$getBoundingClie","isHidden","displayCheck","getShadowRoot","isDirectSummary","nodeUnderDetails","originalNode","parentElement","rootNode","isDisabledFromFieldset","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","candidateTabindex","sortable","tabbable","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","side","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","rects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","offsetParent","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","boundary","rootBoundary","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","mergedOptions","platformWithCache","computePosition$1","isClient","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","React.useRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","React.useState","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","React.useCallback","referenceRef","setFloating","floatingRef","referenceEl","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","ReactDOM.flushSync","refs","React.useMemo","floatingStyles","initialStyles","u.isHTMLorSVGElement","W","ee","J","X","te","f.isElement","t.useState","t.useEffect","i.isElement","z","ne","oe","i.isHTMLElement","ge","Q","ue","_e","de","De","He","Ae","Te","Ee","be","ve","le","ie","fe","xe","Fe","ce","pe","Re","Ce","Ne","Pe","Se","he","ae","ye","Ie","se","Le","Oe","Ke","we","Be","Ue","ke","Me","We","$e","Ge","je","Ye","Je","Xe","Ve","qe","ze","Qe","ht","yt","EventEmitter","EventBus","TrackEvent","category","trackData","ThemeLegacy","ThemeCleanLight","ThemeCleanDark","ThemeNeonDark","themes","ThemeSelector","isOpen","setIsOpen","setTheme","enableScopedTheming","setEnableScopedTheming","themeIconDot","setThemeIconDot","themeTrackEvent","openModal","closeModal","updateTheme","updateEnablescopeTheming","Fragment","Dialog","TransitionChild","DialogPanel","DialogTitle","RadioGroup","Label","Radio","FrameBuilder","orderedParticipants","localParticipants","frame","longestPath","pathType","maxDepth","FrameBorder","TotalWidth","coordinates","allParticipants","rightParticipant","border","extraWidth","extraWidthDueToSelfMessage","widths","useDocumentScroll","scrollTop","setScrollTop","scrollLeft","setScrollLeft","updateScroll","ab","DETECTOR_COUNT","INTERSECTION_ERROR_MARGIN","SCROLLBAR_WIDTH","initializeDetectors","detectorContainer","detectors","detector","useIntersectionTop","setTop","ob","scrollHeight","detectorHeight","threshold","colorNames","reverseNames","cs","model","abbr","hex","rgba","per","keyword","rgb","hexAlpha","clamp","hsl","alpha","hwb","hexDouble","hsla","hwba","number_","string_","brightnessIgnoreAlpha","colorString","removeAlpha","getElementDistanceToTop","distanceToTop","currentElement","specialCharRegex","syncMessageNormalizer","asyncMessageNormalizer","UneditableText","ParticipantLabel","participantIsEditable","assigneeIsEditable","displayText","normalizeEditableText","processedText","replaceCodeAtPositions","replacements","edits","createSaveHandler","originalText","createCombinedSaveHandler","nextAssignee","nextLabel","separatorIndex","parsedAssignee","parsedLabel","PARTICIPANT_DEBUG","elRef","diagramElement","stickyOffset","onSelect","intersectionTop","isDefaultStarter","labelPositions","assigneePositions","calcOffset","participantOffsetTop","diagramHeight","diagramTop","stickyVerticalOffset","backgroundColor","bgColor","centerOf","entity","distance2","LifeLine","verticalCoordinates","verticalMode","setLifelineReady","measureFromDOM","escapedName","firstMessage","isVisible","rootY","messageY","resolveFromVM","creationTop","resolvedTop","rerun","LIFELINE_GROUP_OUTLINE_MARGIN","GROUP_STROKE_WIDTH","GROUP_SW2","GROUP_STROKE_COLOR","GROUP_DASH_ARRAY","SVG_GROUP_OUTLINE_MARGIN","GroupOutline","LifeLineGroup","entities","containerRef","overlayRect","setOverlayRect","entityNames","measureOverlay","minLeft","maxRight","participantBox","containerRect","relMinLeft","relMaxRight","outlineLeft","outlineRight","outlineTop","outlineHeight","groupLeft","lineTail","quoteParticipantIfNecessary","insertMessageInDsl","hostContext","insertIndex","quotedFrom","quotedTo","resolvedBlockContext","lineStart","lineEnd","originalLine","trimmedLine","innerIndent","trailingNewline","replacement","labelStart","labelEnd","insertionOffset","lastStat","targetStat","needsLeadingNewline","needsTrailingNewline","insertedText","DRAG_HANDLE_SIZE","MessageCreateControls","enabled","setPendingEditableRange","setSelectedParticipants","dragState","setDragState","dragStateRef","dragHandledRef","participantScreenXRef","map","findNearest","clientX","nearest","minDist","cx","dist","onPointerMove","onPointerUp","onKeyDown","diagramRect","offsetX","offsetY","isSource","isTarget","LifeLineLayer","starterParticipant","getContextType","dict","blockLength","increaseNumber","number","Anchor2","layers","isRightToLeft","rightEdgeOfLeftAnchor","distance","depthOnParticipant","isMessageContext","isCreationContext","getLeftParticipant","getBorder","getOffsetX","halfLeftParticipant","originLayers","anchor2Origin","useFragmentData","collapsed","setCollapsed","toggleCollapse","paddingLeft","fragmentStyle","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","apply","construct","thisArg","_len","_key","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","_len3","_key3","_len4","_key4","addToSet","transformCaseFunc","lcElement","cleanArray","newObject","lookupGetter","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","suffix","ATTR_NAME","policyName","scriptUrl","_createHooksMap","createDOMPurify","window","DOMPurify","root","document","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","remove","getNextSibling","getChildNodes","template","trustedTypesPolicy","emptyHTML","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","_parseConfig","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","dirty","leadingWhitespace","dirtyPayload","_createNodeIterator","_isClobbered","_isNode","_executeHooks","hook","_sanitizeElements","_isBasicCustomElement","childNodes","childCount","childClone","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attr","namespaceURI","attrValue","initValue","_sanitizeShadowDOM","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","serializedHTML","entryPoint","hookFunction","purify","deepFreeze","Response","escapeHTML","inherit$1","original","SPAN_CLOSE","emitsWrappingTags","scopeToCSSClass","pieces","HTMLRenderer","parseTree","newNode","TokenTree","builder","TokenTreeEmitter","emitter","lookahead","concat","anyNumberOfTimes","optional","stripOptionsFromArgs","either","countMatchGroups","startsWith","lexeme","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","MATCH_NOTHING_RE","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","SHEBANG","beginShebang","resp","BACKSLASH_ESCAPE","APOS_STRING_MODE","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","begin","modeOptions","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","skipIfHasPrecedingDot","response","scopeClassName","_parent","beginKeywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","originalMode","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","warn","deprecated","MultiClassError","remapScopeNames","regexes","scopeNames","emit","beginMultiClass","endMultiClass","scopeSugar","MultiClass","compileLanguage","language","langRe","global","MultiRegex","terminators","matchData","ResumableMultiRegex","matcher","m2","buildModeRegex","mm","term","compileMode","cmode","keywordPattern","expandOrCloneMode","dependencyOnParent","variant","HTMLInjectionError","reason","inherit","NO_MATCH","MAX_KEYWORD_HITS","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","shouldNotHighlight","languageName","blockLanguage","getLanguage","_class","codeOrLanguageName","optionsOrCode","ignoreIllegals","fire","_highlight","codeToHighlight","continuation","keywordHits","keywordData","matchText","processKeywords","modeBuffer","lastIndex","word","kind","keywordRelevance","relevance","cssClass","emitKeyword","processSubLanguage","continuations","highlightAuto","processBuffer","emitMultiClass","klass","startNewMode","endOfMode","matchPlusRemainder","matched","doIgnore","resumeScanAtSamePosition","doBeginMatch","newMode","beforeCallbacks","cb","doEndMatch","endMode","processContinuations","lastMatch","processLexeme","textBeforeMatch","processed","iterations","md","beforeMatch","processedCount","justTextHighlightResult","languageSubset","plaintext","results","autoDetection","sorted","best","secondBest","updateClassName","currentLang","resultLang","highlightElement","configure","userOptions","initHighlighting","highlightAll","initHighlightingOnLoad","wantsHighlight","boot","registerLanguage","languageDefinition","error$1","registerAliases","unregisterLanguage","alias","listLanguages","aliasList","upgradePluginAPI","plugin","addPlugin","removePlugin","deprecateHighlightBlock","core","KEYWORDS","LITERALS","TYPES","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","javascript","hasClosingTag","after","IDENT_RE$1","FRAGMENT","XML_SELF_CLOSING","XML_TAG","afterMatchIndex","afterMatch","KEYWORDS$1","decimalDigits","frac","decimalInteger","NUMBER","SUBST","HTML_TEMPLATE","CSS_TEMPLATE","GRAPHQL_TEMPLATE","TEMPLATE_STRING","SUBST_INTERNALS","SUBST_AND_COMMENTS","PARAMS_CONTAINS","PARAMS","CLASS_OR_EXTENDS","CLASS_REFERENCE","USE_STRICT","FUNCTION_DEFINITION","UPPER_CASE_CONSTANT","noneOf","FUNCTION_CALL","PROPERTY_ACCESS","GETTER_OR_SETTER","FUNC_LEAD_IN_RE","FUNCTION_VARIABLE","bash","VAR","BRACED_VAR","HERE_DOC","QUOTE_STRING","ESCAPED_QUOTE","APOS_STRING","ESCAPED_APOS","ARITHMETIC","SH_LIKE_SHELLS","KNOWN_SHEBANG","FUNCTION","PATH_MODE","SHELL_BUILT_INS","BASH_BUILT_INS","ZSH_BUILT_INS","GNU_CORE_UTILS","yaml","URI_CHARACTERS","KEY","TEMPLATE_VARIABLES","SINGLE_QUOTE_STRING","STRING","CONTAINER_STRING","TIMESTAMP","VALUE_CONTAINER","OBJECT","ARRAY","VALUE_MODES","highlightjs","found","validLanguage","markedComment","Numbering","CollapseButton","equalityRegex","ConditionLabel","pendingEditableRange","labelText","shouldAutoEdit","FragmentLoop","blockInLoop","Block","FragmentAlt","blockInIfBlock","blockLengthAcc","blockInElseIfBlock","conditionFromIfElseBlock","elseIfBlock","FragmentPar","FragmentOpt","capitalize","FragmentSection","braceBlock","blockInSection","FragmentCritical","blockInCritical","FragmentTryCatchFinally","exception","blockInCatchBlock","blockInTryBlock","EditableLabelField","normalizeText","setSelectedMessage","normalizedText","MessageLabel","FragmentRef","contentLabel","contentPosition","LTR_FILLED","LTR_OPEN","RTL_FILLED","RTL_OPEN","MessageView","onClick","messageRef","dataSelected","isDashed","isFilled","arrowPath","Message","selectionRange","onMessageClick","selectedMessage","stylable","rangeStart","rangeEnd","isSelected","AssignmentReturnLabel","Occurrence","messageInsertionEnabled","setCreateDrag","debug","computedCenter","hasAnyStatementsExceptReturn","stats","toggle","assigneeData","statementNumber","nestedBlockContext","dragEnabled","startCreateDrag","nestedBlockElement","barRect","sourceX","sourceY","CodeRange","startLine","startCol","endLine","endCol","matchesImplicitStarterSelf","depthOnParticipant4Stat","useArrow","sourceLayers","targetLayers","anchor2Source","anchor2Target","interactionWidth","rightToLeft","translateX","CreationMessageLabel","labelPosition","Creation","messageContainerRef","onElementClick","setParticipantWidth","messageTextStyle","containerOffset","participantElement","ArrowHead","fill","SelfInvocation","Interaction","signatureCtx","SelfInvocationAsync","isNullOrUndefined","InteractionAsync","getIsCurrent","Divider","diagramWidth","centerOfOrigin","note","endIndex","bracketContent","remainingNote","cssValues","cleanNote","refCallback","blockPadding","Return","messageContext","Statement","subProps","getIndent","getBaseIndent","shiftIndent","indentDelta","trimCount","reorderMessageInDsl","sourceRange","targetRange","place","sourceStart","sourceEnd","targetStart","targetEnd","sourceLineStart","sourceLineEnd","targetLineStart","targetLineEnd","sourceText","targetText","withoutSource","sourceBeforeTarget","targetLineStartInWithoutSource","targetLineEndInWithoutSource","insertionPoint","sourceIndent","targetIndent","movedBlock","movedText","insertDividerInDsl","GAP_HEIGHT_EMPTY","HANDLE_SIZE","GAP_OFFSET_UP","GapHandleZone","dividerInsertionEnabled","hovered","hideTimerRef","handlePointerEnter","handlePointerLeave","insertDivider","startDrag","buttonRect","showHandles","renderHandles","DRAG_THRESHOLD","enableGapHandles","dragKey","setDragKey","dragKeyRef","pendingDrag","setPendingDrag","dropState","setDropState","previousCursor","deltaX","deltaY","sourceKey","nextCode","getNumber","stat","statementKey","reorderState","STARTER","splitLine","semicolon","hasInlineBlock","colonMessageParts","creationLineParts","isSyncableContent","methodName","canTransformMessageType","currentType","targetType","transformMessageType","colonParts","methodCall","arrow","wrapHeader","conditionOffset","wrapMessageInFragment","conditionStart","conditionEnd","isSafari","_activeElement","contains","getDocument","SafeReact","useInsertionEffect","useSafeInsertionEffect","useEffectEvent","getTabbableOptions","getTabbableIn","dir","active","nextIndex","getNextTabbable","referenceElement","getPreviousTabbable","isOutsideEvent","containerElement","relatedTarget","disableFocusInside","enableFocusInside","tabindex","serverHandoffComplete","genId","useFloatingId","setId","useModernLayoutEffect","React.useEffect","useReactId","useId","createEventEmitter","_map$get","_map$get2","FloatingNodeContext","React.createContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","React.useContext","useFloatingTree","createAttribute","HIDDEN_STYLES","FocusGuard","React.forwardRef","role","setRole","restProps","PortalContext","useFloatingPortalNode","uniqueId","portalContext","usePortalContext","portalNode","setPortalNode","portalNodeRef","existingIdRoot","subRoot","idWrapper","FloatingPortal","preserveTabOrder","focusManagerState","setFocusManagerState","beforeOutsideRef","afterOutsideRef","beforeInsideRef","afterInsideRef","modal","shouldRenderGuards","_beforeInsideRef$curr","domReference","prevTabbable","ReactDOM.createPortal","_afterInsideRef$curre","nextTabbable","useFloatingRootContext","onOpenChangeProp","elementsProp","floatingId","events","nested","positionReference","setPositionReference","onOpenChange","nodeId","internalRootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReferenceRef","useFloating$1","computedPositionReference","useLatestValue","useDocumentEvent","listenerRef","useOutsideClick","btns","wrapTypes","StylePanel","setOnMessageClick","existingStyles","setExistingStyles","hasMessageContext","setHasMessageContext","updateCode","messageData","newComment","updatedStyles","handleTypeClick","labelOffset","handleRenameClick","handleWrapClick","trimedPrevLine","styleStart","styleEnd","interactionElement","asyncContent","creationParams","openSubmenu","setOpenSubmenu","submenuTimer","openSub","menu","closeSub","btn","canTransform","disabledTitle","MessageLayer","setMounted","normalizeName","formatParticipantDeclaration","buildParticipantLines","insertParticipantIntoDsl","participantLines","head","headStart","headEnd","starter","starterText","nextHead","separator","EDGE_BUTTON_OFFSET","computeGapAnchor","leftName","rightName","computeAppendAnchor","participantNames","last","computePrependAnchor","BUTTON_CENTER_Y","BUTTON_SIZE","HIT_AREA_SIZE","HIT_AREA_TOP","BUTTON_INSET","generateName","existingNames","candidate","fallback","ParticipantInsertControls","sentinelRef","domEdges","setDomEdges","sentinelLeft","anchorCoordinates","gapAnchors","anchors","prependAnchor","appendAnchor","handleInsert","insertButtonClass","insertButtonStyle","getParticipantCtx","ctxName","setParticipantStyleInDsl","updates","existingType","existingColor","existingLabel","existingStereotype","existingEmoji","nextType","nextColor","newDeclaration","PRESET_COLORS","PARTICIPANT_TYPES","ParticipantStylePanel","setSelected","panelPos","setPanelPos","panelRef","currentParticipant","currentColor","panel","margin","onPointerDown","workingCode","workingContext","finalCode","isActive","icon","EmptyDiagramPrompt","SeqDiagram","isEmpty","setDiagramElement","diagramRef","useImperativeHandle","frameBorderLeft","exportConfig","DiagramFrame","contentRef","showTips","setScale","enableNumbering","setEnableNumbering","enableMultiTheme","showTipsDialog","htmlToImage.toPng","htmlToImage.toSvg","htmlToImage.toBlob","htmlToImage.toJpeg","zoomIn","newScale","zoomOut","setStyle","styleElementId","setRemoteCss","hostname","remoteCssUrlId","remoteCssElement","ErrorBoundary","info","VERSION","buildCostDesc","diff","seconds","milliseconds","microseconds","calculateCostTime","processName","processStartTime","getStartTime","push","heap","parentIndex","peek","pop","halfLength","exports","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","needsPaint","localSetTimeout","localClearTimeout","localSetImmediate","advanceTimers","currentTime","timer","handleTimeout","isMessageLoopRunning","schedulePerformWorkUntilDeadline","firstTimer","requestHostTimeout","taskTimeoutID","frameInterval","startTime","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","port","ms","fps","eventHandler","priorityLevel","timeout","parentPriorityLevel","schedulerModule","Scheduler","require$$1","ReactDOM","require$$2","isValidContainer","getNearestMountedFiber","fiber","nearestMounted","getSuspenseInstanceFromFiber","suspenseState","getActivityInstanceFromFiber","activityState","assertIsMounted","findCurrentFiberUsingSlowPath","alternate","parentA","parentB","didFindChild","child$0","findCurrentHostFiberImpl","REACT_LEGACY_ELEMENT_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_CACHE_SENTINEL","REACT_CLIENT_REFERENCE","getComponentNameFromType","innerType","ReactDOMSharedInternals","sharedNotPendingObject","valueStack","createCursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","getOwnHostContext","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","describeBuiltInComponentFrame","reentry","describeNativeComponentFrame","previousPrepareStackTrace","RunInRootFrame","Fake","control","x$1","x$2","sample","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","describeFiber","childFiber","getStackByFiberInDevAndProd","workInProgress","scheduleCallback$3","cancelCallback$1","shouldYield","requestPaint","now","getCurrentPriorityLevel","ImmediatePriority","UserBlockingPriority","NormalPriority$1","LowPriority","IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","clz32","clz32Fallback","log","LN2","nextTransitionUpdateLane","nextTransitionDeferredLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markRootFinished","finishedLanes","remainingLanes","spawnedLane","updatedLanes","suspendedRetryLanes","previouslyPendingLanes","entanglements","expirationTimes","hiddenUpdates","index$7","hiddenUpdatesForLane","markSpawnedDeferredLane","entangledLanes","spawnedLaneIndex","markRootEntangled","rootEntangledLanes","index$8","getBumpedLaneForHydration","renderLane","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","runWithPriority","previousPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetInst","getParentHydrationBoundary","getInstanceFromNode","getNodeFromInstance","getResourcesFromRoot","resources","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","isAttributeNameSafe","attributeName","setValueForAttribute","prefix$10","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","getToStringValue","isCheckable","elem","trackValueOnNode","valueField","currentValue","descriptor","track","updateValueIfChanged","lastValue","getActiveElement","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","updateInput","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","updateOptions","multiple","setDefaultSelected","updateTextarea","initTextarea","setTextContent","firstChild","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","setValueForStyles","prevStyles","styleName$16","styleName$17","isCustomElement","isJavaScriptProtocol","sanitizeURL","noop$1","currentReplayingEvent","getEventTarget","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","stateNode","canUseDOM","passiveBrowserEventsSupported","startText","fallbackText","getData","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","EventInterface","SyntheticEvent","UIEventInterface","SyntheticUIEvent","lastMovementX","lastMovementY","lastMouseEvent","MouseEventInterface","getEventModifierState","SyntheticMouseEvent","DragEventInterface","SyntheticDragEvent","FocusEventInterface","SyntheticFocusEvent","AnimationEventInterface","SyntheticAnimationEvent","ClipboardEventInterface","SyntheticClipboardEvent","CompositionEventInterface","SyntheticCompositionEvent","normalizeKey","translateToKey","modifierKeyToProp","modifierStateGetter","keyArg","KeyboardEventInterface","SyntheticKeyboardEvent","PointerEventInterface","SyntheticPointerEvent","TouchEventInterface","SyntheticTouchEvent","TransitionEventInterface","SyntheticTransitionEvent","WheelEventInterface","SyntheticWheelEvent","ToggleEventInterface","SyntheticToggleEvent","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","getNativeBeforeInputChars","getFallbackBeforeInputChars","supportedInputTypes","isTextInputElement","nodeName","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$286","isSupported$jscomp$inline_427","element$jscomp$inline_428","stopWatchingForValueChange","handlePropertyChange","handleEventsForInputEventPolyfill","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","nodeEnd","containsNode","outerNode","innerNode","getActiveElementDeep","hasSelectionCapabilities","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","prefixedEventNames","getVendorPrefixedEventName","prefixMap","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","queue","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","createFiberImplClass","shouldConstruct","createWorkInProgress","resetWorkInProgress","createFiberFromTypeAndProps","fiberTag","isHostHoistableType","createFiberFromFragment","createFiberFromText","createFiberFromDehydratedFragment","dehydratedNode","createFiberFromPortal","portal","CapturedStacks","createCapturedValueAtFiber","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","restoreSuspendedTreeContext","suspendedContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","listenToNonDelegatedEvent","mediaEventTypes","checkForUnmatchedText","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratableInstanceAfterHydrationBoundary","isSingletonScope","previousHydratableOnEnteringScopedSingleton","getNextHydratable","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","forcePropagateEntireTree","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","signal","scheduleCallback$2","NormalPriority","CacheContext","createCache","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","entangleAsyncAction","entangledListeners","requestTransitionLane","pingEngtangledActionScope","chainThenableValue","thenableWithOverride","prevOnStartTransitionFinish","globalMostRecentTransitionTime","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pushTransition","offscreenWorkInProgress","prevCachePool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","fulfilledThenable","rejectedThenable","suspendedThenable","resolveLazy","lazyType","getSuspendedThenable","rejectedReason","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","throwOnInvalidObjectTypeImpl","returnFiber","newChild","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","textContent","updateElement","elementType","updateFragment","updatePortal","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildrenArray","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenIterator","step","reconcileChildFibersImpl","firstChildFiber","reconcileChildFibers","mountChildFibers","hasForceUpdate","initializeUpdateQueue","cloneUpdateQueue","createUpdate","enqueueUpdate","updateQueue","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","entangledActionThenable","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","firstBaseUpdate","lastBaseUpdate","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","suspenseStackCursor","pushDehydratedActivitySuspenseHandler","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","isSuspenseInstancePending","isSuspenseInstanceFallback","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","createFunctionComponentUpdateQueue","useMemoCache","memoCache","basicStateReducer","updateReducer","updateReducerImpl","baseQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$60","revertLane","rerenderReducer","dispatch","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","pushSimpleEffect","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$66","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","oldState","mountActionState","initialStateProp","ssrFormState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","stateHook","updateActionStateImpl","currentStateHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","useEffectEventImpl","componentUpdateQueue","updateEvent","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","startTransition","pendingState","finishedState","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$69","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","eagerState","throwIfDuringRender","identifierPrefix","idWithLeadingBit","booleanOrThenable","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","checkShouldComponentUpdate","oldProps","newProps","nextContext","callComponentWillReceiveProps","resolveClassComponentProps","baseProps","propName$73","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","e$74","logCaughtError","onCaughtError","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","legacyErrorBoundariesThatAlreadyFailed","throwException","rootRenderLanes","renderDidSuspendDelayIfPossible","workInProgressRootExitStatus","attachPingListener","wrapperError","workInProgressRootConcurrentErrors","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","bailoutOffscreenComponent","nextBaseLanes","remainingChildLanes","mountActivityChildren","mountWorkInProgressOffscreenFiber","retryActivityComponentWithoutHydrating","updateActivityComponent","didSuspend","canHydrateHydrationBoundary","dehydrated","markRef","replayFunctionComponent","updateClassComponent","contextType","unresolvedOldProps","oldContext","contextType$jscomp$0","mountHostRootWithoutHydrating","SUSPENDED_MARKER","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","nextPrimaryChildren","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","digest","primaryChildren","offscreenProps","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","updateSuspenseListComponent","revealOrder","suspenseContext","shouldForceFallback","attemptEarlyBailoutIfNoScheduledUpdate","state$102","didSuspendBefore","beginWork","$$typeof","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","canHydrateInstance","canHydrateTextInstance","markUpdate","preloadInstanceAndSuspendIfNeeded","shouldRemainOnPreviousScreen","preloadResourceAndSuspendIfNeeded","resource","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$106","bubbleProperties","completedWork","didBailout","newChildLanes","subtreeFlags","child$107","completeWork","nextResource","listenToAllSupportedEvents","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","finishedWork","lastEffect","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","destroy","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$140","commitHostMount","commitHostUpdate","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","nextEffect","commitBeforeMutationEffects","eventsEnabled","_enabled","anchorOffset","focusNode","indexWithinAnchor","indexWithinFocus","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","error$139","commitActivityHydrationCallbacks","commitSuspenseHydrationCallbacks","retryDehydratedSuspenseBoundary","registerSuspenseInstanceRetry","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearHydrationBoundary","retryIfBlockedOn","getRetryCache","retryCache","attachSuspenseRetryListeners","wakeables","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","maybeNodes","getHydratableHoistableCache","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","hideOrUnhideDehydratedBoundary","hostParentFiber","parent$141","before$142","parent$143","before$144","finishedRoot$jscomp$0","includeWorkInProgressEffects","hiddenCallbacks","commitOffscreenPassiveMountEffects","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","suspendedState","accumulateSuspenseyCommitOnFiber","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","sibling","DefaultAsyncDispatcher","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","exitStatus","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","wasRootDehydrated","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","timeoutOffset","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","index$6","flushSyncWorkAcrossRoots_impl","resetWorkInProgressStack","timeoutHandle","cancelTimeout","allEntangledLanes","index$4","handleThrow","thrownValue","pushDispatcher","prevDispatcher","pushAsyncDispatcher","prevAsyncDispatcher","shouldYieldForPrerendering","prevExecutionContext","unitOfWork","throwAndUnwindWorkLoop","workLoopSync","thrownValue$165","performUnitOfWork","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","workLoopConcurrentByScheduler","thrownValue$167","suspendedReason","unwindUnitOfWork","skipSiblings","flushPendingEffects","scheduleCallback$1","flushPassiveEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","start$jscomp$0","end$jscomp$0","startMarker","endMarker","rootHasLayoutEffect","releaseRootPooledCache","onRecoverableError","recoverableError","renderPriority","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","retryLane","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleImmediateRootScheduleTask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$170","performSyncWorkOnRoot","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$5","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","scheduleMicrotask","actionScopeLane","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","extractEvents$1","maybeTargetInst","i$jscomp$inline_1577","eventName$jscomp$inline_1578","domEventName$jscomp$inline_1579","capitalizedEvent$jscomp$inline_1580","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","dispatchEvent","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","getParent","tempB","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","targetFiber","captureName","_instance2","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","setProp","setPropOnCustomElement","hasSrc","hasSrcSet","propKey","propValue$184","lastProps","lastProp","propKey$201","propKey$217","propKey$222","propKey$227","propKey$232","isLikelyStaticResource","initiatorType","estimateBandwidth","bits","resourceEntries","transferSize","duration","overlapEntry","overlapStartTime","overlapTransferSize","overlapInitiatorType","parentNamespace","currentPopstateTransitionEvent","localPromise","handleErrorInNextTick","parentInstance","hydrationInstance","nextNode","node$jscomp$0","nextNode$jscomp$0","suspenseInstance","anyProps","nodeType","targetInstance","rootContainerInstance","preloadPropsMap","preconnectsSet","previousDispatcher","flushSyncWork","requestFormReset","prefetchDNS","preconnect","preload","preloadModule","preinitScript","preinitStyle","preinitModuleScript","previousWasRendering","wasRendering","formInst","globalDocument","preconnectAs","rel","limitedEscapedHref","preloadSelector","getStyleKey","getScriptKey","getStylesheetSelectorFromKey","getScriptSelectorFromKey","adoptPreloadPropsForStylesheet","insertStylesheet","scripts","adoptPreloadPropsForScript","currentProps","styles$243","resource$244","preloadStylesheet","stylesheetPropsFromRawProps","rawProps","preloadProps","instance$249","linkInstance","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","onUnsuspend","estimatedBytesWithinLimit","insertSuspendedStylesheets","commit","stylesheetTimer","unsuspend","imgTimer","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","onDefaultTransitionIndicator","formState","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","attemptHydrationAtCurrentPriority","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedFocus","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queuedExplicitHydrationTargets","accumulateOrCreateContinuousQueuedReplayableEvent","existingQueuedEvent","pointerId","attemptExplicitHydrationTarget","queuedTarget","attemptReplayContinuousQueuedEvent","queuedEvent","targetContainers","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","formProps","defaultOnDefaultTransitionIndicator","handleNavigate","pendingResolve","handleNavigateComplete","isCancelled","startFakeNavigation","currentEntry","ReactDOMRoot","internalRoot","ReactDOMHydrationRoot","isomorphicReactPackageVersion$jscomp$inline_1840","componentOrElement","internals$jscomp$inline_2347","hook$jscomp$inline_2348","reactDomClient_production","clientModule","PARTICIPANT_TOP_SPACE","_HTML_PARTICIPANT_TOP","PARTICIPANT_BOX_PADDING","PARTICIPANT_BOX_PADDING_ASSIGNEE","PARTICIPANT_ICON_ROW_WIDTH","PARTICIPANT_EMOJI_WIDTH","PARTICIPANT_VISUAL_HEIGHT","PARTICIPANT_MAX_WIDTH","cssToSvgStyle","hasKeys","svgKey","buildParticipants","models","measureText","centerX","halfWidth","isAssignee","measuredTextWidth","measuredStereotypeWidth","textWidth","padding","STEREOTYPE_BOX_OVERHEAD","stereotypeBoxWidth","buildLifelines","buildGroups","groupMap","groups","members","minY","COMMENT_FONT_ASCENT","buildFragmentGeometry","coord","commentText","commentYBase","statNode","fragmentCtx","findFragmentContext","localNames","getDeepParticipantNames","fragBorder","fragWidth","fragX","extraWidths","sections","sectionY","sectionBlock","innerStats","firstStatKey","createStatementKeyFromStat","innerCoord","sectionHeight","spaceIdx","statKey","dividerY","fragmentComment","frag","innerNames","walkStatements","walkBlock","normalizeLabel","currentOrigin","activeOccurrences","parentNumber","parentBlockKind","indexOffset","ordinal","nestedBlock","innerOccs","asyncMsg","creationBlock","divider","fragmentInfo","extractFragmentInfo","walkFragmentBlocks","elseIf","sectionOffset","sectionStmts","computeReturnDebt","returnHeight","debtByDepth","directDebtByDepth","blockOwnerKeys","blockOwnerKinds","hasNonReturnChild","nbAssignShift","blockHasAssignment","closedDebt","ownerKey","ownerKind","directDebt","nestedDebt","directShift","occInnerDebt","hasMixed","hasAssign","totalDebt","returnCoord","isFirstAtDepth","directDebtEnd","nestedDebtEnd","directShiftEnd","occInnerDebtEnd","hasMixedEnd","hasAssignEnd","buildMessages","selfCalls","occurrences","creations","fragments","returns","dividers","comments","maxReturnBottom","blockChildCount","lastDot","adjustMap","commentParticipant","fX","tX","commentX","commentXOffset","codeSpanPadding","fromX","toX","messageHeight","msgCommentHeight","occOffset","targetDepth","nestingOffset","isAsync","selfYOffset","selfWidth","selfHeight","selfX","isLTR","syncOffset","asyncTargetOcc","arrowToX","occX","occY","occHeight","innerDebtKey","innerDebt","returnArrowY","retFromX","senderX","assignReturnNumber","targetParticipant","creationAssign","occBottom","rawFromX","occHalf","senderNest","senderRetX","createdRetX","adjustedCoord","fragmentCommentHeight","fragmentResult","rawToX","isReverse","fromLayers","toLayers","returnOffset","returnY","returnBottomPad","cleanLabel","MIN_RETURN_GAP","inner","outer","totalReturnDebt","buildGeometry","totalHeight","allParticipantNames","frameBorder","buildResult","maxOccBottom","maxOtherY","lifelineBottom","lifelines","orderedNames","labelW","rightExtent","cr","nestDepths","nestDepth","contentRightEdge","nd","targetRight","currentRight","ActorSvg","BoundarySvg","ControlSvg","DatabaseSvg","EntitySvg","PRESENTATION_ATTRIBUTES","parseRawSvg","viewBox","ICONS","Ec2Svg","LambdaSvg","AzureFunctionSvg","SqsSvg","SnsSvg","IamSvg","getIcon","esc","styleToAttr","STROKE_WIDTH","HALF_STROKE","ICON_SIZE","ICON_MARGIN_RIGHT","ICON_PAINT_OFFSET_X","LABEL_PAD_LEFT","LABEL_HORIZONTAL_PADDING","STEREOTYPE_VERTICAL_OFFSET","STEREOTYPE_FONT_SIZE","BOUNDARY_ICON_VERTICAL_TWEAK","PARTICIPANT_TEXT_FILL","renderParticipant","renderStarterParticipant","rx","rectY","rectW","rectH","EMOJI_FONT_ATTRS","iconSvg","emojiIconSvg","textX","textAnchor","textY","labelY","emojiExtra","groupWidth","groupX","iconX","iconType","iconY","emojiTextX","vbW","vbH","iconAttrs","innerColWidth","stereotypeSvg","stereoX","stereoAnchor","stereoY","participantTextStyle","textLengthAttr","fillStyle","colorAttrs","boxX","normalizeHexColor","renderLifeline","renderMessage","direction","labelX","dashAttr","styleAttr","numberX","numberSvg","lineY","renderArrowHead","renderSelfCall","x1","numberY","svgX","svgY","tipX","tipY","pointsLeft","pathD","fillAttr","renderOccurrence","HEADER_HEIGHT","BRACKET_WIDTH","TEXT_PAD_X","renderFragment","headerX","headerY","headerW","getFragmentIcon","kindLabel","getKindLabel","condY","renderBracketedLabel","separatorY","sepX1","sepX2","isFinally","keywordWidth","keywordX","conditionX","bgWidth","finallyX","finallyY","bgY","innerText","innerWidth","cls","measuredInnerWidth","innerX","closeX","renderCreation","adjustedToX","labelContent","renderGuillemets","renderOpenArrow","y1","y2","renderReturn","renderSelfReturn","minX","ARROW_PADDING_HALF","arrowTipX","halfH","ax1","ay1","ay2","PAD_X","BOX_HEIGHT","renderDivider","rawLabel","borderWidth","innerHeight","boxY","outerLeft","outerRight","markdownToSvgLines","collectLines","pushFragment","pushLineBreak","tokenList","walkToken","renderComment","tspans","renderGroup","rectX","titleY","titleText","tbX","tbY","tbWidth","tbHeight","FRAME_HEADER_HEIGHT","FRAME_BORDER_RADIUS","DEFAULT_THEME_STYLES","renderToSvg","geometry","composeSvg","headerH","contentLeftMargin","viewWidth","viewHeight","grp","creationNames","frameSvg","headerLineY","headerLineDrawY","headerLineSvg","titleSvg","escXml","innerSvg","ZenUml","naked","createRoot","StrictMode","portalRootElement","debounce","codeOrText"],"mappings":"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AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACrE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACrE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACrE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACvE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EACrE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACrE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACrE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EACrE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACrE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACtE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EACrE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAClE;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACrE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACtE;AAAA,EAAO;AAAA,EAAO;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAC,GAGnB3Y,KAAM,IAAI0Y,EAAO,IAAI,gBAAe,EAAG,YAAYC,EAAa,GAEhEC,KAAiB5Y,GAAI,gBAAgB,IAAK,CAAC6Y,GAAI73B,MAAU,IAAI03B,EAAO,IAAI,IAAIG,GAAI73B,CAAK,CAAC;AAE7E,MAAM83B,WAAsBJ,EAAO,MAAM;AAAA,EAEpD,OAAO,kBAAkB;AAAA,EACzB,OAAO,eAAe;AAAA,IAAE;AAAA,IAAyB;AAAA,IAAU;AAAA,IACA;AAAA,EAAkB;AAAA,EAChF,OAAO,YAAY,CAAE,gBAAgB,SAAS,YAAY;AAAA,EAC1D,OAAO,eAAe;AAAA,IAAE;AAAA,IAAM;AAAA,IAAM;AAAA,IAAW;AAAA,IAAc;AAAA,IACrC;AAAA,IAAW;AAAA,IAAM;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxC;AAAA,IAAQ;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAC5C;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAO;AAAA,IAC7C;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAC1C;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAU;AAAA,IAC7C;AAAA,IAAM;AAAA,IAAQ;AAAA,IAAU;AAAA,IAAM;AAAA,IAAY;AAAA,IAC1C;AAAA,IAAS;AAAA,IAAW;AAAA,IAAS;AAAA,IAAc;AAAA,IAC3C;AAAA,IAAS;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAW;AAAA,IACrC;AAAA,IAAQ;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,EAAK;AAAA,EACvD,OAAO,gBAAgB;AAAA,IAAE;AAAA,IAAM;AAAA,IAAM;AAAA,IAAY;AAAA,IAAY;AAAA,IACpC;AAAA,IAAS;AAAA,IAAS;AAAA,IAAO;AAAA,IAAS;AAAA,IAAU;AAAA,IAC5C;AAAA,IAAS;AAAA,IAAS;AAAA,IAAY;AAAA,IAAY;AAAA,IAC1C;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAM;AAAA,IAAM;AAAA,IAAQ;AAAA,IACxC;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAO;AAAA,IACvC;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAU;AAAA,IAAQ;AAAA,IAC1C;AAAA,IAAU;AAAA,IAAU;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAO;AAAA,IAC5C;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAU;AAAA,IAAO;AAAA,IAAO;AAAA,IACzC;AAAA,IAAO;AAAA,IAAY;AAAA,IAAW;AAAA,IAAO;AAAA,IAAM;AAAA,IAC3C;AAAA,IAAS;AAAA,IAAW;AAAA,IAAM;AAAA,IAAe;AAAA,IACzC;AAAA,IAAc;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAS;AAAA,IAC3C;AAAA,IAAe;AAAA,IAAsB;AAAA,IACrC;AAAA,IAAW;AAAA,IAAM;AAAA,IAAW;AAAA,IAAS;AAAA,IACrC;AAAA,IAAqB;AAAA,IAAa;AAAA,IAClC;AAAA,EAAW;AAAA,EACpC,OAAO,YAAY;AAAA,IAAE;AAAA,IAAO;AAAA,IAAM;AAAA,IAAY;AAAA,IAAY;AAAA,IAAU;AAAA,IAC/C;AAAA,IAAS;AAAA,IAAO;AAAA,IAAS;AAAA,IAAU;AAAA,IACnC;AAAA,IAAS;AAAA,IAAO;AAAA,IAAS;AAAA,IAAY;AAAA,IAAY;AAAA,IACjD;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAM;AAAA,IAAM;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAChD;AAAA,IAAS;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAC7C;AAAA,IAAS;AAAA,IAAU;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAU;AAAA,IAC7C;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAO;AAAA,IAAM;AAAA,IAAQ;AAAA,IAAS;AAAA,IAC/C;AAAA,IAAO;AAAA,IAAO;AAAA,IAAS;AAAA,IAAO;AAAA,IAAY;AAAA,IAC1C;AAAA,IAAO;AAAA,IAAM;AAAA,IAAO;AAAA,IAAS;AAAA,IAAW;AAAA,IAAM;AAAA,IAC9C;AAAA,IAAkB;AAAA,IAAc;AAAA,IAAO;AAAA,IAAM;AAAA,IAC7C;AAAA,IAAO;AAAA,IAAS;AAAA,IAAS;AAAA,IAAe;AAAA,IACxC;AAAA,IAAc;AAAA,IAAa;AAAA,IAAa;AAAA,IACxC;AAAA,IAAa;AAAA,IAAW;AAAA,IAAW;AAAA,IAAM;AAAA,IACzC;AAAA,IAAS;AAAA,IAAW;AAAA,IAAqB;AAAA,IACzC;AAAA,IAAiB;AAAA,EAAW;AAAA,EAE9C,YAAYjO,GAAO;AACf,UAAMA,CAAK,GACX,KAAK,UAAU,IAAIiO,EAAO,IAAI,kBAAkB,MAAM1Y,IAAK4Y,IAAgB,IAAIF,EAAO,uBAAsB,CAAE,GAI5G,KAAK,UAAU,WAAW;AAExB,YAAMK,IAAa,KAAK;AAIxB,UAHkB,KAAK,OAAO,QAAQ,GAAGA,IAAa,CAAC,EACpD,QAAQ,uBAAuB,EAAE,EACjC,KAAI,EACO,OAAQ,QAAO;AAG7B,YAAMC,IAAQ,IAAIC,IAAM,GAAGC,IAAM,IAAIC,IAAM,IAAIC,IAAS,IAAIC,IAAa;AACzE,UAAI5d,IAAM,GAAGG,IAAO,KAAK,OAAO,GAAGH,CAAG;AAGtC,aAAOG,MAASod,KAASpd,MAASqd;AAChC,UAAExd,GACFG,IAAO,KAAK,OAAO,GAAGH,CAAG;AAI3B,aAAOG,MAASsd,KAAQtd,MAASud,KAAOvd,MAASwd,KAAUxd,MAASyd;AAAA,IACtE,GAEA,KAAK,mBAAmB,WAAW;AACjC,YAAMzd,IAAO,KAAK,OAAO,GAAG,CAAC;AAC7B,aAAOA,MAAS,MAAM,YAAY,KAAK,OAAO,cAAcA,CAAI,CAAC;AAAA,IACnE;AAAA,EAEN;AAAA,EAEA,IAAI,MAAM;AACN,WAAOoE;AAAAA,EACX;AACJ;AAEA8Y,GAAc,MAAMJ,EAAO,MAAM;AACjCI,GAAc,KAAK;AACnBA,GAAc,WAAW;AACzBA,GAAc,WAAW;AACzBA,GAAc,SAAS;AACvBA,GAAc,QAAQ;AACtBA,GAAc,QAAQ;AACtBA,GAAc,MAAM;AACpBA,GAAc,QAAQ;AACtBA,GAAc,SAAS;AACvBA,GAAc,eAAe;AAC7BA,GAAc,QAAQ;AACtBA,GAAc,QAAQ;AACtBA,GAAc,WAAW;AACzBA,GAAc,WAAW;AACzBA,GAAc,KAAK;AACnBA,GAAc,MAAM;AACpBA,GAAc,KAAK;AACnBA,GAAc,MAAM;AACpBA,GAAc,KAAK;AACnBA,GAAc,KAAK;AACnBA,GAAc,OAAO;AACrBA,GAAc,OAAO;AACrBA,GAAc,OAAO;AACrBA,GAAc,QAAQ;AACtBA,GAAc,OAAO;AACrBA,GAAc,MAAM;AACpBA,GAAc,MAAM;AACpBA,GAAc,MAAM;AACpBA,GAAc,MAAM;AACpBA,GAAc,OAAO;AACrBA,GAAc,QAAQ;AACtBA,GAAc,SAAS;AACvBA,GAAc,OAAO;AACrBA,GAAc,OAAO;AACrBA,GAAc,SAAS;AACvBA,GAAc,SAAS;AACvBA,GAAc,OAAO;AACrBA,GAAc,QAAQ;AACtBA,GAAc,MAAM;AACpBA,GAAc,KAAK;AACnBA,GAAc,OAAO;AACrBA,GAAc,QAAQ;AACtBA,GAAc,SAAS;AACvBA,GAAc,MAAM;AACpBA,GAAc,MAAM;AACpBA,GAAc,QAAQ;AACtBA,GAAc,MAAM;AACpBA,GAAc,WAAW;AACzBA,GAAc,UAAU;AACxBA,GAAc,MAAM;AACpBA,GAAc,KAAK;AACnBA,GAAc,MAAM;AACpBA,GAAc,QAAQ;AACtBA,GAAc,UAAU;AACxBA,GAAc,KAAK;AACnBA,GAAc,cAAc;AAC5BA,GAAc,iBAAiB;AAC/BA,GAAc,aAAa;AAC3BA,GAAc,MAAM;AACpBA,GAAc,KAAK;AACnBA,GAAc,MAAM;AACpBA,GAAc,QAAQ;AACtBA,GAAc,QAAQ;AACtBA,GAAc,cAAc;AAC5BA,GAAc,qBAAqB;AACnCA,GAAc,UAAU;AACxBA,GAAc,UAAU;AACxBA,GAAc,KAAK;AACnBA,GAAc,UAAU;AACxBA,GAAc,QAAQ;AACtBA,GAAc,UAAU;AACxBA,GAAc,oBAAoB;AAClCA,GAAc,YAAY;AAC1BA,GAAc,gBAAgB;AAC9BA,GAAc,YAAY;AAE1BA,GAAc,kBAAkB;AAChCA,GAAc,mBAAmB;AAEjCA,GAAc,QAAQ;AACtBA,GAAc,aAAa;AAG3BA,GAAc,UAAU,UAAU,SAASpU,GAAU7H,GAAW4H,GAAW;AAC1E,UAAQ5H,GAAS;AAAA,IAChB,KAAK;AACJ,aAAO,KAAK,cAAc6H,GAAUD,CAAS;AAAA,IAC9C,KAAK;AACJ,aAAO,KAAK,cAAcC,GAAUD,CAAS;AAAA,IAC9C,KAAK;AACJ,aAAO,KAAK,gBAAgBC,GAAUD,CAAS;AAAA,IAC7C;AACC,YAAM,iCAAiC5H;AAAA,EAC7C;AACA;AAEAic,GAAc,UAAU,gBAAgB,SAASpU,GAAUD,GAAW;AACrE,UAAOA,GAAS;AAAA,IACf,KAAK;AACJ,aAAO,KAAK,QAAO;AAAA,IACpB;AACC,YAAM,6BAA6BA;AAAA,EACtC;AACA;AAEAqU,GAAc,UAAU,gBAAgB,SAASpU,GAAUD,GAAW;AACrE,UAAOA,GAAS;AAAA,IACf,KAAK;AACJ,aAAO,CAAC,KAAK,iBAAgB;AAAA,IAC9B;AACC,YAAM,6BAA6BA;AAAA,EACtC;AACA;AAEAqU,GAAc,UAAU,kBAAkB,SAASpU,GAAUD,GAAW;AACvE,UAAOA,GAAS;AAAA,IACf,KAAK;AACJ,aAAO,KAAK,WAAW;AAAA,IACxB;AACC,YAAM,6BAA6BA;AAAA,EACtC;AACA;ACrxBe,MAAM6U,WAA+BZ,EAAO,KAAK,kBAAkB;AAAA;AAAA,EAGjF,UAAUzW,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,qBAAqBA,GAAK;AAAA,EAC1B;AAAA;AAAA,EAGA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAGA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,wBAAwBA,GAAK;AAAA,EAC7B;AAAA;AAAA,EAGA,uBAAuBA,GAAK;AAAA,EAC5B;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAGA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAGA,OAAOA,GAAK;AAAA,EACZ;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAGA,mBAAmBA,GAAK;AAAA,EACxB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAGA,QAAQA,GAAK;AAAA,EACb;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,UAAUA,GAAK;AAAA,EACf;AAAA;AAAA,EAGA,SAASA,GAAK;AAAA,EACd;AAAA;AAAA,EAIA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAGA,mBAAmBA,GAAK;AAAA,EACxB;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAGA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAGA,mBAAmBA,GAAK;AAAA,EACxB;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAGA,mBAAmBA,GAAK;AAAA,EACxB;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,uBAAuBA,GAAK;AAAA,EAC5B;AAAA;AAAA,EAGA,sBAAsBA,GAAK;AAAA,EAC3B;AAAA;AAAA,EAIA,wBAAwBA,GAAK;AAAA,EAC7B;AAAA;AAAA,EAGA,uBAAuBA,GAAK;AAAA,EAC5B;AAAA;AAAA,EAIA,kBAAkBA,GAAK;AAAA,EACvB;AAAA;AAAA,EAGA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,oBAAoBA,GAAK;AAAA,EACzB;AAAA;AAAA,EAGA,mBAAmBA,GAAK;AAAA,EACxB;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,iBAAiBA,GAAK;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAIA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAGA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAIA,0BAA0BA,GAAK;AAAA,EAC/B;AAAA;AAAA,EAGA,yBAAyBA,GAAK;AAAA,EAC9B;AAAA;AAAA,EAIA,gBAAgBA,GAAK;AAAA,EACrB;AAAA;AAAA,EAGA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,aAAaA,GAAK;AAAA,EAClB;AAAA;AAAA,EAGA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAIA,eAAeA,GAAK;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAIA,YAAYA,GAAK;AAAA,EACjB;AAAA;AAAA,EAGA,WAAWA,GAAK;AAAA,EAChB;AAAA;AAAA,EAIA,cAAcA,GAAK;AAAA,EACnB;AAAA;AAAA,EAGA,aAAaA,GAAK;AAAA,EAClB;AAID;AC7tBA,MAAM0W,KAAgB;AAAA,EAAC;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACtE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACrE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACpE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACpE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACrE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACvE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACrE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACrE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EACtE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EACvE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EACtE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACtE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACpE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAI;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EACvE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAG;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EACrE;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;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fM,GAAO,QAAQA;AAECA,GAAO;AACJA,GAAO;AACdA,GAAO;AACAA,GAAO;AACNA,GAAO;AAEZ3c,GAAO;AACRhN,GAAM;ACl0Fb,MAAM2qB,KAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,E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AA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAEQC,IAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,MACA;AAAA,IACN;AAAA,IACI,UAAU;AAAA,MACR,UAAU;AAAA,MACV,SAASzD;AAAA,MACT,SAASC;AAAA,MACT,UAAU;AAAA,QACR,GAAGqD;AAAA,QACH,GAAGC;AAAA;AAAA,QAEH;AAAA,QACA;AAAA,QACA,GAAGC;AAAA,QACH,GAAGC;AAAA,MACX;AAAA,IACA;AAAA,IACI,UAAU;AAAA,MACRN;AAAA;AAAA,MACA9I,EAAK,QAAO;AAAA;AAAA,MACZ+I;AAAA,MACAH;AAAA,MACAtN;AAAA,MACAiN;AAAA,MACAS;AAAA,MACAR;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAN;AAAA,IACN;AAAA,EACA;AACA;AC7YA,SAASgB,GAAKrJ,GAAM;AAClB,QAAM4F,IAAW,0BAGX0D,IAAiB,+BAMjBC,IAAM;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA;AAAA,MAER,EAAE,OAAO,oCAAmC;AAAA,MAC5C;AAAA;AAAA,QACE,OAAO;AAAA,MAAqC;AAAA,MAC9C;AAAA;AAAA,QACE,OAAO;AAAA,MAAqC;AAAA,IACpD;AAAA,EACA,GAEQC,IAAqB;AAAA,IACzB,WAAW;AAAA,IACX,UAAU;AAAA,MACR;AAAA;AAAA,QACE,OAAO;AAAA,QACP,KAAK;AAAA,MACb;AAAA,MACM;AAAA;AAAA,QACE,OAAO;AAAA,QACP,KAAK;AAAA,MACb;AAAA,IACA;AAAA,EACA,GAEQC,IAAsB;AAAA,IAC1B,WAAW;AAAA,IACX,WAAW;AAAA,IACX,OAAO;AAAA,IACP,KAAK;AAAA,IACL,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,MACnB;AAAA,IACA;AAAA,EACA,GAEQC,IAAS;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,QACP,KAAK;AAAA,MACb;AAAA,MACM,EAAE,OAAO,MAAK;AAAA,IACpB;AAAA,IACI,UAAU;AAAA,MACR1J,EAAK;AAAA,MACLwJ;AAAA,IACN;AAAA,EACA,GAIQG,IAAmB3J,EAAK,QAAQ0J,GAAQ,EAAE,UAAU;AAAA,IACxD;AAAA,MACE,OAAO;AAAA,MACP,KAAK;AAAA,MACL,UAAU;AAAA,QACR;AAAA,UACE,OAAO;AAAA,UACP,WAAW;AAAA,QACrB;AAAA,MACA;AAAA,IACA;AAAA,IACI;AAAA,MACE,OAAO;AAAA,MACP,KAAK;AAAA,IACX;AAAA,IACI,EAAE,OAAO,eAAc;AAAA,EAC3B,GAAK,GAMGE,IAAY;AAAA,IAChB,WAAW;AAAA,IACX,OAAO,QANO,+BACA,2CACI,iBACJ,gDAG6C;AAAA,EAC/D,GAEQC,IAAkB;AAAA,IACtB,KAAK;AAAA,IACL,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,UAAUjE;AAAA,IACV,WAAW;AAAA,EACf,GACQkE,IAAS;AAAA,IACb,OAAO;AAAA,IACP,KAAK;AAAA,IACL,UAAU,CAAED,CAAe;AAAA,IAC3B,SAAS;AAAA,IACT,WAAW;AAAA,EACf,GACQE,IAAQ;AAAA,IACZ,OAAO;AAAA,IACP,KAAK;AAAA,IACL,UAAU,CAAEF,CAAe;AAAA,IAC3B,SAAS;AAAA,IACT,WAAW;AAAA,EACf,GAEQzN,IAAQ;AAAA,IACZmN;AAAA,IACA;AAAA,MACE,WAAW;AAAA,MACX,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,IACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKE,WAAW;AAAA,MACX,OAAO;AAAA,IACb;AAAA,IACI;AAAA;AAAA,MACE,OAAO;AAAA,MACP,KAAK;AAAA,MACL,aAAa;AAAA,MACb,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,WAAW;AAAA,IACjB;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,WAAWD;AAAA,IACxB;AAAA;AAAA,IAEI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,OAAOA,IAAiB;AAAA,IACrC;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAMA;AAAA,IACnB;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,OAAOA;AAAA,IACpB;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAMtJ,EAAK,sBAAsB;AAAA,IAC9C;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA,MACX,OAAO,QAAQA,EAAK,sBAAsB;AAAA,IAChD;AAAA,IACI;AAAA;AAAA,MACE,WAAW;AAAA;AAAA,MAEX,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,IACIA,EAAK;AAAA,IACL;AAAA,MACE,eAAe4F;AAAA,MACf,UAAU,EAAE,SAASA,EAAQ;AAAA,IACnC;AAAA,IACIgE;AAAA;AAAA;AAAA,IAGA;AAAA,MACE,WAAW;AAAA,MACX,OAAO5J,EAAK,cAAc;AAAA,MAC1B,WAAW;AAAA,IACjB;AAAA,IACI8J;AAAA,IACAC;AAAA,IACAN;AAAA,IACAC;AAAA,EACJ,GAEQM,IAAc,CAAE,GAAG5N,CAAK;AAC9B,SAAA4N,EAAY,IAAG,GACfA,EAAY,KAAKL,CAAgB,GACjCE,EAAgB,WAAWG,GAEpB;AAAA,IACL,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,SAAS,CAAE,KAAK;AAAA,IAChB,UAAU5N;AAAA,EACd;AACA;AC9LA6N,GAAY,iBAAiB,aAAarG,EAAS;AACnDqG,GAAY,iBAAiB,cAAc/D,EAAU;AACrD+D,GAAY,iBAAiB,QAAQ7B,EAAI;AACzC6B,GAAY,iBAAiB,QAAQZ,EAAI;AAMzC,MAAMt5D,KAAW;AAAA,EACf,SAASxQ,GAAc;AAIrB,UAAM2qE,IAFJ,kEAE4B,KAAK3qE,CAAI;AACvC,WAAI2qE,GAAO,WAAW,IACb;AAAA;AAAA,qCAEwBA,EAAM,CAAC,EAAE,YAAA,CAAa,KAAKA,EAAM,CAAC,CAAC;AAAA,oCACpCA,EAAM,CAAC,CAAC;AAAA;AAAA,YAIjC,SAAS3qE,CAAI;AAAA,EACtB;AACF;AAEA+Q,GAAO,WAAW;AAAA,EAChB,WAAW,SAAU/Q,GAAMi/D,GAAU;AACnC,QAAI,CAACA;AACH,aAAOyL,GAAY,cAAc1qE,CAAI,EAAE;AAEzC,UAAM4qE,IAAgBF,GAAY,YAAYzL,CAAQ,IAClDA,IACA;AACJ,WAAOyL,GAAY,UAAU1qE,GAAM,EAAE,UAAU4qE,EAAA,CAAe,EAAE;AAAA,EAClE;AAAA,EACA,QAAQ;AACV,CAAC;AAED75D,GAAO,IAAI,EAAE,UAAAP,IAAU;AAEhB,MAAMgE,KAAU,CAACloC,MAIlB;AACJ,QAAMu+F,IAAgB5Y,GAAU;AAAA,IAC7B3lF,EAAM,YAAY,QAAQykC,GAAO,MAAMzkC,EAAM,YAAY,IAAI,KAC7DA,EAAM,WAAWykC,GAAO,MAAMzkC,EAAM,OAAO;AAAA,EAAA;AAG9C,SACEqpD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW7C;AAAA,QACT;AAAA,QACAxmD,EAAM;AAAA,MAAA;AAAA,MAGR,UAAAqpD,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,yBAAyB,EAAE,QAAQk1C,EAAA;AAAA,UACnC,WAAW/3C,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,UACjD,OAAOA,EAAM,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAAA;AAGP,GCnFaw+F,KAAY,CAACx+F,MACAqG,GAAasnC,EAAmB,IAItD0b,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,uFACZ,YAAM,QACT,IAJ2B,MCFlBo1C,KAAiB,CAACz+F,MAQ3B2pD,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWnD;AAAA,MACT;AAAA,MACAxmD,EAAM;AAAA,IAAA;AAAA,IAER,OAAOA,EAAM;AAAA,IAEb,UAAA;AAAA,MAAAqpD,gBAAAA,EAAAA,IAAC,SAAA,EAAM,WAAU,QAAQ,UAAArpD,EAAM,OAAM;AAAA,MACpCA,EAAM,YACLqpD,gBAAAA,EAAAA;AAAAA,QAACD;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAASppD,EAAM;AAAA,QAAA;AAAA,MAAA,IAGjBqpD,gBAAAA,EAAAA;AAAAA,QAACD;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW5C;AAAA,YACT;AAAA,YACAxmD,EAAM,aAAa;AAAA,UAAA;AAAA,UAErB,SAASA,EAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACjB;AAAA,EAAA;AAAA,GCrBF0+F,KAAgB,2BAETC,KAAiB,CAAC3+F,MAA8B;AAC3D,QAAMwV,IAAOnP,GAAainC,EAAQ,GAC5B,CAAC5Z,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClD0wD,IAAuBv4F,GAAa8nC,EAAwB,GAC5D8vC,IAA0B/2E,GAAWinC,EAAwB,GAC7D0wD,IAAY7+F,EAAM,WAAW,iBAAA,KAAsB,IACnD8pD,IAAat0C,MAAS42B,GAAW,SACjC,CAACnhC,GAAOqmB,CAAG,IAAI;AAAA,IACnBtxB,EAAM,WAAW,OAAO;AAAA,IACxBA,EAAM,WAAW,MAAM;AAAA,EAAA,GAEnB8+F,IACJF,GAAsB,UAAU3zF,KAAS2zF,GAAsB,QAAQttE,IACnEstE,EAAqB,QACrB,QAEA3yC,IAAa,CAACb,MAAoB;AAEtC,QAAIA,MAAY,MAAMA,MAAYyzC;AAChC;AAGF,QAAI5mB,IAAgB7sB;AAQpB,QALIosB,GAAiB,KAAKS,CAAa,KAAK,CAACymB,GAAc,KAAKzmB,CAAa,MAC3EA,IAAgBA,EAAc,QAAQ,MAAM,EAAE,GAC9CA,IAAgB,IAAIA,CAAa,MAG/BhtE,MAAU,MAAMqmB,MAAQ,IAAI;AAC9B,cAAQ,KAAK,0BAA0B;AACvC;AAAA,IACF;AACA,UAAM86B,IAAU14B,EAAK,MAAM,GAAGzoB,CAAK,IAAIgtE,IAAgBvkD,EAAK,MAAMpC,IAAM,CAAC;AACzE,IAAAq6B,EAAQS,CAAO,GACfR,EAAgBQ,CAAO,GACnB0yC,KACF7gB,EAAwB,IAAI;AAAA,EAEhC;AAEA,SACEt0B,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,IAAA7pB,gBAAAA,EAAAA,IAAC,WAAM,UAAA,IAAA,CAAC;AAAA,IACRA,gBAAAA,EAAAA;AAAAA,MAACQ;AAAA,MAAA;AAAA,QACC,MAAMvjB,GAAmBu4D,CAAS;AAAA,QAClC,YAAA/0C;AAAA,QACA,WAAU;AAAA,QACV,QAAQmC;AAAA,QACR,OAAM;AAAA,QACN,eAAe6yC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjBz1C,gBAAAA,EAAAA,IAAC,WAAM,UAAA,IAAA,CAAC;AAAA,EAAA,GACV;AAEJ,GC7Da01C,KAAe,CAAC/+F,MAOvB;AACJ,QAAM;AAAA,IACJ,WAAA6gF;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GAEzCorC,IAAOprC,EAAM,QAAQ,KAAA,GACrBg/F,IAAc5zD,GAAM,WAAA,GAAc,MAAA,GAClC3yB,IAAY2yB,GAAM,QAAA,GAAW,UAAA;AAEnC,SACEie,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO2M;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,gBAAA,CAAgB;AAAA,YAC3BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACAqpD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW7C,GAAG,EAAE,QAAQq6B,EAAA,CAAW,GACtC,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAAC,SAAI,WAAU,sBACb,UAAAA,gBAAAA,EAAAA,IAACs1C,IAAA,EAAe,WAAAlmF,GAAsB,GACxC;AAAA,UACA4wC,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAASge;AAAA,cACT,QAAQ,GAAGh/F,EAAM,MAAM;AAAA,cACvB,aAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GChEak/F,KAAc,CAACl/F,MAOtB;AACJ,QAAM0R,IAAM1R,EAAM,QAAQ,IAAA,GACpB8pC,IAAUp4B,GAAK,QAAA,GACfm3B,IAAen3B,GAAK,YAAA,GACpBq4B,IAAYr4B,GAAK,UAAA,GAAa,WAAA,GAAc,MAAA,GAC5CytF,IAAiBztF,GAAK,QAAA,GAAW,WAAA,GAAc,MAAA,GAC/C0tF,IAAiBpkC,EAAAA,QAAQ,MAAM;AACnC,UAAM5uD,IAAM,CAACuzE,GAAYwf,CAAc,CAAC;AACxC,WAAIztF,GAAK,iBACPA,EAAI,YAAA,EAAc,QAAQ,CAAC8vB,MAAe;AACxC,MAAAp1B,EAAI,KAAKA,EAAIA,EAAI,SAAS,CAAC,IAAIuzE,GAAY0f,EAAmB79D,CAAK,CAAC,CAAC;AAAA,IACvE,CAAC,GAEIp1B;AAAA,EACT,GAAG,CAACsF,GAAKytF,CAAc,CAAC;AAExB,WAASG,EAAyB99D,GAAY;AAC5C,WAAOA,GAAO,QAAA,GAAW,UAAA;AAAA,EAC3B;AAEA,WAAS69D,EAAmB79D,GAAY;AACtC,WAAOA,GAAO,WAAA,GAAc,MAAA;AAAA,EAC9B;AAEA,QAAM;AAAA,IACJ,WAAAq/C;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAp3C;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM;AAE/C,SACE2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuBA,EAAM;AAAA,MAC7B,2BAAyBA,EAAM,YAAY,cAAc;AAAA,MACzD,4BAA0BA,EAAM,YAAY,cAAc;AAAA,MAC1D,WAAWwmD;AAAA,QACT;AAAA,QACAxmD,EAAM;AAAA,MAAA;AAAA,MAER,OAAOihF;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,eAAA,CAAe;AAAA,YAC1BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEA2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAWk3B,IAAY,WAAW,SACrC,UAAA;AAAA,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,sBACb,UAAAA,gBAAAA,EAAAA,IAACs1C,MAAe,WAAWW,EAAyBx1D,CAAO,EAAA,CAAG,EAAA,CAChE;AAAA,YACCq1D,KACC91C,gBAAAA,EAAAA;AAAAA,cAAC41C;AAAA,cAAA;AAAA,gBACC,QAAQp1D;AAAA,gBACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,gBACpC,SAASme;AAAA,gBACT,QAAQ,GAAGn/F,EAAM,MAAM;AAAA,gBACvB,aAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,GAEJ;AAAA,UACC6oC,EAAa,IAAI,CAAC02D,GAAkBzuG,MACnCu4D,gBAAAA,EAAAA,IAAC6pB,EAAAA,UAAA,EACC,UAAAvpB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,YAAAA,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,cAAAN,gBAAAA,EAAAA,IAAC,SAAA,EAAM,WAAU,kBAAiB,UAAA,WAAO;AAAA,cACzCA,gBAAAA,EAAAA;AAAAA,gBAACs1C;AAAA,gBAAA;AAAA,kBACC,WAAWW,EAAyBC,CAAW;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjD,EAAA,GAJuCzuG,IAAQ,GAKjD;AAAA,YACAu4D,gBAAAA,EAAAA;AAAAA,cAAC41C;AAAA,cAAA;AAAA,gBACC,QAAQp1D;AAAA,gBACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,gBACpC,SAASqe,EAAmBE,CAAW;AAAA,gBAEvC,QAAQ,GAAGv/F,EAAM,MAAM,IAAIo/F,EAAetuG,CAAK,IAAI,CAAC;AAAA,gBACpD,aAAW;AAAA,cAAA;AAAA,cAFNA,IAAQ;AAAA,YAAA;AAAA,UAGf,EAAA,GAduDA,IAAQ,GAejE,EAAA,GAhBaA,CAiBf,CACD;AAAA,UACAi5C,KACCsf,gBAAAA,EAAAA,IAAA6pB,EAAAA,UAAA,EACE,UAAAvpB,gBAAAA,OAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,sBACb,UAAAA,gBAAAA,EAAAA,IAAC,WAAM,WAAU,OAAM,oBAAM,EAAA,CAC/B;AAAA,YACAA,gBAAAA,EAAAA;AAAAA,cAAC41C;AAAA,cAAA;AAAA,gBACC,QAAQp1D;AAAA,gBACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,gBACpC,SAASj3C;AAAA,gBACT,QAAQ,GAAG/pC,EAAM,MAAM,IACrBo/F,EAAeA,EAAe,SAAS,CAAC,IAAI,CAC9C;AAAA,gBACA,aAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF,EAAA,CACF;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GChIaI,KAAc,CAACx/F,MAOtB;AACJ,QAAM;AAAA,IACJ,WAAA6gF;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GAEzCqrC,IAAMrrC,EAAM,QAAQ,IAAA,GACpByY,IAAY4yB,GAAK,QAAA,GAAW,UAAA;AAElC,SACEge,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO2M;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,eAAA,CAAe;AAAA,YAC1BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACAqpD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW7C,GAAG,EAAE,QAAQq6B,EAAA,CAAW,GACtC,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,UAAAlxC,2BACE,OAAA,EAAI,WAAU,sBACb,UAAA4wC,gBAAAA,EAAAA,IAACs1C,IAAA,EAAe,WAAAlmF,GAAsB,EAAA,CACxC;AAAA,UAED,CAAC,CAAC4yB,EAAI,WAAA,KACLge,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,WAAU;AAAA,cACV,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAAS31C,EAAI,WAAA,EAAa,MAAA;AAAA,cAC1B,QAAQ,GAAGrrC,EAAM,MAAM;AAAA,cACvB,aAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CAEJ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GCvEay/F,KAAc,CAACz/F,MAOtB;AACJ,QAAMy8B,IAAMz8B,EAAM,QAAQ,IAAA,GACpByY,IAAYgkB,GAAK,QAAA,GAAW,UAAA,GAC5B;AAAA,IACJ,WAAAokD;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM;AAC/C,SACE2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAW9tB;AAAA,QACT;AAAA,QACAxmD,EAAM;AAAA,MAAA;AAAA,MAER,OAAOihF;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,+EACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,eAAA,CAAe;AAAA,YAC1BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,UAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UAC5C,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACAqpD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAW7C,GAAG,EAAE,QAAQq6B,EAAA,CAAW,GACtC,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,UAAAlxC,2BACE,OAAA,EAAI,WAAU,sBACb,UAAA4wC,gBAAAA,EAAAA,IAACs1C,IAAA,EAAe,WAAAlmF,GAAsB,EAAA,CACxC;AAAA,UAEF4wC,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAASvkD,GAAK,WAAA,GAAc,MAAA;AAAA,cAC5B,QAAQ,GAAGz8B,EAAM,MAAM;AAAA,cACvB,aAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GCtEM0/F,KAAa,CAAC90F,MAAcA,EAAE,OAAO,CAAC,EAAE,gBAAgBA,EAAE,MAAM,CAAC,GAK1D+0F,KAAkB,CAAC3/F,MAO1B;AACJ,QAAM;AAAA,IACJ,WAAA6gF;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GACzCsrC,IAAUtrC,EAAM,QAAQ,QAAA,GACxB4/F,IAAat0D,GAAS,WAAA,GACtBn0C,IAAOm0C,GAAS,KAAA,GAAQ,iBAAA,GACxBu0D,IAAiBD,GAAY,MAAA,GAE7B7rF,IAAQ5c,KAAQuoG,GAAW,SAAS;AAE1C,SACEr2C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO2M;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,mBAAA,CAAmB;AAAA,YAC9BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAA1qF;AAAA,gBACA,WAAA8sE;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEAqpD,gBAAAA,EAAAA,IAAC,SAAI,WAAWw3B,IAAY,WAAW,IACrC,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0BAAA,CAA0B;AAAA,UACxCw2C,KACCx2C,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAAS6e;AAAA,cACT,QAAQ7/F,EAAM;AAAA,YAAA;AAAA,UAAA;AAAA,QAChB,EAAA,CAEJ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GCpEa8/F,KAAmB,CAAC9/F,MAO3B;AACJ,QAAM;AAAA,IACJ,WAAA6gF;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GAEzCurC,IAAWvrC,EAAM,QAAQ,SAAA,GACzB4/F,IAAar0D,GAAU,WAAA,GACvB9yB,IAAY8yB,GAAU,QAAA,GAAW,UAAA,GACjCw0D,IAAkBH,GAAY,MAAA;AAEpC,SACEv2C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO2M;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,oBAAA,CAAoB;AAAA,YAC/BC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAEAqpD,gBAAAA,EAAAA,IAAC,SAAI,WAAWw3B,IAAY,WAAW,IACrC,UAAAl3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,UAAAlxC,2BACE,OAAA,EAAI,WAAU,sBACb,UAAA4wC,gBAAAA,EAAAA,IAACs1C,IAAA,EAAe,WAAAlmF,GAAsB,EAAA,CACxC;AAAA,UAEDsnF,KACC12C,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAAS+e;AAAA,cACT,QAAQ,GAAG//F,EAAM,MAAM;AAAA,cACvB,aAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CAEJ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GCvEaggG,KAA0B,CAAChgG,MAOlC;AACJ,QAAM;AAAA,IACJ,WAAA6gF;AAAA,IACA,gBAAAE;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,QAAA3M;AAAA,IACA,iBAAAzqC;AAAA,EAAA,IACE+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GAEzCigG,IAAY,CAACluF,MACVA,GAAK,WAAA,GAAc,WAAA,GAAc,iBAAA,GAEpCmuF,IAAoB,CAACnuF,MAClBA,GAAK,WAAA,GAAc,MAAA,GAGtB04B,IAAMzqC,EAAM,QAAQ,IAAA,GACpBmgG,IAAkB11D,GAAK,SAAA,GAAY,WAAA,GAAc,MAAA,GACjDG,IAAeH,GAAK,aAAA,GAAgB,WAAA,GAAc,MAAA,GAClD20D,IAAiBpkC,EAAAA,QAAQ,MAAM;AACnC,UAAM5uD,IAAM,CAACuzE,GAAYwgB,CAAe,CAAC;AACzC,WAAI11D,GAAK,gBACPA,EAAI,WAAA,EAAa,QAAQ,CAACjJ,MAAe;AACvC,MAAAp1B,EAAI,KAAKA,EAAIA,EAAI,SAAS,CAAC,IAAIuzE,GAAYugB,EAAkB1+D,CAAK,CAAC,CAAC;AAAA,IACtE,CAAC,GAEIp1B;AAAA,EACT,GAAG,CAACq+B,GAAK01D,CAAe,CAAC;AAEzB,SACE92C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,yBAAuB6pC;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO2M;AAAA,MAEN,UAAA;AAAA,QAAAjhF,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,SAASloC,EAAM,SAAS,YAAYA,EAAM,WAAA,CAAY;AAAA,QAEjE2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yFACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,mCACb,UAAA2pD,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,iCACf,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,qBAAA,CAAqB;AAAA,YAChCC,gBAAAA,EAAAA;AAAAA,cAACo1C;AAAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAA5d;AAAA,gBACA,SAASE;AAAA,gBACT,OAAO/gF,EAAM,YAAY;AAAA,gBACzB,WAAWwmD,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACnD,EAAA,CACF,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACA2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAWk3B,IAAY,WAAW,IACrC,UAAA;AAAA,UAAAx3B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,WACZ,UAAA82C,KACC92C,gBAAAA,EAAAA;AAAAA,YAAC41C;AAAA,YAAA;AAAA,cACC,QAAQp1D;AAAA,cACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,cACpC,SAASmf;AAAA,cACT,QAAQ,GAAGngG,EAAM,MAAM;AAAA,cACvB,aAAW;AAAA,YAAA;AAAA,UAAA,GAGjB;AAAA,UACCyqC,EAAI,WAAA,EAAa,IAAI,CAACE,GAAiB75C,MACtC64D,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,YAAAA,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBAGV,UAAA;AAAA,kBAAAN,gBAAAA,EAAAA,IAAC,SAAA,EAAM,WAAU,qBAAoB,UAAA,SAAK;AAAA,wCACzC,SAAA,EAAM,WAAU,iBAAiB,UAAA42C,EAAUt1D,CAAU,EAAA,CAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,cAHnD75C,IAAQ;AAAA,YAAA;AAAA,YAKfu4D,gBAAAA,EAAAA;AAAAA,cAAC41C;AAAA,cAAA;AAAA,gBACC,QAAQp1D;AAAA,gBACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,gBACpC,SAASkf,EAAkBv1D,CAAU;AAAA,gBAErC,QAAQ,GAAG3qC,EAAM,MAAM,IAAIo/F,EAAetuG,CAAK,IAAI,CAAC;AAAA,gBACpD,aAAW;AAAA,cAAA;AAAA,cAFNA,IAAQ;AAAA,YAAA;AAAA,UAGf,KAfuDA,IAAQ,GAgBjE,CACD;AAAA,UACA85C,KACC+e,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0CACb,UAAAA,gBAAAA,EAAAA,IAAC,WAAM,WAAU,8DAA6D,qBAE9E,EAAA,CACF;AAAA,YACAA,gBAAAA,EAAAA;AAAAA,cAAC41C;AAAA,cAAA;AAAA,gBACC,QAAQp1D;AAAA,gBACR,OAAO,EAAE,aAAa,GAAGm3C,CAAW,KAAA;AAAA,gBACpC,SAASp2C;AAAA,gBACT,QAAQ,GAAG5qC,EAAM,MAAM,IACrBo/F,EAAeA,EAAe,SAAS,CAAC,IAAI,CAC9C;AAAA,gBACA,aAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACb,EAAA,CACF;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GC5GagB,KAAqB,CAAC;AAAA,EACjC,MAAAl3F;AAAA,EACA,UAAAb;AAAA,EACA,eAAAg4F;AAAA,EACA,WAAA7uD;AAAA,EACA,OAAA/S,IAAQ;AACV,MAA+B;AAC7B,QAAMjpB,IAAOnP,GAAainC,EAAQ,GAC5B,CAAC5Z,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClD0wD,IAAuBv4F,GAAa8nC,EAAwB,GAC5D8vC,IAA0B/2E,GAAWinC,EAAwB,GAC7DmyD,IAAqBp5F,GAAW+mC,EAAmB,GACnD6b,IAAat0C,MAAS42B,GAAW,QACjC1Z,IAAgB4T,GAAmB9S,GAAWtqB,KAAQ,EAAE,CAAC,GACzD41F,IACJF,MAAyB,QACzBA,EAAqB,UAAUv2F,EAAS,CAAC,KACzCu2F,EAAqB,QAAQv2F,EAAS,CAAC,IACnCu2F,EAAqB,QACrB,QAEA3yC,IAAa,CAACb,MAAoB;AAEtC,QAAIA,MAAY,MAAMA,MAAY14B;AAChC;AAIF,UAAM6tE,IAAiBF,IAAgBj1C,CAAO,KAAKA,GAE7C,CAACngD,GAAOqmB,CAAG,IAAIjpB;AACrB,QAAI4C,KAAS,QAAQqmB,KAAO,QAAQrmB,MAAU,MAAMqmB,MAAQ,IAAI;AAC9D,cAAQ,KAAK,0BAA0B;AACvC;AAAA,IACF;AAEA,UAAM86B,IAAU14B,EAAK,MAAM,GAAGzoB,CAAK,IAAIs1F,IAAiB7sE,EAAK,MAAMpC,IAAM,CAAC;AAC1E,IAAAq6B,EAAQS,CAAO,GACfR,EAAgBQ,CAAO,GACvBk0C,EAAmB;AAAA,MACjB,OAAAr1F;AAAA,MACA,KAAKA,IAAQs1F,EAAe,SAAS;AAAA,MACrC,OAAO,KAAK,IAAA;AAAA,IAAI,CACjB,GACGzB,KACF7gB,EAAwB,IAAI;AAAA,EAEhC;AAEA,SACE50B,gBAAAA,EAAAA;AAAAA,IAACQ;AAAA,IAAA;AAAA,MACC,MAAMn3B;AAAA,MACN,YAAAo3B;AAAA,MACA,WAAWtD,GAAGhV,CAAS;AAAA,MACvB,QAAQya;AAAA,MACR,OAAAxtB;AAAA,MACA,eAAeqgE;AAAA,IAAA;AAAA,EAAA;AAGrB,GC/Ea0B,KAAe,CAACxgG,MAOzBqpD,gBAAAA,EAAAA;AAAAA,EAAC+2C;AAAA,EAAA;AAAA,IACC,MAAMpgG,EAAM;AAAA,IACZ,UAAUA,EAAM;AAAA,IAChB,eAAeA,EAAM;AAAA,IACrB,WAAWwmD,GAAG,cAAcxmD,EAAM,SAAS;AAAA,EAAA;AAAA,GCPpCygG,KAAc,CAACzgG,MAOtB;AACJ,QAAM,EAAE,aAAAghF,GAAa,eAAAC,GAAe,QAAA3M,GAAQ,iBAAAzqC,EAAA,IAC1C+2C,GAAgB5gF,EAAM,SAASA,EAAM,MAAM,GACvCkjC,IAAUljC,EAAM,QAAQ,IAAA,EAAM,QAAA,GAC9B0gG,IAAex9D,GAAS,iBAAA,GACxBy9D,IAAoC;AAAA,IACxCz9D,GAAS,MAAM;AAAA,IACfA,GAAS,KAAK;AAAA,EAAA;AAGhB,SACEmmB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWrpD,EAAM,WACpB,UAAA2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa9f;AAAA,MACb,yBAAuBA;AAAA,MACvB,2BAAyByqC,EAAO;AAAA,MAChC,4BAA0BA,EAAO;AAAA,MACjC,WAAU;AAAA,MACV,OAAO,EAAE,GAAG2M,GAAe,aAAa,GAAGD,CAAW,KAAA;AAAA,MAEtD,UAAA;AAAA,QAAAr3B,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sGACb,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,UAChCA,EAAM,YAAY,QACjBqpD,gBAAAA,EAAAA;AAAAA,YAACnhB;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAASloC,EAAM;AAAA,cACf,YAAYA,EAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAGtB2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,8DACb,UAAA;AAAA,YAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,kCAAA,CAAkC;AAAA,YACjDA,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0HACb,UAAAA,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,kDAAkDrpD,EAAM,YAAY,qBAAqB,EAAE;AAAA,gBACtG,OAAOA,EAAM,YAAY;AAAA,gBAC1B,UAAA;AAAA,cAAA;AAAA,YAAA,EAED,CACF;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACAqpD,gBAAAA,EAAAA;AAAAA,UAACm3C;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,WAAWE;AAAA,YACX,eAAeC;AAAA,YACf,eAAelpB;AAAA,UAAA;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ,GC1CMmpB,KAAa,+BACbC,KAAW,6BACXC,KAAa,+BACbC,KAAW,6BAEJC,KAAc,CAAC;AAAA,EAC1B,MAAArxG,IAAO;AAAA,EACP,WAAAo2C;AAAA,EACA,WAAAyL;AAAA,EACA,OAAAJ;AAAA,EACA,QAAAyuC;AAAA,EACA,KAAAvb;AAAA,EACA,SAAA28B;AAAA,EACA,YAAAC;AAAA,EACA,iBAAiBC;AAAA,EACjB,OAAA1iE;AAAA,EACA,UAAA78B;AACF,MAAwB;AACtB,QAAMw/F,IAAWzxG,MAAS,cAAcA,MAAS,UAC3C0xG,IAAW1xG,MAAS,QACpB2xG,IAAYh9B,IACb+8B,IAAWP,KAAaC,KACxBM,IAAWT,KAAaC;AAE7B,SACEl3C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnD;AAAA,QACT;AAAA,QACAhV;AAAA,MAAA;AAAA,MAEF,OAAAJ;AAAA,MACA,SAAA6vD;AAAA,MACA,WAAWA,IAAU,CAAC/mG,MAAM;AAC1B,SAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACF+mG,EAAA;AAAA,MAEJ,IAAI;AAAA,MACJ,UAAUA,IAAU,IAAI;AAAA,MACxB,MAAMA,IAAU,WAAW;AAAA,MAC3B,KAAKC;AAAA,MACL,iBAAeC;AAAA,MACf,OAAA1iE;AAAA,MAGA,UAAA;AAAA,QAAA4qB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,QAAO;AAAA,YACP,qBAAoB;AAAA,YACpB,OAAO,EAAE,UAAU,WAAW,QAAQ,OAAA;AAAA,YAEtC,UAAAA,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAIib,IAAM,SAAS;AAAA,gBACnB,IAAG;AAAA,gBACH,IAAIA,IAAM,MAAM;AAAA,gBAChB,IAAG;AAAA,gBACH,QAAO;AAAA,gBACP,aAAY;AAAA,gBACZ,iBAAiB88B,IAAW,QAAQ;AAAA,gBACpC,gBAAe;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,QAGF/3C,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW7C;AAAA,cACT;AAAA,cACA8d,IAAM,WAAW;AAAA,YAAA;AAAA,YAEnB,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,OAAO,EAAE,UAAU,WAAW,QAAQ,OAAA;AAAA,YAEtC,UAAAjb,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,GAAGi4C;AAAA,gBACH,QAAO;AAAA,gBACP,eAAc;AAAA,gBACd,aAAY;AAAA,gBACZ,MAAMD,IAAW,iBAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACpC;AAAA,QAAA;AAAA,QAGFh4C,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,CAACib,IAAM,gBAAgB,cAAc,GAAG,MAAA;AAAA,YAEjD,UAAAjb,gBAAAA,EAAAA,IAAC,SAAI,WAAU,mCACb,gCAAC,OAAA,EAAI,OAAOtjB,GACT,UAAAnkC,EAAA,CACH,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFynD,gBAAAA,MAACm1C,MAAU,QAAA3e,EAAA,CAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGjC,GCxGa0hB,KAAU,CAACvhG,MAUlB;AACJ,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,gBAAAuhG;AAAA,IACA,KAAAl9B;AAAA,IACA,MAAA30E,IAAO;AAAA,IACP,WAAAo2C;AAAA,IACA,WAAAyL;AAAA,IACA,OAAAJ;AAAA,IACA,QAAAyuC;AAAA,IACA,UAAAj+E;AAAA,EAAA,IACE5B,GACEwV,IAAOnP,GAAainC,EAAQ,GAC5Bm0D,IAAiBp7F,GAAa2nC,EAAkB,GAChD0zD,IAAkBr7F,GAAa4nC,EAAmB,GAClDqyD,IAAqBp5F,GAAW+mC,EAAmB,GACnDizD,IAAah8F,EAAAA,OAAuB,IAAI,GACxCy8F,IAAWnsF,MAAS42B,GAAW,QAC/B,CAACw1D,GAAYC,CAAQ,IAAIL,KAAkB;AAAA,IAC/CvhG,GAAS,OAAO;AAAA,IAChBA,GAAS,MAAM;AAAA,EAAA,GAEX6hG,IACJJ,GAAiB,UAAUE,KAAcF,GAAiB,QAAQG,GAE9DZ,IAAU,MAAM;AACpB,IAAI,CAACU,KAAY,CAACT,EAAW,YAC7BZ;AAAA,MACEsB,KAAc,QAAQC,KAAY,OAC9B,EAAE,OAAOD,GAAY,KAAKC,GAAU,OAAO,KAAK,IAAA,MAChD;AAAA,IAAA,GAENJ,EAAexhG,GAASihG,EAAW,OAAO;AAAA,EAC5C;AAEA,SACE73C,gBAAAA,EAAAA;AAAAA,IAAC23C;AAAA,IAAA;AAAA,MACC,MAAArxG;AAAA,MACA,WAAAo2C;AAAA,MACA,WAAWygB,GAAG,EAAC,kBAAkBm7C,EAAA,GAAWnwD,CAAS;AAAA,MACrD,OAAAJ;AAAA,MACA,QAAAyuC;AAAA,MACA,KAAAvb;AAAA,MACA,SAAA28B;AAAA,MACA,YAAAC;AAAA,MACA,iBAAeY,IAAa,SAAS;AAAA,MACrC,OACGH,IAEGG,IACA,0CACA,sCAHA;AAAA,MAKN,UAAAlgG;AAAA,IAAA;AAAA,EAAA;AAGN,GC5Ea68F,KAAiB,CAACz+F,MAK3B2pD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,wCACb,UAAA;AAAA,EAAAA,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,WAAWnD,GAAG,kCAAkC;AAAA,QAC9C,QAAQxmD,EAAM;AAAA,QACd,UAAU,CAACA,EAAM;AAAA,MAAA,CAClB;AAAA,MACD,SAASA,EAAM;AAAA,MACf,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MAEf,UAAA;AAAA,QAAAqpD,gBAAAA,EAAAA,IAAC,KAAA,EAAE,IAAG,qBAAoB,aAAY,KAAI;AAAA,QAC1CA,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,eAAc;AAAA,YACd,gBAAe;AAAA,UAAA;AAAA,QAAA;AAAA,QAEjBM,gBAAAA,EAAAA,KAAC,KAAA,EAAE,IAAG,uBACJ,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAAC,QAAA,EAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,UACrCA,gBAAAA,EAAAA,IAAC,YAAA,EAAS,QAAO,iBAAA,CAAiB;AAAA,UAClCA,gBAAAA,EAAAA,IAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,UACtCA,gBAAAA,EAAAA,IAAC,YAAA,EAAS,QAAO,mBAAA,CAAmB;AAAA,QAAA,EAAA,CACtC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAAA,EAEFM,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,WAAWnD,GAAG,kBAAkB,EAAE,QAAQ,CAACxmD,EAAM,WAAW;AAAA,MAC5D,SAASA,EAAM;AAAA,MACf,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MAEf,UAAA;AAAA,QAAAqpD,gBAAAA,EAAAA,IAAC,KAAA,EAAE,IAAG,qBAAoB,aAAY,KAAI;AAAA,QAC1CA,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAG;AAAA,YACH,eAAc;AAAA,YACd,gBAAe;AAAA,UAAA;AAAA,QAAA;AAAA,QAEjBM,gBAAAA,EAAAA,KAAC,KAAA,EAAE,IAAG,uBACJ,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAAC,QAAA,EAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,IAAA,CAAI;AAAA,UACpCA,gBAAAA,EAAAA,IAAC,YAAA,EAAS,QAAO,gBAAA,CAAgB;AAAA,UACjCA,gBAAAA,EAAAA,IAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,UACtCA,gBAAAA,EAAAA,IAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,UACtCA,gBAAAA,EAAAA,IAAC,YAAA,EAAS,QAAO,mBAAA,CAAmB;AAAA,QAAA,EAAA,CACtC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACF,GACF,GCrDS04C,KAAwB,CAAC;AAAA,EACpC,UAAArxE;AAAA,EACA,MAAA/gC;AAAA,EACA,kBAAAohC;AAAA,EACA,cAAAmC;AAAA,EACA,eAAAmtE;AAAA,EACA,WAAA7uD;AACF,6BAEK,QAAA,EAAK,WAAWgV,GAAG,2BAA2BhV,CAAS,GACtD,UAAA;AAAA,EAAA6X,gBAAAA,EAAAA;AAAAA,IAAC+2C;AAAA,IAAA;AAAA,MACC,MAAM1vE;AAAA,MACN,UAAUK;AAAA,MACV,eAAAsvE;AAAA,MACA,WAAU;AAAA,MACV,OAAM;AAAA,IAAA;AAAA,EAAA;AAAA,EAEP1wG,KACCg6D,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,IAAA7pB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,qBAAoB,UAAA,KAAC;AAAA,IACrCA,gBAAAA,EAAAA;AAAAA,MAAC+2C;AAAA,MAAA;AAAA,QACC,MAAMzwG;AAAA,QACN,UAAUujC;AAAA,QACV,WAAU;AAAA,QACV,OAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,EAAA,CACF;AAAA,GAEJ,GClBS8uE,KAAa,CAAChiG,MAWrB;AACJ,QAAMwV,IAAOnP,GAAainC,EAAQ,GAC5B20D,IAA0B57F,GAAamnC,EAA0B,GACjE2mC,IAAc9tE,GAAaomC,EAAe,GAC1CssC,IAAiB1yE,GAAawnC,EAAkB,GAChDq0D,IAAgBh7F,GAAWonC,EAAqB,GAChD4vC,IAA0Bh3E,GAAW+lC,EAAY,GACjDqzD,IAAqBp5F,GAAW+mC,EAAmB,GACnD,CAAC4yC,GAAWC,CAAY,IAAIr3B,EAAAA,SAAS,EAAK,GAE1C04C,IAAQ,aAAa,QAAQ,aAAa,GAE1CC,IAAiB,MAAM;AAC3B,QAAI;AACF,aAAOvoB,GAAS1F,GAAan0E,EAAM,WAAW;AAAA,IAChD,SAAS9F,GAAG;AACV,qBAAQ,MAAMA,CAAC,GACR;AAAA,IACT;AAAA,EACF,GACMmoG,IAA+B,MAAM;AACzC,UAAMzC,IAAa5/F,EAAM,QAAQ,WAAA;AACjC,QAAI,CAAC4/F,EAAY,QAAO;AACxB,UAAM0C,IAAQ1C,EAAW,MAAA,GAAS,KAAA,KAAU,CAAA,GACtChvG,IAAM0xG,EAAM;AAClB,WAAI1xG,IAAM,IAAU,KAEbA,MAAQ,KAAK0xG,EAAM,CAAC,EAAE,SAAY;AAAA,EAC3C,GACMC,IAAS,MAAM;AACnB,IAAAzhB,EAAa,CAACD,CAAS,GAIvBjP,GAAS,KAAK,qBAAqB;AAAA,EACrC;AAEA9qE,EAAAA,EAAAA,UAAU,MAAM;AACd,IAAAg6E,EAAa,EAAK;AAAA,EACpB,GAAG,CAAC9gF,EAAM,OAAO,CAAC;AAElB,QAAMwiG,IAAexnC,EAAAA,QAAQ,MAAM;AAEjC,QAAI,OAAOh7D,EAAM,SAAS,cAAe;AACvC,aAAO;AAGT,UAAMw3B,IAAax3B,EAAM,QAAQ,WAAA;AAGjC,WAFI,CAACw3B,KAED,EADaA,EAAW,YAAY,MAClB,OACf;AAAA,MACL,UAAUA,EAAW;AAAA,MACrB,MAAMA,EAAW;AAAA,MACjB,kBAAkBA,EAAW;AAAA,MAC7B,cAAcA,EAAW;AAAA,IAAA;AAAA,EAE7B,GAAG,CAACx3B,EAAM,OAAO,CAAC,GAEZyiG,IAAkBziG,EAAM,SAC1B,GAAGA,EAAM,MAAM,IAAIA,EAAM,SAAS,WAAA,GAAc,SAAS,CAAC,KAC1D,QACE0iG,IAAqB1iG,EAAM,SAAS,aAAA,GAAgB,aAAa,MACjE28E,IACJ38E,EAAM,SAAS,aAAA,GAAgB,UAC/B0iG,GAAoB,UAAU,UAC9B,GAEIC,IACJ,CAAC,CAAC3iG,EAAM,oBACRiiG,KACAzsF,MAAS42B,GAAW,SAEhBw2D,IAAkB,CAAChgG,MAA6C;AACpE,QAAI,CAAC+/F,KAAe,CAAC5pB;AACnB;AAGF,UAAM1iB,IAAgBzzD,EAAM,eACtBjM,IAASiM,EAAM,QACfigG,IAAqB,MAAM,KAAKxsC,EAAc,QAAQ,EAAE;AAAA,MAC5D,CAAC5iE,MAAUA,EAAM,UAAU,SAAS,OAAO;AAAA,IAAA;AAE7C,QACEkD,GAAQ,QAAQ,gCAAgC,KAChDA,GAAQ,QAAQ,UAAU,MACzBksG,GAAoB,SAASlsG,CAAM,KAAK,OACzCA,GAAQ,QAAQ,0BAA0B;AAE1C;AAGF,IAAAiM,EAAM,eAAA,GACNA,EAAM,gBAAA;AAEN,UAAMs8E,IAAcnG,EAAe,sBAAA,GAC7B+pB,IAAUzsC,EAAc,sBAAA,GACxB0sC,KAAUD,EAAQ,OAAO5jB,EAAY,OAAO4jB,EAAQ,QAAQ,GAC5DE,IAAUpgG,EAAM,UAAUs8E,EAAY;AAE5C,IAAAohB,EAAmB,IAAI,GACvBpiB,EAAwB,CAACl+E,EAAM,WAAW,CAAC,GAC3CkiG,EAAc;AAAA,MACZ,QAAQliG,EAAM;AAAA,MACd,SAAA+iG;AAAA,MACA,SAAAC;AAAA,MACA,UAAUD;AAAA,MACV,UAAUC;AAAA,MACV,aAAa;AAAA,MACb,aAAArmB;AAAA,MACA,cAAc+lB;AAAA,MACd,aAAa1iG,EAAM;AAAA,IAAA,CACpB;AAAA,EACH;AAEA,SACE2pD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnD;AAAA,QACT;AAAA,QACA,EAAE,8BAA8BxmD,EAAM,IAAA;AAAA,QACtC;AAAA,UACE,eAAe2iG;AAAA,QAAA;AAAA,QAEjB3iG,EAAM;AAAA,MAAA;AAAA,MAER,gBAAa;AAAA,MACb,mBAAiBA,EAAM;AAAA,MACvB,iBAAe;AAAA,MACf,wBAAsBoiG,EAAA;AAAA,MACtB,eAAeQ;AAAA,MACf,OACED,IACI,iCAAiC3iG,EAAM,WAAW,KAClD;AAAA,MAGL,UAAA;AAAA,QAAAmiG,KACCx4C,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,UAAA7pB,gBAAAA,EAAAA,IAAC,SAAI,WAAU,mFACb,gCAAC,OAAA,EAAI,WAAU,wBAAuB,EAAA,CACxC;AAAA,UACAA,gBAAAA,EAAAA,IAAC,SAAI,WAAU,sFACb,gCAAC,OAAA,EAAI,WAAU,wBAAuB,EAAA,CACxC;AAAA,QAAA,GACF;AAAA,QAEDg5C,OACCh5C,gBAAAA,EAAAA,IAACo1C,IAAA,EAAe,WAAA5d,GAAsB,SAAS0hB,GAAQ;AAAA,QAExDviG,EAAM,QAAQ,WAAA,KACbqpD,gBAAAA,EAAAA;AAAAA,UAAC41C;AAAA,UAAA;AAAA,YACC,QAAQj/F,EAAM;AAAA,YACd,SAASA,EAAM,QAAQ,WAAA,EAAa,MAAA;AAAA,YACpC,QAAQA,EAAM;AAAA,YACd,WAAA6gF;AAAA,UAAA;AAAA,QAAA;AAAA,QAIH2hB,KAAgB,CAACxiG,EAAM,gCACrB,OAAA,EAAI,WAAWwmD,GAAG,0BAA0B,GAC3C,UAAA6C,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW7C;AAAA,cACT;AAAA,YAAA;AAAA,YAGF,UAAA6C,gBAAAA,EAAAA;AAAAA,cAACk4C;AAAA,cAAA;AAAA,gBACC,WAAW/6C;AAAA,kBACT;AAAA,kBACAxmD,EAAM;AAAA,gBAAA;AAAA,gBAER,SAASA,EAAM;AAAA,gBACf,KAAK,CAACA,EAAM;AAAA,gBACZ,MAAK;AAAA,gBACL,QAAQyiG;AAAA,gBACR,WAAWziG,EAAM;AAAA,gBACjB,OACEA,EAAM,qBAAqB,SACvB;AAAA,kBACE,OAAO,GAAGA,EAAM,gBAAgB;AAAA,kBAChC,WAAWA,EAAM,MACb,oBACA;AAAA,gBAAA,IAEN;AAAA,gBAGN,UAAAqpD,gBAAAA,EAAAA;AAAAA,kBAAC04C;AAAA,kBAAA;AAAA,oBACC,UAAUS,EAAa;AAAA,oBACvB,MAAMA,EAAa;AAAA,oBACnB,kBAAkBA,EAAa;AAAA,oBAC/B,cAAcA,EAAa;AAAA,oBAC3B,eAAe/qB;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACjB;AAAA,YAAA;AAAA,UACF;AAAA,QAAA,EACF,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;ACnOO,MAAMwrB,GAAU;AAAA,EACrB;AAAA,EACA;AAAA,EAEQ,YACNC,GACAC,GACAC,GACAC,GACA;AACA,SAAK,QAAQ,EAAE,MAAMH,GAAW,KAAKC,EAAA,GACrC,KAAK,OAAO,EAAE,MAAMC,GAAS,KAAKC,EAAA;AAAA,EACpC;AAAA,EAEA,OAAc,KAAKpjG,GAAc;AAC/B,UAAMgL,IAAQhL,EAAQ,OAChBiL,IAAOjL,EAAQ;AACrB,WAAO,IAAIgjG;AAAA,MACTh4F,EAAM;AAAA,MACNA,EAAM;AAAA,MACNC,EAAK;AAAA,MACLA,EAAK,SAASA,EAAK,KAAK;AAAA,IAAA;AAAA,EAE5B;AACF;ACtBA,MAAMo4F,KAA6B,CAACvxF,GAAU8e,MAE1CA,MAAgB6G,MAChB3lB,aAAesX,EAAe,kBAC9BtX,EAAI,QAAA,MAAc,UAClBA,EAAI,OAAA,MAAa,QAIRouE,KAAqB,CAAClgF,GAAc4wB,MACxC5wB,GAAS,aAAa,CAAC8R,OACb,CAACA,MAAa;AAC3B,QAAMquE,IAAmBruE,aAAesX,EAAe,gBACjDg3D,IAAoBtuE,aAAesX,EAAe;AACxD,SAAO+2D,KAAoBC;AAC7B,GACWtuE,CAAG,IAEVA,EAAI,QAAA,MAAc8e,KAAeyyE,GAA2BvxF,GAAK8e,CAAW,IAGzE,EACR,EAAE,QAGC0yE,KAA0B,CAACtjG,GAAc4wB,MAA6B;AAC1E,MAAI,EAAE5wB,aAAmBopB,EAAe;AACtC,WAAO;AAGT,QAAM51B,IAAQwM,GAAS,WAAW,CAAC;AACnC,SAAKxM,IAGE0sF,GAAmB1sF,GAAOo9B,CAAW,IAFnC;AAGX,GAEa2yE,KAAW,CAAC;AAAA,EACvB,SAAAvjG;AAAA,EACA,QAAAi7B;AAAA,EACA,QAAA7gB;AAAA,EACA,QAAA1jB;AACF,MAKM;AACJ,QAAMw9E,IAAc9tE,GAAaomC,EAAe,GAE1C3B,IAASzwB,MAAW1jB,GAEpB+pF,IAAeP,GAAmBlgF,GAASi7B,CAAM,GAEjDuoE,IAAetjB,GAAmBlgF,GAASoa,CAAM,GAEjDqpF,IAAeH,GAAwBtjG,GAAStJ,CAAM,GAEtDgqF,IAAgB,IAAIb,GAAQjG,GAAS1F,GAAaj5C,CAAM,GAAGwlD,CAAY,GAEvEijB,IAAgB,IAAI7jB,GAAQjG,GAAS1F,GAAa95D,CAAM,GAAGopF,CAAY,GAEvEG,IAAgB,IAAI9jB,GAAQjG,GAAS1F,GAAax9E,CAAM,GAAG+sG,CAAY,GAEvEG,IAAmB,KAAK,IAAIF,EAAc,WAAWC,CAAa,CAAC,GAEnEE,IAAc/pB,GAAU5F,GAAa95D,GAAQ1jB,CAAM,IAAI,GAEvDotG,IAAapjB,EAAc;AAAA,IAC9BmjB,IAA8BF,IAAhBD;AAAA,EAAgB;AAGjC,SAAO;AAAA,IACL,QAAA74D;AAAA,IACA,cAAA41C;AAAA,IACA,cAAA+iB;AAAA,IACA,cAAAC;AAAA,IACA,eAAA/iB;AAAA,IACA,eAAAgjB;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,EAAA;AAEJ,GC9EaC,KAAuB,CAAC;AAAA,EACnC,WAAAnF;AAAA,EACA,eAAAoF;AAAA,EACA,eAAA5D;AAAA,EACA,WAAA7uD;AACF,MACenrC,GAAainC,EAAQ,MACNlB,GAAW,SAOlCyyD,IAMHl1C,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,EAAA7pB,gBAAAA,EAAAA,IAAC,UAAK,UAAA,IAAA,CAAC;AAAA,EACPA,gBAAAA,EAAAA;AAAAA,IAAC+2C;AAAA,IAAA;AAAA,MACC,MAAMvB;AAAA,MACN,UAAUoF;AAAA,MACV,eAAA5D;AAAA,MACA,WAAW75C,GAAG,SAAShV,CAAS;AAAA,IAAA;AAAA,EAAA;AAAA,EAElC6X,gBAAAA,EAAAA,IAAC,UAAK,UAAA,IAAA,CAAC;AAAA,GACT,wCAdU,UAAA,WAAA,CAAW,IAJdA,gBAAAA,EAAAA,IAAA6pB,YAAA,EAAG,UAAA,IAAI2rB,KAAa,QAAQ,KAAI,GCL9BqF,KAAW,CAAClkG,MAOnB;AACJ,QAAMmkG,IAAsBj/F,EAAAA,OAAuB,IAAI,GACjD6sB,IAAS1rB,GAAa+mC,EAAU,GAChCg3D,IAAiB/9F,GAAaynC,EAAkB,GAChD,CAAClT,GAAkBypE,CAAmB,IAAI56C,EAAAA,SAAS,CAAC,GACpDpgB,IAAWrpC,EAAM,SAAS,SAAA,GAC1BrJ,IAAS0yC,GAAU,MAAA,GACnBnX,IAAYmX,GAAU,UAAUtX,CAAM,GACtCwF,IAAY8R,GAAU,aAAA,GAAgB,WAAA,GACtC,CAACp+B,GAAOC,CAAI,IAAI,CAACqsB,GAAW,OAAO,OAAOA,GAAW,MAAM,IAAI,GAG/D,EAAE,YAAAwsE,GAAY,kBAAAF,GAAkB,aAAAC,EAAA,IAAgBN,GAAS;AAAA,IAC7D,SAASxjG,EAAM;AAAA,IACf,QAAQA,EAAM;AAAA,IACd,QAAQA,EAAM;AAAA,IACd,QAAQqpC,GAAU,MAAA;AAAA,EAAM,CACzB,GAEKi7D,IAAmBtkG,EAAM,YAAY,cACrCynC,IAAoBznC,EAAM,YAAY,mBAEtCukG,IACJ3pE,IAAmB,IAAIhE,KAA4BI;AAErDlwB,SAAAA,EAAAA,UAAU,MAAM;AACd,UAAM09F,IAAqB,SAAS;AAAA,MAClC,yBAAyB7tG,CAAM;AAAA,IAAA;AAGjC,QAAI,CAAC6tG,GAAoB;AACvB,cAAQ,KAAK,0CAA0C7tG,CAAM,EAAE,GAC/D0tG,EAAoB,CAAC;AACrB;AAAA,IACF;AAGA,IAAAA,EAAoBG,EAAmB,sBAAA,EAAwB,KAAK,GACpEzyG,GAAO;AAAA,MACL,iCAAiC4E,CAAM,YAAYikC,CAAgB;AAAA,IAAA,GAGrEg3C,GAAS,KAAK,qBAAqB,GACnC7/E,GAAO,MAAM,wCAAwC4E,CAAM,EAAE;AAAA,EAC/D,GAAG,CAACA,GAAQikC,CAAgB,CAAC,GAG3B+uB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,WAAWwmD;AAAA,QACT;AAAA,QACA;AAAA,UACE,iBAAiBs9C;AAAA,UACjB,WAAW5xE;AAAA,QAAA;AAAA,QAEblyB,EAAM;AAAA,MAAA;AAAA,MAER,SAAS,MAAMokG,EAAenB,GAAU,KAAKjjG,EAAM,OAAO,CAAC;AAAA,MAC3D,eAAaA,EAAM;AAAA,MACnB,eAAarJ;AAAA,MACb,kBAAgB0yC,GAAU,cAAA;AAAA,MAC1B,OAAO;AAAA,QACL,WAAW,gBAAgB06D,IAAa;AAAA,QACxC,OAAOF,IAAmB;AAAA,MAAA;AAAA,MAG3B,UAAA;AAAA,QAAA7jG,EAAM,WAAWqpD,gBAAAA,MAACnhB,IAAA,EAAQ,YAAYloC,EAAM,YAAY;AAAA,QACzDqpD,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK86C;AAAA,YACL,aAAU;AAAA,YACV,WAAW39C;AAAA,cACT;AAAA,cACA,EAAE,oBAAoBs9C,EAAA;AAAA,YAAY;AAAA,YAEpC,WAASntG;AAAA,YAET,UAAA0yD,gBAAAA,EAAAA;AAAAA,cAACk4C;AAAA,cAAA;AAAA,gBACC,WAAW/6C;AAAA,kBACT;AAAA,kBACA/e;AAAA,gBAAA;AAAA,gBAEF,SAAS4B;AAAA,gBACT,gBAAgB,CAACp+B,GAAOC,CAAI;AAAA,gBAC5B,KAAK44F;AAAA,gBACL,MAAK;AAAA,gBACL,QAAQ9jG,EAAM;AAAA,gBACd,WAAWskG;AAAA,gBACX,OAAO,EAAE,OAAO,eAAeC,CAAe,MAAA;AAAA,gBAE9C,UAAAl7C,gBAAAA,EAAAA;AAAAA,kBAAC26C;AAAA,kBAAA;AAAA,oBACC,WAAW36D,GAAU,eAAA;AAAA,oBACrB,eAAe,CAACp+B,GAAOC,CAAI;AAAA,oBAC3B,eAAeusE;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACjB;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAEFpuB,gBAAAA,EAAAA;AAAAA,UAAC24C;AAAA,UAAA;AAAA,YACC,SAAS34D;AAAA,YACT,WAAU;AAAA,YACV,aAAa1yC;AAAA,YACb,QAAQqJ,EAAM;AAAA,YACd,WAAWskG;AAAA,YACX,mBAAA78D;AAAA,YACA,KAAKq8D;AAAA,YACL,kBAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCtIaY,KAAY,CAACzkG,MAGpB;AACJ,QAAM,EAAE,MAAA0kG,GAAM,KAAApgC,EAAA,IAAQtkE;AAGtB,SACEqpD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,QAAO;AAAA,MACP,OAAM;AAAA,MACN,SAAQ;AAAA,MAER,UAAAA,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAWib,IAAM,kCAAkC,QACpD,UAAAjb,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAGq7C,IAAO,gCAAgC;AAAA,UAC1C,QAAO;AAAA,UACP,eAAc;AAAA,UACd,MAAMA,IAAO,iBAAiB;AAAA,QAAA;AAAA,MAAA,EAChC,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GChBaC,KAAiB,CAAC3kG,MAKzB;AACJ,QAAMkhG,IAAah8F,EAAAA,OAAO,IAAI,GACxBu8F,IAAiBp7F,GAAa2nC,EAAkB,GAChD0zD,IAAkBr7F,GAAa4nC,EAAmB,GAClDqyD,IAAqBp5F,GAAW+mC,EAAmB,GAEnDvd,IAAW1wB,EAAM,SAAS,WAAA,GAAc,aAAa,IACrDikG,IAAkCjpC,EAAAA,QAAQ,MAAM;AACpD,UAAM54D,IAAOpC,EAAM,SAAS,YAAA,EAAc,KAAA;AAC1C,WAAKoC,IACE,CAACA,EAAK,MAAM,OAAOA,EAAK,KAAK,IAAI,IADtB,CAAC,IAAI,EAAE;AAAA,EAE3B,GAAG,CAACpC,EAAM,OAAO,CAAC,GAEZ8hG,IACJJ,MAAoB,QACpBA,EAAgB,UAAUuC,EAAc,CAAC,KACzCvC,EAAgB,QAAQuC,EAAc,CAAC,GAEnChD,IAAU,MAAM;AACpB,IAAAX;AAAA,MACE2D,EAAc,CAAC,MAAM,KACjB,EAAE,OAAOA,EAAc,CAAC,GAAG,KAAKA,EAAc,CAAC,GAAG,OAAO,KAAK,IAAA,MAC9D;AAAA,IAAA,GAENxC,EAAezhG,EAAM,SAASkhG,EAAW,OAAQ;AAAA,EACnD;AAEA,SACEv3C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKu3C;AAAA,MACL,WAAU;AAAA,MACV,SAAAD;AAAA,MACA,iBAAea,IAAa,SAAS;AAAA,MAErC,UAAA;AAAA,QAAAn4C,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,0DACf,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,iCAChC,OAAA,EAAI,WAAU,SAAQ,OAAOA,EAAM,WACjC,UAAA;AAAA,YAAA0wB,4BACE,QAAA,EACC,UAAA;AAAA,cAAA24B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,iBAAiB,UAAA34B,GAAS;AAAA,cAC1C24B,gBAAAA,EAAAA,IAAC,UAAK,UAAA,IAAA,CAAC;AAAA,YAAA,GACT;AAAA,YAEFA,gBAAAA,EAAAA;AAAAA,cAACm3C;AAAA,cAAA;AAAA,gBACC,WAAWxgG,EAAM;AAAA,gBACjB,WAAWA,EAAM,SAAS,cAAA;AAAA,gBAC1B,eAAAikG;AAAA,gBACA,eAAexsB;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB,EAAA,CACF;AAAA,QAAA,GACF;AAAA,+BACC,OAAA,EAAI,WAAU,iCAAgC,OAAM,MAAK,QAAO,MAC/D,UAAA;AAAA,UAAApuB,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,GAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAEJA,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAU,oBACX,UAAAA,gBAAAA,EAAAA,IAACo7C,MAAU,MAAM,IAAM,KAAK,GAAA,CAAM,EAAA,CACpC;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GC9DaG,KAAc,CAAC5kG,MAMtB;AACJ,QAAM+xB,IAAS1rB,GAAa+mC,EAAU,GAChCk3D,IAAmBtkG,EAAM,YAAY,cACrCynC,IAAoBznC,EAAM,YAAY,mBACtC0Y,IAAU1Y,EAAM,SAAS,QAAA,GACzBu3B,IAAY7e,GAAS,cAAA,GACrBwZ,IAAYxZ,GAAS,UAAUqZ,CAAM,GACrC1X,IAAS3B,GAAS,KAAA,KAAUgf,IAC5B/gC,IAASqJ,EAAM,SAAS,QAAA,GAAW,WAAW03B,IAC9CoT,IAASzwB,MAAW1jB,GACpBkuG,IAAensF,GAAS,YAAA,EAAc,QAAQ,UAAA,EAAY,CAAC,GAC3D,CAACzN,GAAOC,CAAI,IAAI,CAAC25F,GAAc,OAAO,OAAOA,GAAc,MAAM,IAAI,GACrE;AAAA,IACJ,YAAAd;AAAA,IACA,kBAAAF;AAAA,IACA,cAAAnjB;AAAA,IACA,cAAA+iB;AAAA,IACA,cAAAC;AAAA,IACA,aAAAI;AAAA,EAAA,IACEN,GAAS;AAAA,IACX,SAASxjG,EAAM;AAAA,IACf,QAAQA,EAAM;AAAA,IACd,QAAAqa;AAAA,IACA,QAAA1jB;AAAA,EAAA,CACD;AAED,SACEgzD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnD;AAAA,QACT;AAAA,QACA;AAAA,UACE,WAAWt0B;AAAA,UACX,MAAM4Y;AAAA,UACN,iBAAiBg5D;AAAA,QAAA;AAAA,QAEnB9jG,EAAM;AAAA,MAAA;AAAA,MAER,SAAS,CAAC9F,MAAMA,EAAE,gBAAA;AAAA,MAClB,WAASvD;AAAA,MACT,eAAaqJ,EAAM;AAAA,MACnB,eAAaqa;AAAA,MACb,eAAa1jB;AAAA,MACb,sBAAoB+pF;AAAA,MACpB,sBAAoB+iB;AAAA,MACpB,sBAAoBC;AAAA,MACpB,aAAU;AAAA,MACV,kBAAgBnsE;AAAA,MAChB,OAAO;AAAA,QACL,OAAOuT,IAAS,SAAY+4D,IAAmB;AAAA,QAC/C,WAAW,gBAAgBE,IAAa;AAAA,MAAA;AAAA,MAGzC,UAAA;AAAA,QAAA/jG,EAAM,YAAY,QAAQqpD,gBAAAA,EAAAA,IAACnhB,IAAA,EAAQ,YAAYloC,EAAM,YAAY;AAAA,QACjE8qC,IACCue,gBAAAA,EAAAA;AAAAA,UAACs7C;AAAA,UAAA;AAAA,YACC,YAAYl9D;AAAA,YACZ,WAAW68D;AAAA,YACX,SAAS5rF;AAAA,YACT,QAAQ1Y,EAAM;AAAA,UAAA;AAAA,QAAA,IAGhBqpD,gBAAAA,EAAAA;AAAAA,UAACk4C;AAAA,UAAA;AAAA,YACC,WAAW/6C,GAAG/e,CAAiB;AAAA,YAC/B,WAAW68D;AAAA,YACX,SAAS5rF;AAAA,YACT,gBAAgB,CAACzN,GAAOC,CAAI;AAAA,YAC5B,KAAK44F;AAAA,YACL,QAAQ9jG,EAAM;AAAA,YACd,MAAK;AAAA,YAEL,UAAAqpD,gBAAAA,EAAAA;AAAAA,cAACm3C;AAAA,cAAA;AAAA,gBACC,WAAWjpE;AAAA,gBACX,eAAe,CAACtsB,GAAOC,CAAI;AAAA,gBAC3B,eAAeusE;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,QAGJpuB,gBAAAA,EAAAA;AAAAA,UAAC24C;AAAA,UAAA;AAAA,YACC,SAAStpF;AAAA,YACT,aAAa/hB;AAAA,YACb,KAAKmtG;AAAA,YACL,QAAQ9jG,EAAM;AAAA,YACd,WAAWskG;AAAA,YACX,mBAAA78D;AAAA,YACA,QAAAqD;AAAA,YACA,kBAAkBA,IAAS,SAAY+4D;AAAA,YACvC,kBAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,MAClB;AAAA,IAAA;AAAA,EAAA;AAGN,GCrGaiB,KAAsB,CAAC9kG,MAK9B;AACJ,QAAMkjC,IAAUljC,EAAM,SAAS,QAAA,GACzBikG,IAAgB,MACf/gE,IACE,CAACA,EAAQ,MAAM,OAAOA,EAAQ,KAAK,IAAI,IADzB,CAAC,IAAI,EAAE,GAGxBg+D,IAAah8F,EAAAA,OAAO,IAAI,GACxBu8F,IAAiBp7F,GAAa2nC,EAAkB,GAChD0zD,IAAkBr7F,GAAa4nC,EAAmB,GAClDqyD,IAAqBp5F,GAAW+mC,EAAmB,GAEnD1iC,IAAM04F,EAAA,GACNnC,IACJJ,MAAoB,QACpBA,EAAgB,UAAUn2F,EAAI,CAAC,KAC/Bm2F,EAAgB,QAAQn2F,EAAI,CAAC,GAEzB01F,IAAU,MAAM;AACpB,IAAAX;AAAA,MACE/0F,EAAI,CAAC,MAAM,KACP,EAAE,OAAOA,EAAI,CAAC,GAAG,KAAKA,EAAI,CAAC,GAAG,OAAO,KAAK,IAAA,MAC1C;AAAA,IAAA,GAENk2F,EAAezhG,EAAM,SAASkhG,EAAW,OAAQ;AAAA,EACnD;AAEA,SACEv3C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKu3C;AAAA,MACL,WAAU;AAAA,MACV,SAAAD;AAAA,MACA,iBAAea,IAAa,SAAS;AAAA,MAErC,UAAA;AAAA,QAAAn4C,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,gCACf,UAAA;AAAA,UAAAN,gBAAAA,EAAAA,IAACm1C,IAAA,EAAU,QAAQx+F,EAAM,OAAA,CAAQ;AAAA,gCAChC,OAAA,EAAI,WAAU,SAAQ,OAAOA,EAAM,WAElC,UAAAqpD,gBAAAA,EAAAA;AAAAA,YAACm3C;AAAA,YAAA;AAAA,cACC,WAAWxgG,EAAM;AAAA,cACjB,WAAWkjC,GAAS,iBAAA;AAAA,cACpB,eAAe+gE,EAAA;AAAA,cACf,eAAevsB;AAAA,YAAA;AAAA,UAAA,EACjB,CACF;AAAA,QAAA,GACF;AAAA,+BACC,OAAA,EAAI,WAAU,iCAAgC,OAAM,MAAK,QAAO,MAC/D,UAAA;AAAA,UAAAruB,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,GAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAEJA,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAU,oBACX,UAAAA,gBAAAA,EAAAA,IAACo7C,MAAU,MAAM,IAAO,KAAK,GAAA,CAAM,EAAA,CACrC;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACWA,SAASM,GAAkBptG,GAAY;AACrC,SAAOA,KAAU;AACnB;AAEO,MAAMqtG,KAAmB,CAAChlG,MAO3B;AACJ,QAAM+xB,IAAS1rB,GAAa+mC,EAAU,GAChCg3D,IAAiB/9F,GAAaynC,EAAkB,GAChD9E,IAAehpC,EAAM,SAAS,aAAA,GAC9Bu3B,IAAYyR,GAAc,QAAA,GAAW,iBAAA,GAErC3uB,IADiB2uB,GAAc,aAAA,KACJhpC,EAAM,QACjCoyB,IAAQ4W,GAAc,GAAA,GACtBryC,IAASy7B,GAAO,OAAA,GAAU,iBAAA,KAAsBA,GAAO,iBAAA,GACvD0Y,IAASzwB,MAAW1jB,GAEpBusC,IAAU8F,GAAc,QAAA,GACxB,CAAC/9B,GAAOC,CAAI,IAAI,CAACg4B,GAAS,OAAO,OAAOA,GAAS,MAAM,IAAI,GAE3D,EAAE,YAAA6gE,GAAY,kBAAAF,GAAkB,aAAAC,EAAA,IAAgBN,GAAS;AAAA,IAC7D,SAASxjG,EAAM;AAAA,IACf,QAAQA,EAAM;AAAA,IACd,QAAAqa;AAAA,IACA,QAAA1jB;AAAA,EAAA,CACD,GAEK8wC,IAAoBznC,EAAM,YAAY,mBACtCskG,IAAmBtkG,EAAM,YAAY,cACrCilG,IAAe,MAAM;AACzB,UAAMh6F,IAAQ+9B,EAAa,MAAM,OAC3B99B,IAAO89B,EAAa,KAAK,OAAO;AACtC,WACE+7D,GAAkBhzE,CAAM,KACxBgzE,GAAkB95F,CAAK,KACvB85F,GAAkB75F,CAAI,IAEf,KACF6mB,KAAW9mB,KAAS8mB,KAAW7mB;AAAAA,EACxC;AACA,SACEy+C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAa3pD,EAAM;AAAA,MACnB,WAASrJ;AAAA,MACT,eAAa0jB;AAAA,MACb,eAAa1jB;AAAA,MACb,WAAW6vD;AAAA,QACT;AAAA,QACA;AAAA,UACE,iBAAiB,CAACs9C;AAAA,UAClB,iBAAiBA;AAAA,UACjB,WAAWmB,EAAA;AAAA,UACX,mBAAmBn6D;AAAA,QAAA;AAAA,QAErB9qC,EAAM;AAAA,MAAA;AAAA,MAER,SAAS,MAAMokG,EAAenB,GAAU,KAAKjjG,EAAM,OAAO,CAAC;AAAA,MAC3D,kBAAgBu3B;AAAA,MAChB,OAAO;AAAA,QACL,OAAOssE,IAAmB;AAAA,QAC1B,WAAW,gBAAgBE,IAAa;AAAA,MAAA;AAAA,MAGzC,UAAA;AAAA,QAAA/jG,EAAM,WAAWqpD,gBAAAA,MAACnhB,IAAA,EAAQ,YAAYloC,EAAM,YAAY;AAAA,QACxD8qC,IACCue,gBAAAA,EAAAA;AAAAA,UAACy7C;AAAA,UAAA;AAAA,YACC,YAAYt+C,GAAG/e,CAAiB;AAAA,YAChC,WAAW68D;AAAA,YACX,SAASt7D;AAAA,YACT,QAAQhpC,EAAM;AAAA,UAAA;AAAA,QAAA,IAGhBqpD,gBAAAA,EAAAA;AAAAA,UAACk4C;AAAA,UAAA;AAAA,YACC,WAAW/6C,GAAG/e,CAAiB;AAAA,YAC/B,WAAW68D;AAAA,YACX,SAASt7D;AAAA,YACT,gBAAgB,CAAC/9B,GAAOC,CAAI;AAAA,YAC5B,KAAK44F;AAAA,YACL,MAAK;AAAA,YACL,QAAQ9jG,EAAM;AAAA,YAEd,UAAAqpD,gBAAAA,EAAAA;AAAAA,cAACm3C;AAAA,cAAA;AAAA,gBACC,WAAWjpE;AAAA,gBACX,eAAe,CAACtsB,GAAOC,CAAI;AAAA,gBAC3B,eAAewsE;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR,GCvKawtB,KAAU,CAACllG,MAIlB;AACJ,EAAAqG,GAAammC,EAAgB;AAC7B,QAAM2nC,IAAc9tE,GAAaomC,EAAe,GAC1C04D,IAAenqC,EAAAA,QAAQ,MACpBmZ,EAAY,SAAA,GAClB,CAACA,CAAW,CAAC,GAEVixB,IAAiBvrB,GAAS1F,GAAan0E,EAAM,MAAM,GAEnDqlG,IAAOrlG,EAAM,QAAQ,QAAA,EAAU,KAAA,GAE/BwnC,IAAewzB,EAAAA,QAAQ,MAAM;AACjC,QAAIqqC,EAAK,OAAO,QAAQ,GAAG,MAAM,KAAKA,EAAK,QAAQ,GAAG,MAAM,IAAI;AAC9D,YAAMhsF,IAAagsF,EAAK,QAAQ,GAAG,GAC7BC,IAAWD,EAAK,QAAQ,GAAG,GAC3BE,IAAiBF,EAAK,MAAMhsF,IAAa,GAAGisF,CAAQ,GACpDE,IAAgBH,EAAK,MAAMC,IAAW,CAAC,GAEvC/+D,IAAaH,GAAsBm/D,CAAc,GACjD19D,IAActB,EAAW,OAC5B,IAAI,CAACrW,MAASsW,GAAgBtW,CAAI,CAAC,EACnC,KAAK,EAAE,KAAKqW,EAAW,OAAO,SAAS,IAAI,MAAM,KAG9Ck/D,IAAYl/D,EAAW,WAAW,OAAO,CAACtkC,MAAM,CAACskC,EAAW,OAAO,SAAStkC,CAAC,CAAC;AACpF,aAAO;AAAA,QACL,OAAO4jC,GAAS4/D,CAAS;AAAA,QACzB,MAAM59D,IAAc29D;AAAA,MAAA;AAAA,IAExB;AACA,WAAO,EAAE,OAAO3/D,GAAS,CAAA,CAAE,GAAG,MAAAw/D,EAAA;AAAA,EAChC,GAAG,CAACA,CAAI,CAAC,GAEHK,IAAYl+D,EAAa,KAAK,QAAQ,kBAAkB,EAAE,EAAE,KAAA,GAK5Dm+D,IAAcx+F,cAAY,CAACqnD,MAA8B;AAC7D,QAAI,CAACA,EAAI;AAET,UAAMhtB,IADgBgtB,EAAG,eACI;AAC7B,QAAI,CAAChtB,EAAO;AACZ,UAAMokE,IAAe,WAAW,iBAAiBpkE,CAAK,EAAE,WAAW,KAAK;AACxE,IAAAgtB,EAAG,MAAM,YAAY,eAAeo3C,CAAY;AAAA,EAClD,GAAG,CAAA,CAAE;AAEL,SACEj8C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKg8C;AAAA,MACL,WAAWn/C,GAAG,WAAWxmD,EAAM,SAAS;AAAA,MACxC,eAAaA,EAAM;AAAA,MACnB,OAAO;AAAA,QACL,OAAOmlG,IAAe;AAAA,QACtB,WAAW,gBAAiB,KAAKC,IAAkB;AAAA,QACnD,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,KAAK;AAAA,MAAA;AAAA,MAGP,UAAA;AAAA,QAAA/7C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,QAAO,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,iBAAiB,UAAA,EAAU,CAAG;AAAA,QACjFA,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,GAAG7hB,EAAa,MAAM;AAAA,cACtB,iBAAiB;AAAA,cACjB,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,YAAY;AAAA,YAAA;AAAA,YAEd,WAAWgf,GAAG,QAAQhf,EAAa,MAAM,UAAU;AAAA,YAElD,UAAAk+D;AAAA,UAAA;AAAA,QAAA;AAAA,QAEHr8C,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,SAAQ,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,iBAAiB,UAAA,EAAU,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGxF,GCjFaw8C,KAAS,CAAC7lG,MAOjB;AACJ,QAAMokG,IAAiB/9F,GAAaynC,EAAkB,GAEhD7J,IAAMjkC,EAAM,SAAS,IAAA,GAErBgpC,IAAe/E,GAAK,aAAA,KAAkBA,GAAK,mBAAA,GAE3C1M,IAAY0M,GAAK,UAAA,GACjB5pB,IAAS4pB,GAAK,KAAA,KAAUvM,IAExB/gC,IAASstC,GAAK,SAAA,KAAcvM,IAE5BouE,IAAiB98D,GAAc,QAAA,KAAa/E,GAAK,KAAA;AACvD,MAAIh5B,IAAQ,IAAIC,IAAO;AACvB,MAAI46F,aAA0Bz8E,EAAe,iBAAiB;AAC5D,UAAM4a,IAAM6hE,EAAe,KAAA;AAC3B,KAAC76F,GAAOC,CAAI,IAAI,CAAC+4B,GAAK,OAAO,OAAOA,GAAK,MAAM,IAAI;AAAA,EACrD,MAAA,CAAW6hE,aAA0Bz8E,EAAe,mBAClD,CAACpe,GAAOC,CAAI,IAAI,CAAC46F,EAAe,MAAM,OAAOA,EAAe,KAAK,IAAI;AAGvE,QAAM,EAAE,YAAA/B,GAAY,kBAAAF,GAAkB,aAAAC,GAAa,QAAAh5D,EAAA,IAAW04D,GAAS;AAAA,IACrE,SAASxjG,EAAM;AAAA,IACf,QAAQA,EAAM;AAAA,IACd,QAAAqa;AAAA,IACA,QAAA1jB;AAAA,EAAA,CACD,GAEKsqG,IAAU,CAAC/mG,MAAsB;AACrC,IAAAA,EAAE,gBAAA,GACFkqG,EAAenB,GAAU,KAAKjjG,EAAM,OAAO,CAAC;AAAA,EAC9C;AACA;AAAA;AAAA,IAEE2pD,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAAs3C;AAAA,QACA,aAAU;AAAA,QACV,kBAAgB1pE;AAAA,QAChB,eAAav3B,EAAM;AAAA,QACnB,WAASrJ;AAAA,QACT,eAAa0jB;AAAA,QACb,eAAa1jB;AAAA,QACb,WAAW6vD;AAAA,UACT;AAAA,UACA;AAAA,YACE,iBAAiBs9C;AAAA,YACjB,WAAW;AAAA,UAAA;AAAA,UAEb9jG,EAAM;AAAA,QAAA;AAAA,QAER,OAAO;AAAA,UACL,OAAO6jG,IAAmB;AAAA,UAC1B,WAAW,gBAAgBE,IAAa;AAAA,QAAA;AAAA,QAGzC,UAAA;AAAA,UAAA/jG,EAAM,WAAWqpD,gBAAAA,MAACnhB,IAAA,EAAQ,YAAYloC,EAAM,YAAY;AAAA,UACxD8qC,KACC6e,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,YAAAA,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,SAAQ;AAAA,gBAER,UAAA;AAAA,kBAAAN,gBAAAA,EAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,GAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEJA,gBAAAA,EAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,GAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACJ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEFA,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,QAAQ,UAAA9xB,EAAA,CAAU;AAAA,UAAA,GACpC;AAAA,UAED,CAACuT,KACAue,gBAAAA,EAAAA;AAAAA,YAACk4C;AAAA,YAAA;AAAA,cACC,WAAW/6C,GAAGxmD,EAAM,YAAY,iBAAiB;AAAA,cACjD,WAAWA,EAAM,YAAY;AAAA,cAC7B,SAAS8lG;AAAA,cACT,gBAAgB,CAAC76F,GAAOC,CAAI;AAAA,cAC5B,KAAK44F;AAAA,cACL,MAAK;AAAA,cACL,QAAQ9jG,EAAM;AAAA,cAEd,UAAAqpD,gBAAAA,EAAAA;AAAAA,gBAACm3C;AAAA,gBAAA;AAAA,kBACC,WAAWjpE;AAAA,kBACX,eAAe,CAACtsB,GAAOC,CAAI;AAAA,kBAC3B,eAAeusE;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjB;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA;AAIR,GClGasuB,KAAY,CAAC/lG,MAKpB;AACJ,QAAMywB,IAAUzwB,EAAM,QAAQ,WAAA,KAAgB,IACxCioC,IAAa,IAAIC,GAAQzX,CAAO,GAEhCu1E,IAAW;AAAA,IACf,WAAWx/C,GAAG,uCAAuC;AAAA,MACnD,QAAQxmD,EAAM,aAAa,CAACA,EAAM,QAAQ,IAAA;AAAA,IAAI,CAC/C;AAAA,IACD,SAASA,EAAM;AAAA,IACf,QAAQA,EAAM;AAAA,IACd,SAAAywB;AAAA,IACA,YAAAwX;AAAA,IACA,QAAQjoC,EAAM;AAAA,EAAA;AAGhB,UAAQ,IAAA;AAAA,IACN,KAAK,EAAQA,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC01C,IAAA,EAAc,GAAGiH,EAAA,CAAU;AAAA,IACrC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC61C,IAAA,EAAa,GAAG8G,EAAA,CAAU;AAAA,IACpC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACm2C,IAAA,EAAa,GAAGwG,EAAA,CAAU;AAAA,IACpC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACo2C,IAAA,EAAa,GAAGuG,EAAA,CAAU;AAAA,IACpC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACs2C,IAAA,EAAiB,GAAGqG,EAAA,CAAU;AAAA,IACxC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACy2C,IAAA,EAAkB,GAAGkG,EAAA,CAAU;AAAA,IACzC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC22C,IAAA,EAAyB,GAAGgG,EAAA,CAAU;AAAA,IAChD,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACo3C,IAAA,EAAa,GAAGuF,EAAA,CAAU;AAAA,IACpC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC66C,IAAA,EAAU,GAAG8B,EAAA,CAAU;AAAA,IACjC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAACu7C,IAAA,EAAa,GAAGoB,EAAA,CAAU;AAAA,IACpC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC27C,IAAA,EAAkB,GAAGgB,EAAA,CAAU;AAAA,IACzC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aAAOqpD,gBAAAA,MAAC67C,IAAA,EAAS,GAAGc,EAAA,CAAU;AAAA,IAChC,KAAK,EAAQhmG,EAAM,QAAQ;AACzB,aACEqpD,gBAAAA,EAAAA,IAACw8C,IAAA,EAAQ,GAAGG,GAAU,WAAU,uCAAsC;AAAA,EAAA;AAG9E,GCzDMzpB,KAAW,CAAC7oD,GAAc5iC,MAAkB;AAChD,QAAM4a,IAAOgoB,EAAK,QAAQ;AAAA,GAAM5iC,CAAK;AACrC,SAAO4a,MAAS,KAAKgoB,EAAK,SAAShoB,IAAO;AAC5C,GAEMu6F,KAAY,CAAC/sF,MAAiBA,EAAK,MAAM,MAAM,IAAI,CAAC,KAAK,IAEzDgtF,KAAgB,CAACh9F,MAAiB;AACtC,QAAM49B,IAAQ59B,EAAK,MAAM;AAAA,CAAI,EAAE,OAAO,CAACgQ,MAASA,EAAK,OAAO,SAAS,CAAC;AACtE,SAAI4tB,EAAM,WAAW,IACZ,KAEFm/D,GAAUn/D,EAAM,CAAC,CAAC;AAC3B,GAEMq/D,KAAc,CAACj9F,GAAck9F,MACjCl9F,EACG,MAAM;AAAA,CAAI,EACV,IAAI,CAACgQ,MAAS;AACb,MAAIA,EAAK,WAAW;AAClB,WAAOA;AAET,MAAIktF,IAAc;AAChB,WAAO,GAAG,IAAI,OAAOA,CAAW,CAAC,GAAGltF,CAAI;AAE1C,MAAIktF,IAAc,GAAG;AACnB,UAAMC,IAAY,KAAK,IAAIJ,GAAU/sF,CAAI,EAAE,QAAQ,KAAK,IAAIktF,CAAW,CAAC;AACxE,WAAOltF,EAAK,MAAMmtF,CAAS;AAAA,EAC7B;AACA,SAAOntF;AACT,CAAC,EACA,KAAK;AAAA,CAAI,GAEDotF,KAAsB,CAAC;AAAA,EAClC,MAAA5yE;AAAA,EACA,aAAA6yE;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,MAA2B;AACzB,QAAM,CAACC,GAAaC,CAAS,IAAIJ,GAC3B,CAACK,GAAaC,CAAS,IAAIL,GAC3BM,IAAkBrzE,GAAYC,GAAMgzE,CAAW,GAC/CK,IAAgBxqB,GAAS7oD,GAAMizE,CAAS,GACxCK,IAAkBvzE,GAAYC,GAAMkzE,CAAW,GAC/CK,IAAgB1qB,GAAS7oD,GAAMmzE,CAAS;AAE9C,MAAIC,MAAoBE;AACtB,WAAOtzE;AAGT,QAAMwzE,IAAaxzE,EAAK,MAAMozE,GAAiBC,CAAa,GACtDI,IAAazzE,EAAK,MAAMszE,GAAiBC,CAAa,GACtDG,IAAgB1zE,EAAK,MAAM,GAAGozE,CAAe,IAAIpzE,EAAK,MAAMqzE,CAAa,GACzEM,IAAqBP,IAAkBE,GACvCM,IAAiCD,IACnCL,IAAkBE,EAAW,SAC7BF,GACEO,IAA+BF,IACjCJ,IAAgBC,EAAW,SAC3BD,GACEO,IAAiBf,MAAU,WAC7Ba,IACAC,GACEE,IAAevB,GAAcgB,CAAU,EAAE,QACzCQ,IAAexB,GAAciB,CAAU,EAAE,QACzCQ,IAAaxB,GAAYe,GAAYQ,IAAeD,CAAY,GAChE9pB,IACJ6pB,IAAiB,KACjBJ,EAAcI,IAAiB,CAAC,MAAM;AAAA,KACtC,CAACG,EAAW,WAAW;AAAA,CAAI,GACvB/pB,IACJ4pB,IAAiBJ,EAAc,UAC/BA,EAAcI,CAAc,MAAM;AAAA,KAClC,CAACG,EAAW,SAAS;AAAA,CAAI,GACrBC,IAAY,GAAGjqB,IAAsB;AAAA,IAAO,EAAE,GAAGgqB,CAAU,GAC/D/pB,IAAuB;AAAA,IAAO,EAChC;AAEA,SACEwpB,EAAc,MAAM,GAAGI,CAAc,IACrCI,IACAR,EAAc,MAAMI,CAAc;AAEtC,GCnFMjrB,KAAW,CAAC7oD,GAAc5iC,MAAkB;AAChD,QAAM4a,IAAOgoB,EAAK,QAAQ;AAAA,GAAM5iC,CAAK;AACrC,SAAO4a,MAAS,KAAKgoB,EAAK,SAAShoB,IAAO;AAC5C,GAEam8F,KAAqB,CAAC;AAAA,EACjC,MAAAn0E;AAAA,EACA,OAAA3f,IAAQ;AAAA,EACR,cAAAknB;AAAA,EACA,aAAA0hD;AACF,MAA0B;AACxB,QAAMh0C,IAAoB1N,GAAc,KAAA,KAAU,CAAA,GAC5C/hB,IAAO,KAAKnF,CAAK;AAEvB,MAAIypE;AAEJ,MAAI70C,EAAW,WAAW,GAAG;AAC3B,UAAM5xC,IACJ28B,EAAK,SAAS;AAAA,CAAI,KAAKA,EAAK,WAAW,IAAIA,IAAO,GAAGA,CAAI;AAAA,GACrDzoB,IAAQlU,EAAO,SAAS,GACxBu6B,IAAMrmB,IAAQ8I,EAAM,SAAS;AACnC,WAAO;AAAA,MACL,MAAM,GAAGhd,CAAM,GAAGmiB,CAAI;AAAA,MACtB,eAAe,CAACjO,GAAOqmB,CAAG;AAAA,IAAA;AAAA,EAE9B;AAEA,MAAIqrD,KAAeh0C,EAAW,QAAQ;AACpC,UAAM80C,IAAW90C,EAAWA,EAAW,SAAS,CAAC;AACjD,IAAA60C,IAAkBjB,GAAS7oD,GAAM+pD,EAAS,KAAK,IAAI;AAAA,EACrD,OAAO;AACL,UAAMC,IAAa/0C,EAAWg0C,CAAW;AACzC,IAAAa,IAAkB/pD,GAAYC,GAAMgqD,EAAW,MAAM,KAAK;AAAA,EAC5D;AAEA,QAAMC,IACJH,IAAkB,KAAK9pD,EAAK8pD,IAAkB,CAAC,MAAM;AAAA,GACjDI,IACJJ,IAAkB9pD,EAAK,UAAUA,EAAK8pD,CAAe,MAAM;AAAA,GAEvDK,IAAe,GAAGF,IAAsB;AAAA,IAAO,EAAE,GAAGzkE,CAAI,GAAG0kE,IAAuB;AAAA,IAAO,EAAE,IAC3FxxB,IACJ14B,EAAK,MAAM,GAAG8pD,CAAe,IAAIK,IAAenqD,EAAK,MAAM8pD,CAAe,GAGtEF,IADkBE,KAAmBG,IAAsB,IAAI,KAChC,GAC/BJ,IAAWD,IAAavpE,EAAM,SAAS;AAE7C,SAAO;AAAA,IACL,MAAMq4C;AAAA,IACN,eAAe,CAACkxB,GAAYC,CAAQ;AAAA,EAAA;AAExC,GCxCMuqB,KAAmB,IACnBC,KAAc,IACdC,KAAgB,GAETC,KAAgB,CAACjoG,MAKxB;AACJ,QAAMwV,IAAOnP,GAAainC,EAAQ,GAC5B20D,IAA0B57F,GAAamnC,EAA0B,GACjE06D,IAA0B7hG,GAAaonC,EAA0B,GACjExZ,IAAc5tB,GAAaimC,EAAe,GAC1C6nC,IAAc9tE,GAAaomC,EAAe,GAC1CssC,IAAiB1yE,GAAawnC,EAAkB,GAChDswC,IAAY93E,GAAaioC,EAAqB,GAC9C4zD,IAAgBh7F,GAAWonC,EAAqB,GAChDgyD,IAAqBp5F,GAAW+mC,EAAmB,GACnDiwC,IAA0Bh3E,GAAW+lC,EAAY,GAEjD,CAACvZ,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClD+vC,IAA0B/2E,GAAWinC,EAAwB,GAE7D,CAACg6D,GAASnxC,CAAU,IAAIvN,EAAAA,SAAS,EAAK,GACtC2+C,IAAeljG,EAAAA,OAA6C,IAAI;AAEtE4B,EAAAA,EAAAA,UAAU,MACD,MAAM;AACX,IAAIshG,EAAa,WAAS,aAAaA,EAAa,OAAO;AAAA,EAC7D,GACC,CAAA,CAAE;AAEL,QAAMC,IAAqBlhG,EAAAA,YAAY,MAAM;AAC3C,IAAIihG,EAAa,YACf,aAAaA,EAAa,OAAO,GACjCA,EAAa,UAAU,OAEpBjqB,KAAWnnB,EAAW,EAAI;AAAA,EACjC,GAAG,CAACmnB,CAAS,CAAC,GAERmqB,IAAqBnhG,EAAAA,YAAY,MAAM;AAC3C,IAAKg3E,MACHiqB,EAAa,UAAU,WAAW,MAAM;AACtC,MAAApxC,EAAW,EAAK,GAChBoxC,EAAa,UAAU;AAAA,IACzB,GAAG,EAAE;AAAA,EAET,GAAG,CAACjqB,CAAS,CAAC,GAERntD,IAAegqC,EAAAA;AAAAA,IACnB,MACEpjC,GAAoB3D,CAAW,EAAE,OAAO,CAAC57B,OAAMA,GAAE,SAASq/B,EAAS;AAAA,IACrE,CAACzD,CAAW;AAAA,EAAA,GAGR+sD,IAAcnH,GAAS1F,GAAan0E,EAAM,MAAM,IAAI,GAEpDuoG,IAAgBphG,EAAAA;AAAAA,IACpB,CAACvE,OAA4B;AAC3B,MAAAA,GAAM,eAAA,GACNA,GAAM,gBAAA;AACN,YAAMP,IAASwlG,GAAmB;AAAA,QAChC,MAAAn0E;AAAA,QACA,cAAc1zB,EAAM;AAAA,QACpB,aAAaA,EAAM;AAAA,MAAA,CACpB;AACD,MAAA2rD,EAAQtpD,EAAO,IAAI,GACnBupD,EAAgBvpD,EAAO,IAAI,GAC3B47E,EAAwB;AAAA,QACtB,OAAO57E,EAAO,cAAc,CAAC;AAAA,QAC7B,KAAKA,EAAO,cAAc,CAAC;AAAA,QAC3B,OAAO,KAAK,IAAA;AAAA,MAAI,CACjB;AAAA,IACH;AAAA,IACA,CAACqxB,GAAMk4B,GAAiB5rD,EAAM,cAAcA,EAAM,aAAa2rD,GAASsyB,CAAuB;AAAA,EAAA;AAGjG,MACEzoE,MAAS42B,GAAW,WACpBpb,EAAa,SAAS,KACrB,CAACixE,KAA2B,CAACiG;AAE9B,WAAO;AAGT,QAAMM,IAAY,CAChB7uE,IACA/2B,MACG;AAGH,QAFAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACF,CAACm2E,EAAgB;AAErB,UAAMmG,IAAcnG,EAAe,sBAAA,GAC7BgqB,KAAUlpB,GAAS1F,GAAax6C,EAAe,GAE/C8uE,IADW7lG,EAAM,cACK,sBAAA,GACtBogG,IAAUyF,EAAW,MAAMvpB,EAAY,MAAMupB,EAAW,SAAS;AAEvE,IAAAnI,EAAmB,IAAI,GACvBpiB,EAAwB,CAACvkD,EAAe,CAAC,GACzCuoE,EAAc;AAAA,MACZ,QAAQvoE;AAAA,MACR,SAAAopE;AAAA,MACA,SAAAC;AAAA,MACA,UAAUD;AAAA,MACV,UAAUC;AAAA,MACV,aAAa;AAAA,MACb,aAAahjG,EAAM;AAAA,MACnB,cAAcA,EAAM;AAAA,IAAA,CACrB;AAAA,EACH,GAEM0oG,IAAcP,KAAW,CAAChqB;AAEhC,WAASwqB,IAAgB;AACvB,WACEh/C,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,MAAA7pB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,kGAAA,CAAkG;AAAA,MAChH44C,KACCjxE,EAAa,IAAI,CAAC34B,OAChBgxD,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,OAAO;AAAA,YACL,OAAO0+C;AAAA,YACP,QAAQA;AAAA,YACR,MAAM,GAAGluB,GAAS1F,GAAa97E,GAAE,IAAI,CAAC;AAAA,YACtC,QAAQ;AAAA,YACR,eAAe;AAAA,UAAA;AAAA,UAEjB,eAAa,yBAAyB2H,EAAM,WAAW,IAAI3H,GAAE,IAAI;AAAA,UACjE,OAAO,iCAAiCA,GAAE,IAAI;AAAA,UAC9C,cAAY,iCAAiCA,GAAE,IAAI;AAAA,UACnD,eAAe,CAACuK,MAAU4lG,EAAUnwG,GAAE,MAAMuK,CAAK;AAAA,UAClD,UAAA;AAAA,QAAA;AAAA,QAdMvK,GAAE;AAAA,MAAA,CAiBV;AAAA,MACF6vG,KACC7+C,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,OAAO;AAAA,YACL,QAAQ0+C;AAAA,YACR,QAAQ;AAAA,YACR,eAAe;AAAA,UAAA;AAAA,UAEjB,eAAa,kBAAkB/nG,EAAM,WAAW;AAAA,UAChD,OAAM;AAAA,UACN,cAAW;AAAA,UACX,SAASuoG;AAAA,UACV,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,GAEJ;AAAA,EAEJ;AAEA,SAAIvoG,EAAM,UAENqpD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,QAAQy+C;AAAA,QACR,YAAY,IAAI9mB,CAAW;AAAA,QAC3B,OAAO,eAAeA,CAAW;AAAA,MAAA;AAAA,MAEnC,eAAa,eAAehhF,EAAM,WAAW;AAAA,MAC7C,gBAAgBqoG;AAAA,MAChB,gBAAgBC;AAAA,MAEf,eAAeK,EAAA;AAAA,IAAc;AAAA,EAAA,IAMlCt/C,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,YAAY,IAAI23B,CAAW;AAAA,QAC3B,OAAO,eAAeA,CAAW;AAAA,QACjC,eAAe;AAAA,MAAA;AAAA,MAEjB,eAAa,eAAehhF,EAAM,WAAW;AAAA,MAI7C,UAAAqpD,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAa,qBAAqBrpD,EAAM,WAAW;AAAA,UACnD,WAAU;AAAA,UACV,OAAO;AAAA,YACL,KAAK,KAAqBgoG;AAAA,YAC1B,QAAQD;AAAA,YACR,eAAe;AAAA,UAAA;AAAA,UAEjB,gBAAgBM;AAAA,UAChB,gBAAgBC;AAAA,UAEf,eAAeK,EAAA;AAAA,QAAc;AAAA,MAAA;AAAA,IAChC;AAAA,EAAA;AAGN,GCtNMC,KAAiB,GAEV3J,KAAQ,CAACj/F,MAUhB;AACJ,QAAM,CAAC0zB,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClDvF,IAAoB3oC,EAAM,SAAS,KAAA,KAAU,CAAA,GAC7C6oG,IAAmB7oG,EAAM,oBAAoB,IAC7C,CAAC8oG,GAASC,CAAU,IAAI3hG,GAAQmnC,EAAsB,GACtDy6D,IAAa9jG,EAAAA,OAAsB,IAAI,GACvC,CAAC+jG,GAAaC,CAAc,IAAI9hG,GAAQonC,EAAyB,GACjE,CAAC26D,GAAWC,CAAY,IAAIhiG,GAAQqnC,EAAsB;AAEhE3nC,EAAAA,EAAAA,UAAU,MAAM;AACd,IAAAkiG,EAAW,UAAUF;AAAA,EACvB,GAAG,CAACA,CAAO,CAAC,GAEZhiG,EAAAA,UAAU,MAAM;AACd,QAAI,CAACmiG,KAAe,CAACH;AACnB;AAGF,UAAMO,IAAiB,SAAS,KAAK,MAAM;AAC3C,oBAAS,KAAK,MAAM,SAAS,YAEtB,MAAM;AACX,eAAS,KAAK,MAAM,SAASA;AAAA,IAC/B;AAAA,EACF,GAAG,CAACP,GAASG,CAAW,CAAC,GAEzBniG,EAAAA,UAAU,MAAM;AAId,QAHI,CAAC9G,EAAM,UAGP,CAACipG,KAAeH;AAClB;AAGF,UAAM/pB,IAAgB,CAACn8E,MAAwB;AAC7C,YAAM0mG,IAAS,KAAK,IAAI1mG,EAAM,UAAUqmG,EAAY,MAAM,GACpDM,IAAS,KAAK,IAAI3mG,EAAM,UAAUqmG,EAAY,MAAM;AAC1D,MAAI,KAAK,IAAIK,GAAQC,CAAM,IAAIX,OAG/BG,EAAWE,EAAY,GAAG,GAC1BC,EAAe,IAAI;AAAA,IACrB,GAEMlqB,IAAc,MAAM;AACxB,MAAAkqB,EAAe,IAAI;AAAA,IACrB;AAEA,kBAAO,iBAAiB,eAAenqB,CAAa,GACpD,OAAO,iBAAiB,aAAaC,GAAa,EAAE,MAAM,IAAM,GACzD,MAAM;AACX,aAAO,oBAAoB,eAAeD,CAAa,GACvD,OAAO,oBAAoB,aAAaC,CAAW;AAAA,IACrD;AAAA,EACF,GAAG,CAAC8pB,GAASG,GAAajpG,EAAM,QAAQ+oG,GAAYG,CAAc,CAAC,GAEnEpiG,EAAAA,UAAU,MAAM;AAId,QAHI,CAAC9G,EAAM,UAGP,CAAC8oG;AACH;AAEF,UAAM9pB,IAAc,MAAM;AACxB,YAAMwqB,IAAYR,EAAW;AAC7B,UAAI,CAACQ,KAAa,CAACL,KAAaA,EAAU,QAAQK,GAAW;AAC3D,QAAAT,EAAW,IAAI,GACfK,EAAa,IAAI;AACjB;AAAA,MACF;AACA,YAAM,CAAC1C,GAAaC,CAAS,IAAI6C,EAAU,MAAM,GAAG,EAAE,IAAI,MAAM,GAC1D,CAAC5C,GAAaC,CAAS,IAAIsC,EAAU,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAC9DM,IAAWnD,GAAoB;AAAA,QACnC,MAAA5yE;AAAA,QACA,aAAa,CAACgzE,GAAaC,CAAS;AAAA,QACpC,aAAa,CAACC,GAAaC,CAAS;AAAA,QACpC,OAAOsC,EAAU;AAAA,MAAA,CAClB;AACD,MAAAx9C,EAAQ89C,CAAQ,GAChB79C,EAAgB69C,CAAQ,GACxBV,EAAW,IAAI,GACfK,EAAa,IAAI;AAAA,IACnB;AAEA,kBAAO,iBAAiB,aAAapqB,GAAa,EAAE,MAAM,IAAM,GACzD,MAAM;AACX,aAAO,oBAAoB,aAAaA,CAAW;AAAA,IACrD;AAAA,EACF,GAAG,CAACtrD,GAAMo1E,GAASK,GAAWv9C,GAAiB5rD,EAAM,QAAQ2rD,GAASo9C,GAAYK,CAAY,CAAC;AAE/F,QAAMM,IAAY,CAAC54G,MACbkP,EAAM,SACDA,EAAM,cACT4/E,GAAe5/E,EAAM,QAAQlP,CAAK,IAClC,GAAGkP,EAAM,MAAM,IAAIlP,IAAQ,CAAC,KAE3B,OAAOA,IAAQ,CAAC;AAGzB,SACE64D,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWnD,GAAG,SAASxmD,EAAM,SAAS;AAAA,MACtC,OAAOA,EAAM;AAAA,MACb,eAAaA,EAAM;AAAA,MAElB,UAAA;AAAA,QAAA6oG,KAAoBlgE,EAAW,WAAW,KACzC0gB,gBAAAA,EAAAA;AAAAA,UAAC4+C;AAAA,UAAA;AAAA,YACC,aAAa;AAAA,YACb,cAAcjoG,EAAM;AAAA,YACpB,QAAQA,EAAM,UAAU;AAAA,YACxB,SAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGV2oC,EAAW,IAAI,CAACghE,GAAM74G,MAAU;AAC/B,gBAAM84G,IAAe/uE,GAAmB8uE,CAAI,GACtCE,IACJf,MAAYc,IACR,aACAX,GAAa,QAAQW,IACrB,YACA;AACN,wCACG12B,YAAA,EACE,UAAA;AAAA,YAAA21B,KACCx/C,gBAAAA,EAAAA;AAAAA,cAAC4+C;AAAA,cAAA;AAAA,gBACC,aAAan3G;AAAA,gBACb,cAAckP,EAAM;AAAA,gBACpB,QAAQA,EAAM,UAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAG5B2pD,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWnD,GAAG,8DAA8D;AAAA,kBAC1E,eAAeqjD,MAAiB;AAAA,kBAChC,mBAAmBA,MAAiB;AAAA,gBAAA,CACrC;AAAA,gBACD,eAAa7pG,EAAM;AAAA,gBACnB,sBAAoB4pG;AAAA,gBACpB,sBAAoBC;AAAA,gBACpB,eAAe,CAACjnG,MAAU;AACxB,wBAAMjM,IAASiM,EAAM;AACrB,kBACE,CAACjM,GAAQ,QAAQ,UAAU,KAC3BA,EAAO,QAAQ,0BAA0B,MAI3CiM,EAAM,gBAAA,GACNsmG,EAAe;AAAA,oBACb,KAAKU;AAAA,oBACL,QAAQhnG,EAAM;AAAA,oBACd,QAAQA,EAAM;AAAA,kBAAA,CACf,GACDwmG,EAAa,IAAI;AAAA,gBACnB;AAAA,gBACA,eAAe,CAACxmG,MAAU;AAIxB,sBAHI,CAACkmG,KAGDc,MAAiBd;AACnB;AAEF,kBAAAlmG,EAAM,gBAAA;AACN,wBAAM+8D,IAAQ/8D,EAAM,cAAiC,sBAAA;AACrD,kBAAAwmG,EAAa;AAAA,oBACX,KAAKQ;AAAA,oBACL,OAAOhnG,EAAM,UAAU+8D,EAAK,MAAMA,EAAK,SAAS,IAAI,WAAW;AAAA,kBAAA,CAChE;AAAA,gBACH;AAAA,gBAEC,UAAA;AAAA,kBAAAwpC,GAAW,QAAQS,KAClBvgD,gBAAAA,EAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAO,EAAE,CAAC8/C,EAAU,UAAU,WAAW,QAAQ,QAAQ,GAAG,GAAA;AAAA,oBAAG;AAAA,kBAAA;AAAA,kBAGnE9/C,gBAAAA,EAAAA;AAAAA,oBAAC08C;AAAA,oBAAA;AAAA,sBACC,QAAQ/lG,EAAM,UAAU;AAAA,sBACxB,SAAS2pG;AAAA,sBACT,WAAW,EAAQ3pG,EAAM;AAAA,sBACzB,QAAQ0pG,EAAU54G,CAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACzB;AAAA,cAAA;AAAA,YAAA;AAAA,UACF,EAAA,GA3DaA,CA4Df;AAAA,QAEJ,CAAC;AAAA,QACA+3G,KAAoBlgE,EAAW,SAAS,KACvC0gB,gBAAAA,EAAAA;AAAAA,UAAC4+C;AAAA,UAAA;AAAA,YACC,aAAat/D,EAAW;AAAA,YACxB,cAAc3oC,EAAM;AAAA,YACpB,QAAQA,EAAM,UAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1B;AAAA,IAAA;AAAA,EAAA;AAIR,GCpNM8pG,KAAU,aAEVC,KAAY,CAAC7wF,MAAiB;AAClC,QAAMkmB,IAASlmB,EAAK,MAAM,MAAM,IAAI,CAAC,KAAK,IACpCgqB,IAAUhqB,EAAK,MAAMkmB,EAAO,MAAM,GAClC4qE,IAAY9mE,EAAQ,SAAS,GAAG,IAAI,MAAM,IAC1CL,IAAOmnE,IAAY9mE,EAAQ,MAAM,GAAG,EAAE,IAAIA;AAChD,SAAO,EAAE,QAAA9D,GAAQ,MAAAyD,GAAM,WAAAmnE,EAAA;AACzB,GAEMC,KAAiB,CAAC/wF,MAAiB,SAAS,KAAKA,EAAK,SAAS,GAE/DgxF,KAAoB,CAAChxF,MAAiB;AAC1C,QAAM,EAAE,QAAAkmB,GAAQ,MAAAyD,GAAM,WAAAmnE,EAAA,IAAcD,GAAU7wF,CAAI,GAC5C9X,IAAQyhC,EAAK,MAAM,oCAAoC;AAC7D,SAAKzhC,IAGE;AAAA,IACL,QAAAg+B;AAAA,IACA,MAAMh+B,EAAM,CAAC,EAAE,KAAA;AAAA,IACf,OAAOA,EAAM,CAAC;AAAA,IACd,IAAIA,EAAM,CAAC,EAAE,KAAA;AAAA,IACb,SAASA,EAAM,CAAC;AAAA,IAChB,WAAA4oG;AAAA,EAAA,IARO;AAUX,GAEMG,KAAoB,CAACjxF,MAAiB;AAC1C,QAAM,EAAE,QAAAkmB,GAAQ,MAAAyD,GAAM,WAAAmnE,EAAA,IAAcD,GAAU7wF,CAAI,GAC5C9X,IAAQyhC,EAAK,MAAM,6BAA6B;AACtD,SAAKzhC,IACE,EAAE,QAAAg+B,GAAQ,QAAQh+B,EAAM,CAAC,GAAG,MAAMA,EAAM,CAAC,EAAE,KAAA,GAAQ,WAAA4oG,EAAA,IADvC;AAErB,GAEMI,KAAoB,CAAClnE,MAA6B;AACtD,QAAMlE,IAAUkE,EAAQ,KAAA;AACxB,MAAI,CAAClE,EAAS,QAAO;AACrB,QAAMqrE,IAAarrE,EAAQ,QAAQ,WAAW,EAAE;AAChD,SAAOqrE,EAAW,SAAS,KAAK,CAAC,KAAK,KAAKA,CAAU;AACvD,GAEaC,KAA0B,CAAC;AAAA,EACtC,MAAApxF;AAAA,EACA,aAAAqxF;AAAA,EACA,YAAAC;AAAA,EACA,QAAAnwF;AAAA,EACA,QAAA1jB;AAAA,EACA,WAAA4gC;AACF,MAA0C;AAOxC,MANIgzE,MAAgBC,KAGhBP,GAAe/wF,CAAI,KAGnB,CAACviB;AACH,WAAO;AAET,MAAI4zG,MAAgB;AAClB,WAAKhzE,IAGDizE,MAAe,WAAWA,MAAe,aACpC,KAEF,GAAQnwF,KAAUA,MAAWyvF,MAL3B;AAOX,MAAIS,MAAgB,cAAcC,MAAe,QAAQ;AACvD,UAAMluD,IAAQ6tD,GAAkBjxF,CAAI;AACpC,WAAI,CAACojC,KAAS,CAACjiC,KAAUA,MAAWyvF,KAAgB,KAE7CxtD,EAAM,KAAK,SAAS,KAAK,QAAQ,KAAKA,EAAM,IAAI;AAAA,EACzD;AACA,MAAIkuD,MAAe,QAAQ;AACzB,UAAMluD,IAAQ4tD,GAAkBhxF,CAAI;AACpC,WAAKojC,IACE8tD,GAAkB9tD,EAAM,OAAO,IADnB;AAAA,EAErB;AACA,SAAO,GACLjiC,KACEA,MAAWyvF,MACXnzG,KACAuzG,GAAkBhxF,CAAI;AAE5B,GAEauxF,KAAuB,CAAC;AAAA,EACnC,MAAAvxF;AAAA,EACA,aAAAqxF;AAAA,EACA,YAAAC;AAAA,EACA,QAAAnwF;AAAA,EACA,QAAA1jB;AAAA,EACA,WAAA4gC;AACF,MAAgD;AAC9C,MACE,CAAC+yE,GAAwB;AAAA,IACvB,MAAApxF;AAAA,IACA,aAAAqxF;AAAA,IACA,YAAAC;AAAA,IACA,QAAAnwF;AAAA,IACA,QAAA1jB;AAAA,IACA,WAAA4gC;AAAA,EAAA,CACD;AAED,WAAO;AAGT,MAAIgzE,MAAgB,QAAQ;AAC1B,UAAM,EAAE,QAAAnrE,GAAQ,WAAA4qE,MAAcD,GAAU7wF,CAAI;AAC5C,QAAIsxF,MAAe,SAAS;AAC1B,YAAMzzG,IAASsjB,KAAUA,MAAWyvF,KAAU,GAAGzvF,CAAM,KAAK1jB,CAAM,KAAKA;AACvE,aAAO,GAAGyoC,CAAM,GAAGroC,CAAM,KAAKwgC,CAAS,GAAGyyE,CAAS;AAAA,IACrD;AACA,WAAIQ,MAAe,aACV,GAAGprE,CAAM,OAAOzoC,CAAM,IAAI4gC,CAAS,IAAIyyE,CAAS,KAElD,GAAG5qE,CAAM,GAAG/kB,CAAM,MAAM1jB,CAAM,KAAK4gC,CAAS,GAAGyyE,CAAS;AAAA,EACjE;AAEA,MAAIO,MAAgB,cAAcC,MAAe,QAAQ;AACvD,UAAMluD,IAAQ6tD,GAAkBjxF,CAAI;AACpC,WAAI,CAACojC,KAAS,CAACjiC,IAAe,OACvB,GAAGiiC,EAAM,MAAM,GAAGjiC,CAAM,KAAKiiC,EAAM,MAAM,IAAIA,EAAM,IAAI,KAAKA,EAAM,SAAS;AAAA,EACpF;AAEA,QAAMouD,IAAaR,GAAkBhxF,CAAI;AACzC,MAAI,CAACwxF;AACH,WAAO;AAGT,MAAIF,MAAe,QAAQ;AACzB,UAAMtnE,IAAUwnE,EAAW,QAAQ,KAAA,GAC7BC,IAAaznE,EAAQ,SAAS,GAAG,IAAIA,IAAU,GAAGA,CAAO,MACzDnsC,IAAS2zG,EAAW,OACtB,GAAGA,EAAW,IAAI,KAAKA,EAAW,EAAE,KACpCA,EAAW;AACf,WAAO,GAAGA,EAAW,MAAM,GAAG3zG,CAAM,IAAI4zG,CAAU,GAAGD,EAAW,SAAS;AAAA,EAC3E;AAEA,QAAME,IAAQJ,MAAe,WAAW,QAAQ;AAChD,SAAO,GAAGE,EAAW,MAAM,GAAGA,EAAW,IAAI,GAAGE,CAAK,GAAGF,EAAW,EAAE,IAAIA,EAAW,OAAO,GAAGA,EAAW,SAAS;AACpH,GChJMG,KAAa,CAACl7G,MAA2B;AAC7C,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EAAA;AAEb,GAEMm7G,KAAkB,CAACn7G,MAA2B;AAClD,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,GAAGA,CAAI,IAAI;AAAA,EAAA;AAExB,GAEao7G,KAAwB,CAAC;AAAA,EACpC,MAAAr3E;AAAA,EACA,MAAAxa;AAAA,EACA,UAAA0a;AAAA,EACA,MAAAjkC;AACF,MAAwB;AACtB,QAAMyvC,IAASlmB,EAAK,MAAM,MAAM,IAAI,CAAC,KAAK,IACpC8lB,IAAU9lB,EAAK,UAAA,GACf+pB,IAAS4nE,GAAWl7G,CAAI,GACxBwtF,IAAc,GAAG/9C,CAAM,MACvBi+C,IAAc,GAAGj+C,CAAM,GAAG6D,CAAM;AAAA,EAAKk6C,CAAW,GAAGn+C,CAAO;AAAA,EAAKI,CAAM,KACrEm9C,IAAW3oD,IAAW1a,EAAK,QAC3BuwF,IAAW/1E,EAAK,MAAM,GAAGE,CAAQ,IAAIypD,IAAc3pD,EAAK,MAAM6oD,CAAQ,GACtEyuB,IAAiBp3E,IAAWwL,EAAO,SAAS0rE,GAAgBn7G,CAAI,GAChEs7G,IAAeD,IAAiB,IAAqB;AAC3D,SAAO;AAAA,IACL,MAAMvB;AAAA,IACN,mBAAmB,CAACuB,GAAgBC,CAAY;AAAA,EAAA;AAEpD;ACzBA,SAASC,KAAW;AAElB,SAAO,SAAS,KAAK,UAAU,MAAM;AACvC;AAmBA,SAAS77C,GAActgB,GAAK;AAC1B,MAAIsgB,IAAgBtgB,EAAI;AACxB,WAASo8D,IAAiB97C,MAAkB,SAAS87C,IAAiBA,EAAe,eAAe,OAAO,SAASA,EAAe,kBAAkB,QAAM;AACzJ,QAAIA;AACJ97C,IAAAA,IAAgBA,EAAc,WAAW;AAAA,EAC3C;AACA,SAAOA;AACT;AACA,SAAS+7C,GAASj3G,GAAQV,GAAO;AAC/B,MAAI,CAACU,KAAU,CAACV;AACd,WAAO;AAET,QAAMgwE,IAAWhwE,EAAM,eAAe,OAAO,SAASA,EAAM,YAAA;AAG5D,MAAIU,EAAO,SAASV,CAAK;AACvB,WAAO;AAIT,MAAIgwE,KAAY5G,GAAa4G,CAAQ,GAAG;AACtC,QAAI/3D,IAAOjY;AACX,WAAOiY,KAAM;AACX,UAAIvX,MAAWuX;AACb,eAAO;AAGT,MAAAA,IAAOA,EAAK,cAAcA,EAAK;AAAA,IACjC;AAAA,EACF;AAGA,SAAO;AACT;AAyBA,SAAS2/F,GAAY1nF,GAAM;AACzB,SAAgCA,GAAK,iBAAkB;AACzD;AAyGA,IAAIunD,KAAW,OAAO,WAAa,KAE/Bv4E,KAAO,WAAgB;AAAC,GACxB7B,KAAQo6E,KAAWpgB,EAAAA,kBAAkBn4D;AAGzC,MAAM24G,KAAY;AAAA,EAChB,GAAG/lG;AACL,GASMgmG,KAAqBD,GAAU,oBAC/BE,KAAyBD,OAAuB,CAAAtzG,MAAMA,EAAA;AAC5D,SAASwzG,GAAerrG,GAAU;AAChC,QAAMgE,IAAMqnE,EAAAA,OAAa,MAAM;AAAA,EAI/B,CAAC;AACD,SAAA+/B,GAAuB,MAAM;AAC3B,IAAApnG,EAAI,UAAUhE;AAAA,EAChB,CAAC,GACMqsE,EAAAA,YAAkB,WAAY;AACnC,aAASkV,IAAO,UAAU,QAAQnxF,IAAO,IAAI,MAAMmxF,CAAI,GAAGC,IAAO,GAAGA,IAAOD,GAAMC;AAC/E,MAAApxF,EAAKoxF,CAAI,IAAI,UAAUA,CAAI;AAE7B,WAAOx9E,EAAI,WAAW,OAAO,SAASA,EAAI,QAAQ,GAAG5T,CAAI;AAAA,EAC3D,GAAG,CAAA,CAAE;AACP;AAgPA,MAAMk7G,KAAqB,OAAO;AAAA,EAChC,eAAe;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,IAIA,OAAO,kBAAmB,cAAc,eAAe,WAAW,SAAS,eAAe,IAAI,SAAS;AAAA;AACzG;AACA,SAASC,GAAcz6C,GAAW06C,GAAK;AACrC,QAAMx9F,IAAOg2D,GAASlT,GAAWw6C,GAAA,CAAoB,GAC/C96G,IAAMwd,EAAK;AACjB,MAAIxd,MAAQ,EAAG;AACf,QAAMi7G,IAASx8C,GAAcg8C,GAAYn6C,CAAS,CAAC,GAC7CpgE,IAAQsd,EAAK,QAAQy9F,CAAM,GAC3BC,IAAYh7G,MAAU,KAAK86G,MAAQ,IAAI,IAAIh7G,IAAM,IAAIE,IAAQ86G;AACnE,SAAOx9F,EAAK09F,CAAS;AACvB;AACA,SAASC,GAAgBC,GAAkB;AACzC,SAAOL,GAAcN,GAAYW,CAAgB,EAAE,MAAM,CAAC,KAAKA;AACjE;AACA,SAASC,GAAoBD,GAAkB;AAC7C,SAAOL,GAAcN,GAAYW,CAAgB,EAAE,MAAM,EAAE,KAAKA;AAClE;AACA,SAASE,GAAetpG,GAAOsuD,GAAW;AACxC,QAAMi7C,IAAmBj7C,KAAatuD,EAAM,eACtCwpG,IAAgBxpG,EAAM;AAC5B,SAAO,CAACwpG,KAAiB,CAAChB,GAASe,GAAkBC,CAAa;AACpE;AACA,SAASC,GAAmBn7C,GAAW;AAErC,EADyBkT,GAASlT,GAAWw6C,GAAA,CAAoB,EAChD,QAAQ,CAAAnqG,MAAW;AAClC,IAAAA,EAAQ,QAAQ,WAAWA,EAAQ,aAAa,UAAU,KAAK,IAC/DA,EAAQ,aAAa,YAAY,IAAI;AAAA,EACvC,CAAC;AACH;AACA,SAAS+qG,GAAkBp7C,GAAW;AAEpC,EADiBA,EAAU,iBAAiB,iBAAiB,EACpD,QAAQ,CAAA3vD,MAAW;AAC1B,UAAMgrG,IAAWhrG,EAAQ,QAAQ;AACjC,WAAOA,EAAQ,QAAQ,UACnBgrG,IACFhrG,EAAQ,aAAa,YAAYgrG,CAAQ,IAEzChrG,EAAQ,gBAAgB,UAAU;AAAA,EAEtC,CAAC;AACH;AC7KA,MAAM+pG,KAAY;AAAA,EAChB,GAAG/lG;AACL;AAEA,IAAIinG,KAAwB,IACxBlqG,KAAQ;AACZ,MAAMmqG,KAAQ;AAAA;AAAA;AAAA,EAEd,iBAAiB,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,IAAInqG;AAAA;AAC1D,SAASoqG,KAAgB;AACvB,QAAM,CAAC9pE,GAAI+pE,CAAK,IAAI1gC,EAAAA,SAAe,MAAMugC,KAAwBC,GAAA,IAAU,MAAS;AACpFG,SAAAA,GAAsB,MAAM;AAC1B,IAAIhqE,KAAM,QACR+pE,EAAMF,IAAO;AAAA,EAGjB,GAAG,CAAA,CAAE,GACLI,EAAAA,UAAgB,MAAM;AACpB,IAAAL,KAAwB;AAAA,EAC1B,GAAG,CAAA,CAAE,GACE5pE;AACT;AACA,MAAMkqE,KAAaxB,GAAU,OAQvByB,KAAQD,MAAcJ;AAkJ5B,SAASM,KAAqB;AAC5B,QAAMxuB,wBAAU,IAAA;AAChB,SAAO;AAAA,IACL,KAAK57E,GAAOmT,GAAM;AAChB,UAAIk3F;AACJ,OAACA,IAAWzuB,EAAI,IAAI57E,CAAK,MAAM,QAAQqqG,EAAS,QAAQ,CAAAnvG,MAAYA,EAASiY,CAAI,CAAC;AAAA,IACpF;AAAA,IACA,GAAGnT,GAAO9E,GAAU;AAClB,MAAK0gF,EAAI,IAAI57E,CAAK,KAChB47E,EAAI,IAAI57E,GAAO,oBAAI,IAAA,CAAK,GAE1B47E,EAAI,IAAI57E,CAAK,EAAE,IAAI9E,CAAQ;AAAA,IAC7B;AAAA,IACA,IAAI8E,GAAO9E,GAAU;AACnB,UAAIovG;AACJ,OAACA,IAAY1uB,EAAI,IAAI57E,CAAK,MAAM,QAAQsqG,EAAU,OAAOpvG,CAAQ;AAAA,IACnE;AAAA,EAAA;AAEJ;AAEA,MAAMqvG,KAAmCC,gBAAAA,EAAAA,cAAoB,IAAI,GAC3DC,KAAmCD,gBAAAA,EAAAA,cAAoB,IAAI,GAM3DE,KAA0B,MAAM;AACpC,MAAIC;AACJ,WAASA,IAAoBC,EAAAA,WAAiBL,EAAmB,MAAM,OAAO,SAASI,EAAkB,OAAO;AAClH,GAKME,KAAkB,MAAMD,EAAAA,WAAiBH,EAAmB;AA2ElE,SAASK,GAAgBx9E,GAAM;AAC7B,SAAO,sBAAsBA;AAC/B;AA8yBA,MAAMy9E,KAAgB;AAAA,EACpB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AACR,GACMC,KAA0BC,gBAAAA,EAAAA,WAAiB,SAAoB7tG,GAAOoE,GAAK;AAC/E,QAAM,CAAC0pG,GAAMC,CAAO,IAAI9hC,WAAM;AAC9B2gC,EAAAA,GAAsB,MAAM;AAC1B,IAAI1B,QAMF6C,EAAQ,QAAQ;AAAA,EAEpB,GAAG,CAAA,CAAE;AACL,QAAMC,IAAY;AAAA,IAChB,KAAA5pG;AAAA,IACA,UAAU;AAAA;AAAA,IAEV,MAAA0pG;AAAA,IACA,eAAeA,IAAO,SAAY;AAAA,IAClC,CAACJ,GAAgB,aAAa,CAAC,GAAG;AAAA,IAClC,OAAOC;AAAA,EAAA;AAET,+BAAwB,QAAQ;AAAA,IAC9B,GAAG3tG;AAAA,IACH,GAAGguG;AAAA,EAAA,CACJ;AACH,CAAC,GAEKC,KAA6Bb,gBAAAA,EAAAA,cAAoB,IAAI,GACrDrhB,wBAAoC,QAAQ;AAIlD,SAASmiB,GAAsBluG,GAAO;AACpC,EAAIA,MAAU,WACZA,IAAQ,CAAA;AAEV,QAAM;AAAA,IACJ,IAAA4iC;AAAA,IACA,MAAAgjD;AAAA,EAAA,IACE5lF,GACEmuG,IAAWpB,GAAA,GACXqB,IAAgBC,GAAA,GAChB,CAACC,GAAYC,CAAa,IAAItiC,EAAAA,SAAe,IAAI,GACjDuiC,IAAgB/iC,EAAAA,OAAa,IAAI;AACvCmhC,SAAAA,GAAsB,MACb,MAAM;AACX,IAAsB0B,GAAW,OAAA,GAIjC,eAAe,MAAM;AACnB,MAAAE,EAAc,UAAU;AAAA,IAC1B,CAAC;AAAA,EACH,GACC,CAACF,CAAU,CAAC,GACf1B,GAAsB,MAAM;AAK1B,QADI,CAACuB,KACDK,EAAc,QAAS;AAC3B,UAAMC,IAAiB7rE,IAAK,SAAS,eAAeA,CAAE,IAAI;AAC1D,QAAI,CAAC6rE,EAAgB;AACrB,UAAMC,IAAU,SAAS,cAAc,KAAK;AAC5C,IAAAA,EAAQ,KAAKP,GACbO,EAAQ,aAAa3iB,IAAM,EAAE,GAC7B0iB,EAAe,YAAYC,CAAO,GAClCF,EAAc,UAAUE,GACxBH,EAAcG,CAAO;AAAA,EACvB,GAAG,CAAC9rE,GAAIurE,CAAQ,CAAC,GACjBvB,GAAsB,MAAM;AAK1B,QAFIhnB,MAAS,QACT,CAACuoB,KACDK,EAAc,QAAS;AAC3B,QAAIt9C,IAAY00B,KAA0CwoB,GAAc;AACxE,IAAIl9C,KAAa,CAACoL,GAAOpL,CAAS,UAAeA,EAAU,UAC3DA,IAAYA,KAAa,SAAS;AAClC,QAAIy9C,IAAY;AAChB,IAAI/rE,MACF+rE,IAAY,SAAS,cAAc,KAAK,GACxCA,EAAU,KAAK/rE,GACfsuB,EAAU,YAAYy9C,CAAS;AAEjC,UAAMD,IAAU,SAAS,cAAc,KAAK;AAC5C,IAAAA,EAAQ,KAAKP,GACbO,EAAQ,aAAa3iB,IAAM,EAAE,GAC7B76B,IAAYy9C,KAAaz9C,GACzBA,EAAU,YAAYw9C,CAAO,GAC7BF,EAAc,UAAUE,GACxBH,EAAcG,CAAO;AAAA,EACvB,GAAG,CAAC9rE,GAAIgjD,GAAMuoB,GAAUC,CAAa,CAAC,GAC/BE;AACT;AASA,SAASM,GAAe5uG,GAAO;AAC7B,QAAM;AAAA,IACJ,UAAA4B;AAAA,IACA,IAAAghC;AAAA,IACA,MAAAgjD;AAAA,IACA,kBAAAipB,IAAmB;AAAA,EAAA,IACjB7uG,GACEsuG,IAAaJ,GAAsB;AAAA,IACvC,IAAAtrE;AAAA,IACA,MAAAgjD;AAAA,EAAA,CACD,GACK,CAACkpB,GAAmBC,CAAoB,IAAI9iC,EAAAA,SAAe,IAAI,GAC/D+iC,IAAmBvjC,EAAAA,OAAa,IAAI,GACpCwjC,IAAkBxjC,EAAAA,OAAa,IAAI,GACnCyjC,IAAkBzjC,EAAAA,OAAa,IAAI,GACnC0jC,IAAiB1jC,EAAAA,OAAa,IAAI,GAClC2jC,IAA6CN,GAAkB,OAC/D/iC,IAA4C+iC,GAAkB,MAC9DO;AAAA;AAAA;AAAA,IAGN,CAAC,CAACP;AAAA,IAEF,CAACA,EAAkB;AAAA,IAEnBA,EAAkB,QAAQD,KAAoB,CAAC,EAAEjpB,KAAQ0oB;AAAA;AAGzDzB,SAAAA,EAAAA,UAAgB,MAAM;AACpB,QAAI,CAACyB,KAAc,CAACO,KAAoBO;AACtC;AAMF,aAAS95C,EAAQ1yD,GAAO;AACtB,MAAI0rG,KAAcpC,GAAetpG,CAAK,MACnBA,EAAM,SAAS,YACD0pG,KAAoBD,IACvCiC,CAAU;AAAA,IAE1B;AAGA,WAAAA,EAAW,iBAAiB,WAAWh5C,GAAS,EAAI,GACpDg5C,EAAW,iBAAiB,YAAYh5C,GAAS,EAAI,GAC9C,MAAM;AACX,MAAAg5C,EAAW,oBAAoB,WAAWh5C,GAAS,EAAI,GACvDg5C,EAAW,oBAAoB,YAAYh5C,GAAS,EAAI;AAAA,IAC1D;AAAA,EACF,GAAG,CAACg5C,GAAYO,GAAkBO,CAAK,CAAC,GACxCvC,EAAAA,UAAgB,MAAM;AACpB,IAAKyB,MACDviC,KACJugC,GAAkBgC,CAAU;AAAA,EAC9B,GAAG,CAACviC,GAAMuiC,CAAU,CAAC,GACD3kD,gBAAAA,EAAAA,KAAKskD,GAAc,UAAU;AAAA,IAC/C,OAAOzgC,EAAAA,QAAc,OAAO;AAAA,MAC1B,kBAAAqhC;AAAA,MACA,kBAAAG;AAAA,MACA,iBAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,YAAAb;AAAA,MACA,sBAAAS;AAAA,IAAA,IACE,CAACF,GAAkBP,CAAU,CAAC;AAAA,IAClC,UAAU,CAACe,KAAsBf,2BAA+BV,IAAY;AAAA,MAC1E,aAAa;AAAA,MACb,KAAKoB;AAAA,MACL,SAAS,CAAApsG,MAAS;AAChB,YAAIspG,GAAetpG,GAAO0rG,CAAU,GAAG;AACrC,cAAIgB;AACJ,WAACA,IAAwBJ,EAAgB,YAAY,QAAQI,EAAsB,MAAA;AAAA,QACrF,OAAO;AACL,gBAAMC,IAAeT,IAAoBA,EAAkB,eAAe,MACpEU,IAAevD,GAAoBsD,CAAY;AACrD,UAAwBC,GAAa,MAAA;AAAA,QACvC;AAAA,MACF;AAAA,IAAA,CACD,GAAGH,KAAsBf,2BAA+B,QAAQ;AAAA,MAC/D,aAAaA,EAAW;AAAA,MACxB,OAAOX;AAAA,IAAA,CACR,GAAGW,KAA2BmB,gBAAAA,GAAAA,aAAsB7tG,GAAU0sG,CAAU,GAAGe,KAAsBf,KAA2BjlD,gBAAAA,EAAAA,IAAIukD,IAAY;AAAA,MAC3I,aAAa;AAAA,MACb,KAAKqB;AAAA,MACL,SAAS,CAAArsG,MAAS;AAChB,YAAIspG,GAAetpG,GAAO0rG,CAAU,GAAG;AACrC,cAAIoB;AACJ,WAACA,IAAwBP,EAAe,YAAY,QAAQO,EAAsB,MAAA;AAAA,QACpF,OAAO;AACL,gBAAMH,IAAeT,IAAoBA,EAAkB,eAAe,MACpEa,IAAe5D,GAAgBwD,CAAY;AACjD,UAAwBI,GAAa,MAAA,GACCb,GAAkB,mBAA0DA,GAAkB,aAAa,IAAOlsG,EAAM,aAAa,WAAW;AAAA,QACxL;AAAA,MACF;AAAA,IAAA,CACD,CAAC;AAAA,EAAA,CACH;AACH;AACA,MAAMyrG,KAAmB,MAAMb,EAAAA,WAAiBS,EAAa;AA0oC7D,SAAS2B,GAAuB3zG,GAAS;AACvC,QAAM;AAAA,IACJ,MAAA8vE,IAAO;AAAA,IACP,cAAc8jC;AAAA,IACd,UAAUC;AAAA,EAAA,IACR7zG,GACE8zG,IAAahD,GAAA,GACbhgC,IAAUtB,EAAAA,OAAa,EAAE,GACzB,CAACukC,CAAM,IAAI/jC,WAAe,MAAM+gC,IAAoB,GACpDiD,IAAS3C,QAA6B,MAOtC,CAAC4C,GAAmBC,CAAoB,IAAIlkC,EAAAA,SAAe6jC,EAAa,SAAS,GACjFM,IAAe3E,GAAe,CAAC1/B,GAAMnpE,GAAOkxF,MAAW;AAC3D,IAAA/mB,EAAQ,QAAQ,YAAYhB,IAAOnpE,IAAQ,QAC3CotG,EAAO,KAAK,cAAc;AAAA,MACxB,MAAAjkC;AAAAA,MACA,OAAAnpE;AAAA,MACA,QAAAkxF;AAAA,MACA,QAAAmc;AAAA,IAAA,CACD,GAC2BJ,IAAiB9jC,GAAMnpE,GAAOkxF,CAAM;AAAA,EAClE,CAAC,GACKvmB,IAAOC,EAAAA,QAAc,OAAO;AAAA,IAChC,sBAAA2iC;AAAA,EAAA,IACE,CAAA,CAAE,GACArvC,IAAW0M,EAAAA,QAAc,OAAO;AAAA,IACpC,WAAW0iC,KAAqBJ,EAAa,aAAa;AAAA,IAC1D,UAAUA,EAAa,YAAY;AAAA,IACnC,cAAcA,EAAa;AAAA,EAAA,IACzB,CAACI,GAAmBJ,EAAa,WAAWA,EAAa,QAAQ,CAAC;AACtE,SAAOtiC,EAAAA,QAAc,OAAO;AAAA,IAC1B,SAAAT;AAAA,IACA,MAAAhB;AAAA,IACA,cAAAqkC;AAAA,IACA,UAAAtvC;AAAA,IACA,QAAAkvC;AAAA,IACA,YAAAD;AAAA,IACA,MAAAxiC;AAAA,EAAA,IACE,CAACxB,GAAMqkC,GAActvC,GAAUkvC,GAAQD,GAAYxiC,CAAI,CAAC;AAC9D;AAMA,SAAS7B,GAAYzvE,GAAS;AAC5B,EAAIA,MAAY,WACdA,IAAU,CAAA;AAEZ,QAAM;AAAA,IACJ,QAAAo0G;AAAA,EAAA,IACEp0G,GACEq0G,IAAsBV,GAAuB;AAAA,IACjD,GAAG3zG;AAAA,IACH,UAAU;AAAA,MACR,WAAW;AAAA,MACX,UAAU;AAAA,MACV,GAAGA,EAAQ;AAAA,IAAA;AAAA,EACb,CACD,GACKg4B,IAAch4B,EAAQ,eAAeq0G,GACrCC,IAAmBt8E,EAAY,UAC/B,CAACu8E,GAAeC,CAAe,IAAIxkC,EAAAA,SAAe,IAAI,GACtD,CAACikC,GAAmBQ,CAAqB,IAAIzkC,EAAAA,SAAe,IAAI,GAEhEsjC,IADyDgB,GAAiB,gBACrCC,GACrCG,IAAkBllC,EAAAA,OAAa,IAAI,GACnC39D,IAAO2/F,GAAA;AACbb,EAAAA,GAAsB,MAAM;AAC1B,IAAI2C,MACFoB,EAAgB,UAAUpB;AAAA,EAE9B,GAAG,CAACA,CAAY,CAAC;AACjB,QAAMlnG,IAAWuoG,GAAc;AAAA,IAC7B,GAAG30G;AAAA,IACH,UAAU;AAAA,MACR,GAAGs0G;AAAA,MACH,GAAIL,KAAqB;AAAA,QACvB,WAAWA;AAAA,MAAA;AAAA,IACb;AAAA,EACF,CACD,GACKC,IAAuB1jC,cAAkB,CAAA9oD,MAAQ;AACrD,UAAMktF,IAA4Bl0C,GAAUh5C,CAAI,IAAI;AAAA,MAClD,uBAAuB,MAAMA,EAAK,sBAAA;AAAA,MAClC,gBAAgB,MAAMA,EAAK,eAAA;AAAA,MAC3B,gBAAgBA;AAAA,IAAA,IACdA;AAGJ,IAAA+sF,EAAsBG,CAAyB,GAC/CxoG,EAAS,KAAK,aAAawoG,CAAyB;AAAA,EACtD,GAAG,CAACxoG,EAAS,IAAI,CAAC,GACZmkE,IAAeC,cAAkB,CAAA9oD,MAAQ;AAC7C,KAAIg5C,GAAUh5C,CAAI,KAAKA,MAAS,UAC9BgtF,EAAgB,UAAUhtF,GAC1B8sF,EAAgB9sF,CAAI,KAKlBg5C,GAAUt0D,EAAS,KAAK,UAAU,OAAO,KAAKA,EAAS,KAAK,UAAU,YAAY;AAAA;AAAA;AAAA,IAItFsb,MAAS,QAAQ,CAACg5C,GAAUh5C,CAAI,MAC9Btb,EAAS,KAAK,aAAasb,CAAI;AAAA,EAEnC,GAAG,CAACtb,EAAS,IAAI,CAAC,GACZklE,IAAOC,EAAAA,QAAc,OAAO;AAAA,IAChC,GAAGnlE,EAAS;AAAA,IACZ,cAAAmkE;AAAA,IACA,sBAAA2jC;AAAA,IACA,cAAcQ;AAAA,EAAA,IACZ,CAACtoG,EAAS,MAAMmkE,GAAc2jC,CAAoB,CAAC,GACjDrvC,IAAW0M,EAAAA,QAAc,OAAO;AAAA,IACpC,GAAGnlE,EAAS;AAAA,IACZ,cAAAknG;AAAA,EAAA,IACE,CAAClnG,EAAS,UAAUknG,CAAY,CAAC,GAC/BtvG,IAAUutE,EAAAA,QAAc,OAAO;AAAA,IACnC,GAAGnlE;AAAA,IACH,GAAG4rB;AAAA,IACH,MAAAs5C;AAAA,IACA,UAAAzM;AAAA,IACA,QAAAuvC;AAAA,EAAA,IACE,CAAChoG,GAAUklE,GAAMzM,GAAUuvC,GAAQp8E,CAAW,CAAC;AACnD24E,SAAAA,GAAsB,MAAM;AAC1B,IAAA34E,EAAY,QAAQ,QAAQ,kBAAkBh0B;AAC9C,UAAM0jB,IAA+B7V,GAAK,SAAS,QAAQ,KAAK,CAAA6V,MAAQA,EAAK,OAAO0sF,CAAM;AAC1F,IAAI1sF,MACFA,EAAK,UAAU1jB;AAAA,EAEnB,CAAC,GACMutE,EAAAA,QAAc,OAAO;AAAA,IAC1B,GAAGnlE;AAAA,IACH,SAAApI;AAAA,IACA,MAAAstE;AAAA,IACA,UAAAzM;AAAA,EAAA,IACE,CAACz4D,GAAUklE,GAAMzM,GAAU7gE,CAAO,CAAC;AACzC;ACv6FO,SAAS6wG,GAAkBn5G,GAAU;AAC1C,QAAM+uC,IAAQxhC,EAAAA,OAAOvN,CAAK;AAE1BmP,SAAAA,EAAAA,UAAU,MAAM;AACd,IAAA4/B,EAAM,UAAU/uC;AAAA,EAClB,GAAG,CAACA,CAAK,CAAC,GAEH+uC;AACT;ACPO,SAASqqE,GACdphH,GACAmO,GACA7B,GACA;AACA,QAAM+0G,IAAcF,GAAehzG,CAAQ;AAE3CgJ,EAAAA,EAAAA,UAAU,MAAM;AACd,aAASosD,EAAQtwD,GAAgC;AAC/C,MAAAouG,EAAY,QAAQpuG,CAAK;AAAA,IAC3B;AAEA,oBAAS,iBAAiBjT,GAAMujE,GAASj3D,CAAO,GACzC,MAAM,SAAS,oBAAoBtM,GAAMujE,GAASj3D,CAAO;AAAA,EAClE,GAAG,CAACtM,GAAMsM,GAAS+0G,CAAW,CAAC;AACjC;AChBO,MAAMC,KAAkB,CAC7Bt6G,GACAu8D,MACG;AACH,EAAA69C;AAAA,IACE;AAAA,IACA,CAACnuG,MAAU;AACT,MAAKjM,MACAA,EAAO,SAASiM,EAAM,MAAc,KACvCswD,EAAQtwD,CAAK;AAAA,IAEjB;AAAA,IACA;AAAA,MACE,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GCMMsuG,KAAO;AAAA,EACX;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAEX,GAEMC,KAAgC,CAAC,OAAO,QAAQ,OAAO,KAAK,GAErDC,KAAa,MAAM;AAC9B,QAAM,CAAC19E,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClDmjE,IAAoBnqG,GAAW8mC,EAAkB,GACjDiwC,IAA0B/2E,GAAWinC,EAAwB,GAC7D+vC,IAA0Bh3E,GAAW+lC,EAAY,GACjD,CAACy0D,GAAiBpB,CAAkB,IAAIl5F,GAAQ6mC,EAAmB,GACnE,CAACqkC,GAAQC,CAAS,IAAI9oB,EAAAA,SAAS,EAAK,GACpC,CAAC6nD,GAAgBC,CAAiB,IAAI9nD,EAAAA,SAAmB,CAAA,CAAE,GAC3D,CAAC+nD,GAAmBC,CAAoB,IAAIhoD,EAAAA,SAAS,EAAK,GAE1DioD,IAAa,CAACtlD,MAAoB;AACtC,IAAAT,EAAQS,CAAO,GACfR,EAAgBQ,CAAO;AAAA,EACzB,GAEMulD,IAAczsG,EAAAA,OAAO;AAAA,IACzB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX,GAEK,EAAE,MAAAqoE,GAAM,gBAAAE,EAAA,IAAmB/B,GAAY;AAAA,IAC3C,MAAM4G;AAAA,IACN,cAAcC;AAAA,EAAA,CACf,GAEKvnB,IAAc,CAAC5Z,MAAkB;AAErC,QADAmhC,EAAU,EAAK,GACX,CAACi/B,EAAmB;AACxB,UAAM94F,IAAUi5F,EAAY;AAC5B,QAAIj5F,EAAQ,mBAAmB;AAC7B,UAAIk5F,KAAa;AACjB,UAAIl5F,EAAQ,kBAAkB;AAC5B,YAAIm5F;AAEJ,QAAIP,EAAe,SAASlgE,CAAK,IAC/BygE,KAAgBP,EAAe,OAAO,CAAC1mG,MAAMA,MAAMwmC,CAAK,IAExDygE,KAAgB,CAAC,GAAGP,GAAgBlgE,CAAK,GAG3CwgE,KAAa,GAAGl5F,EAAQ,aAAa,OAAOm5F,GACzC,OAAO,OAAO,EACd,KAAK,IAAI,CAAC,KAAKn5F,EAAQ,SACvB,MAAMA,EAAQ,SAAS,QAAQ,GAAG,IAAI,CAAC,EACvC,UAAA,CAAW;AAAA,MAChB;AACE,QAAAk5F,KAAa,GAAGl5F,EAAQ,aAAa,OAAO04B,CAAK,KAAK14B,EAAQ,SAC3D,OAAOA,EAAQ,SAAS,MAAM,OAAO,GAAG,SAAS,MAAM,CAAC,EACxD,WAAW;AAEhB,MAAKk5F,GAAW,SAAS;AAAA,CAAI,MAAGA,MAAc;AAAA,IAC9CF;AAAA,QACEh+E,EAAK,MAAM,GAAGC,GAAgBD,GAAMhb,EAAQ,KAAK,CAAC,IAChDk5F,KACAl+E,EAAK,MAAMhb,EAAQ,QAAQ;AAAA,MAAA;AAAA,IAEjC;AACE,MAAAg5F;AAAA,QACEh+E,EAAK,MAAM,GAAGhb,EAAQ,QAAQ,IAC5B,GAAGA,EAAQ,aAAa,OAAO04B,CAAK;AAAA,IACpC1d,EAAK,MAAMhb,EAAQ,QAAQ;AAAA,MAAA;AAAA,EAGnC,GAEMo5F,IAAkB,CAACtH,MAAiC;AACxD,UAAM9xF,IAAUi5F,EAAY;AAE5B,QADIj5F,EAAQ,gBAAgB8xF,KACxB,CAACF,GAAwB;AAAA,MAC3B,MAAM5xF,EAAQ;AAAA,MACd,aAAaA,EAAQ;AAAA,MACrB,YAAA8xF;AAAA,MACA,QAAQ9xF,EAAQ;AAAA,MAChB,QAAQA,EAAQ;AAAA,MAChB,WAAWA,EAAQ;AAAA,IAAA,CACpB,EAAG;AACJ,UAAM6mB,KAAWkrE,GAAqB;AAAA,MACpC,MAAM/xF,EAAQ;AAAA,MACd,aAAaA,EAAQ;AAAA,MACrB,YAAA8xF;AAAA,MACA,QAAQ9xF,EAAQ;AAAA,MAChB,QAAQA,EAAQ;AAAA,MAChB,WAAWA,EAAQ;AAAA,IAAA,CACpB;AACD,QAAI,CAAC6mB;AACH;AAGF,UAAMg9C,KAAW7jE,EAAQ,WAAWA,EAAQ,KAAK,QAC3CmmF,IAAYnmF,EAAQ,WACpBq5F,IAAclT,IAAYt/D,GAAS,YAAYs/D,CAAS,IAAI;AAClE,IAAA6S;AAAA,MACEh+E,EAAK,MAAM,GAAGhb,EAAQ,QAAQ,IAC5B6mB,KACA7L,EAAK,MAAM6oD,EAAQ;AAAA,IAAA,GAEvB7jE,EAAQ,cAAc8xF,GACtB9xF,EAAQ,OAAO6mB,IACXwyE,KAAe,KAAKlT,KACtByB,EAAmB;AAAA,MACjB,OAAO5nF,EAAQ,WAAWq5F;AAAA,MAC1B,KAAKr5F,EAAQ,WAAWq5F,IAAclT,EAAU,SAAS;AAAA,MACzD,OAAO,KAAK,IAAA;AAAA,IAAI,CACjB;AAAA,EAEL,GAEMmT,IAAoB,MAAM;AAC9B,IAAAz/B,EAAU,EAAK;AACf,UAAM75D,IAAUi5F,EAAY;AAC5B,IAAIj5F,EAAQ,aAAa,KAAKA,EAAQ,WAAW,KAGjDulE,EAAwB;AAAA,MACtB,OAAOvlE,EAAQ;AAAA,MACf,KAAKA,EAAQ;AAAA,MACb,OAAO,KAAK,IAAA;AAAA,IAAI,CACjB;AAAA,EACH,GAEMu5F,IAAkB,CAACtiH,MAA2B;AAClD,IAAA4iF,EAAU,EAAK;AACf,UAAM75D,IAAUi5F,EAAY,SACtBjmG,KAAOq/F,GAAsB;AAAA,MACjC,MAAAr3E;AAAA,MACA,MAAMhb,EAAQ;AAAA,MACd,UAAUA,EAAQ;AAAA,MAClB,MAAA/oB;AAAA,IAAA,CACD;AACD,IAAA+hH,EAAWhmG,GAAK,IAAI,GACpB40F,EAAmB,IAAI,GACvBriB,EAAwB;AAAA,MACtB,OAAOvyE,GAAK,kBAAkB,CAAC;AAAA,MAC/B,KAAKA,GAAK,kBAAkB,CAAC;AAAA,MAC7B,OAAO,KAAK,IAAA;AAAA,IAAI,CACjB;AAAA,EACH;AAEA,EAAAulG,GAAgB1jC,EAAK,SAAS,SAAS,MAAM;AAC3C,IAAAgF,EAAU,EAAK,GACf+tB,EAAmB,IAAI;AAAA,EACzB,CAAC,GAEDx5F,EAAAA,UAAU,MAAM;AACd,IAAAuqG,EAAkB,CAACpxG,GAAcsB,MAAyB;AAExD,iBAAW,MAAM;AACf,cAAMmX,KAAUi5F,EAAY;AAC5B,QAAAj5F,GAAQ,QAAQzY,EAAQ,MAAM,OAC9ByY,GAAQ,WAAW+a,GAAYC,GAAMhb,GAAQ,KAAK;AAClD,cAAM6jE,KAAW7oD,EAAK,QAAQ;AAAA,GAAMhb,GAAQ,QAAQ;AAQpD,YAPAA,GAAQ,OAAO6jE,OAAa,KACxB7oD,EAAK,MAAMhb,GAAQ,QAAQ,IAC3Bgb,EAAK,MAAMhb,GAAQ,UAAU6jE,EAAQ,GACzC7jE,GAAQ,WAAWmb,GAAYH,GAAMhb,GAAQ,KAAK,GAClDA,GAAQ,gBACNgb,EAAK,MAAMhb,GAAQ,QAAQ,EAAE,MAAM,MAAM,IAAI,CAAC,KAAK,IACrDA,GAAQ,oBAAoBA,GAAQ,SAAS,KAAA,EAAO,WAAW,IAAI,GAC/DA,GAAQ,mBAAmB;AAC7B,gBAAMw5F,KAAiBx5F,GAAQ,SAC5B,UAAA,EACA,MAAM,CAAC,EACP,UAAA,GACGy5F,IAAaD,GAAe,QAAQ,GAAG,GACvCE,IAAWF,GAAe,QAAQ,GAAG;AAC3C,UAAAx5F,GAAQ,mBAAmB,GAAQy5F,MAAe,KAAKC,IACnD15F,GAAQ,mBACV64F;AAAA,YACEW,GACG,MAAMC,IAAa,GAAGC,CAAQ,EAC9B,MAAM,GAAG,EACT,IAAI,CAACxnG,MAAMA,EAAE,MAAM;AAAA,UAAA,IAGxB2mG,EAAkB,CAAA,CAAE;AAAA,QAExB;AACA,cAAMc,IAAqB9wG,EAAQ,QAAQ,cAAc,GACnDm9C,IAAY2zD,GAAoB,WAChCxN,IAAe5kG,GAAS,cAAA,GAAiB,UAAU,YAAA,IAAgB,CAAC,GACpEqyG,IAAeryG,GAAS,UAAA,GACxBsyG,KAAiBtyG,GAAS,eAAA,GAAkB,aAAA;AAClD,QAAAyY,GAAQ,cAAcgmC,GAAW,SAAS,UAAU,IAChD,aACAA,GAAW,SAAS,QAAQ,IAC5B,WACAA,GAAW,SAAS,OAAO,IAC3B,UACA,QACJhmC,GAAQ,SAAS25F,GAAoB,aAAa,aAAa,KAAK,IACpE35F,GAAQ,SAAS25F,GAAoB,aAAa,aAAa,KAAK,IACpE35F,GAAQ,YACN25F,GAAoB,aAAa,gBAAgB,KAAK,IACpD3zD,GAAW,SAAS,UAAU,KAChChmC,GAAQ,aAAa65F,IAAgB,MAAM,SAAS,IACpD75F,GAAQ,WAAW65F,IAAgB,KAAK,QAAQ,MACvC7zD,GAAW,SAAS,OAAO,KACpChmC,GAAQ,aAAa45F,GAAc,MAAM,SAAS,IAClD55F,GAAQ,WAAW45F,GAAc,KAAK,QAAQ,MACrC5zD,GAAW,SAAS,QAAQ,KACrChmC,GAAQ,aAAazY,GAAS,OAAO,SAAS,IAC9CyY,GAAQ,WAAWzY,GAAS,MAAM,QAAQ,OAE1CyY,GAAQ,aAAamsF,GAAc,OAAO,SAAS,IACnDnsF,GAAQ,WAAWmsF,GAAc,MAAM,QAAQ,KAEjD3mB,EAAwB,CAAA,CAAE,GAC1BoiB,EAAmB;AAAA,UACjB,OAAO5nF,GAAQ,cAAc,IAAIA,GAAQ,aAAaA,GAAQ;AAAA,UAC9D,KAAKA,GAAQ,YAAY,IAAIA,GAAQ,WAAYzY,GAAS,MAAM,QAAQyY,GAAQ;AAAA,UAChF,OAAO,KAAK,IAAA;AAAA,QAAI,CACjB,GACD60D,EAAK,aAAahsE,CAAO,GACzBkwG,EAAqB,EAAQxxG,CAAQ,GACrCsyE,EAAU,EAAI;AAAA,MAChB,GAAG,CAAC;AAAA,IACN,CAAC;AAAA,EACH,GAAG,CAAC7+C,GAAM65C,GAAM8jC,GAAmB/Q,GAAoBpiB,CAAuB,CAAC,GAE/Ep3E,EAAAA,UAAU,MAAM;AACd,IAAK46F,KACHnvB,EAAU,EAAK;AAAA,EAEnB,GAAG,CAACmvB,CAAe,CAAC,GAEpB56F,EAAAA,UAAU,MAAM;AACd,UAAMm4E,IAAY,CAACr8E,MAAyB;AAC1C,MAAIA,EAAM,QAAQ,aAGlB2vE,EAAU,EAAK,GACf+tB,EAAmB,IAAI;AAAA,IACzB;AAEA,kBAAO,iBAAiB,WAAWrhB,CAAS,GACrC,MAAM,OAAO,oBAAoB,WAAWA,CAAS;AAAA,EAC9D,GAAG,CAACqhB,CAAkB,CAAC;AAEvB,QAAM,CAACkS,GAAaC,CAAc,IAAIhpD,EAAAA,SAAiC,IAAI,GACrEipD,IAAextG,EAAAA,OAA6C,IAAI,GAEhEytG,IAAUxrG,cAAY,CAACyrG,MAA0B;AACrD,IAAIF,EAAa,YAAW,aAAaA,EAAa,OAAO,GAAGA,EAAa,UAAU,OACvFD,EAAeG,CAAI;AAAA,EACrB,GAAG,CAAA,CAAE,GAECC,KAAW1rG,EAAAA,YAAY,MAAM;AACjC,IAAAurG,EAAa,UAAU,WAAW,MAAMD,EAAe,IAAI,GAAG,GAAG;AAAA,EACnE,GAAG,CAAA,CAAE;AAGL3rG,SAAAA,EAAAA,UAAU,MAAM;AACd,IAAKwrE,KAAQmgC,EAAe,IAAI;AAAA,EAClC,GAAG,CAACngC,CAAM,CAAC,GAGTjpB,gBAAAA,MAACulD,MACD,UAAAvlD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,IAAG,eAAc,KAAKkkB,EAAK,aAAa,OAAO,EAAE,GAAGE,GAAgB,QAAQ,GAAA,GAC9E,eACC9jB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,kEACb,UAAA;AAAA,IAAAN,gBAAAA,MAAC,SAAI,WAAU,QACZ,UAAA6nD,GAAK,IAAI,CAAC4B,MACTzpD,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QAEL,cAAYypD,EAAI;AAAA,QAChB,gBAAcxB,EAAe,SAASwB,EAAI,KAAK;AAAA,QAC/C,OAAOxB,EAAe,SAASwB,EAAI,KAAK,IAAI,UAAUA,EAAI,IAAI,KAAK,SAASA,EAAI,IAAI;AAAA,QACpF,SAAS,MAAM9nD,EAAY8nD,EAAI,KAAK;AAAA,QACpC,WAAWtsD;AAAA,UACT;AAAA,UACA;AAAA,YACEssD,EAAI;AAAA,YACJ,EAAE,eAAexB,EAAe,SAASwB,EAAI,KAAK,EAAA;AAAA,UAAE;AAAA,QACtD;AAAA,QAGD,UAAAA,EAAI;AAAA,MAAA;AAAA,MAbAA,EAAI;AAAA,IAAA,CAeZ,GACH;AAAA,IACAzpD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,gCAAA,CAAgC;AAAA,IAC/CA,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,2BACb,UAAAA,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,eAAY;AAAA,QACZ,WAAW7C;AAAA,UACT;AAAA,UACA;AAAA,YACE,kCACEmrD,EAAY,QAAQ,aAAa,KACjCA,EAAY,QAAQ,WAAW;AAAA,UAAA;AAAA,QACnC;AAAA,QAEF,OACEA,EAAY,QAAQ,aAAa,KACjCA,EAAY,QAAQ,WAAW,IAC3B,wCACA;AAAA,QAEN,SAASK;AAAA,QACV,UAAA;AAAA,MAAA;AAAA,IAAA,GAGH;AAAA,IACA3oD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,gCAAA,CAAgC;AAAA,IAE/CM,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,gBAAgB,MAAMgpD,EAAQ,MAAM;AAAA,QACpC,gBAAgBE;AAAA,QAEhB,UAAA;AAAA,UAAAlpD,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,eAAY;AAAA,cACZ,WAAWnD;AAAA,gBACT;AAAA,gBACA,EAAE,eAAegsD,MAAgB,OAAA;AAAA,cAAO;AAAA,cAE1C,OAAM;AAAA,cACN,iBAAeA,MAAgB;AAAA,cAC/B,iBAAc;AAAA,cACd,SAAS,MAAMG,EAAQ,MAAM;AAAA,cAE5B,UAAA;AAAA,gBAAAhB,EAAY,QAAQ;AAAA,gBAAY;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAElCa,MAAgB,UACfnpD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,kIACX,UAAA,CAAC,QAAQ,SAAS,UAAU,UAAU,EAAyB,IAAI,CAAC15D,MAAS;AAC7E,kBAAMojH,IAAezI,GAAwB;AAAA,cAC3C,MAAMqH,EAAY,QAAQ;AAAA,cAC1B,aAAaA,EAAY,QAAQ;AAAA,cACjC,YAAYhiH;AAAA,cACZ,QAAQgiH,EAAY,QAAQ;AAAA,cAC5B,QAAQA,EAAY,QAAQ;AAAA,cAC5B,WAAWA,EAAY,QAAQ;AAAA,YAAA,CAChC,GACKz/E,KAAYy/E,EAAY,QAAQ,gBAAgBhiH,GAChDqjH,KAAgB9gF,KAClB,WAAWviC,CAAI,KACf,CAACojH,KAAgBpjH,MAAS,SAC1B,oEACA,CAACojH,KAAgBpB,EAAY,QAAQ,gBAAgB,aACrD,qCACCoB,IAED,SADA,qBAAqBpjH,CAAI;AAE7B,mBACE05D,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBAEL,eAAa,gBAAgB15D,CAAI;AAAA,gBACjC,cAAY,aAAaA,CAAI;AAAA,gBAC7B,gBAAcuiC;AAAA,gBACd,OAAO8gF;AAAA,gBACP,SAAS,MAAM;AAAE,kBAAAlB,EAAgBniH,CAAI,GAAG8iH,EAAe,IAAI;AAAA,gBAAG;AAAA,gBAC9D,WAAWjsD;AAAA,kBACT;AAAA,kBACA;AAAA,oBACE,6BAA6Bt0B;AAAA,oBAC7B,iCAAiC,CAAC6gF;AAAA,oBAClC,kBAAkBA,KAAgB,CAAC7gF;AAAA,kBAAA;AAAA,gBACrC;AAAA,gBAGD,UAAAviC;AAAA,cAAA;AAAA,cAfIA;AAAA,YAAA;AAAA,UAkBX,CAAC,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ05D,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,gCAAA,CAAgC;AAAA,IAE/CM,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,gBAAgB,MAAMgpD,EAAQ,MAAM;AAAA,QACpC,gBAAgBE;AAAA,QAEhB,UAAA;AAAA,UAAAxpD,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,eAAY;AAAA,cACZ,WAAW7C;AAAA,gBACT;AAAA,gBACA,EAAE,eAAegsD,MAAgB,OAAA;AAAA,cAAO;AAAA,cAE1C,OAAM;AAAA,cACN,iBAAeA,MAAgB;AAAA,cAC/B,iBAAc;AAAA,cACd,SAAS,MAAMG,EAAQ,MAAM;AAAA,cAC9B,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGAH,MAAgB,UACfnpD,gBAAAA,MAAC,OAAA,EAAI,WAAU,kIACZ,UAAA8nD,GAAU,IAAI,CAACxhH,MACd05D,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cAEL,eAAa,gBAAgB15D,CAAI;AAAA,cACjC,WAAU;AAAA,cACV,OAAO,WAAWA,CAAI;AAAA,cACtB,cAAY,WAAWA,CAAI;AAAA,cAC3B,SAAS,MAAMsiH,EAAgBtiH,CAAI;AAAA,cAElC,UAAAA;AAAA,YAAA;AAAA,YAPIA;AAAA,UAAA,CASR,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,EAAA,CACF,GAEJ,GACA;AAEJ,GCjdMoC,KAASK,GAAa,MAAM,EAAE,MAAM,gBAAgB,GAC7C6gH,KAAe,CAACjzG,MAGvB;AACJ,QAAMi0B,IAAc5tB,GAAaimC,EAAe,GAC1C6nC,IAAc9tE,GAAaomC,EAAe,GAC1Cj3B,IAAOnP,GAAainC,EAAQ,GAE5BpS,IAAS8/B,EAAAA,QAAQ,MAAM;AAC3B,UAAM9gC,IAAkBzC,GAAYxD,CAAW;AAC/C,WAAIiG,EAAgB,WAAW,IAAUxC,KAClCwC,EAAgB,CAAC,EAAE,QAAQxC;AAAA,EACpC,GAAG,CAACzD,CAAW,CAAC,GAEV+sD,IAAcnH,GAAS1F,GAAaj5C,CAAM,IAAI,GAE9C,CAACl+B,GAASk2G,CAAU,IAAIzpD,EAAAA,SAAS,EAAK;AAC5C,SAAIzsD,KACFjL,GAAO,MAAM,sBAAsB,GAErC+U,EAAAA,UAAU,MAAM;AACd,IAAAosG,EAAW,EAAI,GACfnhH,GAAO,MAAM,sBAAsB;AAAA,EACrC,GAAG,CAAA,CAAE,GAGH43D,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO3pD,EAAM;AAAA,MAEb,UAAA;AAAA,QAAAqpD,gBAAAA,EAAAA;AAAAA,UAAC41C;AAAA,UAAA;AAAA,YACC,SAASj/F,EAAM;AAAA,YACf,OAAO,EAAE,aAAa,GAAGghF,CAAW,KAAA;AAAA,YACpC,QAAA9lD;AAAA,YACA,kBAAkB1lB,MAAS42B,GAAW;AAAA,YACtC,QAAM;AAAA,UAAA;AAAA,QAAA;AAAA,8BAEPglE,IAAA,CAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGlB,GCjCM+B,KAAgB,CAACjqG,MAAiB;AACtC,MAAIwC,IAAOxC,EAAK,KAAA,EAAO,QAAQ,QAAQ,GAAG;AAC1C,SAAIsuE,GAAiB,KAAK9rE,CAAI,MAC5BA,IAAOA,EAAK,QAAQ,MAAM,EAAE,GAC5BA,IAAO,IAAIA,CAAI,KACf8rE,GAAiB,YAAY,IAExB9rE;AACT,GAEM0nG,KAA+B,CAACviF,MAOhC;AACJ,QAAMyrB,IAAkB,CAAA;AACxB,SAAIzrB,EAAY,QACdyrB,EAAM,KAAK,IAAIzrB,EAAY,IAAI,EAAE,GAE/BA,EAAY,cACdyrB,EAAM,KAAK,KAAKzrB,EAAY,UAAU,IAAI,GAExCA,EAAY,SACdyrB,EAAM,KAAK,IAAIzrB,EAAY,KAAK,GAAG,GAErCyrB,EAAM,KAAK62D,GAActiF,EAAY,IAAI,CAAC,GACtCA,EAAY,SAASA,EAAY,UAAUA,EAAY,QACzDyrB,EAAM,KAAK,MAAM62D,GAActiF,EAAY,KAAK,CAAC,EAAE,GAEjDA,EAAY,SACdyrB,EAAM,KAAKzrB,EAAY,KAAK,GAEvByrB,EAAM,KAAK,GAAG;AACvB,GAEM+2D,KAAwB,CAC5Bp/E,GACA0oD,GACAzsD,GACAvgC,MACG;AACH,QAAM8b,IAAUmsB,GAAoB3D,CAAW,EAC5C,OAAO,CAACpD,MAAgBA,EAAY,SAAS6G,EAAS,EACtD,IAAI,CAAC7G,OAAiB;AAAA,IACrB,MAAMA,EAAY;AAAA,IAClB,OAAOA,EAAY;AAAA,IACnB,MAAMA,EAAY;AAAA,IAClB,YAAYA,EAAY;AAAA,IACxB,OAAOA,EAAY;AAAA,IACnB,OAAOA,EAAY;AAAA,EAAA,EACnB;AAEJ,SAAAplB,EAAQ,OAAOkxE,GAAa,GAAG;AAAA,IAC7B,MAAAzsD;AAAA,IACA,MAA2B;AAAA,EAAY,CACxC,GAEMzkB,EAAQ,IAAI2nG,EAA4B,EAAE,KAAK;AAAA,CAAI;AAC5D,GAEaE,KAA2B,CAAC;AAAA,EACvC,MAAA5/E;AAAA,EACA,aAAAO;AAAA,EACA,aAAA0oD;AAAA,EACA,MAAAzsD;AAAA,EACA,MAAAvgC;AACF,MAA8B;AAC5B,QAAM4jH,IAAmBF;AAAA,IACvBp/E;AAAA,IACA0oD;AAAA,IACAzsD;AAAA,EAEF,GACMsjF,IAAOv/E,GAAa,OAAA,GACpBuN,IAAQvN,GAAa,QAAA,GACrBwK,IAAQxK,GAAa,QAAA;AAE3B,MAAIu/E,GAAM;AACR,UAAMC,IAAYD,EAAK,MAAM,OACvBE,IAAUF,EAAK,KAAK,OAAO,GAC3BG,IAAUH,EAAK,aAAA,GACfI,IAAcD,IAChBjgF,EAAK,MAAMigF,EAAQ,MAAM,OAAOA,EAAQ,KAAK,OAAO,CAAC,IACrD,IACEE,IAAWD,IACb,GAAGL,CAAgB;AAAA,EAAKK,CAAW,KACnCL;AACJ,WAAO7/E,EAAK,MAAM,GAAG+/E,CAAS,IAAII,IAAWngF,EAAK,MAAMggF,CAAO;AAAA,EACjE;AAEA,QAAMlM,IAAiBhmE,IACnBA,EAAM,MAAM,QACZ/C,IACAA,EAAM,KAAK,OAAO,IAClB,GACE1nC,IAAS28B,EAAK,MAAM,GAAG8zE,CAAc,GACrCpiB,IAAS1xD,EAAK,MAAM8zE,CAAc,GAClCsM,IACJ/8G,EAAO,SAAS,KAAK,CAACA,EAAO,SAAS;AAAA,CAAI,IAAI;AAAA,IAAO;AACvD,SAAO,GAAGA,CAAM,GAAG+8G,CAAS,GAAGP,CAAgB;AAAA,EAAKnuB,CAAM;AAC5D,GClGM2uB,KAAqBt9E,KAAS,GAKvBu9E,KAAmB,CAC9B7/B,GACA8/B,GACAC,OAEC//B,EAAY,SAAS8/B,CAAQ,IAAI9/B,EAAY,QAAQ+/B,CAAS,KAAK,GAEzDC,KAAsB,CACjChgC,GACAigC,MACkB;AAClB,MAAIA,EAAiB,WAAW,EAAG,QAAO;AAC1C,QAAMC,IAAOD,EAAiBA,EAAiB,SAAS,CAAC;AACzD,SAAOjgC,EAAY,SAASkgC,CAAI,IAAIN;AACtC,GAEaO,KAAuB,CAClCngC,GACAigC,MACkB;AAClB,MAAIA,EAAiB,WAAW,EAAG,QAAO;AAC1C,QAAM7rG,IAAQ6rG,EAAiB,CAAC;AAChC,SAAOjgC,EAAY,QAAQ5rE,CAAK,IAAIwrG;AACtC,GAEMQ,KAAkB,IAClBC,KAAc,IACdC,KAAgB,IAChBC,KAAeH,KAAkBE,KAAgB,GACjDE,MAAgBF,KAAgBD,MAAe,GAE/CI,KAAe,CAACC,MAA+B;AACnD,WAASzjH,IAAI,KAAKA,KAAK;AACrB,UAAM0jH,IAAY,OAAO,aAAa,KAAK1jH,CAAC;AAC5C,QAAI0jH,EAAU,WAAW,KAAK1jH,KAAK,MAAM,CAACyjH,EAAc,IAAIC,CAAS;AACnE,aAAOA;AAET,QAAI1jH,IAAI,IAAI;AACV,YAAM2jH,IAAW,IAAI3jH,IAAI,EAAE;AAC3B,UAAI,CAACyjH,EAAc,IAAIE,CAAQ,EAAG,QAAOA;AAAA,IAC3C;AAAA,EACF;AACF,GAEaC,KAA4B,MAAM;AAC7C,QAAMx/F,IAAOnP,GAAainC,EAAQ,GAC5B0wC,IAAU33E,GAAaknC,EAA8B,GACrD4mC,IAAc9tE,GAAaomC,EAAe,GAC1CxY,IAAc5tB,GAAaimC,EAAe,GAC1Csf,IAAkBvlD,GAAa6nC,EAAmB,GAClD,CAACxa,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAElClS,IAAoB6gC,EAAAA;AAAAA,IACxB,MACEpjC,GAAoB3D,CAAW,EAC5B,OAAO,CAACpD,MAAgBA,EAAY,SAAS6G,EAAS;AAAA,IAC3D,CAACzD,CAAW;AAAA,EAAA,GAGR4gF,IAAgB75C,EAAAA;AAAAA,IACpB,MAAM,IAAI,IAAI7gC,EAAkB,IAAI,CAAC9hC,MAAMA,EAAE,IAAI,CAAC;AAAA,IAClD,CAAC8hC,CAAiB;AAAA,EAAA,GAGdi6E,IAAmBp5C,EAAAA;AAAAA,IACvB,MAAM7gC,EAAkB,IAAI,CAAC9hC,MAAMA,EAAE,IAAI;AAAA,IACzC,CAAC8hC,CAAiB;AAAA,EAAA,GAGd86E,IAAc/vG,EAAAA,OAAuB,IAAI,GACzC,CAACgwG,GAAUC,CAAW,IAAI1rD,EAAAA,SAE9B,CAAA,CAAE;AAEJqB,EAAAA,EAAAA,gBAAgB,MAAM;AACpB,QAAI,CAACmqD,EAAY,WAAWb,EAAiB,WAAW,EAAG;AAC3D,UAAMgB,IAAeH,EAAY,QAAQ,sBAAA,EAAwB,MAC3DvpG,IAA8D,CAAA;AACpE,eAAWwkB,KAAQkkF,GAAkB;AACnC,YAAM5lD,IAAK,SAAS;AAAA,QAClB,yBAAyB,IAAI,OAAOt+B,CAAI,CAAC;AAAA,MAAA;AAE3C,UAAI,CAACs+B,EAAI;AACT,YAAMx8C,IAAIw8C,EAAG,sBAAA;AACb,MAAA9iD,EAAKwkB,CAAI,IAAI;AAAA,QACX,SAASle,EAAE,OAAOojG;AAAA,QAClB,UAAUpjG,EAAE,QAAQojG;AAAA,MAAA;AAAA,IAExB;AACA,IAAAD,EAAYzpG,CAAI;AAAA,EAClB,GAAG,CAAC0oG,GAAkBjgC,CAAW,CAAC;AAElC,QAAMkhC,IAAuCr6C,EAAAA;AAAAA,IAC3C,OAAO;AAAA;AAAA;AAAA,MAGL,SAAS,CAAC9qC,MACRglF,EAAShlF,CAAI,GAAG,WAAWikD,EAAY,KAAKjkD,CAAI,IAAIuG,KAAS;AAAA,MAC/D,UAAU,CAACvG,MACTglF,EAAShlF,CAAI,GAAG,YAAYikD,EAAY,MAAMjkD,CAAI,IAAIuG,KAAS;AAAA,IAAA;AAAA,IAEnE,CAAC09C,GAAa+gC,CAAQ;AAAA,EAAA,GAGlBI,IAAat6C,EAAAA,QAAQ,MAAM;AAC/B,QAAI7gC,EAAkB,SAAS,EAAG,QAAO,CAAA;AACzC,UAAMo7E,IAAoB,CAAA;AAC1B,aAASnkH,IAAI,GAAGA,IAAI+oC,EAAkB,SAAS,GAAG/oC;AAChD,MAAAmkH,EAAQ;AAAA,QACNvB;AAAA,UACEqB;AAAA,UACAl7E,EAAkB/oC,CAAC,EAAE;AAAA,UACrB+oC,EAAkB/oC,IAAI,CAAC,EAAE;AAAA,QAAA;AAAA,MAC3B;AAGJ,WAAOmkH;AAAA,EACT,GAAG,CAACF,GAAmBl7E,CAAiB,CAAC,GAEnCq7E,IAAgBx6C,EAAAA;AAAAA,IACpB,MAAMs5C,GAAqBe,GAAmBjB,CAAgB;AAAA,IAC9D,CAACiB,GAAmBjB,CAAgB;AAAA,EAAA,GAGhCqB,IAAez6C,EAAAA;AAAAA,IACnB,MAAMm5C,GAAoBkB,GAAmBjB,CAAgB;AAAA,IAC7D,CAACiB,GAAmBjB,CAAgB;AAAA,EAAA,GAGhCsB,IAAe,CAAC/4B,MAAwB;AAC5C,QAAI,CAAC1oD,EAAa;AAClB,UAAM/D,IAAO0kF,GAAaC,CAAa,GACjCpL,IAAW6J,GAAyB;AAAA,MACxC,MAAA5/E;AAAA,MACA,aAAAO;AAAA,MACA,aAAA0oD;AAAA,MACA,MAAAzsD;AAAA,MACA,MAAM;AAAA,IAAA,CACP;AACD,IAAAy7B,EAAQ89C,CAAQ,GAChB79C,EAAgB69C,CAAQ;AAAA,EAC1B;AAEA,MACE,CAACzrB,KACDxoE,MAAS42B,GAAW,WACpBjS,EAAkB,WAAW;AAE7B,WAAO;AAGT,QAAMw7E,IAAoB,uZACpBC,IAAoB,EAAE,KAAKjB,IAAc,MAAMA,IAAc,OAAOH,IAAa,QAAQA,GAAA;AAE/F,SACE7qD,gBAAAA,EAAAA,KAAAupB,YAAA,EACE,UAAA;AAAA,IAAA7pB,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK4rD;AAAA,QACL,eAAW;AAAA,QACX,OAAO;AAAA,UACL,UAAU;AAAA,UACV,MAAM;AAAA,UACN,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,IAAA;AAAA,IAEDO,MAAkB,QACjBnsD,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,MAAMmsD;AAAA,UACN,KAAKd;AAAA,UACL,OAAOD;AAAA,UACP,QAAQA;AAAA,UACR,eAAe;AAAA,QAAA;AAAA,QAGjB,UAAAprD,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,OAAM;AAAA,YACN,cAAW;AAAA,YACX,WAAWssD;AAAA,YACX,OAAOC;AAAA,YACP,SAAS,MAAMF,EAAa,CAAC;AAAA,YAC9B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,IAGHJ,EAAW,IAAI,CAACvuF,GAAMj2B,MACrBu4D,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,MAAAtiC;AAAA,UACA,KAAK2tF;AAAA,UACL,OAAOD;AAAA,UACP,QAAQA;AAAA,UACR,eAAe;AAAA,QAAA;AAAA,QAGjB,UAAAprD,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAa,6BAA6Bv4D,CAAK;AAAA,YAC/C,OAAO,8BAA8BqpC,EAAkBrpC,CAAK,EAAE,IAAI,QAAQqpC,EAAkBrpC,IAAQ,CAAC,EAAE,IAAI;AAAA,YAC3G,cAAY,8BAA8BqpC,EAAkBrpC,CAAK,EAAE,IAAI,QAAQqpC,EAAkBrpC,IAAQ,CAAC,EAAE,IAAI;AAAA,YAChH,WAAW6kH;AAAA,YACX,OAAOC;AAAA,YACP,SAAS,MAAMF,EAAa5kH,IAAQ,CAAC;AAAA,YACtC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,MApBKA;AAAA,IAAA,CAsBR;AAAA,IACA2kH,MAAiB,QAChBpsD,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,MAAMosD;AAAA,UACN,KAAKf;AAAA,UACL,OAAOD;AAAA,UACP,QAAQA;AAAA,UACR,eAAe;AAAA,QAAA;AAAA,QAGjB,UAAAprD,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,OAAM;AAAA,YACN,cAAW;AAAA,YACX,WAAWssD;AAAA,YACX,OAAOC;AAAA,YACP,SAAS,MAAMF,EAAav7E,EAAkB,MAAM;AAAA,YACrD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,EACF,GAEJ;AAEJ,GC5QMi5E,KAA+B,CAACviF,MAOxB;AACZ,QAAMyrB,IAAkB,CAAA;AACxB,SAAIzrB,EAAY,QAAMyrB,EAAM,KAAK,IAAIzrB,EAAY,IAAI,EAAE,GACnDA,EAAY,cAAYyrB,EAAM,KAAK,KAAKzrB,EAAY,UAAU,IAAI,GAClEA,EAAY,SAAOyrB,EAAM,KAAK,IAAIzrB,EAAY,KAAK,GAAG,GAC1DyrB,EAAM,KAAKzrB,EAAY,IAAI,GACvBA,EAAY,SAASA,EAAY,UAAUA,EAAY,QACzDyrB,EAAM,KAAK,MAAMzrB,EAAY,KAAK,EAAE,GAClCA,EAAY,SAAOyrB,EAAM,KAAKzrB,EAAY,KAAK,GAC5CyrB,EAAM,KAAK,GAAG;AACvB,GAEMu5D,KAAoB,CAAC5hF,GAAkB/D,OACf+D,GAAa,OAAA,GAAU,cAAA,KAAmB,CAAA,GAClD,KAAK,CAACliB,MAAa;AACrC,QAAM+jG,IAAU/jG,GAAK,KAAA,GAAQ,iBAAA;AAC7B,SAAO+jG,MAAY5lF,KAAQ4lF,MAAY5lF,EAAK,MAAM,GAAG,EAAE,CAAC;AAC1D,CAAC,GAGU6lF,KAA2B,CACtCriF,GACAO,GACA0F,GACAq8E,MACW;AACX,QAAMjkG,IAAM8jG,GAAkB5hF,GAAa0F,CAAe;AAC1D,MAAI,CAAC5nB,EAAK,QAAO2hB;AAEjB,QAAMuiF,IAAelkG,GAAK,mBAAmB,oBAAoB,QAAQ,KAAK,EAAE,KAAK,QAC/EmkG,IAAgBnkG,GAAK,QAAA,GAAW,aAAa,QAC7CokG,IAAgBpkG,EAAI,QAAA,GAAW,KAAA,GAAQ,iBAAA,GACvCqkG,IAAqBrkG,EAAI,aAAA,GAAgB,KAAA,GAAQ,iBAAA,GACjDskG,IAAgBtkG,EAAI,QAAA,GAAW,OAAA,GAAU,iBAAA,GAEzCukG,IAAW,UAAUN,IAAWA,EAAQ,QAAQ,SAAaC,GAC7DM,IAAY,WAAWP,IAAWA,EAAQ,SAAS,SAAaE,GAEhEM,IAAiBpD,GAA6B;AAAA,IAClD,MAAMrhG,GAAK,KAAA,GAAQ,iBAAA;AAAA,IACnB,OAAOokG;AAAA,IACP,MAAMG;AAAA,IACN,YAAYF;AAAA,IACZ,OAAOG;AAAA,IACP,OAAOF;AAAA,EAAA,CACR,GAEKprG,IAAQ8G,EAAI,MAAM,OAClBuf,IAAMvf,EAAI,KAAK,OAAO;AAC5B,SAAO2hB,EAAK,MAAM,GAAGzoB,CAAK,IAAIurG,IAAiB9iF,EAAK,MAAMpC,CAAG;AAC/D,GC5CMmlF,KAAiD;AAAA,EACrD,EAAE,KAAK,WAAW,MAAM,MAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,SAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,SAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,QAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,OAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,OAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,SAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,OAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,OAAA;AAAA,EACxB,EAAE,KAAK,WAAW,MAAM,QAAA;AAC1B,GAEMC,KAAoB;AAAA,EACxB,EAAE,KAAK,SAAS,OAAO,SAAS,MAAM,KAAA;AAAA,EACtC,EAAE,KAAK,YAAY,OAAO,YAAY,MAAM,IAAA;AAAA,EAC5C,EAAE,KAAK,WAAW,OAAO,WAAW,MAAM,IAAA;AAAA,EAC1C,EAAE,KAAK,UAAU,OAAO,UAAU,MAAM,IAAA;AAAA,EACxC,EAAE,KAAK,YAAY,OAAO,YAAY,MAAM,KAAA;AAAA,EAC5C,EAAE,KAAK,SAAS,OAAO,SAAS,MAAM,IAAA;AACxC,GAEaC,KAAwB,MAAM;AACzC,QAAMnhG,IAAOnP,GAAainC,EAAQ,GAC5B0wC,IAAU33E,GAAaqnC,EAAiC,GACxD,CAACha,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB,GAClDja,IAAc5tB,GAAaimC,EAAe,GAC1C,CAACa,GAAUypE,CAAW,IAAIxvG,GAAQ6lC,EAAY,GAC9C8rC,IAAiB1yE,GAAawnC,EAAkB,GAChDswC,IAAY93E,GAAaioC,EAAqB,GAC9C,CAACgkC,GAAQC,CAAS,IAAI9oB,EAAAA,SAAS,EAAK,GACpC,CAACotD,GAAUC,CAAW,IAAIrtD,EAAAA,SAA+C,IAAI,GAC7EstD,IAAW7xG,EAAAA,OAAuB,IAAI,GACtCy0B,IAAkBwT,EAAS,CAAC,KAAK,MAEjC6pE,IAAqBr9E,IACvB/B,GAAoB3D,CAAW,EAAE,KAAK,CAAC57B,MAAMA,EAAE,SAASshC,CAAe,IACvE,MACEs9E,IAAeD,GAAoB,OAAO,YAAA,KAAiB,MAC3DzM,IAAcyM,GAAoB,QAAQ;AA0DhD,MAxDAlwG,EAAAA,UAAU,MAAM;AACd,QAAIqmC,EAAS,WAAW,KAAK4rC,KAAkB,CAACoF,GAAW;AACzD,YAAM3vB,IAAKuqB,EAAe;AAAA,QACxB,yBAAyB5rC,EAAS,CAAC,CAAC;AAAA,MAAA;AAEtC,UAAIqhB,GAAI;AACN,cAAMmR,IAAOnR,EAAG,sBAAA;AAChB,QAAAsoD,EAAY,EAAE,KAAKn3C,EAAK,SAAS,GAAG,MAAMA,EAAK,MAAM;AAAA,MACvD;AACA,MAAA4S,EAAU,EAAI;AAAA,IAChB;AACE,MAAAA,EAAU,EAAK,GACfukC,EAAY,IAAI;AAAA,EAEpB,GAAG,CAAC3pE,GAAU4rC,GAAgBoF,CAAS,CAAC,GAGxCr3E,EAAAA,UAAU,MAAM;AACd,QAAI,CAACwrE,KAAU,CAACykC,EAAS,WAAW,CAACF,EAAU;AAC/C,UAAMK,IAAQH,EAAS,QAAQ,sBAAA;AAC/B,QAAI,EAAE,KAAA93E,GAAK,MAAAlY,EAAA,IAAS8vF;AACpB,UAAMM,IAAS;AACf,IAAIpwF,IAAOmwF,EAAM,QAAQ,OAAO,aAAaC,MAC3CpwF,IAAO,OAAO,aAAamwF,EAAM,QAAQC,IAEvCpwF,IAAOowF,MAAQpwF,IAAOowF,IACtBl4E,IAAMi4E,EAAM,SAAS,OAAO,cAAcC,MAC5Cl4E,IAAM43E,EAAS,MAAMK,EAAM,SAAS,MAElCj4E,MAAQ43E,EAAS,OAAO9vF,MAAS8vF,EAAS,SAC5CC,EAAY,EAAE,KAAA73E,GAAK,MAAAlY,GAAM;AAAA,EAE7B,GAAG,CAACurD,GAAQukC,CAAQ,CAAC,GAErB/vG,EAAAA,UAAU,MAAM;AACd,QAAI,CAACwrE,EAAQ;AACb,UAAM8kC,IAAgB,CAACl9G,MAAoB;AACzC,MAAI68G,EAAS,WAAW,CAACA,EAAS,QAAQ,SAAS78G,EAAE,MAAc,MACjEq4E,EAAU,EAAK,GACfqkC,EAAY,CAAA,CAAE;AAAA,IAElB,GACM33B,IAAY,CAAC/kF,MAAqB;AACtC,MAAIA,EAAE,QAAQ,aACZq4E,EAAU,EAAK,GACfqkC,EAAY,CAAA,CAAE;AAAA,IAElB;AACA,oBAAS,iBAAiB,eAAeQ,CAAa,GACtD,SAAS,iBAAiB,WAAWn4B,CAAS,GACvC,MAAM;AACX,eAAS,oBAAoB,eAAem4B,CAAa,GACzD,SAAS,oBAAoB,WAAWn4B,CAAS;AAAA,IACnD;AAAA,EACF,GAAG,CAAC3M,GAAQskC,CAAW,CAAC,GAGtB,CAAC54B,KACDxoE,MAAS42B,GAAW,WACpB,CAACkmC,KACD,CAAC34C,KACD,CAACk9E;AAED,WAAO;AAGT,QAAM//D,IAAa,CAACk/D,MAA6D;AAC/E,QAAIqB,IAAc3jF;AAClB,UAAM4jF,IAAiBrjF,GAGjBjD,IAAe4G,GAAoB3D,CAAW,EAAE;AAAA,MACpD,CAAC57B,OAAMA,GAAE,SAASq/B;AAAA,IAAA;AAMpB,QAAI,EAHDzD,GAAa,OAAA,GAAU,cAAA,KAAmB,CAAA,GAAI;AAAA,MAC7C,CAACliB,OAAaA,IAAK,KAAA,GAAQ,uBAAuB4nB;AAAA,IAAA,GAEhC;AACpB,YAAMgjD,KAAc3rD,EAAa,UAAU,CAAC34B,OAAMA,GAAE,SAASshC,CAAe;AAC5E,MAAA09E,IAAc/D,GAAyB;AAAA,QACrC,MAAM+D;AAAA,QACN,aAAaC;AAAA,QACb,aAAA36B;AAAA,QACA,MAAMhjD;AAAA,QACN,MAAM;AAAA,MAAA,CACP;AACD,YAAMyyB,IAAU2pD,GAAyBsB,GAAaC,GAAgB39E,GAAiBq8E,CAAO,GACxFuB,IAAYnrD,MAAYirD,IAAcjrD,IAAUirD;AACtD,MAAA1rD,EAAQ4rD,CAAS,GACjB3rD,EAAgB2rD,CAAS,GACzBhlC,EAAU,EAAK,GACfqkC,EAAY,CAAA,CAAE;AACd;AAAA,IACF;AAEA,UAAMxqD,IAAU2pD,GAAyBsB,GAAaC,GAAgB39E,GAAiBq8E,CAAO;AAC9F,IAAI5pD,MAAYirD,MAChB1rD,EAAQS,CAAO,GACfR,EAAgBQ,CAAO,GACvBmmB,EAAU,EAAK,GACfqkC,EAAY,CAAA,CAAE;AAAA,EAChB;AAEA,+BACGhI,IAAA,EACD,UAAAjlD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKotD;AAAA,MACL,WAAU;AAAA,MACV,OAAO,EAAE,UAAU,SAAS,QAAQ,IAAI,UAAU,KAAK,KAAKF,EAAS,KAAK,MAAMA,EAAS,KAAA;AAAA,MACzF,eAAY;AAAA,MAEZ,UAAA;AAAA,QAAAxtD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,wEAAuE,UAAA,SAAK;AAAA,QAC3FM,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,UAAA8sD,GAAc,IAAI,CAAC,EAAE,KAAAtgC,GAAK,MAAAjmD,QAAW;AACpC,kBAAMsnF,IAAWP,MAAiB9gC,EAAI,YAAA;AACtC,mBACE9sB,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,WAAW,+IACTmuD,IAAW,qDAAqD,iBAClE;AAAA,gBACA,OAAO,EAAE,iBAAiBrhC,EAAA;AAAA,gBAC1B,OAAOqhC,IAAW,GAAGtnF,CAAI,eAAeA;AAAA,gBACxC,cAAY,gBAAgBA,CAAI;AAAA,gBAChC,gBAAcsnF;AAAA,gBACd,SAAS,MAAM1gE,EAAW,EAAE,OAAOq/B,GAAK;AAAA,cAAA;AAAA,cATnCA;AAAA,YAAA;AAAA,UAYX,CAAC;AAAA,UACD9sB,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,OAAM;AAAA,cACN,cAAW;AAAA,cACX,SAAS,MAAMvS,EAAW,EAAE,OAAO,MAAM;AAAA,cAC1C,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,GACF;AAAA,QAEAuS,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,0BAAA,CAA0B;AAAA,QAEzCA,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,wEAAuE,UAAA,QAAI;AAAA,QAC1FM,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,UAAA+sD,GAAkB,IAAI,CAAC,EAAE,KAAA5mH,GAAK,OAAAikB,GAAO,MAAA0jG,QAAW;AAC/C,kBAAMD,IAAWjN,GAAa,YAAA,MAAkBz6G,EAAI,YAAA;AACpD,mBACE65D,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,WAAW,4GACT6tD,IACI,0CACA,+BACN;AAAA,gBACA,OAAOA,IAAW,GAAGzjG,CAAK,eAAe,eAAeA,CAAK;AAAA,gBAC7D,cAAY,eAAeA,CAAK;AAAA,gBAChC,gBAAcyjG;AAAA,gBACd,SAAS,MAAM1gE,EAAW,EAAE,MAAMhnD,GAAK;AAAA,gBAEvC,UAAA;AAAA,kBAAAu5D,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAouD,GAAK;AAAA,kBAC7CpuD,gBAAAA,EAAAA,IAAC,UAAM,UAAAt1C,EAAA,CAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,cAbRjkB;AAAA,YAAA;AAAA,UAgBX,CAAC;AAAA,UACD65D,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,OAAM;AAAA,cACN,cAAW;AAAA,cACX,SAAS,MAAM7S,EAAW,EAAE,MAAM,MAAM;AAAA,cAExC,UAAA;AAAA,gBAAAuS,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,wBAAuB,UAAA,KAAC;AAAA,gBACxCA,gBAAAA,EAAAA,IAAC,UAAK,UAAA,OAAA,CAAI;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEF;AAEJ,GC9OaquD,KAAqB,MAAM;AACtC,QAAMliG,IAAOnP,GAAainC,EAAQ,GAC5B,CAAC5Z,GAAMi4B,CAAO,IAAIvkD,GAAQilC,EAAQ,GAClCuf,IAAkBvlD,GAAa6nC,EAAmB;AAExD,MAAI14B,MAAS42B,GAAW,QAAS,QAAO;AAExC,QAAM4e,IAAc,MAAM;AACxB,UAAMy+C,IAAW/1E,EAAK,KAAA,IAAS,GAAGA,EAAK,MAAM;AAAA,KAAQ;AACrD,IAAAi4B,EAAQ89C,CAAQ,GAChB79C,EAAgB69C,CAAQ;AAAA,EAC1B;AAEA,SACEpgD,gBAAAA,MAAC,SAAI,WAAU,oCAAmC,OAAO,EAAE,WAAW,OACpE,UAAAM,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,SAASqB;AAAA,MACT,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA3B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,KAAC;AAAA,QACzCA,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,sCAAA,CAAmC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEjE;AAEJ,GCAasuD,KAAa,CAAC33G,MAIrB;AACJ,QAAMw7C,IAAQn1C,GAAaumC,EAAS,GAC9Bp3B,IAAOnP,GAAainC,EAAQ,GAC5BrZ,IAAc5tB,GAAaimC,EAAe,GAC1C6nC,IAAc9tE,GAAaomC,EAAe,GAC1CmrE,IAAU58C,EAAAA;AAAAA,IACd,MAAMmZ,EAAY,0BAA0B,WAAW;AAAA,IACvD,CAACA,CAAW;AAAA,EAAA,GAER0jC,IAAoB3wG,GAAW2mC,EAAkB,GACjDqwC,IAA0Bh3E,GAAW+lC,EAAY,GACjDqzD,IAAqBp5F,GAAW+mC,EAAmB,GAEnD6pE,IAAa5yG,EAAAA,OAAuB,IAAI;AAC9C4B,EAAAA,EAAAA,UAAU,MAAM;AACd,IAAA+wG,EAAkBC,EAAW,OAAO;AAAA,EACtC,CAAC,GAEDC,sBAAoB/3G,EAAM,KAAK,MACtB83G,EAAW,OACnB;AAED,QAAME,IAAkBh9C,EAAAA,QAAQ,MAAM;AACpC,UAAMoZ,IAAkBD,EAAY,wBAAA,GAE9BN,IADe,IAAIH,GAAaU,CAAe,EAC1B,SAASngD,CAAW;AAC/C,WAAO4/C,IAAQI,GAAYJ,CAAK,EAAE,OAAO;AAAA,EAC3C,GAAG,CAACM,GAAalgD,CAAW,CAAC,GAEvB7D,IAAQ4qC,EAAAA,QAAQ,MACCkZ,GAAWjgD,GAAakgD,CAAW,IAIlC6jC,GACrB,CAAC/jF,GAAakgD,GAAa6jC,CAAe,CAAC;AAE9C,SACE3uD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW7C;AAAA,QACT;AAAA,QACAhL;AAAA,QACAx7C,EAAM;AAAA,MAAA;AAAA,MAER,OAAOA,EAAM;AAAA,MACb,KAAK83G;AAAA,MACL,SAAS,CAACl1G,MAAU;AAClB,cAAMjM,IAASiM,EAAM;AACrB,QACEjM,GAAQ,QAAQ,cAAc,KAC9BA,GAAQ,QAAQ,cAAc,KAC9BA,GAAQ,QAAQ,cAAc,MAIhCunF,EAAwB,CAAA,CAAE,GAC1BoiB,EAAmB,IAAI;AAAA,MACzB;AAAA,MAIA,UAAAj3C,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO,EAAE,aAAa,GAAG2uD,CAAe,KAAA;AAAA,UACxC,WAAU;AAAA,UAET,UAAAxiG,MAAS42B,GAAW,UACnBud,gBAAAA,EAAAA,KAAAupB,EAAAA,UAAA,EACG,UAAA;AAAA,YAAA0kC,2BAAYF,IAAA,EAAmB;AAAA,YAIhCruD,gBAAAA,EAAAA;AAAAA,cAACk2B;AAAA,cAAA;AAAA,gBACC,SAASy4B;AAAA,gBACT,SAAS/jF,GAAa,KAAA;AAAA,gBACtB,gBAAc;AAAA,cAAA;AAAA,YAAA;AAAA,YAEhBo1B,gBAAAA,EAAAA;AAAAA,cAAC4pD;AAAA,cAAA;AAAA,gBACC,SAASh/E,GAAa,MAAA;AAAA,gBACtB,OAAO,EAAE,OAAO,GAAG7D,CAAK,KAAA;AAAA,cAAK;AAAA,YAAA;AAAA,YAE/Bi5B,gBAAAA,EAAAA;AAAAA,cAACk2B;AAAA,cAAA;AAAA,gBACC,SAASy4B;AAAA,gBACT,SAAS/jF,GAAa,KAAA;AAAA,gBACtB,oBAAkB;AAAA,cAAA;AAAA,YAAA;AAAA,YAKpBo1B,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO;AAAA,kBACL,OAAO,eAAe2uD,CAAe;AAAA,kBACrC,eAAe;AAAA,kBACf,QAAQ;AAAA,gBAAA;AAAA,gBAGV,gCAAC,OAAA,EAAI,WAAU,wBACb,UAAA3uD,gBAAAA,EAAAA,IAAC2rD,MAA0B,EAAA,CAC7B;AAAA,cAAA;AAAA,YAAA;AAAA,kCAED2B,IAAA,CAAA,CAAsB;AAAA,UAAA,EAAA,CACzB,IAEAhtD,gBAAAA,EAAAA,KAAAupB,EAAAA,UAAA,EACE,UAAA;AAAA,YAAA7pB,gBAAAA,EAAAA;AAAAA,cAACk2B;AAAA,cAAA;AAAA,gBACC,SAASy4B;AAAA,gBACT,SAAS/jF,GAAa,KAAA;AAAA,gBACtB,oBAAkB;AAAA,gBAClB,gBAAc;AAAA,cAAA;AAAA,YAAA;AAAA,YAEhBo1B,gBAAAA,EAAAA;AAAAA,cAAC4pD;AAAA,cAAA;AAAA,gBACC,SAASh/E,GAAa,MAAA;AAAA,gBACtB,OAAO,EAAE,OAAO,GAAG7D,CAAK,KAAA;AAAA,cAAK;AAAA,YAAA;AAAA,UAC/B,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN,GC7HM6nF,KAAe;AAAA,EACnB,iBAAiB;AAAA,EACjB,QAAQ,CAACt0F,MACA,CAACA,GAAM,WAAW,SAAS,aAAa;AAEnD,GAEau0F,KAAe,CAAC;AAAA,EAC3B,KAAA9zG;AAAA,EACA,UAAAxC;AACF,MASO;AACL,QAAM25E,IAAer2E,EAAAA,OAAuB,IAAI,GAC1CizG,IAAajzG,EAAAA,OAAuB,IAAI,GACxC+uB,IAAc5tB,GAAaimC,EAAe,GAC1C,CAAC8rE,GAAUvqD,CAAW,IAAIzmD,GAAQimC,EAAY,GAC9C,CAAC45B,GAAOoxC,CAAQ,IAAIjxG,GAAQ4lC,EAAS,GACrC,CAACwO,GAAOg3B,CAAQ,IAAIprE,GAAQwlC,EAAS,GACrC,CAAC0rE,GAAiBC,CAAkB,IAAInxG,GAAQumC,EAAmB,GACnE6qE,IAAmBnyG,GAAa0mC,EAAoB,GACpDv3B,IAAOnP,GAAainC,EAAQ,GAC5B7O,IAAQxK,GAAa,MAAA,GAErBwkF,IAAiB,MAAM;AAC3B,IAAA5qD,EAAY,EAAI;AAAA,EAUlB,GAEMzU,IAAQ,YAAY;AACxB,QAAKmiC,EAAa;AAClB,aAAOm9B,GAAkBn9B,EAAa,SAAS08B,EAAY;AAAA,EAC7D,GACMj/D,IAAQ,YAAY;AACxB,QAAKuiC,EAAa;AAClB,aAAOo9B,GAAkBp9B,EAAa,SAAS08B,EAAY;AAAA,EAC7D,GACM3+D,IAAS,YAAY;AACzB,QAAKiiC,EAAa;AAClB,aAAOq9B,GAAmBr9B,EAAa,SAAS08B,EAAY;AAAA,EAC9D,GACM5+D,IAAS,YAAY;AACzB,QAAKkiC,EAAa;AAClB,aAAOs9B,GAAmBt9B,EAAa,SAAS08B,EAAY;AAAA,EAC9D,GACMa,IAAS,MAAM;AACnB,UAAMC,IAAW,KAAK,IAAI,GAAG9xC,IAAQ,GAAG;AACxC,IAAAoxC,EAASU,CAAQ;AAAA,EACnB,GACMC,IAAU,MAAM;AACpB,IAAAX,EAASpxC,IAAQ,GAAG;AAAA,EACtB,GACMgyC,IAAW,CAAC7nE,MAAkB;AAClC,UAAM8nE,KAAiB,gBACjBnnE,IAAe,SAAS,cAAc,OAAO;AACnD,IAAAA,EAAa,KAAKmnE,IAClB,SAAS,KAAK,OAAOnnE,CAAY,GACjCA,EAAa,cAAcX;AAAA,EAC7B,GACM+nE,IAAe,CAACtqE,MAAgB;AACpC,UAAMuqE,KAAW,IAAI,IAAIvqE,CAAG,EAAE;AAI9B,QACEuqE,OAAa,wBACbA,OAAa,iCACb;AACA;AAAA,QACEvqE,EACG,QAAQ,cAAc,2BAA2B,EACjD,QAAQ,SAAS,EAAE;AAAA,MAAA,EAErB,KAAK,CAAC4hD,OAAaA,GAAS,MAAM,EAClC,KAAK,CAACvnF,OAAS;AACd,QAAA+vG,EAAS/vG,EAAI;AAAA,MACf,CAAC;AACH;AAAA,IACF;AACA,UAAMmwG,IAAiB,qBAEjBC,IAAmB,SAAS,cAAc,MAAM;AACtD,IAAAA,EAAiB,KAAKD,GACtBC,EAAiB,MAAM,cACvB,SAAS,KAAK,OAAOA,CAAgB,GACrCA,EAAiB,OAAOzqE;AAAA,EAC1B;AAEAkpE,SAAAA,EAAAA,oBAAoB3zG,GAAK,OAAO;AAAA,IAAA,OAC9Bg1C;AAAAA,IAAA,OACAJ;AAAAA,IAAA,QACAM;AAAAA,IAAA,QACAD;AAAAA,IACA,QAAAy/D;AAAA,IACA,SAAAE;AAAA,IACA,UAAAxmC;AAAA,IACA,cAAA2mC;AAAA,EAAA,EACA;AAAA;AAAA;AAAA,EAMAxvD,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK4xB;AAAA,MACL,WAAW/0B,GAAG,mCAAmChL,CAAK;AAAA,MAEtD,UAAA;AAAA,QAAA6N,gBAAAA,EAAAA,IAACC,IAAA,EAAM;AAAA,QACPK,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sHACb,UAAA;AAAA,UAAAA,gBAAAA,EAAAA,KAAC,OAAA,EAAI,KAAKwuD,GACR,UAAA;AAAA,YAAAxuD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sGACb,UAAA;AAAA,cAAAN,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oBAAoB,UAAAznD,EAAA,CAAS;AAAA,cAC5C+nD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,wCACb,UAAA;AAAA,gBAAAN,gBAAAA,EAAAA,IAACqC,IAAA,EAAa,SAASjtB,EAAA,CAAO;AAAA,gBAE9B4qB,gBAAAA,EAAAA,IAACO,IAAA,EAAQ,WAAU,gCAAA,CAAgC;AAAA,cAAA,EAAA,CACrD;AAAA,YAAA,GACF;AAAA,YACCwuD,KACC/uD,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,mBAAgB;AAAA,gBAChB,MAAK;AAAA,gBACL,cAAW;AAAA,gBAEX,gCAACuE,IAAA,CAAA,CAAW;AAAA,cAAA;AAAA,YAAA;AAAA,YAGhBvE,gBAAAA,EAAAA;AAAAA,cAACsuD;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,EAAE,WAAW,SAAS1wC,CAAK,IAAA;AAAA,cAAI;AAAA,YAAA;AAAA,UACxC,GACF;AAAA,gCACC,OAAA,EAAI,WAAU,oGACZ,UAAAzxD,MAAS42B,GAAW,WACnBud,gBAAAA,EAAAA,KAAAupB,EAAAA,UAAA,EACE,UAAA;AAAA,YAAAvpB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,cAAAN,gBAAAA,EAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAASovD;AAAA,kBAET,UAAApvD,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,OAAM,WAAU,2BAAA,CAA2B;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEvDovD,2BAAqBnmC,IAAA,EAAc;AAAA,cACpC1oB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,gBAAAN,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,IAAG;AAAA,oBACH,WAAU;AAAA,oBACV,SAAS,EAAQivD;AAAA,oBACjB,UAAU,MAAMC,EAAmB,CAACD,CAAe;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErDjvD,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,OAAM;AAAA,oBACN,WAAU;AAAA,oBAEV,UAAAA,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,aAAY,WAAU,UAAA,CAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC7C,EAAA,CACF;AAAA,YAAA,GACF;AAAA,YACAO,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,wCACb,UAAA;AAAA,cAAAN,gBAAAA,EAAAA,IAAC,UAAA,EAAO,WAAU,WAAU,SAASyvD,GACnC,UAAAzvD,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,WAAU,WAAU,UAAA,CAAU,GAC3C;AAAA,cACAO,gBAAAA,EAAAA,KAAC,SAAA,EAAM,WAAU,0BACd,UAAA;AAAA,gBAAA,OAAOsd,IAAQ,GAAG,EAAE,QAAQ,CAAC;AAAA,gBAAE;AAAA,cAAA,GAClC;AAAA,cACA5d,gBAAAA,EAAAA,IAAC,UAAA,EAAO,WAAU,YAAW,SAAS2vD,GACpC,UAAA3vD,gBAAAA,EAAAA,IAACD,IAAA,EAAK,MAAK,YAAW,WAAU,UAAA,CAAU,EAAA,CAC5C;AAAA,YAAA,GACF;AAAA,YACAC,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,WAAU;AAAA,gBACX,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,EAAA,CACF,EAAA,CAEJ;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;ACxNO,MAAMkwD,WAAsBx5G,EAAAA,UAAwB;AAAA,EACzD,YAAYC,GAAc;AACxB,UAAMA,CAAK,GACX,KAAK,QAAQ,EAAE,UAAU,IAAO,OAAO,KAAA;AAAA,EACzC;AAAA,EAEA,OAAO,yBAAyB5D,GAAqB;AACnD,WAAO,EAAE,UAAU,IAAM,OAAAA,EAAA;AAAA,EAC3B;AAAA,EAEA,kBAAkBA,GAAco9G,GAAiB;AAC/C,YAAQ,MAAM,6BAA6Bp9G,GAAOo9G,EAAK,cAAc;AAAA,EACvE;AAAA,EAEA,SAAS;AACP,WAAI,KAAK,MAAM,WAEX7vD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,SAAS,IAAI,OAAO,QAAQ,YAAY,aAAa,UAAU,GAAA,GAC3E,UAAA;AAAA,MAAAN,gBAAAA,EAAAA,IAAC,YAAO,UAAA,yBAAA,CAAsB;AAAA,MAC9BA,gBAAAA,EAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,YAAY,YAAY,WAAW,EAAA,GAC9C,UAAA,KAAK,MAAM,OAAO,QAAA,CACrB;AAAA,IAAA,GACF,IAGG,KAAK,MAAM;AAAA,EACpB;AACF;AChCO,MAAMowD,KAAU;ACJvB,SAASC,GAAcC,GAAsB;AAC3C,QAAMC,IAAU,KAAK,MAAMD,IAAO,GAAI,GAChCE,IAAe,KAAK,MAAMF,IAAO,GAAI,GACrCG,IAAe,KAAK,OAAQH,IAAO,MAAQE,KAAgB,GAAI;AACrE,SAAOD,IAAU,OAAOC,IAAe,QAAQC,IAAe;AAChE;AAEO,MAAMC,KAAoB,CAC/BC,GACAC,MACG;AAEH,QAAMN,IADMO,GAAA,IACOD;AACnBloH,SAAAA,GAAO,MAAMioH,IAAc,YAAYN,GAAcC,CAAI,CAAC,GACnDA;AACT,GAEaO,KAAe,MAEnB,YAAY,IAAA;;;;;;;;;;;;;;ACVrB,aAASC,EAAKC,GAAMz2F,GAAM;AACxB,UAAI7yB,IAAQspH,EAAK;AACjB,MAAAA,EAAK,KAAKz2F,CAAI;AACd,MAAA1yB,EAAG,QAAO,IAAIH,KAAS;AACrB,YAAIupH,KAAevpH,IAAQ,MAAO,GAChCqD,KAASimH,EAAKC,EAAW;AAC3B,YAAI,IAAI/2G,EAAQnP,IAAQwvB,CAAI;AAC1B,UAACy2F,EAAKC,EAAW,IAAI12F,GAAQy2F,EAAKtpH,CAAK,IAAIqD,IAAUrD,IAAQupH;AAAA,YAC1D,OAAMppH;AAAA,MACf;AAAA,IACA;AACA,aAASqpH,EAAKF,GAAM;AAClB,aAAaA,EAAK,WAAX,IAAoB,OAAOA,EAAK,CAAC;AAAA,IAC1C;AACA,aAASG,EAAIH,GAAM;AACjB,UAAUA,EAAK,WAAX,EAAmB,QAAO;AAC9B,UAAI7xG,IAAQ6xG,EAAK,CAAC,GAChB/F,IAAO+F,EAAK,IAAG;AACjB,UAAI/F,MAAS9rG,GAAO;AAClB,QAAA6xG,EAAK,CAAC,IAAI/F;AACV,QAAApjH,EAAG,UACGH,KAAQ,GAAGiY,KAASqxG,EAAK,QAAQI,IAAazxG,OAAW,GAC7DjY,KAAQ0pH,KAER;AACA,cAAIlgF,IAAY,KAAKxpC,KAAQ,KAAK,GAChCi2B,IAAOqzF,EAAK9/E,CAAS,GACrBC,IAAaD,IAAY,GACzBtT,KAAQozF,EAAK7/E,CAAU;AACzB,cAAI,IAAIj3B,EAAQyjB,GAAMstF,CAAI;AACxB,YAAA95E,IAAaxxB,MAAU,IAAIzF,EAAQ0jB,IAAOD,CAAI,KACxCqzF,EAAKtpH,EAAK,IAAIk2B,IACfozF,EAAK7/E,CAAU,IAAI85E,GACnBvjH,KAAQypC,MACP6/E,EAAKtpH,EAAK,IAAIi2B,GACfqzF,EAAK9/E,CAAS,IAAI+5E,GAClBvjH,KAAQwpC;AAAA,mBACNC,IAAaxxB,MAAU,IAAIzF,EAAQ0jB,IAAOqtF,CAAI;AACrD,YAAC+F,EAAKtpH,EAAK,IAAIk2B,IAASozF,EAAK7/E,CAAU,IAAI85E,GAAQvjH,KAAQypC;AAAA,cACxD,OAAMtpC;AAAA,QACjB;AAAA,MACA;AACE,aAAOsX;AAAA,IACT;AACA,aAASjF,EAAQrS,GAAGmY,GAAG;AACrB,UAAIuwG,IAAO1oH,EAAE,YAAYmY,EAAE;AAC3B,aAAauwG,MAAN,IAAaA,IAAO1oH,EAAE,KAAKmY,EAAE;AAAA,IACtC;AAEA,QADAqxG,EAAA,eAAuB,QACN,OAAO,eAApB,YAAkD,OAAO,YAAY,OAAlC,YAAuC;AAC5E,UAAIC,IAAmB;AACvB,MAAAD,iBAAuB,WAAY;AACjC,eAAOC,EAAiB,IAAG;AAAA,MAC/B;AAAA,IACA,OAAO;AACL,UAAIC,IAAY,MACdC,IAAcD,EAAU,IAAG;AAC7B,MAAAF,iBAAuB,WAAY;AACjC,eAAOE,EAAU,IAAG,IAAKC;AAAA,MAC7B;AAAA,IACA;AACA,QAAIC,IAAY,CAAA,GACdC,IAAa,CAAA,GACbC,IAAgB,GAChBC,IAAc,MACdC,IAAuB,GACvBC,IAAmB,IACnBC,IAA0B,IAC1BC,IAAyB,IACzBC,IAAa,IACbC,IAAiC,OAAO,cAAtB,aAAmC,aAAa,MAClEC,IAAmC,OAAO,gBAAtB,aAAqC,eAAe,MACxEC,IAAoC,OAAO,eAAvB,MAAsC,eAAe;AAC3E,aAASC,EAAcC,GAAa;AAClC,eAASC,IAAQrB,EAAKQ,CAAU,GAAYa,MAAT,QAAkB;AACnD,YAAaA,EAAM,aAAf,KAAyB,CAAApB,EAAIO,CAAU;AAAA,iBAClCa,EAAM,aAAaD;AAC1B,UAAAnB,EAAIO,CAAU,GACXa,EAAM,YAAYA,EAAM,gBACzBxB,EAAKU,GAAWc,CAAK;AAAA,YACpB;AACL,QAAAA,IAAQrB,EAAKQ,CAAU;AAAA,MAC3B;AAAA,IACA;AACA,aAASc,EAAcF,GAAa;AAGlC,UAFAN,IAAyB,IACzBK,EAAcC,CAAW,GACrB,CAACP;AACH,YAAab,EAAKO,CAAS,MAAvB;AACF,UAACM,IAA0B,IACzBU,MACIA,IAAuB,IAAKC;aAC/B;AACH,cAAIC,IAAazB,EAAKQ,CAAU;AAChC,UAASiB,MAAT,QACEC,EAAmBJ,GAAeG,EAAW,YAAYL,CAAW;AAAA,QAC5E;AAAA,IACA;AACA,QAAIG,IAAuB,IACzBI,IAAgB,IAChBC,IAAgB,GAChBC,IAAY;AACd,aAASC,KAAoB;AAC3B,aAAOf,IACH,KACA,EAAAZ,EAAQ,aAAY,IAAK0B,IAAYD;AAAA,IAG3C;AACA,aAASG,IAA2B;AAElC,UADAhB,IAAa,IACTQ,GAAsB;AACxB,YAAIH,IAAcjB,EAAQ,aAAY;AACtC,QAAA0B,IAAYT;AACZ,YAAIY,IAAc;AAClB,YAAI;AACF,UAAArrH,GAAG;AACD,YAAAkqH,IAA0B,IAC1BC,MACIA,IAAyB,IAC3BG,EAAkBU,CAAa,GAC9BA,IAAgB,KACnBf,IAAmB;AACnB,gBAAIqB,IAAwBtB;AAC5B,gBAAI;AACF,cAAA7xG,GAAG;AAED,qBADAqyG,EAAcC,CAAW,GAEvBV,IAAcV,EAAKO,CAAS,GACnBG,MAAT,QACA,EACEA,EAAY,iBAAiBU,KAAeU,GAAiB,MAG/D;AACA,sBAAIh8G,KAAW46G,EAAY;AAC3B,sBAAmB,OAAO56G,MAAtB,YAAgC;AAClC,oBAAA46G,EAAY,WAAW,MACvBC,IAAuBD,EAAY;AACnC,wBAAIwB,KAAuBp8G;AAAA,sBACzB46G,EAAY,kBAAkBU;AAAA;AAGhC,wBADAA,IAAcjB,EAAQ,aAAY,GACf,OAAO+B,MAAtB,YAA4C;AAC9C,sBAAAxB,EAAY,WAAWwB,IACvBf,EAAcC,CAAW,GACzBY,IAAc;AACd,4BAAMlzG;AAAA,oBACxB;AACgB,oBAAA4xG,MAAgBV,EAAKO,CAAS,KAAKN,EAAIM,CAAS,GAChDY,EAAcC,CAAW;AAAA,kBACzC,MAAqB,CAAAnB,EAAIM,CAAS;AACpB,kBAAAG,IAAcV,EAAKO,CAAS;AAAA,gBAC1C;AACY,oBAAaG,MAAT,KAAsB,CAAAsB,IAAc;AAAA,qBACnC;AACH,sBAAIP,IAAazB,EAAKQ,CAAU;AAChC,kBAASiB,MAAT,QACEC;AAAA,oBACEJ;AAAA,oBACAG,EAAW,YAAYL;AAAA,qBAE3BY,IAAc;AAAA,gBAC5B;AAAA,cACA;AACU,oBAAMrrH;AAAA,YAChB,UAAS;AACC,cAAC+pH,IAAc,MACZC,IAAuBsB,GACvBrB,IAAmB;AAAA,YAChC;AACQ,YAAAoB,IAAc;AAAA,UACtB;AAAA,QACA,UAAK;AACC,UAAAA,IACIR,EAAgC,IAC/BD,IAAuB;AAAA,QAClC;AAAA,MACA;AAAA,IACA;AACA,QAAIC;AACJ,QAAmB,OAAON,KAAtB;AACF,MAAAM,IAAmC,WAAY;AAC7C,QAAAN,EAAkBa,CAAwB;AAAA,MAC9C;AAAA,aACyB,OAAO,iBAAvB,KAAuC;AAC9C,UAAIlnG,KAAU,IAAI,eAAc,GAC9BsnG,KAAOtnG,GAAQ;AACjB,MAAAA,GAAQ,MAAM,YAAYknG,GAC1BP,IAAmC,WAAY;AAC7C,QAAAW,GAAK,YAAY,IAAI;AAAA,MACzB;AAAA,IACA;AACE,MAAAX,IAAmC,WAAY;AAC7C,QAAAR,EAAgBe,GAA0B,CAAC;AAAA,MAC/C;AACA,aAASL,EAAmB57G,GAAUs8G,GAAI;AACxC,MAAAT,IAAgBX,EAAgB,WAAY;AAC1C,QAAAl7G,EAASq6G,EAAQ,cAAc;AAAA,MACnC,GAAKiC,CAAE;AAAA,IACP;AACA,IAAAjC,EAAA,wBAAgC,GAChCA,EAAA,6BAAqC,GACrCA,EAAA,uBAA+B,GAC/BA,EAAA,0BAAkC,GAClCA,EAAA,qBAA6B,MAC7BA,EAAA,gCAAwC,GACxCA,EAAA,0BAAkC,SAAU12E,GAAM;AAChD,MAAAA,EAAK,WAAW;AAAA,IAClB,GACA02E,EAAA,0BAAkC,SAAUkC,GAAK;AAC/C,UAAIA,KAAO,MAAMA,IACb,QAAQ;AAAA,QACN;AAAA,MACR,IACOT,IAAgB,IAAIS,IAAM,KAAK,MAAM,MAAMA,CAAG,IAAI;AAAA,IACzD,GACAlC,EAAA,mCAA2C,WAAY;AACrD,aAAOQ;AAAA,IACT,GACAR,EAAA,gBAAwB,SAAUmC,GAAc;AAC9C,cAAQ3B,GAAoB;AAAA,QAC1B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,cAAI4B,IAAgB;AACpB;AAAA,QACF;AACE,UAAAA,IAAgB5B;AAAA,MACtB;AACE,UAAIsB,IAAwBtB;AAC5B,MAAAA,IAAuB4B;AACvB,UAAI;AACF,eAAOD,EAAY;AAAA,MACvB,UAAG;AACC,QAAA3B,IAAuBsB;AAAA,MAC3B;AAAA,IACA,GACA9B,EAAA,wBAAgC,WAAY;AAC1C,MAAAY,IAAa;AAAA,IACf,GACAZ,EAAA,2BAAmC,SAAUoC,GAAeD,GAAc;AACxE,cAAQC,GAAa;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QACF;AACE,UAAAA,IAAgB;AAAA,MACtB;AACE,UAAIN,IAAwBtB;AAC5B,MAAAA,IAAuB4B;AACvB,UAAI;AACF,eAAOD,EAAY;AAAA,MACvB,UAAG;AACC,QAAA3B,IAAuBsB;AAAA,MAC3B;AAAA,IACA,GACA9B,EAAA,4BAAoC,SAClCoC,GACAz8G,GACAnE,GACA;AACA,UAAIy/G,KAAcjB,EAAQ,aAAY;AAQtC,cAPa,OAAOx+G,KAApB,YAAwCA,MAAT,QACzBA,IAAUA,EAAQ,OACnBA,IACc,OAAOA,KAApB,YAA+B,IAAIA,IAC/By/G,KAAcz/G,IACdy/G,MACLz/G,IAAUy/G,IACPmB,GAAa;AAAA,QACnB,KAAK;AACH,cAAIC,KAAU;AACd;AAAA,QACF,KAAK;AACH,UAAAA,KAAU;AACV;AAAA,QACF,KAAK;AACH,UAAAA,KAAU;AACV;AAAA,QACF,KAAK;AACH,UAAAA,KAAU;AACV;AAAA,QACF;AACE,UAAAA,KAAU;AAAA,MAChB;AACE,aAAAA,KAAU7gH,IAAU6gH,IACpBD,IAAgB;AAAA,QACd,IAAI9B;AAAA,QACJ,UAAU36G;AAAA,QACV,eAAey8G;AAAA,QACf,WAAW5gH;AAAA,QACX,gBAAgB6gH;AAAA,QAChB,WAAW;AAAA,SAEb7gH,IAAUy/G,MACJmB,EAAc,YAAY5gH,GAC5Bk+G,EAAKW,GAAY+B,CAAa,GACrBvC,EAAKO,CAAS,MAAvB,QACEgC,MAAkBvC,EAAKQ,CAAU,MAChCM,KACIG,EAAkBU,CAAa,GAAIA,IAAgB,MACnDb,IAAyB,IAC9BY,EAAmBJ,GAAe3/G,IAAUy/G,EAAW,OACvDmB,EAAc,YAAYC,IAC5B3C,EAAKU,GAAWgC,CAAa,GAC7B1B,KACED,MACEC,IAA0B,IAC5BU,MACIA,IAAuB,IAAKC,EAAgC,MAC/De;AAAA,IACT,GACApC,EAAA,uBAA+B2B,IAC/B3B,EAAA,wBAAgC,SAAUr6G,GAAU;AAClD,UAAI28G,IAAsB9B;AAC1B,aAAO,WAAY;AACjB,YAAIsB,IAAwBtB;AAC5B,QAAAA,IAAuB8B;AACvB,YAAI;AACF,iBAAO38G,EAAS,MAAM,MAAM,SAAS;AAAA,QAC3C,UAAK;AACC,UAAA66G,IAAuBsB;AAAA,QAC7B;AAAA,MACA;AAAA,IACA;AAAA;;;;wBChVES,GAAA,UAAiB9sH,GAAA;;;;;;;;;;;;;;;ACWnB,MAAI+sH,IAAY/sH,GAAA,GACdqV,IAAQ23G,GAAA,GACRC,IAAWC,GAAA;AACb,WAAS1sD,EAAuBh9B,GAAM;AACpC,QAAImb,IAAM,8BAA8Bnb;AACxC,QAAI,IAAI,UAAU,QAAQ;AACxB,MAAAmb,KAAO,aAAa,mBAAmB,UAAU,CAAC,CAAC;AACnD,eAASz9C,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,QAAAy9C,KAAO,aAAa,mBAAmB,UAAUz9C,CAAC,CAAC;AAAA,IACzD;AACE,WACE,2BACAsiC,IACA,aACAmb,IACA;AAAA,EAEJ;AACA,WAASwuE,EAAiB15F,GAAM;AAC9B,WAAO,EACL,CAACA,KACMA,EAAK,aAAX,KAA6BA,EAAK,aAAX,KAA8BA,EAAK,aAAZ;AAAA,EAEnD;AACA,WAAS25F,EAAuBC,GAAO;AACrC,QAAI55F,IAAO45F,GACTC,IAAiBD;AACnB,QAAIA,EAAM,UAAW,QAAO55F,EAAK,SAAU,CAAAA,IAAOA,EAAK;AAAA,SAClD;AACH,MAAA45F,IAAQ55F;AACR;AACE,QAACA,IAAO45F,IACC55F,EAAK,QAAQ,UAApB,MAA8B65F,IAAiB75F,EAAK,SACnD45F,IAAQ55F,EAAK;AAAA,aACX45F;AAAA,IACX;AACE,WAAa55F,EAAK,QAAX,IAAiB65F,IAAiB;AAAA,EAC3C;AACA,WAASC,EAA6BF,GAAO;AAC3C,QAAWA,EAAM,QAAb,IAAkB;AACpB,UAAIG,IAAgBH,EAAM;AAI1B,UAHSG,MAAT,SACIH,IAAQA,EAAM,WACPA,MAAT,SAAmBG,IAAgBH,EAAM,iBAC9BG,MAAT,KAAwB,QAAOA,EAAc;AAAA,IACrD;AACE,WAAO;AAAA,EACT;AACA,WAASC,EAA6BJ,GAAO;AAC3C,QAAWA,EAAM,QAAb,IAAkB;AACpB,UAAIK,IAAgBL,EAAM;AAI1B,UAHSK,MAAT,SACIL,IAAQA,EAAM,WACPA,MAAT,SAAmBK,IAAgBL,EAAM,iBAC9BK,MAAT,KAAwB,QAAOA,EAAc;AAAA,IACrD;AACE,WAAO;AAAA,EACT;AACA,WAASC,EAAgBN,GAAO;AAC9B,QAAID,EAAuBC,CAAK,MAAMA;AACpC,YAAM,MAAM7sD,EAAuB,GAAG,CAAC;AAAA,EAC3C;AACA,WAASotD,EAA8BP,GAAO;AAC5C,QAAIQ,IAAYR,EAAM;AACtB,QAAI,CAACQ,GAAW;AAEd,UADAA,IAAYT,EAAuBC,CAAK,GAC3BQ,MAAT,KAAoB,OAAM,MAAMrtD,EAAuB,GAAG,CAAC;AAC/D,aAAOqtD,MAAcR,IAAQ,OAAOA;AAAA,IACxC;AACE,aAAStsH,IAAIssH,GAAOn0G,IAAI20G,OAAe;AACrC,UAAIC,IAAU/sH,EAAE;AAChB,UAAa+sH,MAAT,KAAkB;AACtB,UAAIC,IAAUD,EAAQ;AACtB,UAAaC,MAAT,MAAkB;AAEpB,YADA70G,IAAI40G,EAAQ,QACC50G,MAAT,MAAY;AACd,UAAAnY,IAAImY;AACJ;AAAA,QACR;AACM;AAAA,MACN;AACI,UAAI40G,EAAQ,UAAUC,EAAQ,OAAO;AACnC,aAAKA,IAAUD,EAAQ,OAAOC,KAAW;AACvC,cAAIA,MAAYhtH,EAAG,QAAO4sH,EAAgBG,CAAO,GAAGT;AACpD,cAAIU,MAAY70G,EAAG,QAAOy0G,EAAgBG,CAAO,GAAGD;AACpD,UAAAE,IAAUA,EAAQ;AAAA,QAC1B;AACM,cAAM,MAAMvtD,EAAuB,GAAG,CAAC;AAAA,MAC7C;AACI,UAAIz/D,EAAE,WAAWmY,EAAE,OAAQ,CAACnY,IAAI+sH,GAAW50G,IAAI60G;AAAA,WAC1C;AACH,iBAASC,IAAe,IAAIC,IAAUH,EAAQ,OAAOG,KAAW;AAC9D,cAAIA,MAAYltH,GAAG;AACjB,YAAAitH,IAAe,IACfjtH,IAAI+sH,GACJ50G,IAAI60G;AACJ;AAAA,UACV;AACQ,cAAIE,MAAY/0G,GAAG;AACjB,YAAA80G,IAAe,IACf90G,IAAI40G,GACJ/sH,IAAIgtH;AACJ;AAAA,UACV;AACQ,UAAAE,IAAUA,EAAQ;AAAA,QAC1B;AACM,YAAI,CAACD,GAAc;AACjB,eAAKC,IAAUF,EAAQ,OAAOE,KAAW;AACvC,gBAAIA,MAAYltH,GAAG;AACjB,cAAAitH,IAAe,IACfjtH,IAAIgtH,GACJ70G,IAAI40G;AACJ;AAAA,YACZ;AACU,gBAAIG,MAAY/0G,GAAG;AACjB,cAAA80G,IAAe,IACf90G,IAAI60G,GACJhtH,IAAI+sH;AACJ;AAAA,YACZ;AACU,YAAAG,IAAUA,EAAQ;AAAA,UAC5B;AACQ,cAAI,CAACD,EAAc,OAAM,MAAMxtD,EAAuB,GAAG,CAAC;AAAA,QAClE;AAAA,MACA;AACI,UAAIz/D,EAAE,cAAcmY,EAAG,OAAM,MAAMsnD,EAAuB,GAAG,CAAC;AAAA,IAClE;AACE,QAAUz/D,EAAE,QAAR,EAAa,OAAM,MAAMy/D,EAAuB,GAAG,CAAC;AACxD,WAAOz/D,EAAE,UAAU,YAAYA,IAAIssH,IAAQQ;AAAA,EAC7C;AACA,WAASK,EAAyBz6F,GAAM;AACtC,QAAIyc,IAAMzc,EAAK;AACf,QAAUyc,MAAN,KAAoBA,MAAP,MAAqBA,MAAP,MAAoBA,MAAN,EAAW,QAAOzc;AAC/D,SAAKA,IAAOA,EAAK,OAAgBA,MAAT,QAAiB;AAEvC,UADAyc,IAAMg+E,EAAyBz6F,CAAI,GACtByc,MAAT,KAAc,QAAOA;AACzB,MAAAzc,IAAOA,EAAK;AAAA,IAChB;AACE,WAAO;AAAA,EACT;AACA,MAAI9jB,IAAS,OAAO,QAClBw+G,IAA4B,OAAO,IAAI,eAAe,GACtD7uH,IAAqB,OAAO,IAAI,4BAA4B,GAC5DuP,IAAoB,OAAO,IAAI,cAAc,GAC7CtP,IAAsB,OAAO,IAAI,gBAAgB,GACjDuP,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDC,IAAqB,OAAO,IAAI,eAAe,GAC/CC,IAAyB,OAAO,IAAI,mBAAmB,GACvDC,IAAsB,OAAO,IAAI,gBAAgB,GACjDi/G,IAA2B,OAAO,IAAI,qBAAqB,GAC3Dh/G,IAAkB,OAAO,IAAI,YAAY,GACzCC,IAAkB,OAAO,IAAI,YAAY,GAEvCC,IAAsB,OAAO,IAAI,gBAAgB,GAGjD++G,KAA4B,OAAO,IAAI,2BAA2B,GAElE9+G,IAAwB,OAAO;AACnC,WAASC,EAAcC,GAAe;AACpC,WAAaA,MAAT,QAAuC,OAAOA,KAApB,WAA0C,QACxEA,IACGF,KAAyBE,EAAcF,CAAqB,KAC7DE,EAAc,YAAY,GACN,OAAOA,KAAtB,aAAsCA,IAAgB;AAAA,EAC/D;AACA,MAAI6+G,KAAyB,OAAO,IAAI,wBAAwB;AAChE,WAASC,GAAyB9uH,GAAM;AACtC,QAAYA,KAAR,KAAc,QAAO;AACzB,QAAmB,OAAOA,KAAtB;AACF,aAAOA,EAAK,aAAa6uH,KACrB,OACA7uH,EAAK,eAAeA,EAAK,QAAQ;AACvC,QAAiB,OAAOA,KAApB,SAA0B,QAAOA;AACrC,YAAQA,GAAI;AAAA,MACV,KAAKF;AACH,eAAO;AAAA,MACT,KAAKwP;AACH,eAAO;AAAA,MACT,KAAKD;AACH,eAAO;AAAA,MACT,KAAKK;AACH,eAAO;AAAA,MACT,KAAKi/G;AACH,eAAO;AAAA,MACT,KAAK9+G;AACH,eAAO;AAAA,IACb;AACE,QAAiB,OAAO7P,KAApB;AACF,cAAQA,EAAK,UAAQ;AAAA,QACnB,KAAKoP;AACH,iBAAO;AAAA,QACT,KAAKI;AACH,iBAAOxP,EAAK,eAAe;AAAA,QAC7B,KAAKuP;AACH,kBAAQvP,EAAK,SAAS,eAAe,aAAa;AAAA,QACpD,KAAKyP;AACH,cAAIs/G,IAAY/uH,EAAK;AACrB,iBAAAA,IAAOA,EAAK,aACZA,MACIA,IAAO+uH,EAAU,eAAeA,EAAU,QAAQ,IACnD/uH,IAAcA,MAAP,KAAc,gBAAgBA,IAAO,MAAM,eAC9CA;AAAA,QACT,KAAK2P;AACH,iBACGo/G,IAAY/uH,EAAK,eAAe,MACxB+uH,MAAT,OACIA,IACAD,GAAyB9uH,EAAK,IAAI,KAAK;AAAA,QAE/C,KAAK4P;AACH,UAAAm/G,IAAY/uH,EAAK,UACjBA,IAAOA,EAAK;AACZ,cAAI;AACF,mBAAO8uH,GAAyB9uH,EAAK+uH,CAAS,CAAC;AAAA,UACzD,QAAoB;AAAA,UAAA;AAAA,MACpB;AACE,WAAO;AAAA,EACT;AACA,MAAIl+G,IAAc,MAAM,SACtBC,IACE8E,EAAM,iEACRo5G,IACExB,EAAS,8DACXyB,IAAyB;AAAA,IACvB,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,KAEVC,KAAa,CAAA,GACb/tH,KAAQ;AACV,WAASguH,EAAa37G,GAAc;AAClC,WAAO,EAAE,SAASA,EAAY;AAAA,EAChC;AACA,WAASo3G,EAAIxoF,GAAQ;AACnB,QAAIjhC,OACAihC,EAAO,UAAU8sF,GAAW/tH,EAAK,GAAK+tH,GAAW/tH,EAAK,IAAI,MAAOA;AAAA,EACvE;AACA,WAASqpH,EAAKpoF,GAAQp6B,GAAO;AAC3B,IAAA7G,MACA+tH,GAAW/tH,EAAK,IAAIihC,EAAO,SAC3BA,EAAO,UAAUp6B;AAAA,EACnB;AACA,MAAIonH,IAAqBD,EAAa,IAAI,GACxCE,KAA0BF,EAAa,IAAI,GAC3CG,KAA0BH,EAAa,IAAI,GAC3CI,KAA+BJ,EAAa,IAAI;AAClD,WAASK,GAAkB5B,GAAO6B,GAAkB;AAIlD,YAHAjF,EAAK8E,IAAyBG,CAAgB,GAC9CjF,EAAK6E,IAAyBzB,CAAK,GACnCpD,EAAK4E,GAAoB,IAAI,GACrBK,EAAiB,UAAQ;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AACH,QAAA7B,KAASA,IAAQ6B,EAAiB,qBAC7B7B,IAAQA,EAAM,gBACb8B,GAAkB9B,CAAK,IAEzB;AACJ;AAAA,MACF;AACE,YACIA,IAAQ6B,EAAiB,SAC1BA,IAAmBA,EAAiB;AAErC,UAACA,IAAmBC,GAAkBD,CAAgB,GACnD7B,IAAQ+B,GAAwBF,GAAkB7B,CAAK;AAAA;AAE1D,kBAAQA,GAAK;AAAA,YACX,KAAK;AACH,cAAAA,IAAQ;AACR;AAAA,YACF,KAAK;AACH,cAAAA,IAAQ;AACR;AAAA,YACF;AACE,cAAAA,IAAQ;AAAA,UACpB;AAAA,IACA;AACE,IAAAhD,EAAIwE,CAAkB,GACtB5E,EAAK4E,GAAoBxB,CAAK;AAAA,EAChC;AACA,WAASgC,KAAmB;AAC1B,IAAAhF,EAAIwE,CAAkB,GACtBxE,EAAIyE,EAAuB,GAC3BzE,EAAI0E,EAAuB;AAAA,EAC7B;AACA,WAASO,GAAgBjC,GAAO;AAC9B,IAASA,EAAM,kBAAf,QAAgCpD,EAAK+E,IAA8B3B,CAAK;AACxE,QAAIt9G,IAAU8+G,EAAmB,SAC7BU,IAA2BH,GAAwBr/G,GAASs9G,EAAM,IAAI;AAC1E,IAAAt9G,MAAYw/G,MACTtF,EAAK6E,IAAyBzB,CAAK,GACpCpD,EAAK4E,GAAoBU,CAAwB;AAAA,EACrD;AACA,WAASC,GAAenC,GAAO;AAC7B,IAAAyB,GAAwB,YAAYzB,MACjChD,EAAIwE,CAAkB,GAAGxE,EAAIyE,EAAuB,IACvDE,GAA6B,YAAY3B,MACtChD,EAAI2E,EAA4B,GAChCS,GAAsB,gBAAgBf;AAAA,EAC3C;AACA,MAAI7nH,IAAQquF;AACZ,WAASw6B,GAA8B1vF,GAAM;AAC3C,QAAen5B,OAAX;AACF,UAAI;AACF,cAAM,MAAK;AAAA,MACjB,SAAaqO,GAAG;AACV,YAAIhE,IAAQgE,EAAE,MAAM,KAAI,EAAG,MAAM,cAAc;AAC/C,QAAArO,KAAUqK,KAASA,EAAM,CAAC,KAAM,IAChCgkF,KACE,KAAKhgF,EAAE,MAAM,QAAQ;AAAA,OAAU,IAC3B,mBACA,KAAKA,EAAE,MAAM,QAAQ,GAAG,IACtB,iBACA;AAAA,MACd;AACE,WAAO;AAAA,IAAOrO,KAASm5B,IAAOk1D;AAAA,EAChC;AACA,MAAIy6B,KAAU;AACd,WAASC,GAA6B7nH,GAAIwpF,GAAW;AACnD,QAAI,CAACxpF,KAAM4nH,GAAS,QAAO;AAC3B,IAAAA,KAAU;AACV,QAAIE,IAA4B,MAAM;AACtC,UAAM,oBAAoB;AAC1B,QAAI;AACF,UAAIC,IAAiB;AAAA,QACnB,6BAA6B,WAAY;AACvC,cAAI;AACF,gBAAIv+B,GAAW;AACb,kBAAIw+B,KAAO,WAAY;AACrB,sBAAM,MAAK;AAAA,cACzB;AAMY,kBALA,OAAO,eAAeA,GAAK,WAAW,SAAS;AAAA,gBAC7C,KAAK,WAAY;AACf,wBAAM,MAAK;AAAA,gBAC3B;AAAA,cACA,CAAa,GACgB,OAAO,WAApB,YAA+B,QAAQ,WAAW;AACpD,oBAAI;AACF,0BAAQ,UAAUA,IAAM,EAAE;AAAA,gBAC1C,SAAuB76G,IAAG;AACV,sBAAI86G,KAAU96G;AAAA,gBAC9B;AACc,wBAAQ,UAAUnN,GAAI,CAAA,GAAIgoH,EAAI;AAAA,cAC5C,OAAmB;AACL,oBAAI;AACF,kBAAAA,GAAK,KAAI;AAAA,gBACzB,SAAuBE,IAAK;AACZ,kBAAAD,KAAUC;AAAA,gBAC1B;AACc,gBAAAloH,EAAG,KAAKgoH,GAAK,SAAS;AAAA,cACpC;AAAA,YACA,OAAiB;AACL,kBAAI;AACF,sBAAM,MAAK;AAAA,cACzB,SAAqBG,IAAK;AACZ,gBAAAF,KAAUE;AAAA,cACxB;AACY,eAACH,KAAOhoH,EAAE,MACO,OAAOgoH,GAAK,SAA3B,cACAA,GAAK,MAAM,WAAY;AAAA,eAAE;AAAA,YACvC;AAAA,UACA,SAAiBI,IAAQ;AACf,gBAAIA,MAAUH,MAAwB,OAAOG,GAAO,SAA3B;AACvB,qBAAO,CAACA,GAAO,OAAOH,GAAQ,KAAK;AAAA,UAC/C;AACQ,iBAAO,CAAC,MAAM,IAAI;AAAA,QAC1B;AAAA;AAEI,MAAAF,EAAe,4BAA4B,cACzC;AACF,UAAIM,IAAqB,OAAO;AAAA,QAC9BN,EAAe;AAAA,QACf;AAAA;AAEF,MAAAM,KACEA,EAAmB,gBACnB,OAAO;AAAA,QACLN,EAAe;AAAA,QACf;AAAA,QACA,EAAE,OAAO,8BAA6B;AAAA;AAE1C,UAAIO,IAAwBP,EAAe,4BAA2B,GACpEQ,IAAcD,EAAsB,CAAC,GACrCE,IAAeF,EAAsB,CAAC;AACxC,UAAIC,KAAeC,GAAc;AAC/B,YAAIC,IAAcF,EAAY,MAAM;AAAA,CAAI,GACtCG,KAAeF,EAAa,MAAM;AAAA,CAAI;AACxC,aACEH,IAAqBN,IAAiB,GACtCA,IAAiBU,EAAY,UAC7B,CAACA,EAAYV,CAAc,EAAE,SAAS,6BAA6B;AAGnE,UAAAA;AACF,eAEEM,IAAqBK,GAAa,UAClC,CAACA,GAAaL,CAAkB,EAAE;AAAA,UAChC;AAAA;AAIF,UAAAA;AACF,YACEN,MAAmBU,EAAY,UAC/BJ,MAAuBK,GAAa;AAEpC,eACEX,IAAiBU,EAAY,SAAS,GACpCJ,IAAqBK,GAAa,SAAS,GAC7C,KAAKX,KACL,KAAKM,KACLI,EAAYV,CAAc,MAAMW,GAAaL,CAAkB;AAG/D,YAAAA;AACJ,eAEE,KAAKN,KAAkB,KAAKM,GAC5BN,KAAkBM;AAElB,cAAII,EAAYV,CAAc,MAAMW,GAAaL,CAAkB,GAAG;AACpE,gBAAUN,MAAN,KAA8BM,MAAN;AAC1B;AACE,oBACGN,KACDM,KACA,IAAIA,KACFI,EAAYV,CAAc,MACxBW,GAAaL,CAAkB,GACnC;AACA,sBAAIzsC,KACF;AAAA,IACA6sC,EAAYV,CAAc,EAAE,QAAQ,YAAY,MAAM;AACxD,yBAAA/nH,EAAG,eACD47E,GAAM,SAAS,aAAa,MAC3BA,KAAQA,GAAM,QAAQ,eAAe57E,EAAG,WAAW,IAC/C47E;AAAA,gBACvB;AAAA,qBACmB,KAAKmsC,KAAkB,KAAKM;AAErC;AAAA,UACV;AAAA,MACA;AAAA,IACA,UAAG;AACC,MAACT,KAAU,IAAM,MAAM,oBAAoBE;AAAA,IAC/C;AACE,YAAQA,IAA4B9nH,IAAKA,EAAG,eAAeA,EAAG,OAAO,MACjE2nH,GAA8BG,CAAyB,IACvD;AAAA,EACN;AACA,WAASa,GAAcrD,GAAOsD,GAAY;AACxC,YAAQtD,EAAM,KAAG;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOqC,GAA8BrC,EAAM,IAAI;AAAA,MACjD,KAAK;AACH,eAAOqC,GAA8B,MAAM;AAAA,MAC7C,KAAK;AACH,eAAOrC,EAAM,UAAUsD,KAAuBA,MAAT,OACjCjB,GAA8B,mBAAmB,IACjDA,GAA8B,UAAU;AAAA,MAC9C,KAAK;AACH,eAAOA,GAA8B,cAAc;AAAA,MACrD,KAAK;AAAA,MACL,KAAK;AACH,eAAOE,GAA6BvC,EAAM,MAAM,EAAE;AAAA,MACpD,KAAK;AACH,eAAOuC,GAA6BvC,EAAM,KAAK,QAAQ,EAAE;AAAA,MAC3D,KAAK;AACH,eAAOuC,GAA6BvC,EAAM,MAAM,EAAE;AAAA,MACpD,KAAK;AACH,eAAOqC,GAA8B,UAAU;AAAA,MACjD;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASkB,GAA4BC,GAAgB;AACnD,QAAI;AACF,UAAIvH,IAAO,IACT/oG,IAAW;AACb;AACE,QAAC+oG,KAAQoH,GAAcG,GAAgBtwG,CAAQ,GAC5CA,IAAWswG,GACXA,IAAiBA,EAAe;AAAA,aAC9BA;AACP,aAAOvH;AAAA,IACX,SAAWp0G,GAAG;AACV,aAAO;AAAA,4BAA+BA,EAAE,UAAU;AAAA,IAAOA,EAAE;AAAA,IAC/D;AAAA,EACA;AACA,MAAI1E,KAAiB,OAAO,UAAU,gBACpCsgH,KAAqB/D,EAAU,2BAC/BgE,KAAmBhE,EAAU,yBAC7BiE,KAAcjE,EAAU,sBACxBkE,KAAelE,EAAU,uBACzBmE,KAAMnE,EAAU,cAChBoE,KAA0BpE,EAAU,kCACpCqE,KAAoBrE,EAAU,4BAC9BsE,KAAuBtE,EAAU,+BACjCuE,KAAmBvE,EAAU,yBAC7BwE,KAAcxE,EAAU,sBACxByE,KAAezE,EAAU,uBACzB0E,KAAQ1E,EAAU,KAClB2E,KAAgC3E,EAAU,+BAC1C4E,KAAa,MACbC,KAAe;AACjB,WAASC,GAA2BC,GAAiB;AAEnD,QADe,OAAOL,MAAtB,cAA+BC,GAA8BI,CAAe,GACxEF,MAA+B,OAAOA,GAAa,iBAAnC;AAClB,UAAI;AACF,QAAAA,GAAa,cAAcD,IAAYG,CAAe;AAAA,MAC5D,QAAkB;AAAA,MAAA;AAAA,EAClB;AACA,MAAIC,KAAQ,KAAK,QAAQ,KAAK,QAAQC,IACpCC,KAAM,KAAK,KACXC,KAAM,KAAK;AACb,WAASF,GAAc98G,GAAG;AACxB,WAAAA,OAAO,GACMA,MAAN,IAAU,KAAM,MAAO+8G,GAAI/8G,CAAC,IAAIg9G,KAAO,KAAM;AAAA,EACtD;AACA,MAAIC,KAA2B,KAC7BC,KAA6B,QAC7BC,KAAgB;AAClB,WAASC,GAAwBC,GAAO;AACtC,QAAIC,IAAmBD,IAAQ;AAC/B,QAAUC,MAAN,EAAwB,QAAOA;AACnC,YAAQD,IAAQ,CAACA,GAAK;AAAA,MACpB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOA,IAAQ;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOA,IAAQ;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOA,IAAQ;AAAA,MACjB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAOA;AAAA,IACb;AAAA,EACA;AACA,WAASE,EAAa/8B,GAAMg9B,GAAUC,GAAsB;AAC1D,QAAIC,IAAel9B,EAAK;AACxB,QAAUk9B,MAAN,EAAoB,QAAO;AAC/B,QAAIC,IAAY,GACdC,IAAiBp9B,EAAK,gBACtBq9B,IAAcr9B,EAAK;AACrB,IAAAA,IAAOA,EAAK;AACZ,QAAIs9B,IAAsBJ,IAAe;AACzC,WAAMI,MAAN,KACMJ,IAAeI,IAAsB,CAACF,GAClCF,MAAN,IACKC,IAAYP,GAAwBM,CAAY,KAC/CG,KAAeC,GACXD,MAAN,IACKF,IAAYP,GAAwBS,CAAW,IAChDJ,MACEA,IAAuBK,IAAsB,CAACt9B,GAC1Ci9B,MAAN,MACGE,IAAYP,GAAwBK,CAAoB,SACjEK,IAAsBJ,IAAe,CAACE,GAClCE,MAAN,IACKH,IAAYP,GAAwBU,CAAmB,IAClDD,MAAN,IACGF,IAAYP,GAAwBS,CAAW,IAChDJ,MACEA,IAAuBC,IAAe,CAACl9B,GACnCi9B,MAAN,MACGE,IAAYP,GAAwBK,CAAoB,MACxDE,MAAN,IACH,IACMH,MAAN,KACEA,MAAaG,MACNH,IAAWI,OAAlB,MACEA,IAAiBD,IAAY,CAACA,GAC/BF,IAAuBD,IAAW,CAACA,GACpCI,KAAkBH,KACRG,MAAP,OAAgCH,IAAuB,aAA9B,KAC5BD,IACAG;AAAA,EACR;AACA,WAASI,GAA0Bv9B,GAAMw9B,GAAa;AACpD,YAEGx9B,EAAK,eACJ,EAAEA,EAAK,iBAAiB,CAACA,EAAK,eAC9Bw9B,OAHF;AAAA,EAKJ;AACA,WAASC,GAAsBC,GAAM5H,GAAa;AAChD,YAAQ4H,GAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO5H,IAAc;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOA,IAAc;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAAS6H,KAAqB;AAC5B,QAAID,IAAOf;AACX,WAAAA,OAAkB,IACXA,KAAgB,cAAvB,MAAqCA,KAAgB,UAC9Ce;AAAA,EACT;AACA,WAASE,GAAcC,GAAS;AAC9B,aAASC,IAAU,IAAItyH,IAAI,GAAG,KAAKA,GAAGA,IAAK,CAAAsyH,EAAQ,KAAKD,CAAO;AAC/D,WAAOC;AAAA,EACT;AACA,WAASC,GAAkB/9B,GAAMg+B,GAAY;AAC3C,IAAAh+B,EAAK,gBAAgBg+B,GACPA,MAAd,cACIh+B,EAAK,iBAAiB,GAAKA,EAAK,cAAc,GAAKA,EAAK,YAAY;AAAA,EAC1E;AACA,WAASi+B,GACPj+B,GACAk+B,GACAC,GACAC,GACAC,GACAC,GACA;AACA,QAAIC,IAAyBv+B,EAAK;AAClC,IAAAA,EAAK,eAAem+B,GACpBn+B,EAAK,iBAAiB,GACtBA,EAAK,cAAc,GACnBA,EAAK,YAAY,GACjBA,EAAK,gBAAgBm+B,GACrBn+B,EAAK,kBAAkBm+B,GACvBn+B,EAAK,8BAA8Bm+B,GACnCn+B,EAAK,sBAAsB;AAC3B,QAAIw+B,IAAgBx+B,EAAK,eACvBy+B,IAAkBz+B,EAAK,iBACvB0+B,KAAgB1+B,EAAK;AACvB,SACEm+B,IAAiBI,IAAyB,CAACJ,GAC3C,IAAIA,KAEJ;AACA,UAAIQ,KAAU,KAAKtC,GAAM8B,CAAc,GACrCT,KAAO,KAAKiB;AACd,MAAAH,EAAcG,EAAO,IAAI,GACzBF,EAAgBE,EAAO,IAAI;AAC3B,UAAIC,KAAuBF,GAAcC,EAAO;AAChD,UAAaC,OAAT;AACF,aACEF,GAAcC,EAAO,IAAI,MAAMA,KAAU,GACzCA,KAAUC,GAAqB,QAC/BD,MACA;AACA,cAAI/8G,KAASg9G,GAAqBD,EAAO;AACzC,UAAS/8G,OAAT,SAAoBA,GAAO,QAAQ;AAAA,QAC3C;AACI,MAAAu8G,KAAkB,CAACT;AAAA,IACvB;AACE,IAAMU,MAAN,KAAqBS,GAAwB7+B,GAAMo+B,GAAa,CAAC,GAC3DE,MAAN,KACQD,MAAN,KACMr+B,EAAK,QAAX,MACCA,EAAK,kBACJs+B,IAAsB,EAAEC,IAAyB,CAACL;AAAA,EACxD;AACA,WAASW,GAAwB7+B,GAAMo+B,GAAaU,GAAgB;AAClE,IAAA9+B,EAAK,gBAAgBo+B,GACrBp+B,EAAK,kBAAkB,CAACo+B;AACxB,QAAIW,IAAmB,KAAK1C,GAAM+B,CAAW;AAC7C,IAAAp+B,EAAK,kBAAkBo+B,GACvBp+B,EAAK,cAAc++B,CAAgB,IACjC/+B,EAAK,cAAc++B,CAAgB,IACnC,aACCD,IAAiB;AAAA,EACtB;AACA,WAASE,GAAkBh/B,GAAM8+B,GAAgB;AAC/C,QAAIG,IAAsBj/B,EAAK,kBAAkB8+B;AACjD,SAAK9+B,IAAOA,EAAK,eAAei/B,KAAsB;AACpD,UAAIC,IAAU,KAAK7C,GAAM4C,CAAkB,GACzCvB,IAAO,KAAKwB;AACd,MAACxB,IAAOoB,IAAmB9+B,EAAKk/B,CAAO,IAAIJ,MACxC9+B,EAAKk/B,CAAO,KAAKJ,IACpBG,KAAsB,CAACvB;AAAA,IAC3B;AAAA,EACA;AACA,WAASyB,GAA0Bn/B,GAAMw9B,GAAa;AACpD,QAAI4B,IAAa5B,IAAc,CAACA;AAChC,WAAA4B,KACSA,IAAa,QAApB,IAA0B,IAAIC,GAAgCD,CAAU,IAC5DA,KAAcp/B,EAAK,iBAAiBw9B,QAA3C,IACH,IACA4B;AAAA,EACN;AACA,WAASC,GAAgC3B,GAAM;AAC7C,YAAQA,GAAI;AAAA,MACV,KAAK;AACH,QAAAA,IAAO;AACP;AAAA,MACF,KAAK;AACH,QAAAA,IAAO;AACP;AAAA,MACF,KAAK;AACH,QAAAA,IAAO;AACP;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAA,IAAO;AACP;AAAA,MACF,KAAK;AACH,QAAAA,IAAO;AACP;AAAA,MACF;AACE,QAAAA,IAAO;AAAA,IACb;AACE,WAAOA;AAAA,EACT;AACA,WAAS4B,GAAqBzC,GAAO;AACnC,WAAAA,KAAS,CAACA,GACH,IAAIA,IACP,IAAIA,KACKA,IAAQ,eAAf,IACE,KACA,YACF,IACF;AAAA,EACN;AACA,WAAS0C,KAAwB;AAC/B,QAAIC,IAAiBzG,EAAwB;AAC7C,WAAUyG,MAAN,IAA6BA,KACjCA,IAAiB,OAAO,OACNA,MAAX,SAA4B,KAAKC,GAAiBD,EAAe,IAAI;AAAA,EAC9E;AACA,WAASE,GAAgBh0E,GAAUr5C,GAAI;AACrC,QAAIstH,IAAmB5G,EAAwB;AAC/C,QAAI;AACF,aAAQA,EAAwB,IAAIrtE,GAAWr5C,EAAE;AAAA,IACrD,UAAG;AACC,MAAA0mH,EAAwB,IAAI4G;AAAA,IAChC;AAAA,EACA;AACA,MAAIC,KAAY,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,CAAC,GAChDC,KAAsB,kBAAkBD,IACxCE,KAAmB,kBAAkBF,IACrCG,KAA+B,sBAAsBH,IACrDI,KAA2B,mBAAmBJ,IAC9CK,KAAmC,sBAAsBL,IACzDM,KAA6B,oBAAoBN,IACjDO,KAA+B,sBAAsBP,IACrDQ,KAA0B,mBAAmBR;AAC/C,WAASS,EAAsBtiG,GAAM;AACnC,WAAOA,EAAK8hG,EAAmB,GAC/B,OAAO9hG,EAAK+hG,EAAgB,GAC5B,OAAO/hG,EAAKiiG,EAAwB,GACpC,OAAOjiG,EAAKkiG,EAAgC,GAC5C,OAAOliG,EAAKmiG,EAA0B;AAAA,EACxC;AACA,WAASI,GAA2Bl2E,GAAY;AAC9C,QAAIm2E,IAAan2E,EAAWy1E,EAAmB;AAC/C,QAAIU,EAAY,QAAOA;AACvB,aAAS7nD,IAAatuB,EAAW,YAAYsuB,KAAc;AACzD,UACG6nD,IACC7nD,EAAWqnD,EAA4B,KACvCrnD,EAAWmnD,EAAmB,GAChC;AAEA,YADAnnD,IAAa6nD,EAAW,WAEbA,EAAW,UAApB,QACU7nD,MAAT,QAAgCA,EAAW,UAApB;AAExB,eACEtuB,IAAao2E,GAA2Bp2E,CAAU,GACzCA,MAAT,QAEA;AACA,gBAAKsuB,IAAatuB,EAAWy1E,EAAmB,EAAI,QAAOnnD;AAC3D,YAAAtuB,IAAao2E,GAA2Bp2E,CAAU;AAAA,UAC5D;AACM,eAAOm2E;AAAA,MACb;AACI,MAAAn2E,IAAasuB,GACbA,IAAatuB,EAAW;AAAA,IAC5B;AACE,WAAO;AAAA,EACT;AACA,WAASq2E,GAAoB1iG,GAAM;AACjC,QACGA,IAAOA,EAAK8hG,EAAmB,KAAK9hG,EAAKgiG,EAA4B,GACtE;AACA,UAAIvlF,IAAMzc,EAAK;AACf,UACQyc,MAAN,KACMA,MAAN,KACOA,MAAP,MACOA,MAAP,MACOA,MAAP,MACOA,MAAP,MACMA,MAAN;AAEA,eAAOzc;AAAA,IACb;AACE,WAAO;AAAA,EACT;AACA,WAAS2iG,GAAoBlrD,GAAM;AACjC,QAAIh7B,IAAMg7B,EAAK;AACf,QAAUh7B,MAAN,KAAoBA,MAAP,MAAqBA,MAAP,MAAoBA,MAAN,EAAW,QAAOg7B,EAAK;AACpE,UAAM,MAAM1K,EAAuB,EAAE,CAAC;AAAA,EACxC;AACA,WAAS61D,GAAqB3gC,GAAM;AAClC,QAAI4gC,IAAY5gC,EAAKmgC,EAA4B;AACjD,WAAAS,MACGA,IAAY5gC,EAAKmgC,EAA4B,IAC5C,EAAE,iBAAiB,oBAAI,IAAG,GAAI,kBAAkB,oBAAI,IAAG,MACpDS;AAAA,EACT;AACA,WAASC,GAAoB9iG,GAAM;AACjC,IAAAA,EAAKqiG,EAAuB,IAAI;AAAA,EAClC;AACA,MAAIU,KAAkB,oBAAI,IAAG,GAC3BC,KAA+B,CAAA;AACjC,WAASC,GAAsBC,GAAkBC,GAAc;AAC7D,IAAAC,GAAoBF,GAAkBC,CAAY,GAClDC,GAAoBF,IAAmB,WAAWC,CAAY;AAAA,EAChE;AACA,WAASC,GAAoBF,GAAkBC,GAAc;AAE3D,SADAH,GAA6BE,CAAgB,IAAIC,GAE/CD,IAAmB,GACnBA,IAAmBC,EAAa,QAChCD;AAEA,MAAAH,GAAgB,IAAII,EAAaD,CAAgB,CAAC;AAAA,EACtD;AACA,MAAIG,KAA6B;AAAA,IAC7B;AAAA,KAEFC,KAA4B,CAAA,GAC5BC,KAA8B,CAAA;AAChC,WAASC,GAAoBC,GAAe;AAC1C,WAAI1mH,GAAe,KAAKwmH,IAA6BE,CAAa,IACzD,KACL1mH,GAAe,KAAKumH,IAA2BG,CAAa,IAAU,KACtEJ,GAA2B,KAAKI,CAAa,IACvCF,GAA4BE,CAAa,IAAI,MACvDH,GAA0BG,CAAa,IAAI,IACpC;AAAA,EACT;AACA,WAASC,GAAqB1jG,GAAMuM,GAAMv4B,GAAO;AAC/C,QAAIwvH,GAAoBj3F,CAAI;AAC1B,UAAav4B,MAAT,KAAgB,CAAAgsB,EAAK,gBAAgBuM,CAAI;AAAA,WACxC;AACH,gBAAQ,OAAOv4B,GAAK;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,YAAAgsB,EAAK,gBAAgBuM,CAAI;AACzB;AAAA,UACF,KAAK;AACH,gBAAIo3F,IAAYp3F,EAAK,YAAW,EAAG,MAAM,GAAG,CAAC;AAC7C,gBAAgBo3F,MAAZ,WAAqCA,MAAZ,SAAuB;AAClD,cAAA3jG,EAAK,gBAAgBuM,CAAI;AACzB;AAAA,YACZ;AAAA,QACA;AACM,QAAAvM,EAAK,aAAauM,GAAM,KAAKv4B,CAAK;AAAA,MACxC;AAAA,EACA;AACA,WAAS4vH,GAA0B5jG,GAAMuM,GAAMv4B,GAAO;AACpD,QAAaA,MAAT,KAAgB,CAAAgsB,EAAK,gBAAgBuM,CAAI;AAAA,SACxC;AACH,cAAQ,OAAOv4B,GAAK;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAgsB,EAAK,gBAAgBuM,CAAI;AACzB;AAAA,MACR;AACI,MAAAvM,EAAK,aAAauM,GAAM,KAAKv4B,CAAK;AAAA,IACtC;AAAA,EACA;AACA,WAAS6vH,GAA+B7jG,GAAM8jG,GAAWv3F,GAAMv4B,GAAO;AACpE,QAAaA,MAAT,KAAgB,CAAAgsB,EAAK,gBAAgBuM,CAAI;AAAA,SACxC;AACH,cAAQ,OAAOv4B,GAAK;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAgsB,EAAK,gBAAgBuM,CAAI;AACzB;AAAA,MACR;AACI,MAAAvM,EAAK,eAAe8jG,GAAWv3F,GAAM,KAAKv4B,CAAK;AAAA,IACnD;AAAA,EACA;AACA,WAAS+vH,GAAiB/vH,GAAO;AAC/B,YAAQ,OAAOA,GAAK;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOA;AAAA,MACT,KAAK;AACH,eAAOA;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASgwH,GAAYC,GAAM;AACzB,QAAIj4H,IAAOi4H,EAAK;AAChB,YACGA,IAAOA,EAAK,aACDA,EAAK,YAAW,MAA5B,YACgBj4H,MAAf,cAAmCA,MAAZ;AAAA,EAE5B;AACA,WAASk4H,GAAiBlkG,GAAMmkG,GAAYC,GAAc;AACxD,QAAIC,IAAa,OAAO;AAAA,MACtBrkG,EAAK,YAAY;AAAA,MACjBmkG;AAAA;AAEF,QACE,CAACnkG,EAAK,eAAemkG,CAAU,KACf,OAAOE,IAAvB,OACe,OAAOA,EAAW,OAAjC,cACe,OAAOA,EAAW,OAAjC,YACA;AACA,UAAItpH,IAAMspH,EAAW,KACnBr0H,IAAMq0H,EAAW;AACnB,oBAAO,eAAerkG,GAAMmkG,GAAY;AAAA,QACtC,cAAc;AAAA,QACd,KAAK,WAAY;AACf,iBAAOppH,EAAI,KAAK,IAAI;AAAA,QAC5B;AAAA,QACM,KAAK,SAAU/G,GAAO;AACpB,UAAAowH,IAAe,KAAKpwH,GACpBhE,EAAI,KAAK,MAAMgE,CAAK;AAAA,QAC5B;AAAA,MACA,CAAK,GACD,OAAO,eAAegsB,GAAMmkG,GAAY;AAAA,QACtC,YAAYE,EAAW;AAAA,MAC7B,CAAK,GACM;AAAA,QACL,UAAU,WAAY;AACpB,iBAAOD;AAAA,QACf;AAAA,QACM,UAAU,SAAUpwH,GAAO;AACzB,UAAAowH,IAAe,KAAKpwH;AAAA,QAC5B;AAAA,QACM,cAAc,WAAY;AACxB,UAAAgsB,EAAK,gBAAgB,MACrB,OAAOA,EAAKmkG,CAAU;AAAA,QAC9B;AAAA;IAEA;AAAA,EACA;AACA,WAASG,GAAMtkG,GAAM;AACnB,QAAI,CAACA,EAAK,eAAe;AACvB,UAAImkG,IAAaH,GAAYhkG,CAAI,IAAI,YAAY;AACjD,MAAAA,EAAK,gBAAgBkkG;AAAA,QACnBlkG;AAAA,QACAmkG;AAAA,QACA,KAAKnkG,EAAKmkG,CAAU;AAAA;IAE1B;AAAA,EACA;AACA,WAASI,GAAqBvkG,GAAM;AAClC,QAAI,CAACA,EAAM,QAAO;AAClB,QAAImV,IAAUnV,EAAK;AACnB,QAAI,CAACmV,EAAS,QAAO;AACrB,QAAIqvF,IAAYrvF,EAAQ,SAAQ,GAC5BnhC,IAAQ;AACZ,WAAAgsB,MACGhsB,IAAQgwH,GAAYhkG,CAAI,IACrBA,EAAK,UACH,SACA,UACFA,EAAK,QACXA,IAAOhsB,GACAgsB,MAASwkG,KAAarvF,EAAQ,SAASnV,CAAI,GAAG,MAAM;AAAA,EAC7D;AACA,WAASykG,GAAiBr5E,GAAK;AAE7B,QADAA,IAAMA,MAAwB,OAAO,WAAvB,MAAkC,WAAW,SACvC,OAAOA,IAAvB,IAA4B,QAAO;AACvC,QAAI;AACF,aAAOA,EAAI,iBAAiBA,EAAI;AAAA,IACpC,QAAc;AACV,aAAOA,EAAI;AAAA,IACf;AAAA,EACA;AACA,MAAIs5E,KAAsD;AAC1D,WAASC,GAA+C3wH,GAAO;AAC7D,WAAOA,EAAM;AAAA,MACX0wH;AAAA,MACA,SAAUpsF,GAAI;AACZ,eAAO,OAAOA,EAAG,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI;AAAA,MACpD;AAAA;EAEA;AACA,WAASssF,GACPhnH,GACA5J,GACAwL,GACAqlH,GACAxlF,GACAylF,GACA94H,GACAugC,GACA;AACA,IAAA3uB,EAAQ,OAAO,IACP5R,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACc,OAAOA,KAArB,YACK4R,EAAQ,OAAO5R,IAChB4R,EAAQ,gBAAgB,MAAM,GACtB5J,KAAR,OACehI,MAAb,YACSgI,MAAN,KAAsB4J,EAAQ,UAAf,MAAyBA,EAAQ,SAAS5J,OAC5D4J,EAAQ,QAAQ,KAAKmmH,GAAiB/vH,CAAK,KAE7C4J,EAAQ,UAAU,KAAKmmH,GAAiB/vH,CAAK,MAC1C4J,EAAQ,QAAQ,KAAKmmH,GAAiB/vH,CAAK,KAElChI,MAAb,YAAiCA,MAAZ,WAAqB4R,EAAQ,gBAAgB,OAAO,GACpE5J,KAAR,OACI+wH,GAAgBnnH,GAAS5R,GAAM+3H,GAAiB/vH,CAAK,CAAC,IAC9CwL,KAAR,OACEulH,GAAgBnnH,GAAS5R,GAAM+3H,GAAiBvkH,CAAY,CAAC,IACrDqlH,KAAR,QAA4BjnH,EAAQ,gBAAgB,OAAO,GACzDyhC,KAAR,QACUylF,KAAR,SACClnH,EAAQ,iBAAiB,CAAC,CAACknH,IACtBzlF,KAAR,SACGzhC,EAAQ,UACPyhC,KAA0B,OAAOA,KAAtB,cAA8C,OAAOA,KAApB,WACxC9S,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACc,OAAOA,KAArB,YACK3uB,EAAQ,OAAO,KAAKmmH,GAAiBx3F,CAAI,IAC1C3uB,EAAQ,gBAAgB,MAAM;AAAA,EACpC;AACA,WAASonH,GACPpnH,GACA5J,GACAwL,GACA6/B,GACAylF,GACA94H,GACAugC,GACA04F,GACA;AAMA,QALQj5H,KAAR,QACiB,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACc,OAAOA,KAArB,cACC4R,EAAQ,OAAO5R,IACNgI,KAAR,QAAyBwL,KAAR,MAAsB;AACzC,UACE,EACgBxT,MAAb,YAAiCA,MAAZ,WACQgI,KAAT,OAEvB;AACA,QAAAswH,GAAM1mH,CAAO;AACb;AAAA,MACN;AACI,MAAA4B,IACUA,KAAR,OAAuB,KAAKukH,GAAiBvkH,CAAY,IAAI,IAC/DxL,IAAgBA,KAAR,OAAgB,KAAK+vH,GAAiB/vH,CAAK,IAAIwL,GACvDylH,KAAejxH,MAAU4J,EAAQ,UAAUA,EAAQ,QAAQ5J,IAC3D4J,EAAQ,eAAe5J;AAAA,IAC3B;AACE,IAAAqrC,IAAkBA,KAAoBylF,GACtCzlF,IACiB,OAAOA,KAAtB,cAA8C,OAAOA,KAApB,YAA+B,CAAC,CAACA,GACpEzhC,EAAQ,UAAUqnH,IAAcrnH,EAAQ,UAAU,CAAC,CAACyhC,GACpDzhC,EAAQ,iBAAiB,CAAC,CAACyhC,GACnB9S,KAAR,QACiB,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACc,OAAOA,KAArB,cACC3uB,EAAQ,OAAO2uB,IAClB+3F,GAAM1mH,CAAO;AAAA,EACf;AACA,WAASmnH,GAAgB/kG,GAAMh0B,GAAMgI,GAAO;AAC1C,IAAchI,MAAb,YAAqBy4H,GAAiBzkG,EAAK,aAAa,MAAMA,KAC7DA,EAAK,iBAAiB,KAAKhsB,MAC1BgsB,EAAK,eAAe,KAAKhsB;AAAA,EAC9B;AACA,WAASkxH,GAAcllG,GAAMmlG,GAAU1yE,GAAW2yE,GAAoB;AAEpE,QADAplG,IAAOA,EAAK,SACRmlG,GAAU;AACZ,MAAAA,IAAW,CAAA;AACX,eAAS13H,IAAI,GAAGA,IAAIglD,EAAU,QAAQhlD;AACpC,QAAA03H,EAAS,MAAM1yE,EAAUhlD,CAAC,CAAC,IAAI;AACjC,WAAKglD,IAAY,GAAGA,IAAYzyB,EAAK,QAAQyyB;AAC3C,QAAChlD,IAAI03H,EAAS,eAAe,MAAMnlG,EAAKyyB,CAAS,EAAE,KAAK,GACtDzyB,EAAKyyB,CAAS,EAAE,aAAahlD,MAAMuyB,EAAKyyB,CAAS,EAAE,WAAWhlD,IAC9DA,KAAK23H,MAAuBplG,EAAKyyB,CAAS,EAAE,kBAAkB;AAAA,IACtE,OAAS;AAGL,WAFAA,IAAY,KAAKsxE,GAAiBtxE,CAAS,GAC3C0yE,IAAW,MACN13H,IAAI,GAAGA,IAAIuyB,EAAK,QAAQvyB,KAAK;AAChC,YAAIuyB,EAAKvyB,CAAC,EAAE,UAAUglD,GAAW;AAC/B,UAAAzyB,EAAKvyB,CAAC,EAAE,WAAW,IACnB23H,MAAuBplG,EAAKvyB,CAAC,EAAE,kBAAkB;AACjD;AAAA,QACR;AACM,QAAS03H,MAAT,QAAqBnlG,EAAKvyB,CAAC,EAAE,aAAa03H,IAAWnlG,EAAKvyB,CAAC;AAAA,MACjE;AACI,MAAS03H,MAAT,SAAsBA,EAAS,WAAW;AAAA,IAC9C;AAAA,EACA;AACA,WAASE,GAAeznH,GAAS5J,GAAOwL,GAAc;AACpD,QACUxL,KAAR,SACEA,IAAQ,KAAK+vH,GAAiB/vH,CAAK,GACrCA,MAAU4J,EAAQ,UAAUA,EAAQ,QAAQ5J,IACpCwL,KAAR,OACA;AACA,MAAA5B,EAAQ,iBAAiB5J,MAAU4J,EAAQ,eAAe5J;AAC1D;AAAA,IACJ;AACE,IAAA4J,EAAQ,eACE4B,KAAR,OAAuB,KAAKukH,GAAiBvkH,CAAY,IAAI;AAAA,EACjE;AACA,WAAS8lH,GAAa1nH,GAAS5J,GAAOwL,GAAcvB,GAAU;AAC5D,QAAYjK,KAAR,MAAe;AACjB,UAAYiK,KAAR,MAAkB;AACpB,YAAYuB,KAAR,KAAsB,OAAM,MAAMutD,EAAuB,EAAE,CAAC;AAChE,YAAIlwD,EAAYoB,CAAQ,GAAG;AACzB,cAAI,IAAIA,EAAS,OAAQ,OAAM,MAAM8uD,EAAuB,EAAE,CAAC;AAC/D,UAAA9uD,IAAWA,EAAS,CAAC;AAAA,QAC7B;AACM,QAAAuB,IAAevB;AAAA,MACrB;AACI,MAAQuB,KAAR,SAAyBA,IAAe,KACxCxL,IAAQwL;AAAA,IACZ;AACE,IAAAA,IAAeukH,GAAiB/vH,CAAK,GACrC4J,EAAQ,eAAe4B,GACvBvB,IAAWL,EAAQ,aACnBK,MAAauB,KACJvB,MAAP,MACSA,MAAT,SACCL,EAAQ,QAAQK,IACnBqmH,GAAM1mH,CAAO;AAAA,EACf;AACA,WAAS2nH,GAAevlG,GAAMza,GAAM;AAClC,QAAIA,GAAM;AACR,UAAIigH,IAAaxlG,EAAK;AACtB,UACEwlG,KACAA,MAAexlG,EAAK,aACdwlG,EAAW,aAAjB,GACA;AACA,QAAAA,EAAW,YAAYjgH;AACvB;AAAA,MACN;AAAA,IACA;AACE,IAAAya,EAAK,cAAcza;AAAA,EACrB;AACA,MAAIkgH,KAAkB,IAAI;AAAA,IACxB,26BAA26B;AAAA,MACz6B;AAAA,IACJ;AAAA;AAEA,WAASC,GAAiBj4E,GAAOk4E,GAAW3xH,GAAO;AACjD,QAAI4xH,IAAyBD,EAAU,QAAQ,IAAI,MAA5B;AACvB,IAAQ3xH,KAAR,QAA+B,OAAOA,KAArB,aAAqCA,MAAP,KAC3C4xH,IACEn4E,EAAM,YAAYk4E,GAAW,EAAE,IACnBA,MAAZ,UACGl4E,EAAM,WAAW,KACjBA,EAAMk4E,CAAS,IAAI,KACxBC,IACEn4E,EAAM,YAAYk4E,GAAW3xH,CAAK,IACrB,OAAOA,KAApB,YACQA,MAAN,KACAyxH,GAAgB,IAAIE,CAAS,IACjBA,MAAZ,UACGl4E,EAAM,WAAWz5C,IACjBy5C,EAAMk4E,CAAS,KAAK,KAAK3xH,GAAO,KAAI,IACtCy5C,EAAMk4E,CAAS,IAAI3xH,IAAQ;AAAA,EACtC;AACA,WAAS6xH,GAAkB7lG,GAAMmiB,GAAQ2jF,GAAY;AACnD,QAAY3jF,KAAR,QAA+B,OAAOA,KAApB;AACpB,YAAM,MAAM4qB,EAAuB,EAAE,CAAC;AAExC,QADA/sC,IAAOA,EAAK,OACA8lG,KAAR,MAAoB;AACtB,eAASH,KAAaG;AACpB,SAACA,EAAW,eAAeH,CAAS,KACzBxjF,KAAR,QAAkBA,EAAO,eAAewjF,CAAS,MAC3CA,EAAU,QAAQ,IAAI,MAA5B,IACG3lG,EAAK,YAAY2lG,GAAW,EAAE,IAClBA,MAAZ,UACG3lG,EAAK,WAAW,KAChBA,EAAK2lG,CAAS,IAAI;AAC7B,eAASI,KAAgB5jF;AACvB,QAACwjF,IAAYxjF,EAAO4jF,CAAY,GAC9B5jF,EAAO,eAAe4jF,CAAY,KAChCD,EAAWC,CAAY,MAAMJ,KAC7BD,GAAiB1lG,GAAM+lG,GAAcJ,CAAS;AAAA,IACxD;AACI,eAASK,KAAgB7jF;AACvB,QAAAA,EAAO,eAAe6jF,CAAY,KAChCN,GAAiB1lG,GAAMgmG,GAAc7jF,EAAO6jF,CAAY,CAAC;AAAA,EACjE;AACA,WAASC,GAAgBp/B,GAAS;AAChC,QAAWA,EAAQ,QAAQ,GAAG,MAA1B,GAA6B,QAAO;AACxC,YAAQA,GAAO;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,MAAI6J,KAAU,oBAAI,IAAI;AAAA,IAClB,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,WAAW,KAAK;AAAA,IACjB,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,eAAe,aAAa;AAAA,IAC7B,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,qBAAqB,oBAAoB;AAAA,IAC1C,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,YAAY,WAAW;AAAA,IACxB,CAAC,YAAY,WAAW;AAAA,IACxB,CAAC,sBAAsB,qBAAqB;AAAA,IAC5C,CAAC,6BAA6B,6BAA6B;AAAA,IAC3D,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,kBAAkB,iBAAiB;AAAA,IACpC,CAAC,oBAAoB,mBAAmB;AAAA,IACxC,CAAC,oBAAoB,mBAAmB;AAAA,IACxC,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,YAAY,WAAW;AAAA,IACxB,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,YAAY,WAAW;AAAA,IACxB,CAAC,kBAAkB,kBAAkB;AAAA,IACrC,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,8BAA8B,8BAA8B;AAAA,IAC7D,CAAC,4BAA4B,4BAA4B;AAAA,IACzD,CAAC,aAAa,aAAa;AAAA,IAC3B,CAAC,gBAAgB,gBAAgB;AAAA,IACjC,CAAC,kBAAkB,iBAAiB;AAAA,IACpC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,oBAAoB,mBAAmB;AAAA,IACxC,CAAC,qBAAqB,oBAAoB;AAAA,IAC1C,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,YAAY,UAAU;AAAA,IACvB,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,mBAAmB,kBAAkB;AAAA,IACtC,CAAC,kBAAkB,iBAAiB;AAAA,IACpC,CAAC,aAAa,YAAY;AAAA,IAC1B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,yBAAyB,wBAAwB;AAAA,IAClD,CAAC,0BAA0B,yBAAyB;AAAA,IACpD,CAAC,mBAAmB,kBAAkB;AAAA,IACtC,CAAC,oBAAoB,mBAAmB;AAAA,IACxC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,kBAAkB,iBAAiB;AAAA,IACpC,CAAC,oBAAoB,mBAAmB;AAAA,IACxC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,kBAAkB,iBAAiB;AAAA,IACpC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,mBAAmB,kBAAkB;AAAA,IACtC,CAAC,qBAAqB,oBAAoB;AAAA,IAC1C,CAAC,sBAAsB,qBAAqB;AAAA,IAC5C,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,cAAc,cAAc;AAAA,IAC7B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,YAAY,WAAW;AAAA,IACxB,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,gBAAgB,eAAe;AAAA,IAChC,CAAC,YAAY,YAAY;AAAA,IACzB,CAAC,eAAe,eAAe;AAAA,IAC/B,CAAC,eAAe,eAAe;AAAA,IAC/B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,eAAe,cAAc;AAAA,IAC9B,CAAC,cAAc,aAAa;AAAA,IAC5B,CAAC,WAAW,UAAU;AAAA,EAC1B,CAAG,GACDw1B,KACE;AACJ,WAASC,GAAYj7E,GAAK;AACxB,WAAOg7E,GAAqB,KAAK,KAAKh7E,CAAG,IACrC,gGACAA;AAAA,EACN;AACA,WAASk7E,KAAS;AAAA,EAAA;AAClB,MAAIC,KAAwB;AAC5B,WAASC,GAAer4D,GAAa;AACnC,WAAAA,IAAcA,EAAY,UAAUA,EAAY,cAAc,QAC9DA,EAAY,4BACTA,IAAcA,EAAY,0BAChBA,EAAY,aAAlB,IAA6BA,EAAY,aAAaA;AAAA,EAC/D;AACA,MAAIs4D,KAAgB,MAClBC,KAAe;AACjB,WAASC,GAAqBzzH,GAAQ;AACpC,QAAI0zH,IAAmBhE,GAAoB1vH,CAAM;AACjD,QAAI0zH,MAAqB1zH,IAAS0zH,EAAiB,YAAY;AAC7D,UAAIrqH,IAAQrJ,EAAO+uH,EAAgB,KAAK;AACxC,MAAAz0H,EAAG,SAAU0F,IAAS0zH,EAAiB,WAAYA,EAAiB,MAAI;AAAA,QACtE,KAAK;AAYH,cAXA9B;AAAA,YACE5xH;AAAA,YACAqJ,EAAM;AAAA,YACNA,EAAM;AAAA,YACNA,EAAM;AAAA,YACNA,EAAM;AAAA,YACNA,EAAM;AAAA,YACNA,EAAM;AAAA,YACNA,EAAM;AAAA,aAERqqH,IAAmBrqH,EAAM,MACTA,EAAM,SAAlB,WAAkCqqH,KAAR,MAA0B;AACtD,iBAAKrqH,IAAQrJ,GAAQqJ,EAAM,aAAc,CAAAA,IAAQA,EAAM;AAQvD,iBAPAA,IAAQA,EAAM;AAAA,cACZ,iBACEsoH;AAAA,gBACE,KAAK+B;AAAA,kBAEP;AAAA,eAGFA,IAAmB,GACnBA,IAAmBrqH,EAAM,QACzBqqH,KACA;AACA,kBAAIr7D,IAAYhvD,EAAMqqH,CAAgB;AACtC,kBAAIr7D,MAAcr4D,KAAUq4D,EAAU,SAASr4D,EAAO,MAAM;AAC1D,oBAAI2zH,IAAat7D,EAAU02D,EAAgB,KAAK;AAChD,oBAAI,CAAC4E,EAAY,OAAM,MAAM55D,EAAuB,EAAE,CAAC;AACvD,gBAAA63D;AAAA,kBACEv5D;AAAA,kBACAs7D,EAAW;AAAA,kBACXA,EAAW;AAAA,kBACXA,EAAW;AAAA,kBACXA,EAAW;AAAA,kBACXA,EAAW;AAAA,kBACXA,EAAW;AAAA,kBACXA,EAAW;AAAA;cAE3B;AAAA,YACA;AACU,iBACED,IAAmB,GACnBA,IAAmBrqH,EAAM,QACzBqqH;AAEA,cAACr7D,IAAYhvD,EAAMqqH,CAAgB,GACjCr7D,EAAU,SAASr4D,EAAO,QAAQuxH,GAAqBl5D,CAAS;AAAA,UAC9E;AACQ,gBAAM/9D;AAAA,QACR,KAAK;AACH,UAAA+3H,GAAeryH,GAAQqJ,EAAM,OAAOA,EAAM,YAAY;AACtD,gBAAM/O;AAAA,QACR,KAAK;AACH,UAACo5H,IAAmBrqH,EAAM,OAChBqqH,KAAR,QACExB,GAAclyH,GAAQ,CAAC,CAACqJ,EAAM,UAAUqqH,GAAkB,EAAE;AAAA,MACxE;AAAA,IACA;AAAA,EACA;AACA,MAAIE,KAAuB;AAC3B,WAASC,GAAiBvyH,GAAIhH,GAAGmY,GAAG;AAClC,QAAImhH,GAAsB,QAAOtyH,EAAGhH,GAAGmY,CAAC;AACxC,IAAAmhH,KAAuB;AACvB,QAAI;AACF,UAAI9K,IAA2BxnH,EAAGhH,CAAC;AACnC,aAAOwuH;AAAA,IACX,UAAG;AACC,UACI8K,KAAuB,KAChBL,OAAT,QAAmCC,OAAT,UAGvBM,GAAe,GAChBP,OACIj5H,IAAIi5H,IACLjyH,IAAKkyH,IACLA,KAAeD,KAAgB,MAChCE,GAAqBn5H,CAAC,GACtBgH;AAEF,aAAKhH,IAAI,GAAGA,IAAIgH,EAAG,QAAQhH,IAAK,CAAAm5H,GAAqBnyH,EAAGhH,CAAC,CAAC;AAAA,IAClE;AAAA,EACA;AACA,WAASy5H,GAAYtvD,GAAMyrD,GAAkB;AAC3C,QAAI8D,IAAYvvD,EAAK;AACrB,QAAauvD,MAAT,KAAoB,QAAO;AAC/B,QAAI3qH,IAAQ2qH,EAAUjF,EAAgB,KAAK;AAC3C,QAAa1lH,MAAT,KAAgB,QAAO;AAC3B,IAAA2qH,IAAY3qH,EAAM6mH,CAAgB;AAClC,IAAA51H,EAAG,SAAQ41H,GAAgB;AAAA,MACzB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,SAAC7mH,IAAQ,CAACA,EAAM,cACZo7D,IAAOA,EAAK,MACbp7D,IAAQ,EACMo7D,MAAb,YACYA,MAAZ,WACaA,MAAb,YACeA,MAAf,cAEJA,IAAO,CAACp7D;AACR,cAAM/O;AAAA,MACR;AACE,QAAAmqE,IAAO;AAAA,IACb;AACE,QAAIA,EAAM,QAAO;AACjB,QAAIuvD,KAA4B,OAAOA,KAAtB;AACf,YAAM;AAAA,QACJj6D,EAAuB,KAAKm2D,GAAkB,OAAO8D,CAAS;AAAA;AAElE,WAAOA;AAAA,EACT;AACA,MAAIC,KAAY,EACI,OAAO,SAAvB,OACgB,OAAO,OAAO,WAA9B,OACgB,OAAO,OAAO,SAAS,gBAAvC,MAEFC,KAAgC;AAClC,MAAID;AACF,QAAI;AACF,UAAI3uH,KAAU,CAAA;AACd,aAAO,eAAeA,IAAS,WAAW;AAAA,QACxC,KAAK,WAAY;AACf,UAAA4uH,KAAgC;AAAA,QACxC;AAAA,MACA,CAAK,GACD,OAAO,iBAAiB,QAAQ5uH,IAASA,EAAO,GAChD,OAAO,oBAAoB,QAAQA,IAASA,EAAO;AAAA,IACvD,QAAc;AACV,MAAA4uH,KAAgC;AAAA,IACpC;AACA,MAAIjlC,KAAO,MACTklC,KAAY,MACZC,KAAe;AACjB,WAASC,KAAU;AACjB,QAAID,GAAc,QAAOA;AACzB,QAAI9/G,GACFggH,IAAaH,IACbI,IAAcD,EAAW,QACzB35F,GACA65F,IAAW,WAAWvlC,KAAOA,GAAK,QAAQA,GAAK,aAC/CwlC,IAAYD,EAAS;AACvB,SACElgH,IAAQ,GACRA,IAAQigH,KAAeD,EAAWhgH,CAAK,MAAMkgH,EAASlgH,CAAK,GAC3DA,IACD;AACD,QAAIogH,IAASH,IAAcjgH;AAC3B,SACEqmB,IAAM,GACNA,KAAO+5F,KACPJ,EAAWC,IAAc55F,CAAG,MAAM65F,EAASC,IAAY95F,CAAG,GAC1DA,IACD;AACD,WAAQy5F,KAAeI,EAAS,MAAMlgH,GAAO,IAAIqmB,IAAM,IAAIA,IAAM,MAAM;AAAA,EACzE;AACA,WAASg6F,GAAiB15D,GAAa;AACrC,QAAI25D,IAAU35D,EAAY;AAC1B,yBAAcA,KACRA,IAAcA,EAAY,UACtBA,MAAN,KAA4B25D,MAAP,OAAmB35D,IAAc,OACrDA,IAAc25D,GACZ35D,MAAP,OAAuBA,IAAc,KAC9B,MAAMA,KAAsBA,MAAP,KAAqBA,IAAc;AAAA,EACjE;AACA,WAAS45D,KAA0B;AACjC,WAAO;AAAA,EACT;AACA,WAASC,KAA2B;AAClC,WAAO;AAAA,EACT;AACA,WAASC,GAAqBC,GAAW;AACvC,aAASC,EACPC,GACAC,GACA3F,GACAv0D,GACAm6D,GACA;AACA,WAAK,aAAaF,GAClB,KAAK,cAAc1F,GACnB,KAAK,OAAO2F,GACZ,KAAK,cAAcl6D,GACnB,KAAK,SAASm6D,GACd,KAAK,gBAAgB;AACrB,eAASh8H,KAAY47H;AACnB,QAAAA,EAAU,eAAe57H,CAAQ,MAC7B87H,IAAYF,EAAU57H,CAAQ,GAC/B,KAAKA,CAAQ,IAAI87H,IACdA,EAAUj6D,CAAW,IACrBA,EAAY7hE,CAAQ;AAC5B,kBAAK,sBACK6hE,EAAY,oBAApB,OACIA,EAAY,mBACLA,EAAY,gBAAnB,MAEF45D,KACAC,IACJ,KAAK,uBAAuBA,IACrB;AAAA,IACX;AACE,WAAA5rH,EAAO+rH,EAAmB,WAAW;AAAA,MACnC,gBAAgB,WAAY;AAC1B,aAAK,mBAAmB;AACxB,YAAIhpH,IAAQ,KAAK;AACjB,QAAAA,MACGA,EAAM,iBACHA,EAAM,eAAc,IACN,OAAOA,EAAM,eAA3B,cAA2CA,EAAM,cAAc,KAClE,KAAK,qBAAqB4oH;AAAA,MACnC;AAAA,MACI,iBAAiB,WAAY;AAC3B,YAAI5oH,IAAQ,KAAK;AACjB,QAAAA,MACGA,EAAM,kBACHA,EAAM,gBAAe,IACP,OAAOA,EAAM,gBAA3B,cACCA,EAAM,eAAe,KACzB,KAAK,uBAAuB4oH;AAAA,MACrC;AAAA,MACI,SAAS,WAAY;AAAA,MAAA;AAAA,MACrB,cAAcA;AAAA,IAClB,CAAG,GACMI;AAAA,EACT;AACA,MAAII,KAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW,SAAUppH,GAAO;AAC1B,aAAOA,EAAM,aAAa,KAAK,IAAG;AAAA,IACxC;AAAA,IACI,kBAAkB;AAAA,IAClB,WAAW;AAAA,KAEbqpH,KAAiBP,GAAqBM,EAAc,GACpDE,KAAmBrsH,EAAO,CAAA,GAAImsH,IAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,GACpEG,KAAmBT,GAAqBQ,EAAgB,GACxDE,IACAC,IACAC,IACAC,KAAsB1sH,EAAO,CAAA,GAAIqsH,IAAkB;AAAA,IACjD,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,kBAAkBM;AAAA,IAClB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,eAAe,SAAU5pH,GAAO;AAC9B,aAAkBA,EAAM,kBAAjB,SACHA,EAAM,gBAAgBA,EAAM,aAC1BA,EAAM,YACNA,EAAM,cACRA,EAAM;AAAA,IAChB;AAAA,IACI,WAAW,SAAUA,GAAO;AAC1B,aAAI,eAAeA,IAAcA,EAAM,aACvCA,MAAU0pH,OACPA,MAAkC1pH,EAAM,SAAtB,eACbwpH,KAAgBxpH,EAAM,UAAU0pH,GAAe,SAChDD,KAAgBzpH,EAAM,UAAU0pH,GAAe,WAC/CD,KAAgBD,KAAgB,GACpCE,KAAiB1pH,IACbwpH;AAAA,IACb;AAAA,IACI,WAAW,SAAUxpH,GAAO;AAC1B,aAAO,eAAeA,IAAQA,EAAM,YAAYypH;AAAA,IACtD;AAAA,EACA,CAAG,GACDI,KAAsBf,GAAqBa,EAAmB,GAC9DG,KAAqB7sH,EAAO,CAAA,GAAI0sH,IAAqB,EAAE,cAAc,GAAG,GACxEI,KAAqBjB,GAAqBgB,EAAkB,GAC5DE,KAAsB/sH,EAAO,CAAA,GAAIqsH,IAAkB,EAAE,eAAe,GAAG,GACvEW,KAAsBnB,GAAqBkB,EAAmB,GAC9DE,KAA0BjtH,EAAO,CAAA,GAAImsH,IAAgB;AAAA,IACnD,eAAe;AAAA,IACf,aAAa;AAAA,IACb,eAAe;AAAA,EACnB,CAAG,GACDe,KAA0BrB,GAAqBoB,EAAuB,GACtEE,KAA0BntH,EAAO,CAAA,GAAImsH,IAAgB;AAAA,IACnD,eAAe,SAAUppH,GAAO;AAC9B,aAAO,mBAAmBA,IACtBA,EAAM,gBACN,OAAO;AAAA,IACjB;AAAA,EACA,CAAG,GACDqqH,KAA0BvB,GAAqBsB,EAAuB,GACtEE,KAA4BrtH,EAAO,CAAA,GAAImsH,IAAgB,EAAE,MAAM,GAAG,GAClEmB,KAA4BzB,GAAqBwB,EAAyB,GAC1EE,KAAe;AAAA,IACb,KAAK;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,iBAAiB;AAAA,KAEnBC,KAAiB;AAAA,IACf,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,KAEPC,KAAoB;AAAA,IAClB,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA;AAEX,WAASC,GAAoBC,GAAQ;AACnC,QAAI57D,IAAc,KAAK;AACvB,WAAOA,EAAY,mBACfA,EAAY,iBAAiB47D,CAAM,KAClCA,IAASF,GAAkBE,CAAM,KAChC,CAAC,CAAC57D,EAAY47D,CAAM,IACpB;AAAA,EACR;AACA,WAAShB,KAAwB;AAC/B,WAAOe;AAAA,EACT;AACA,MAAIE,KAAyB5tH,EAAO,CAAA,GAAIqsH,IAAkB;AAAA,IACtD,KAAK,SAAUt6D,GAAa;AAC1B,UAAIA,EAAY,KAAK;AACnB,YAAI9hE,IAAMs9H,GAAax7D,EAAY,GAAG,KAAKA,EAAY;AACvD,YAAuB9hE,MAAnB,eAAwB,QAAOA;AAAA,MAC3C;AACM,aAAsB8hE,EAAY,SAA3B,cACDA,IAAc05D,GAAiB15D,CAAW,GACrCA,MAAP,KAAqB,UAAU,OAAO,aAAaA,CAAW,KAChDA,EAAY,SAA1B,aAA8CA,EAAY,SAAxB,UAChCy7D,GAAez7D,EAAY,OAAO,KAAK,iBACvC;AAAA,IACZ;AAAA,IACI,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,kBAAkB46D;AAAA,IAClB,UAAU,SAAU5pH,GAAO;AACzB,aAAsBA,EAAM,SAArB,aAA4B0oH,GAAiB1oH,CAAK,IAAI;AAAA,IACnE;AAAA,IACI,SAAS,SAAUA,GAAO;AACxB,aAAqBA,EAAM,SAApB,aAAwCA,EAAM,SAAlB,UAC/BA,EAAM,UACN;AAAA,IACV;AAAA,IACI,OAAO,SAAUA,GAAO;AACtB,aAAsBA,EAAM,SAArB,aACH0oH,GAAiB1oH,CAAK,IACRA,EAAM,SAApB,aAAwCA,EAAM,SAAlB,UAC1BA,EAAM,UACN;AAAA,IACZ;AAAA,EACA,CAAG,GACD8qH,KAAyBhC,GAAqB+B,EAAsB,GACpEE,KAAwB9tH,EAAO,CAAA,GAAI0sH,IAAqB;AAAA,IACtD,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,oBAAoB;AAAA,IACpB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,EACf,CAAG,GACDqB,KAAwBlC,GAAqBiC,EAAqB,GAClEE,KAAsBhuH,EAAO,CAAA,GAAIqsH,IAAkB;AAAA,IACjD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,kBAAkBM;AAAA,EACtB,CAAG,GACDsB,KAAsBpC,GAAqBmC,EAAmB,GAC9DE,KAA2BluH,EAAO,CAAA,GAAImsH,IAAgB;AAAA,IACpD,cAAc;AAAA,IACd,aAAa;AAAA,IACb,eAAe;AAAA,EACnB,CAAG,GACDgC,KAA2BtC,GAAqBqC,EAAwB,GACxEE,KAAsBpuH,EAAO,CAAA,GAAI0sH,IAAqB;AAAA,IACpD,QAAQ,SAAU3pH,GAAO;AACvB,aAAO,YAAYA,IACfA,EAAM,SACN,iBAAiBA,IACf,CAACA,EAAM,cACP;AAAA,IACZ;AAAA,IACI,QAAQ,SAAUA,GAAO;AACvB,aAAO,YAAYA,IACfA,EAAM,SACN,iBAAiBA,IACf,CAACA,EAAM,cACP,gBAAgBA,IACd,CAACA,EAAM,aACP;AAAA,IACd;AAAA,IACI,QAAQ;AAAA,IACR,WAAW;AAAA,EACf,CAAG,GACDsrH,KAAsBxC,GAAqBuC,EAAmB,GAC9DE,KAAuBtuH,EAAO,CAAA,GAAImsH,IAAgB;AAAA,IAChD,UAAU;AAAA,IACV,UAAU;AAAA,EACd,CAAG,GACDoC,KAAuB1C,GAAqByC,EAAoB,GAChEE,KAAe,CAAC,GAAG,IAAI,IAAI,EAAE,GAC7BC,KAAyB1D,MAAa,sBAAsB,QAC5D2D,KAAe;AACjB,EAAA3D,MACE,kBAAkB,aACjB2D,KAAe,SAAS;AAC3B,MAAIC,KAAuB5D,MAAa,eAAe,UAAU,CAAC2D,IAChEE,KACE7D,OACC,CAAC0D,MACCC,MAAgB,IAAIA,MAAgB,MAAMA,KAC/CG,KAAgB,KAChBC,KAAmB;AACrB,WAASC,GAAyBC,GAAcj9D,GAAa;AAC3D,YAAQi9D,GAAY;AAAA,MAClB,KAAK;AACH,eAAcR,GAAa,QAAQz8D,EAAY,OAAO,MAA/C;AAAA,MACT,KAAK;AACH,eAAeA,EAAY,YAApB;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASk9D,GAAuBl9D,GAAa;AAC3C,WAAAA,IAAcA,EAAY,QACN,OAAOA,KAApB,YAAmC,UAAUA,IAChDA,EAAY,OACZ;AAAA,EACN;AACA,MAAIm9D,KAAc;AAClB,WAASC,GAA0BH,GAAcj9D,GAAa;AAC5D,YAAQi9D,GAAY;AAAA,MAClB,KAAK;AACH,eAAOC,GAAuBl9D,CAAW;AAAA,MAC3C,KAAK;AACH,eAAWA,EAAY,UAAnB,KAAiC,QACrC+8D,KAAmB,IACZD;AAAA,MACT,KAAK;AACH,eACGG,IAAej9D,EAAY,MAC5Bi9D,MAAiBH,MAAiBC,KAAmB,OAAOE;AAAA,MAEhE;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASI,GAA4BJ,GAAcj9D,GAAa;AAC9D,QAAIm9D;AACF,aAA4BF,MAArB,oBACJ,CAACP,MACAM,GAAyBC,GAAcj9D,CAAW,KAChDi9D,IAAe7D,GAAO,GACvBD,KAAeD,KAAYllC,KAAO,MAClCmpC,KAAc,IACfF,KACA;AACN,YAAQA,GAAY;AAAA,MAClB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,YACE,EAAEj9D,EAAY,WAAWA,EAAY,UAAUA,EAAY,YAC1DA,EAAY,WAAWA,EAAY,QACpC;AACA,cAAIA,EAAY,QAAQ,IAAIA,EAAY,KAAK;AAC3C,mBAAOA,EAAY;AACrB,cAAIA,EAAY,MAAO,QAAO,OAAO,aAAaA,EAAY,KAAK;AAAA,QAC3E;AACM,eAAO;AAAA,MACT,KAAK;AACH,eAAO68D,MAAuC78D,EAAY,WAArB,OACjC,OACAA,EAAY;AAAA,MAClB;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,MAAIs9D,KAAsB;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA;AAER,WAASC,GAAmBvH,GAAM;AAChC,QAAIwH,IAAWxH,KAAQA,EAAK,YAAYA,EAAK,SAAS,YAAW;AACjE,WAAmBwH,MAAZ,UACH,CAAC,CAACF,GAAoBtH,EAAK,IAAI,IAChBwH,MAAf;AAAA,EAGN;AACA,WAASC,GACPC,GACAl0D,GACAxJ,GACAj7D,GACA;AACA,IAAAuzH,KACIC,KACEA,GAAa,KAAKxzH,CAAM,IACvBwzH,KAAe,CAACxzH,CAAM,IACxBuzH,KAAgBvzH,GACrBykE,IAAOm0D,GAA4Bn0D,GAAM,UAAU,GACnD,IAAIA,EAAK,WACLxJ,IAAc,IAAIq6D;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACAr6D;AAAA,MACAj7D;AAAA,OAEF24H,EAAc,KAAK,EAAE,OAAO19D,GAAa,WAAWwJ,EAAI,CAAE;AAAA,EAC9D;AACA,MAAIo0D,KAAkB,MACpBC,KAAsB;AACxB,WAASC,GAAgBJ,GAAe;AACtC,IAAAK,GAAqBL,GAAe,CAAC;AAAA,EACvC;AACA,WAASM,GAAsBzJ,GAAY;AACzC,QAAIn2E,IAAas2E,GAAoBH,CAAU;AAC/C,QAAI+B,GAAqBl4E,CAAU,EAAG,QAAOm2E;AAAA,EAC/C;AACA,WAAS0J,GAA4BhB,GAAc1I,GAAY;AAC7D,QAAiB0I,MAAb,SAA2B,QAAO1I;AAAA,EACxC;AACA,MAAI2J,KAAwB;AAC5B,MAAIlF,IAAW;AACb,QAAImF;AACJ,QAAInF,IAAW;AACb,UAAIoF,KAAgC,aAAa;AACjD,UAAI,CAACA,IAA+B;AAClC,YAAIC,KAA4B,SAAS,cAAc,KAAK;AAC5D,QAAAA,GAA0B,aAAa,WAAW,SAAS,GAC3DD,KACiB,OAAOC,GAA0B,WAAhD;AAAA,MACR;AACI,MAAAF,KAAsCC;AAAA,IAC1C,MAAS,CAAAD,KAAsC;AAC7C,IAAAD,KACEC,OACC,CAAC,SAAS,gBAAgB,IAAI,SAAS;AAAA,EAC5C;AACA,WAASG,KAA6B;AACpC,IAAAV,OACGA,GAAgB,YAAY,oBAAoBW,EAAoB,GACpEV,KAAsBD,KAAkB;AAAA,EAC7C;AACA,WAASW,GAAqBv+D,GAAa;AACzC,QACcA,EAAY,iBAAxB,WACAg+D,GAAsBH,EAAmB,GACzC;AACA,UAAIH,IAAgB,CAAA;AACpB,MAAAD;AAAA,QACEC;AAAA,QACAG;AAAA,QACA79D;AAAA,QACAq4D,GAAer4D,CAAW;AAAA,SAE5B44D,GAAiBkF,IAAiBJ,CAAa;AAAA,IACnD;AAAA,EACA;AACA,WAASc,GAAkCvB,GAAcl4H,GAAQwvH,GAAY;AAC3E,IAAc0I,MAAd,aACKqB,GAA0B,GAC1BV,KAAkB74H,GAClB84H,KAAsBtJ,GACvBqJ,GAAgB,YAAY,oBAAoBW,EAAoB,KACrDtB,MAAf,cAA+BqB,GAA0B;AAAA,EAC/D;AACA,WAASG,GAAmCxB,GAAc;AACxD,QACwBA,MAAtB,qBACYA,MAAZ,WACcA,MAAd;AAEA,aAAOe,GAAsBH,EAAmB;AAAA,EACpD;AACA,WAASa,GAA2BzB,GAAc1I,GAAY;AAC5D,QAAgB0I,MAAZ,QAA0B,QAAOe,GAAsBzJ,CAAU;AAAA,EACvE;AACA,WAASoK,GAAmC1B,GAAc1I,GAAY;AACpE,QAAgB0I,MAAZ,WAAyCA,MAAb;AAC9B,aAAOe,GAAsBzJ,CAAU;AAAA,EAC3C;AACA,WAASlgG,GAAG7gB,GAAGgzB,GAAG;AAChB,WAAQhzB,MAAMgzB,MAAYhzB,MAAN,KAAW,IAAIA,MAAM,IAAIgzB,MAAQhzB,MAAMA,KAAKgzB,MAAMA;AAAA,EACxE;AACA,MAAI0iC,KAA0B,OAAO,OAAO,MAA7B,aAAkC,OAAO,KAAK70C;AAC7D,WAASuqG,GAAaC,GAAMC,GAAM;AAChC,QAAI51D,GAAS21D,GAAMC,CAAI,EAAG,QAAO;AACjC,QACe,OAAOD,KAApB,YACSA,MAAT,QACa,OAAOC,KAApB,YACSA,MAAT;AAEA,aAAO;AACT,QAAIC,IAAQ,OAAO,KAAKF,CAAI,GAC1BG,IAAQ,OAAO,KAAKF,CAAI;AAC1B,QAAIC,EAAM,WAAWC,EAAM,OAAQ,QAAO;AAC1C,SAAKA,IAAQ,GAAGA,IAAQD,EAAM,QAAQC,KAAS;AAC7C,UAAIC,IAAaF,EAAMC,CAAK;AAC5B,UACE,CAAClwH,GAAe,KAAKgwH,GAAMG,CAAU,KACrC,CAAC/1D,GAAS21D,EAAKI,CAAU,GAAGH,EAAKG,CAAU,CAAC;AAE5C,eAAO;AAAA,IACb;AACE,WAAO;AAAA,EACT;AACA,WAASC,GAAYntG,GAAM;AACzB,WAAOA,KAAQA,EAAK,aAAc,CAAAA,IAAOA,EAAK;AAC9C,WAAOA;AAAA,EACT;AACA,WAASotG,GAA0BnrC,GAAMj1F,GAAQ;AAC/C,QAAIgzB,IAAOmtG,GAAYlrC,CAAI;AAC3B,IAAAA,IAAO;AACP,aAASorC,GAASrtG,KAAQ;AACxB,UAAUA,EAAK,aAAX,GAAqB;AAEvB,YADAqtG,IAAUprC,IAAOjiE,EAAK,YAAY,QAC9BiiE,KAAQj1F,KAAUqgI,KAAWrgI;AAC/B,iBAAO,EAAE,MAAMgzB,GAAM,QAAQhzB,IAASi1F,EAAI;AAC5C,QAAAA,IAAOorC;AAAA,MACb;AACI,MAAA//H,GAAG;AACD,eAAO0yB,KAAQ;AACb,cAAIA,EAAK,aAAa;AACpB,YAAAA,IAAOA,EAAK;AACZ,kBAAM1yB;AAAA,UAChB;AACQ,UAAA0yB,IAAOA,EAAK;AAAA,QACpB;AACM,QAAAA,IAAO;AAAA,MACb;AACI,MAAAA,IAAOmtG,GAAYntG,CAAI;AAAA,IAC3B;AAAA,EACA;AACA,WAASstG,GAAaC,GAAWC,GAAW;AAC1C,WAAOD,KAAaC,IAChBD,MAAcC,IACZ,KACAD,KAAmBA,EAAU,aAAhB,IACX,KACAC,KAAmBA,EAAU,aAAhB,IACXF,GAAaC,GAAWC,EAAU,UAAU,IAC5C,cAAcD,IACZA,EAAU,SAASC,CAAS,IAC5BD,EAAU,0BACR,CAAC,EAAEA,EAAU,wBAAwBC,CAAS,IAAI,MAClD,KACV;AAAA,EACN;AACA,WAASC,GAAqBvgE,GAAe;AAC3C,IAAAA,IACUA,KAAR,QACQA,EAAc,iBAAtB,QACQA,EAAc,cAAc,eAApC,OACIA,EAAc,cAAc,cAC5B;AACN,aACMtvD,IAAU6mH,GAAiBv3D,EAAc,QAAQ,GACrDtvD,aAAmBsvD,EAAc,qBAEjC;AACA,UAAI;AACF,YAAI4uD,IACW,OAAOl+G,EAAQ,cAAc,SAAS,QAAnD;AAAA,MACR,QAAkB;AACZ,QAAAk+G,IAA2B;AAAA,MACjC;AACI,UAAIA,EAA0B,CAAA5uD,IAAgBtvD,EAAQ;AAAA,UACjD;AACL,MAAAA,IAAU6mH,GAAiBv3D,EAAc,QAAQ;AAAA,IACrD;AACE,WAAOtvD;AAAA,EACT;AACA,WAAS8vH,GAAyBzJ,GAAM;AACtC,QAAIwH,IAAWxH,KAAQA,EAAK,YAAYA,EAAK,SAAS,YAAW;AACjE,WACEwH,MACcA,MAAZ,YACYxH,EAAK,SAAhB,UACcA,EAAK,SAAlB,YACUA,EAAK,SAAf,SACUA,EAAK,SAAf,SACeA,EAAK,SAApB,eACawH,MAAf,cACWxH,EAAK,oBAAhB;AAAA,EAEN;AACA,MAAI0J,KACA1G,MAAa,kBAAkB,YAAY,MAAM,SAAS,cAC5Dv7D,KAAgB,MAChBkiE,KAAoB,MACpBC,KAAgB,MAChBC,KAAY;AACd,WAASC,GAAqBpC,GAAe19D,GAAam6D,GAAmB;AAC3E,QAAIh9E,IACFg9E,EAAkB,WAAWA,IACzBA,EAAkB,WACZA,EAAkB,aAAxB,IACEA,IACAA,EAAkB;AAC1B,IAAA0F,MACUpiE,MAAR,QACAA,OAAkB+4D,GAAiBr5E,CAAG,MACpCA,IAAMsgB,IACR,oBAAoBtgB,KAAOsiF,GAAyBtiF,CAAG,IAClDA,IAAM,EAAE,OAAOA,EAAI,gBAAgB,KAAKA,EAAI,aAAY,KACvDA,KACCA,EAAI,iBAAiBA,EAAI,cAAc,eACxC,QACA,aAAY,GACbA,IAAM;AAAA,MACL,YAAYA,EAAI;AAAA,MAChB,cAAcA,EAAI;AAAA,MAClB,WAAWA,EAAI;AAAA,MACf,aAAaA,EAAI;AAAA,IAC3B,IACKyiF,MAAiBhB,GAAagB,IAAeziF,CAAG,MAC7CyiF,KAAgBziF,GACjBA,IAAMwgF,GAA4BgC,IAAmB,UAAU,GAChE,IAAIxiF,EAAI,WACJ6iB,IAAc,IAAIq6D;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACAr6D;AAAA,MACAm6D;AAAA,OAEFuD,EAAc,KAAK,EAAE,OAAO19D,GAAa,WAAW7iB,GAAK,GACxD6iB,EAAY,SAASvC;AAAA,EAC9B;AACA,WAASsiE,GAAcC,GAAWC,GAAW;AAC3C,QAAIC,IAAW,CAAA;AACf,WAAAA,EAASF,EAAU,YAAW,CAAE,IAAIC,EAAU,YAAW,GACzDC,EAAS,WAAWF,CAAS,IAAI,WAAWC,GAC5CC,EAAS,QAAQF,CAAS,IAAI,QAAQC,GAC/BC;AAAA,EACT;AACA,MAAIC,KAAiB;AAAA,IACjB,cAAcJ,GAAc,aAAa,cAAc;AAAA,IACvD,oBAAoBA,GAAc,aAAa,oBAAoB;AAAA,IACnE,gBAAgBA,GAAc,aAAa,gBAAgB;AAAA,IAC3D,eAAeA,GAAc,cAAc,eAAe;AAAA,IAC1D,iBAAiBA,GAAc,cAAc,iBAAiB;AAAA,IAC9D,kBAAkBA,GAAc,cAAc,kBAAkB;AAAA,IAChE,eAAeA,GAAc,cAAc,eAAe;AAAA,KAE5DK,KAAqB,CAAA,GACrB5gF,KAAQ,CAAA;AACV,EAAAw5E,OACIx5E,KAAQ,SAAS,cAAc,KAAK,EAAE,OACxC,oBAAoB,WACjB,OAAO2gF,GAAe,aAAa,WACpC,OAAOA,GAAe,mBAAmB,WACzC,OAAOA,GAAe,eAAe,YACvC,qBAAqB,UACnB,OAAOA,GAAe,cAAc;AACxC,WAASE,GAA2BJ,GAAW;AAC7C,QAAIG,GAAmBH,CAAS,EAAG,QAAOG,GAAmBH,CAAS;AACtE,QAAI,CAACE,GAAeF,CAAS,EAAG,QAAOA;AACvC,QAAIK,IAAYH,GAAeF,CAAS,GACtCD;AACF,SAAKA,KAAaM;AAChB,UAAIA,EAAU,eAAeN,CAAS,KAAKA,KAAaxgF;AACtD,eAAQ4gF,GAAmBH,CAAS,IAAIK,EAAUN,CAAS;AAC/D,WAAOC;AAAA,EACT;AACA,MAAIM,KAAgBF,GAA2B,cAAc,GAC3DG,KAAsBH,GAA2B,oBAAoB,GACrEI,KAAkBJ,GAA2B,gBAAgB,GAC7DK,KAAiBL,GAA2B,eAAe,GAC3DM,KAAmBN,GAA2B,iBAAiB,GAC/DO,KAAoBP,GAA2B,kBAAkB,GACjEQ,KAAiBR,GAA2B,eAAe,GAC3DS,KAA6B,oBAAI,IAAG,GACpCC,KACE,mnBAAmnB;AAAA,IACjnB;AAAA;AAEN,EAAAA,GAAwB,KAAK,WAAW;AACxC,WAASC,GAAoB/D,GAAchD,GAAW;AACpD,IAAA6G,GAA2B,IAAI7D,GAAchD,CAAS,GACtDjF,GAAsBiF,GAAW,CAACgD,CAAY,CAAC;AAAA,EACjD;AACA,MAAIlsH,KACe,OAAO,eAAtB,aACI,cACA,SAAUvG,GAAO;AACf,QACe,OAAO,UAApB,YACe,OAAO,OAAO,cAA7B,YACA;AACA,UAAIwG,IAAQ,IAAI,OAAO,WAAW,SAAS;AAAA,QACzC,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,SACe,OAAOxG,KAApB,YACSA,MAAT,QACa,OAAOA,EAAM,WAA1B,WACI,OAAOA,EAAM,OAAO,IACpB,OAAOA,CAAK;AAAA,QAClB,OAAOA;AAAA,MACrB,CAAa;AACD,UAAI,CAAC,OAAO,cAAcwG,CAAK,EAAG;AAAA,IAC9C,WACyB,OAAO,WAApB,YACe,OAAO,QAAQ,QAA9B,YACA;AACA,cAAQ,KAAK,qBAAqBxG,CAAK;AACvC;AAAA,IACZ;AACU,YAAQ,MAAMA,CAAK;AAAA,EAC7B,GACEy2H,KAAmB,CAAA,GACnBC,KAAwB,GACxBC,KAA2B;AAC7B,WAASC,KAAkC;AACzC,aACM1tB,IAAWwtB,IACb1hI,IAAK2hI,KAA2BD,KAAwB,GAC1D1hI,IAAIk0G,KAEJ;AACA,UAAIiY,IAAQsV,GAAiBzhI,CAAC;AAC9B,MAAAyhI,GAAiBzhI,GAAG,IAAI;AACxB,UAAI6hI,IAAQJ,GAAiBzhI,CAAC;AAC9B,MAAAyhI,GAAiBzhI,GAAG,IAAI;AACxB,UAAIoW,IAASqrH,GAAiBzhI,CAAC;AAC/B,MAAAyhI,GAAiBzhI,GAAG,IAAI;AACxB,UAAIkyH,IAAOuP,GAAiBzhI,CAAC;AAE7B,UADAyhI,GAAiBzhI,GAAG,IAAI,MACX6hI,MAAT,QAA2BzrH,MAAT,MAAiB;AACrC,YAAIq9B,IAAUouF,EAAM;AACpB,QAASpuF,MAAT,OACKr9B,EAAO,OAAOA,KACbA,EAAO,OAAOq9B,EAAQ,MAAQA,EAAQ,OAAOr9B,IACnDyrH,EAAM,UAAUzrH;AAAA,MACtB;AACI,MAAM87G,MAAN,KAAc4P,GAA8B3V,GAAO/1G,GAAQ87G,CAAI;AAAA,IACnE;AAAA,EACA;AACA,WAAS6P,GAAgB5V,GAAO0V,GAAOzrH,GAAQ87G,GAAM;AACnD,IAAAuP,GAAiBC,IAAuB,IAAIvV,GAC5CsV,GAAiBC,IAAuB,IAAIG,GAC5CJ,GAAiBC,IAAuB,IAAItrH,GAC5CqrH,GAAiBC,IAAuB,IAAIxP,GAC5CyP,MAA4BzP,GAC5B/F,EAAM,SAAS+F,GACf/F,IAAQA,EAAM,WACLA,MAAT,SAAmBA,EAAM,SAAS+F;AAAA,EACpC;AACA,WAAS8P,GAA4B7V,GAAO0V,GAAOzrH,GAAQ87G,GAAM;AAC/D,WAAA6P,GAAgB5V,GAAO0V,GAAOzrH,GAAQ87G,CAAI,GACnC+P,GAAuB9V,CAAK;AAAA,EACrC;AACA,WAAS+V,GAA+B/V,GAAO+F,GAAM;AACnD,WAAA6P,GAAgB5V,GAAO,MAAM,MAAM+F,CAAI,GAChC+P,GAAuB9V,CAAK;AAAA,EACrC;AACA,WAAS2V,GAA8BK,GAAa/rH,GAAQ87G,GAAM;AAChE,IAAAiQ,EAAY,SAASjQ;AACrB,QAAIvF,IAAYwV,EAAY;AAC5B,IAASxV,MAAT,SAAuBA,EAAU,SAASuF;AAC1C,aAASpgD,IAAW,IAAI/uE,IAASo/H,EAAY,QAAiBp/H,MAAT;AACnD,MAACA,EAAO,cAAcmvH,GACnBvF,IAAY5pH,EAAO,WACX4pH,MAAT,SAAuBA,EAAU,cAAcuF,IACxCnvH,EAAO,QAAd,OACIo/H,IAAcp/H,EAAO,WACdo/H,MAAT,QAAwBA,EAAY,cAAc,MAAMrwD,IAAW,MACpEqwD,IAAcp/H,GACdA,IAASA,EAAO;AACrB,WAAao/H,EAAY,QAAlB,KACDp/H,IAASo/H,EAAY,WACvBrwD,KACW17D,MAAT,SACE07D,IAAW,KAAK++C,GAAMqB,CAAI,GAC3BiQ,IAAcp/H,EAAO,eACrB4pH,IAAYwV,EAAYrwD,CAAQ,GACxB66C,MAAT,OACKwV,EAAYrwD,CAAQ,IAAI,CAAC17D,CAAM,IAChCu2G,EAAU,KAAKv2G,CAAM,GACxBA,EAAO,OAAO87G,IAAO,YACxBnvH,KACA;AAAA,EACN;AACA,WAASk/H,GAAuBE,GAAa;AAC3C,QAAI,KAAKC;AACP,YACIA,KAAoB,GACrBC,KAAwB,MACzB,MAAM/iE,EAAuB,GAAG,CAAC;AAErC,aAASv8D,IAASo/H,EAAY,QAAiBp/H,MAAT;AACpC,MAACo/H,IAAcp/H,GAAUA,IAASo/H,EAAY;AAChD,WAAaA,EAAY,QAAlB,IAAwBA,EAAY,YAAY;AAAA,EACzD;AACA,MAAIG,KAAqB,CAAA;AACzB,WAASC,GAAUvzF,GAAKwzF,GAAc9jI,GAAK0lB,GAAM;AAC/C,SAAK,MAAM4qB,GACX,KAAK,MAAMtwC,GACX,KAAK,UACH,KAAK,QACL,KAAK,SACL,KAAK,YACL,KAAK,OACL,KAAK,cACH,MACJ,KAAK,QAAQ,GACb,KAAK,aAAa,KAAK,MAAM,MAC7B,KAAK,eAAe8jI,GACpB,KAAK,eACH,KAAK,gBACL,KAAK,cACL,KAAK,gBACH,MACJ,KAAK,OAAOp+G,GACZ,KAAK,eAAe,KAAK,QAAQ,GACjC,KAAK,YAAY,MACjB,KAAK,aAAa,KAAK,QAAQ,GAC/B,KAAK,YAAY;AAAA,EACnB;AACA,WAASq+G,GAAqBzzF,GAAKwzF,GAAc9jI,GAAK0lB,GAAM;AAC1D,WAAO,IAAIm+G,GAAUvzF,GAAKwzF,GAAc9jI,GAAK0lB,CAAI;AAAA,EACnD;AACA,WAASs+G,GAAgB/zH,GAAW;AAClC,WAAAA,IAAYA,EAAU,WACf,EAAE,CAACA,KAAa,CAACA,EAAU;AAAA,EACpC;AACA,WAASg0H,GAAqBtoH,GAASmoH,GAAc;AACnD,QAAI7S,IAAiBt1G,EAAQ;AAC7B,WAASs1G,MAAT,QACMA,IAAiB8S;AAAA,MACjBpoH,EAAQ;AAAA,MACRmoH;AAAA,MACAnoH,EAAQ;AAAA,MACRA,EAAQ;AAAA,OAETs1G,EAAe,cAAct1G,EAAQ,aACrCs1G,EAAe,OAAOt1G,EAAQ,MAC9Bs1G,EAAe,YAAYt1G,EAAQ,WACnCs1G,EAAe,YAAYt1G,GAC3BA,EAAQ,YAAYs1G,MACnBA,EAAe,eAAe6S,GAC/B7S,EAAe,OAAOt1G,EAAQ,MAC9Bs1G,EAAe,QAAQ,GACvBA,EAAe,eAAe,GAC9BA,EAAe,YAAY,OAChCA,EAAe,QAAQt1G,EAAQ,QAAQ,UACvCs1G,EAAe,aAAat1G,EAAQ,YACpCs1G,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,gBAAgBt1G,EAAQ,eACvCs1G,EAAe,gBAAgBt1G,EAAQ,eACvCs1G,EAAe,cAAct1G,EAAQ,aACrCmoH,IAAenoH,EAAQ,cACvBs1G,EAAe,eACJ6S,MAAT,OACI,OACA,EAAE,OAAOA,EAAa,OAAO,cAAcA,EAAa,aAAY,GAC1E7S,EAAe,UAAUt1G,EAAQ,SACjCs1G,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,MAAMt1G,EAAQ,KAC7Bs1G,EAAe,aAAat1G,EAAQ,YAC7Bs1G;AAAA,EACT;AACA,WAASiT,GAAoBjT,GAAgBqC,GAAa;AACxD,IAAArC,EAAe,SAAS;AACxB,QAAIt1G,IAAUs1G,EAAe;AAC7B,WAASt1G,MAAT,QACMs1G,EAAe,aAAa,GAC7BA,EAAe,QAAQqC,GACvBrC,EAAe,QAAQ,MACvBA,EAAe,eAAe,GAC9BA,EAAe,gBAAgB,MAC/BA,EAAe,gBAAgB,MAC/BA,EAAe,cAAc,MAC7BA,EAAe,eAAe,MAC9BA,EAAe,YAAY,SAC1BA,EAAe,aAAat1G,EAAQ,YACrCs1G,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,eAAe,GAC9BA,EAAe,YAAY,MAC3BA,EAAe,gBAAgBt1G,EAAQ,eACvCs1G,EAAe,gBAAgBt1G,EAAQ,eACvCs1G,EAAe,cAAct1G,EAAQ,aACrCs1G,EAAe,OAAOt1G,EAAQ,MAC9B23G,IAAc33G,EAAQ,cACtBs1G,EAAe,eACLqC,MAAT,OACI,OACA;AAAA,MACE,OAAOA,EAAY;AAAA,MACnB,cAAcA,EAAY;AAAA,IACxC,IACSrC;AAAA,EACT;AACA,WAASkT,GACPtkI,GACAG,GACA8jI,GACAt8F,GACA9hB,GACAitG,GACA;AACA,QAAIyR,IAAW;AAEf,QADA58F,IAAQ3nC,GACW,OAAOA,KAAtB,WAA4B,CAAAmkI,GAAgBnkI,CAAI,MAAMukI,IAAW;AAAA,aAC/C,OAAOvkI,KAApB;AACP,MAAAukI,IAAWC;AAAA,QACTxkI;AAAA,QACAikI;AAAA,QACA7U,EAAmB;AAAA,MACzB,IACQ,KACWpvH,MAAX,UAA8BA,MAAX,UAA8BA,MAAX,SACpC,KACA;AAAA;AAEN,MAAAsB,EAAG,SAAQtB,GAAI;AAAA,QACb,KAAK6P;AACH,iBACG7P,IAAOkkI,GAAqB,IAAID,GAAc9jI,GAAK0lB,CAAI,GACvD7lB,EAAK,cAAc6P,GACnB7P,EAAK,QAAQ8yH,GACd9yH;AAAA,QAEJ,KAAKF;AACH,iBAAO2kI,GAAwBR,EAAa,UAAUp+G,GAAMitG,GAAO3yH,CAAG;AAAA,QACxE,KAAKkP;AACH,UAAAk1H,IAAW,GACX1+G,KAAQ;AACR;AAAA,QACF,KAAKvW;AACH,iBACGtP,IAAOkkI,GAAqB,IAAID,GAAc9jI,GAAK0lB,IAAO,CAAC,GAC3D7lB,EAAK,cAAcsP,GACnBtP,EAAK,QAAQ8yH,GACd9yH;AAAA,QAEJ,KAAK0P;AACH,iBACG1P,IAAOkkI,GAAqB,IAAID,GAAc9jI,GAAK0lB,CAAI,GACvD7lB,EAAK,cAAc0P,GACnB1P,EAAK,QAAQ8yH,GACd9yH;AAAA,QAEJ,KAAK2uH;AACH,iBACG3uH,IAAOkkI,GAAqB,IAAID,GAAc9jI,GAAK0lB,CAAI,GACvD7lB,EAAK,cAAc2uH,GACnB3uH,EAAK,QAAQ8yH,GACd9yH;AAAA,QAEJ;AACE,cAAiB,OAAOA,KAApB,YAAqCA,MAAT;AAC9B,oBAAQA,EAAK,UAAQ;AAAA,cACnB,KAAKwP;AACH,gBAAA+0H,IAAW;AACX,sBAAMjjI;AAAA,cACR,KAAKiO;AACH,gBAAAg1H,IAAW;AACX,sBAAMjjI;AAAA,cACR,KAAKmO;AACH,gBAAA80H,IAAW;AACX,sBAAMjjI;AAAA,cACR,KAAKqO;AACH,gBAAA40H,IAAW;AACX,sBAAMjjI;AAAA,cACR,KAAKsO;AACH,gBAAA20H,IAAW,IACX58F,IAAQ;AACR,sBAAMrmC;AAAA,YACpB;AACQ,UAAAijI,IAAW,IACXN,IAAe;AAAA,YACbljE,EAAuB,KAAc/gE,MAAT,OAAgB,SAAS,OAAOA,GAAM,EAAE;AAAA,aAEtE2nC,IAAQ;AAAA,MAChB;AACE,WAAAxnC,IAAM+jI,GAAqBK,GAAUN,GAAc9jI,GAAK0lB,CAAI,GAC5D1lB,EAAI,cAAcH,GAClBG,EAAI,OAAOwnC,GACXxnC,EAAI,QAAQ2yH,GACL3yH;AAAA,EACT;AACA,WAASskI,GAAwBtzD,GAAUtrD,GAAMitG,GAAO3yH,GAAK;AAC3D,WAAAgxE,IAAW+yD,GAAqB,GAAG/yD,GAAUhxE,GAAK0lB,CAAI,GACtDsrD,EAAS,QAAQ2hD,GACV3hD;AAAA,EACT;AACA,WAASuzD,GAAoBnxF,GAAS1tB,GAAMitG,GAAO;AACjD,WAAAv/E,IAAU2wF,GAAqB,GAAG3wF,GAAS,MAAM1tB,CAAI,GACrD0tB,EAAQ,QAAQu/E,GACTv/E;AAAA,EACT;AACA,WAASoxF,GAAkCC,GAAgB;AACzD,QAAIhX,IAAQsW,GAAqB,IAAI,MAAM,MAAM,CAAC;AAClD,WAAAtW,EAAM,YAAYgX,GACXhX;AAAA,EACT;AACA,WAASiX,GAAsBC,GAAQj/G,GAAMitG,GAAO;AAClD,WAAAjtG,IAAOq+G;AAAA,MACL;AAAA,MACSY,EAAO,aAAhB,OAA2BA,EAAO,WAAW,CAAA;AAAA,MAC7CA,EAAO;AAAA,MACPj/G;AAAA,OAEFA,EAAK,QAAQitG,GACbjtG,EAAK,YAAY;AAAA,MACf,eAAei/G,EAAO;AAAA,MACtB,iBAAiB;AAAA,MACjB,gBAAgBA,EAAO;AAAA,OAElBj/G;AAAA,EACT;AACA,MAAIk/G,KAAiB,oBAAI,QAAO;AAChC,WAASC,GAA2Bh9H,GAAO0iB,GAAQ;AACjD,QAAiB,OAAO1iB,KAApB,YAAsCA,MAAT,MAAgB;AAC/C,UAAI6T,IAAWkpH,GAAe,IAAI/8H,CAAK;AACvC,aAAe6T,MAAX,SAA4BA,KAChC6O,IAAS;AAAA,QACP,OAAO1iB;AAAA,QACP,QAAQ0iB;AAAA,QACR,OAAOymG,GAA4BzmG,CAAM;AAAA,SAE3Cq6G,GAAe,IAAI/8H,GAAO0iB,CAAM,GACzBA;AAAA,IACX;AACE,WAAO;AAAA,MACL,OAAO1iB;AAAA,MACP,QAAQ0iB;AAAA,MACR,OAAOymG,GAA4BzmG,CAAM;AAAA;EAE7C;AACA,MAAIu6G,KAAY,CAAA,GACdC,KAAiB,GACjBC,KAAmB,MACnBC,KAAgB,GAChBC,KAAU,CAAA,GACVC,KAAe,GACfC,KAAsB,MACtBC,KAAgB,GAChBC,KAAsB;AACxB,WAASC,GAAatU,GAAgBuU,GAAe;AACnD,IAAAV,GAAUC,IAAgB,IAAIE,IAC9BH,GAAUC,IAAgB,IAAIC,IAC9BA,KAAmB/T,GACnBgU,KAAgBO;AAAA,EAClB;AACA,WAASC,GAAWxU,GAAgBuU,GAAexkI,GAAO;AACxD,IAAAkkI,GAAQC,IAAc,IAAIE,IAC1BH,GAAQC,IAAc,IAAIG,IAC1BJ,GAAQC,IAAc,IAAIC,IAC1BA,KAAsBnU;AACtB,QAAIyU,IAAuBL;AAC3B,IAAApU,IAAiBqU;AACjB,QAAIK,IAAa,KAAKxT,GAAMuT,CAAoB,IAAI;AACpD,IAAAA,KAAwB,EAAE,KAAKC,IAC/B3kI,KAAS;AACT,QAAIiY,IAAS,KAAKk5G,GAAMqT,CAAa,IAAIG;AACzC,QAAI,KAAK1sH,GAAQ;AACf,UAAI2sH,IAAuBD,IAAcA,IAAa;AACtD,MAAA1sH,KACEysH,KACE,KAAKE,KAAwB,GAC/B,SAAS,EAAE,GACbF,MAAyBE,GACzBD,KAAcC,GACdP,KACG,KAAM,KAAKlT,GAAMqT,CAAa,IAAIG,IAClC3kI,KAAS2kI,IACVD,GACFJ,KAAsBrsH,IAASg4G;AAAA,IACnC;AACI,MAACoU,KACE,KAAKpsH,IAAWjY,KAAS2kI,IAAcD,GACvCJ,KAAsBrU;AAAA,EAC7B;AACA,WAAS4U,GAAuB5U,GAAgB;AAC9C,IAASA,EAAe,WAAxB,SACGsU,GAAatU,GAAgB,CAAC,GAAGwU,GAAWxU,GAAgB,GAAG,CAAC;AAAA,EACrE;AACA,WAAS6U,GAAe7U,GAAgB;AACtC,WAAOA,MAAmB+T;AACxB,MAACA,KAAmBF,GAAU,EAAEC,EAAc,GAC3CD,GAAUC,EAAc,IAAI,MAC5BE,KAAgBH,GAAU,EAAEC,EAAc,GAC1CD,GAAUC,EAAc,IAAI;AACjC,WAAO9T,MAAmBmU;AACxB,MAACA,KAAsBF,GAAQ,EAAEC,EAAY,GAC1CD,GAAQC,EAAY,IAAI,MACxBG,KAAsBJ,GAAQ,EAAEC,EAAY,GAC5CD,GAAQC,EAAY,IAAI,MACxBE,KAAgBH,GAAQ,EAAEC,EAAY,GACtCD,GAAQC,EAAY,IAAI;AAAA,EAC/B;AACA,WAASY,GAA4B9U,GAAgB+U,GAAkB;AACrE,IAAAd,GAAQC,IAAc,IAAIE,IAC1BH,GAAQC,IAAc,IAAIG,IAC1BJ,GAAQC,IAAc,IAAIC,IAC1BC,KAAgBW,EAAiB,IACjCV,KAAsBU,EAAiB,UACvCZ,KAAsBnU;AAAA,EACxB;AACA,MAAIgV,KAAuB,MACzBC,KAAyB,MACzBpN,KAAc,IACdqN,KAAkB,MAClBC,KAAyB,IACzBC,KAA6B,MAAMzlE,EAAuB,GAAG,CAAC;AAChE,WAAS0lE,GAAyB7Y,GAAO;AACvC,QAAInhH,IAAQ;AAAA,MACVs0D;AAAA,QACE;AAAA,QACA,IAAI,UAAU,UAAqB,UAAU,CAAC,MAAtB,UAA2B,UAAU,CAAC,IAC1D,SACA;AAAA,QACJ;AAAA,MACN;AAAA;AAEE,UAAA2lE,GAAoB1B,GAA2Bv4H,GAAOmhH,CAAK,CAAC,GACtD4Y;AAAA,EACR;AACA,WAASG,GAA6B/Y,GAAO;AAC3C,QAAItsE,IAAWssE,EAAM,WACnB5tH,IAAO4tH,EAAM,MACbv9G,IAAQu9G,EAAM;AAGhB,YAFAtsE,EAASw0E,EAAmB,IAAIlI,GAChCtsE,EAASy0E,EAAgB,IAAI1lH,GACrBrQ,GAAI;AAAA,MACV,KAAK;AACH,QAAA4mI,GAA0B,UAAUtlF,CAAQ,GAC5CslF,GAA0B,SAAStlF,CAAQ;AAC3C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAslF,GAA0B,QAAQtlF,CAAQ;AAC1C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,aAAKthD,IAAO,GAAGA,IAAO6mI,GAAgB,QAAQ7mI;AAC5C,UAAA4mI,GAA0BC,GAAgB7mI,CAAI,GAAGshD,CAAQ;AAC3D;AAAA,MACF,KAAK;AACH,QAAAslF,GAA0B,SAAStlF,CAAQ;AAC3C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAslF,GAA0B,SAAStlF,CAAQ,GAC3CslF,GAA0B,QAAQtlF,CAAQ;AAC1C;AAAA,MACF,KAAK;AACH,QAAAslF,GAA0B,UAAUtlF,CAAQ;AAC5C;AAAA,MACF,KAAK;AACH,QAAAslF,GAA0B,WAAWtlF,CAAQ,GAC7C03E;AAAA,UACE13E;AAAA,UACAjxC,EAAM;AAAA,UACNA,EAAM;AAAA,UACNA,EAAM;AAAA,UACNA,EAAM;AAAA,UACNA,EAAM;AAAA,UACNA,EAAM;AAAA,UACN;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAu2H,GAA0B,WAAWtlF,CAAQ;AAC7C;AAAA,MACF,KAAK;AACH,QAAAslF,GAA0B,WAAWtlF,CAAQ,GAC3Cg4E,GAAah4E,GAAUjxC,EAAM,OAAOA,EAAM,cAAcA,EAAM,QAAQ;AAAA,IAC9E;AACE,IAAArQ,IAAOqQ,EAAM,UACC,OAAOrQ,KAApB,YACc,OAAOA,KAApB,YACa,OAAOA,KAApB,YACFshD,EAAS,gBAAgB,KAAKthD,KACvBqQ,EAAM,6BAAb,MACAy2H,GAAsBxlF,EAAS,aAAathD,CAAI,KACnCqQ,EAAM,WAAd,SACEu2H,GAA0B,gBAAgBtlF,CAAQ,GACnDslF,GAA0B,UAAUtlF,CAAQ,IACtCjxC,EAAM,YAAd,QAA0Bu2H,GAA0B,UAAUtlF,CAAQ,GAC9DjxC,EAAM,eAAd,QACEu2H,GAA0B,aAAatlF,CAAQ,GACzCjxC,EAAM,WAAd,SAA0BixC,EAAS,UAAU84E,KAC5C94E,IAAW,MACXA,IAAW,IAChBA,KAAYmlF,GAAyB7Y,GAAO,EAAE;AAAA,EAChD;AACA,WAASmZ,GAAoBnZ,GAAO;AAClC,SAAKwY,KAAuBxY,EAAM,QAAQwY;AACxC,cAAQA,GAAqB,KAAG;AAAA,QAC9B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAG,KAAyB;AACzB;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,UAAAA,KAAyB;AACzB;AAAA,QACF;AACE,UAAAH,KAAuBA,GAAqB;AAAA,MACpD;AAAA,EACA;AACA,WAASY,GAAkBpZ,GAAO;AAChC,QAAIA,MAAUwY,GAAsB,QAAO;AAC3C,QAAI,CAACnN,GAAa,QAAO8N,GAAoBnZ,CAAK,GAAIqL,KAAc,IAAK;AACzE,QAAIxoF,IAAMm9E,EAAM,KACdqZ;AAWF,SAVKA,IAAwBx2F,MAAN,KAAoBA,MAAP,SAC7Bw2F,IAAwBx2F,MAAN,OACpBw2F,IAAkBrZ,EAAM,MACtBqZ,IACC,EAAaA,MAAX,UAA2CA,MAAb,aAChCC,GAAqBtZ,EAAM,MAAMA,EAAM,aAAa,IAC1DqZ,IAAkB,CAACA,IAErBA,KAAmBZ,MAA0BI,GAAyB7Y,CAAK,GAC3EmZ,GAAoBnZ,CAAK,GACdn9E,MAAP,IAAY;AAGd,UAFAm9E,IAAQA,EAAM,eACdA,IAAiBA,MAAT,OAAiBA,EAAM,aAAa,MACxC,CAACA,EAAO,OAAM,MAAM7sD,EAAuB,GAAG,CAAC;AACnD,MAAAslE,KACEc,GAAgDvZ,CAAK;AAAA,IAC3D,WAAoBn9E,MAAP,IAAY;AAGrB,UAFAm9E,IAAQA,EAAM,eACdA,IAAiBA,MAAT,OAAiBA,EAAM,aAAa,MACxC,CAACA,EAAO,OAAM,MAAM7sD,EAAuB,GAAG,CAAC;AACnD,MAAAslE,KACEc,GAAgDvZ,CAAK;AAAA,IAC3D;AACI,MAAOn9E,MAAP,MACMA,IAAM41F,IACRe,GAAiBxZ,EAAM,IAAI,KACrBA,IAAQyZ,IACTA,KAA8C,MAC9ChB,KAAyBzY,KACzByY,KAAyB51F,KAC7B41F,KAAyBD,KACtBkB,GAAkB1Z,EAAM,UAAU,WAAW,IAC7C;AACV,WAAO;AAAA,EACT;AACA,WAAS2Z,KAAsB;AAC7B,IAAAlB,KAAyBD,KAAuB,MAChDnN,KAAc;AAAA,EAChB;AACA,WAASuO,KAAsC;AAC7C,QAAIC,IAAenB;AACnB,WAASmB,MAAT,SACYC,OAAT,OACIA,KAAsCD,IACvCC,GAAoC,KAAK;AAAA,MACvCA;AAAA,MACAD;AAAA,OAELnB,KAAkB,OACdmB;AAAA,EACT;AACA,WAASf,GAAoBj6H,GAAO;AAClC,IAAS65H,OAAT,OACKA,KAAkB,CAAC75H,CAAK,IACzB65H,GAAgB,KAAK75H,CAAK;AAAA,EAChC;AACA,MAAIk7H,KAAcxY,EAAa,IAAI,GACjCyY,KAA4B,MAC5BC,KAAwB;AAC1B,WAASC,GAAaC,GAAez3H,GAASkG,GAAW;AACvD,IAAAg0G,EAAKmd,IAAar3H,EAAQ,aAAa,GACvCA,EAAQ,gBAAgBkG;AAAA,EAC1B;AACA,WAASwxH,GAAY13H,GAAS;AAC5B,IAAAA,EAAQ,gBAAgBq3H,GAAY,SACpC/c,EAAI+c,EAAW;AAAA,EACjB;AACA,WAASM,GAAgCzjI,GAAQivH,GAAayU,GAAiB;AAC7E,WAAgB1jI,MAAT,QAAmB;AACxB,UAAI4pH,IAAY5pH,EAAO;AAOvB,WANCA,EAAO,aAAaivH,OAAiBA,KAChCjvH,EAAO,cAAcivH,GACdrF,MAAT,SAAuBA,EAAU,cAAcqF,MACtCrF,MAAT,SACCA,EAAU,aAAaqF,OAAiBA,MACxCrF,EAAU,cAAcqF,IACzBjvH,MAAW0jI,EAAiB;AAChC,MAAA1jI,IAASA,EAAO;AAAA,IACpB;AAAA,EACA;AACA,WAAS2jI,GACP/W,GACA14F,GACA+6F,GACA2U,GACA;AACA,QAAIxa,IAAQwD,EAAe;AAE3B,SADSxD,MAAT,SAAmBA,EAAM,SAASwD,IAClBxD,MAAT,QAAkB;AACvB,UAAInvG,IAAOmvG,EAAM;AACjB,UAAanvG,MAAT,MAAe;AACjB,YAAI4pH,IAAYza,EAAM;AACtB,QAAAnvG,IAAOA,EAAK;AACZ,QAAAnd,EAAG,QAAgBmd,MAAT,QAAiB;AACzB,cAAI6pH,IAAa7pH;AACjB,UAAAA,IAAOmvG;AACP,mBAASnsH,IAAI,GAAGA,IAAIi3B,EAAS,QAAQj3B;AACnC,gBAAI6mI,EAAW,YAAY5vG,EAASj3B,CAAC,GAAG;AACtC,cAAAgd,EAAK,SAASg1G,GACd6U,IAAa7pH,EAAK,WACT6pH,MAAT,SAAwBA,EAAW,SAAS7U,IAC5CwU;AAAA,gBACExpH,EAAK;AAAA,gBACLg1G;AAAA,gBACArC;AAAA,iBAEFgX,MAA6BC,IAAY;AACzC,oBAAM/mI;AAAA,YAClB;AACQ,UAAAmd,IAAO6pH,EAAW;AAAA,QAC1B;AAAA,MACA,WAAsB1a,EAAM,QAAb,IAAkB;AAE3B,YADAya,IAAYza,EAAM,QACLya,MAAT,KAAoB,OAAM,MAAMtnE,EAAuB,GAAG,CAAC;AAC/D,QAAAsnE,EAAU,SAAS5U,GACnBh1G,IAAO4pH,EAAU,WACR5pH,MAAT,SAAkBA,EAAK,SAASg1G,IAChCwU,GAAgCI,GAAW5U,GAAarC,CAAc,GACtEiX,IAAY;AAAA,MAClB,MAAW,CAAAA,IAAYza,EAAM;AACzB,UAAaya,MAAT,KAAoB,CAAAA,EAAU,SAASza;AAAA;AAEzC,aAAKya,IAAYza,GAAgBya,MAAT,QAAsB;AAC5C,cAAIA,MAAcjX,GAAgB;AAChC,YAAAiX,IAAY;AACZ;AAAA,UACV;AAEQ,cADAza,IAAQya,EAAU,SACLza,MAAT,MAAgB;AAClB,YAAAA,EAAM,SAASya,EAAU,QACzBA,IAAYza;AACZ;AAAA,UACV;AACQ,UAAAya,IAAYA,EAAU;AAAA,QAC9B;AACI,MAAAza,IAAQya;AAAA,IACZ;AAAA,EACA;AACA,WAASE,GACPzsH,GACAs1G,GACAqC,GACA2U,GACA;AACA,IAAAtsH,IAAU;AACV,aACMtX,IAAS4sH,GAAgBoX,IAA6B,IACjDhkI,MAAT,QAEA;AACA,UAAI,CAACgkI;AACH,aAAWhkI,EAAO,QAAQ,YAAtB,EAA+B,CAAAgkI,IAA6B;AAAA,kBAChDhkI,EAAO,QAAQ,YAAtB,EAA+B;AAAA;AAC1C,UAAWA,EAAO,QAAd,IAAmB;AACrB,YAAIikI,IAAgBjkI,EAAO;AAC3B,YAAaikI,MAAT,KAAwB,OAAM,MAAM1nE,EAAuB,GAAG,CAAC;AAEnE,YADA0nE,IAAgBA,EAAc,eACjBA,MAAT,MAAwB;AAC1B,cAAIn4H,IAAU9L,EAAO;AACrB,UAAA2mE,GAAS3mE,EAAO,aAAa,OAAOikI,EAAc,KAAK,MAC3C3sH,MAAT,OAAmBA,EAAQ,KAAKxL,CAAO,IAAKwL,IAAU,CAACxL,CAAO;AAAA,QACzE;AAAA,MACA,WAAe9L,MAAW+qH,GAA6B,SAAS;AAE1D,YADAkZ,IAAgBjkI,EAAO,WACVikI,MAAT,KAAwB,OAAM,MAAM1nE,EAAuB,GAAG,CAAC;AACnE,QAAA0nE,EAAc,cAAc,kBAC1BjkI,EAAO,cAAc,kBACXsX,MAAT,OACGA,EAAQ,KAAKk0G,EAAqB,IACjCl0G,IAAU,CAACk0G,EAAqB;AAAA,MAC7C;AACI,MAAAxrH,IAASA,EAAO;AAAA,IACpB;AACE,IAASsX,MAAT,QACEqsH;AAAA,MACE/W;AAAA,MACAt1G;AAAA,MACA23G;AAAA,MACA2U;AAAA,OAEJhX,EAAe,SAAS;AAAA,EAC1B;AACA,WAASsX,GAAsBC,GAAqB;AAClD,SACEA,IAAsBA,EAAoB,cACjCA,MAAT,QAEA;AACA,UACE,CAACx9D;AAAA,QACCw9D,EAAoB,QAAQ;AAAA,QAC5BA,EAAoB;AAAA,MAC5B;AAEM,eAAO;AACT,MAAAA,IAAsBA,EAAoB;AAAA,IAC9C;AACE,WAAO;AAAA,EACT;AACA,WAASC,GAAqBxX,GAAgB;AAC5C,IAAAwW,KAA4BxW,GAC5ByW,KAAwB,MACxBzW,IAAiBA,EAAe,cACvBA,MAAT,SAA4BA,EAAe,eAAe;AAAA,EAC5D;AACA,WAASyX,GAAYv4H,GAAS;AAC5B,WAAOw4H,GAAuBlB,IAA2Bt3H,CAAO;AAAA,EAClE;AACA,WAASy4H,GAAgCC,GAAU14H,GAAS;AAC1D,WAASs3H,OAAT,QAAsCgB,GAAqBI,CAAQ,GAC5DF,GAAuBE,GAAU14H,CAAO;AAAA,EACjD;AACA,WAASw4H,GAAuBE,GAAU14H,GAAS;AACjD,QAAItI,IAAQsI,EAAQ;AAEpB,QADAA,IAAU,EAAE,SAASA,GAAS,eAAetI,GAAO,MAAM,KAAI,GACjD6/H,OAAT,MAAgC;AAClC,UAAamB,MAAT,KAAmB,OAAM,MAAMjoE,EAAuB,GAAG,CAAC;AAC9D,MAAA8mE,KAAwBv3H,GACxB04H,EAAS,eAAe,EAAE,OAAO,GAAG,cAAc14H,EAAO,GACzD04H,EAAS,SAAS;AAAA,IACtB,MAAS,CAAAnB,KAAwBA,GAAsB,OAAOv3H;AAC5D,WAAOtI;AAAA,EACT;AACA,MAAIihI,KACgB,OAAO,kBAAvB,MACI,kBACA,WAAY;AACV,QAAI76H,IAAY,CAAA,GACd86H,IAAU,KAAK,SAAS;AAAA,MACtB,SAAS;AAAA,MACT,kBAAkB,SAAUlpI,GAAMmO,GAAU;AAC1C,QAAAC,EAAU,KAAKD,CAAQ;AAAA,MACvC;AAAA,IACA;AACU,SAAK,QAAQ,WAAY;AACvB,MAAA+6H,EAAO,UAAU,IACjB96H,EAAU,QAAQ,SAAUD,GAAU;AACpC,eAAOA,EAAQ;AAAA,MAC7B,CAAa;AAAA,IACb;AAAA,EACA,GACEg7H,KAAqB7b,EAAU,2BAC/B8b,KAAiB9b,EAAU,yBAC3B+b,KAAe;AAAA,IACb,UAAU75H;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,cAAc;AAAA;AAElB,WAAS85H,KAAc;AACrB,WAAO;AAAA,MACL,YAAY,IAAIL,GAAoB;AAAA,MACpC,MAAM,oBAAI,IAAG;AAAA,MACb,UAAU;AAAA;EAEd;AACA,WAASM,GAAaxyF,GAAO;AAC3B,IAAAA,EAAM,YACAA,EAAM,aAAZ,KACEoyF,GAAmBC,IAAgB,WAAY;AAC7C,MAAAryF,EAAM,WAAW,MAAK;AAAA,IAC5B,CAAK;AAAA,EACL;AACA,MAAIyyF,KAA4B,MAC9BC,KAA+B,GAC/BC,KAAuB,GACvBC,KAAiC;AACnC,WAASC,GAAoBxpH,GAAYtO,GAAU;AACjD,QAAa03H,OAAT,MAAoC;AACtC,UAAIK,IAAsBL,KAA4B;AACtD,MAAAC,KAA+B,GAC/BC,KAAuBI,GAAqB,GAC5CH,KAAiC;AAAA,QAC/B,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM,SAAU1zH,GAAS;AACvB,UAAA4zH,EAAmB,KAAK5zH,CAAO;AAAA,QACvC;AAAA;IAEA;AACE,WAAAwzH,MACA33H,EAAS,KAAKi4H,IAA2BA,EAAyB,GAC3Dj4H;AAAA,EACT;AACA,WAASi4H,KAA4B;AACnC,QACQ,EAAEN,OAAR,KACSD,OAAT,MACA;AACA,MAASG,OAAT,SACGA,GAA+B,SAAS;AAC3C,UAAIv7H,IAAYo7H;AAChB,MAAAA,KAA4B,MAC5BE,KAAuB,GACvBC,KAAiC;AACjC,eAASloI,IAAI,GAAGA,IAAI2M,EAAU,QAAQ3M,IAAK,KAAI2M,EAAU3M,CAAC,GAAC;AAAA,IAC/D;AAAA,EACA;AACA,WAASuoI,GAAmBl4H,GAAUY,GAAQ;AAC5C,QAAItE,IAAY,CAAA,GACd67H,IAAuB;AAAA,MACrB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM,SAAUh0H,GAAS;AACvB,QAAA7H,EAAU,KAAK6H,CAAO;AAAA,MAC9B;AAAA;AAEE,WAAAnE,EAAS;AAAA,MACP,WAAY;AACV,QAAAm4H,EAAqB,SAAS,aAC9BA,EAAqB,QAAQv3H;AAC7B,iBAASjR,IAAI,GAAGA,IAAI2M,EAAU,QAAQ3M,IAAK,KAAI2M,EAAU3M,CAAC,GAAGiR,CAAM;AAAA,MACzE;AAAA,MACI,SAAUjG,GAAO;AAGf,aAFAw9H,EAAqB,SAAS,YAC9BA,EAAqB,SAASx9H,GACzBA,IAAQ,GAAGA,IAAQ2B,EAAU,QAAQ3B;AACxC,cAAI2B,EAAU3B,CAAK,GAAG,MAAM;AAAA,MACpC;AAAA,OAESw9H;AAAA,EACT;AACA,MAAIC,KAA8Bp5H,EAAqB;AACvD,EAAAA,EAAqB,IAAI,SAAUsP,GAAYrM,GAAa;AAC1D,IAAAo2H,KAAiC1Y,GAAG,GACvB,OAAO19G,KAApB,YACWA,MAAT,QACe,OAAOA,EAAY,QAAlC,cACA61H,GAAoBxpH,GAAYrM,CAAW,GACpCm2H,OAAT,QACEA,GAA4B9pH,GAAYrM,CAAW;AAAA,EACvD;AACA,MAAIq2H,KAAejb,EAAa,IAAI;AACpC,WAASkb,KAAoB;AAC3B,QAAIC,IAAiCF,GAAa;AAClD,WAAgBE,MAAT,OACHA,IACAC,GAAmB;AAAA,EACzB;AACA,WAASC,GAAeC,GAAyBC,GAAe;AAC9D,IAASA,MAAT,OACIlgB,EAAK4f,IAAcA,GAAa,OAAO,IACvC5f,EAAK4f,IAAcM,EAAc,IAAI;AAAA,EAC3C;AACA,WAASC,KAAoB;AAC3B,QAAIC,IAAgBP,GAAiB;AACrC,WAAgBO,MAAT,OACH,OACA,EAAE,QAAQvB,GAAa,eAAe,MAAMuB,EAAa;AAAA,EAC/D;AACA,MAAIC,KAAoB,MAAM9pE,EAAuB,GAAG,CAAC,GACvD+pE,KAA2B,MAAM/pE,EAAuB,GAAG,CAAC,GAC5DgqE,KAA0B,MAAMhqE,EAAuB,GAAG,CAAC,GAC3DiqE,KAA8B,EAAE,MAAM,WAAY;AAAA,IAAE;AACtD,WAASC,GAAmBn5H,GAAU;AACpC,WAAAA,IAAWA,EAAS,QACGA,MAAhB,eAA2CA,MAAf;AAAA,EACrC;AACA,WAASo5H,GAAkBC,GAAer5H,GAAU3Q,GAAO;AAKzD,YAJAA,IAAQgqI,EAAchqI,CAAK,GAChBA,MAAX,SACIgqI,EAAc,KAAKr5H,CAAQ,IAC3B3Q,MAAU2Q,MAAaA,EAAS,KAAKsoH,IAAQA,EAAM,GAAItoH,IAAW3Q,IAC9D2Q,EAAS,QAAM;AAAA,MACrB,KAAK;AACH,eAAOA,EAAS;AAAA,MAClB,KAAK;AACH,cACIq5H,IAAgBr5H,EAAS,QAC3Bs5H,GAA8BD,CAAa,GAC3CA;AAAA,MAEJ;AACE,YAAiB,OAAOr5H,EAAS,UAA7B,SAAqC,CAAAA,EAAS,KAAKsoH,IAAQA,EAAM;AAAA,aAChE;AAEH,cADA+Q,IAAgBZ,IACHY,MAAT,QAA0B,MAAMA,EAAc;AAChD,kBAAM,MAAMpqE,EAAuB,GAAG,CAAC;AACzC,UAAAoqE,IAAgBr5H,GAChBq5H,EAAc,SAAS,WACvBA,EAAc;AAAA,YACZ,SAAUp5H,GAAgB;AACxB,kBAAkBD,EAAS,WAAvB,WAA+B;AACjC,oBAAIu5H,IAAoBv5H;AACxB,gBAAAu5H,EAAkB,SAAS,aAC3BA,EAAkB,QAAQt5H;AAAA,cACxC;AAAA,YACA;AAAA,YACU,SAAUtF,GAAO;AACf,kBAAkBqF,EAAS,WAAvB,WAA+B;AACjC,oBAAIw5H,IAAmBx5H;AACvB,gBAAAw5H,EAAiB,SAAS,YAC1BA,EAAiB,SAAS7+H;AAAA,cACxC;AAAA,YACA;AAAA;QAEA;AACM,gBAAQqF,EAAS,QAAM;AAAA,UACrB,KAAK;AACH,mBAAOA,EAAS;AAAA,UAClB,KAAK;AACH,kBACIq5H,IAAgBr5H,EAAS,QAC3Bs5H,GAA8BD,CAAa,GAC3CA;AAAA,QAEZ;AACM,cAAAI,KAAoBz5H,GACd+4H;AAAA,IACZ;AAAA,EACA;AACA,WAASW,GAAYC,GAAU;AAC7B,QAAI;AACF,UAAI72H,IAAO62H,EAAS;AACpB,aAAO72H,EAAK62H,EAAS,QAAQ;AAAA,IACjC,SAAWh2H,GAAG;AACV,YAAaA,MAAT,QAA2B,OAAOA,KAApB,YAAwC,OAAOA,EAAE,QAAxB,cACjC81H,KAAoB91H,GAAIo1H,MAC5Bp1H;AAAA,IACV;AAAA,EACA;AACA,MAAI81H,KAAoB;AACxB,WAASG,KAAuB;AAC9B,QAAaH,OAAT,KAA4B,OAAM,MAAMxqE,EAAuB,GAAG,CAAC;AACvE,QAAIjvD,IAAWy5H;AACf,WAAAA,KAAoB,MACbz5H;AAAA,EACT;AACA,WAASs5H,GAA8BO,GAAgB;AACrD,QACEA,MAAmBd,MACnBc,MAAmBZ;AAEnB,YAAM,MAAMhqE,EAAuB,GAAG,CAAC;AAAA,EAC3C;AACA,MAAI6qE,KAAkB,MACpBC,KAAyB;AAC3B,WAASC,GAAeh6H,GAAU;AAChC,QAAI3Q,IAAQ0qI;AACZ,WAAAA,MAA0B,GACjBD,OAAT,SAA6BA,KAAkB,KACxCV,GAAkBU,IAAiB95H,GAAU3Q,CAAK;AAAA,EAC3D;AACA,WAAS4qI,GAAU3a,GAAgBx/G,GAAS;AAC1C,IAAAA,IAAUA,EAAQ,MAAM,KACxBw/G,EAAe,MAAiBx/G,MAAX,SAAqBA,IAAU;AAAA,EACtD;AACA,WAASo6H,GAA6BC,GAAaC,GAAU;AAC3D,UAAIA,EAAS,aAAaxd,IAClB,MAAM3tD,EAAuB,GAAG,CAAC,KACzCkrE,IAAc,OAAO,UAAU,SAAS,KAAKC,CAAQ,GAC/C;AAAA,MACJnrE;AAAA,QACE;AAAA,QACsBkrE,MAAtB,oBACI,uBAAuB,OAAO,KAAKC,CAAQ,EAAE,KAAK,IAAI,IAAI,MAC1DD;AAAA,MACV;AAAA;EAEA;AACA,WAASE,GAAsBC,GAAwB;AACrD,aAASC,EAAYJ,GAAaK,GAAe;AAC/C,UAAIF,GAAwB;AAC1B,YAAIG,KAAYN,EAAY;AAC5B,QAASM,OAAT,QACMN,EAAY,YAAY,CAACK,CAAa,GAAKL,EAAY,SAAS,MAClEM,GAAU,KAAKD,CAAa;AAAA,MACtC;AAAA,IACA;AACE,aAASE,EAAwBP,GAAaQ,GAAmB;AAC/D,UAAI,CAACL,EAAwB,QAAO;AACpC,aAAgBK,MAAT;AACL,QAAAJ,EAAYJ,GAAaQ,CAAiB,GACvCA,IAAoBA,EAAkB;AAC3C,aAAO;AAAA,IACX;AACE,aAASC,EAAqBD,GAAmB;AAC/C,eAASE,IAAmB,oBAAI,IAAG,GAAaF,MAAT;AACrC,QAASA,EAAkB,QAA3B,OACIE,EAAiB,IAAIF,EAAkB,KAAKA,CAAiB,IAC7DE,EAAiB,IAAIF,EAAkB,OAAOA,CAAiB,GAChEA,IAAoBA,EAAkB;AAC3C,aAAOE;AAAA,IACX;AACE,aAASC,EAAShf,GAAOqW,GAAc;AACrC,aAAArW,IAAQwW,GAAqBxW,GAAOqW,CAAY,GAChDrW,EAAM,QAAQ,GACdA,EAAM,UAAU,MACTA;AAAA,IACX;AACE,aAASif,EAAWC,GAAUC,GAAiBC,IAAU;AAEvD,aADAF,EAAS,QAAQE,IACZZ,KAELY,KAAWF,EAAS,WACPE,OAAT,QAECA,KAAWA,GAAS,OACrBA,KAAWD,KACLD,EAAS,SAAS,UAAWC,KAC/BC,OAERF,EAAS,SAAS,UACXC,OAVGD,EAAS,SAAS,SAAUC;AAAA,IAW1C;AACE,aAASE,EAAiBH,GAAU;AAClC,aAAAV,KACWU,EAAS,cAAlB,SACCA,EAAS,SAAS,WACdA;AAAA,IACX;AACE,aAASI,EAAejB,GAAanwH,GAASqxH,IAAara,IAAO;AAChE,aAAah3G,MAAT,QAA0BA,EAAQ,QAAd,KAEnBA,IAAU4oH,GAAoByI,IAAalB,EAAY,MAAMnZ,EAAK,GAClEh3G,EAAQ,SAASmwH,GAClBnwH,MAEJA,IAAU8wH,EAAS9wH,GAASqxH,EAAW,GACvCrxH,EAAQ,SAASmwH,GACVnwH;AAAA,IACX;AACE,aAASsxH,EAAcnB,GAAanwH,GAASlK,IAASkhH,IAAO;AAC3D,UAAIua,KAAcz7H,GAAQ;AAC1B,aAAIy7H,OAAgBvtI,IACXwtI;AAAA,QACLrB;AAAA,QACAnwH;AAAA,QACAlK,GAAQ,MAAM;AAAA,QACdkhH;AAAA,QACAlhH,GAAQ;AAAA,UAGDkK,MAAT,SACCA,EAAQ,gBAAgBuxH,MACT,OAAOA,MAApB,YACUA,OAAT,QACAA,GAAY,aAAaz9H,KACzB47H,GAAY6B,EAAW,MAAMvxH,EAAQ,SAGtCA,IAAU8wH,EAAS9wH,GAASlK,GAAQ,KAAK,GAC1Cm6H,GAAUjwH,GAASlK,EAAO,GACzBkK,EAAQ,SAASmwH,GAClBnwH,MAEJA,IAAUwoH;AAAA,QACR1yH,GAAQ;AAAA,QACRA,GAAQ;AAAA,QACRA,GAAQ;AAAA,QACR;AAAA,QACAq6H,EAAY;AAAA,QACZnZ;AAAA,SAEFiZ,GAAUjwH,GAASlK,EAAO,GAC1BkK,EAAQ,SAASmwH,GACVnwH;AAAA,IACX;AACE,aAASyxH,GAAatB,GAAanwH,GAASgpH,IAAQhS,IAAO;AACzD,aACWh3G,MAAT,QACMA,EAAQ,QAAd,KACAA,EAAQ,UAAU,kBAAkBgpH,GAAO,iBAC3ChpH,EAAQ,UAAU,mBAAmBgpH,GAAO,kBAGzChpH,IAAU+oH,GAAsBC,IAAQmH,EAAY,MAAMnZ,EAAK,GAC/Dh3G,EAAQ,SAASmwH,GAClBnwH,MAEJA,IAAU8wH,EAAS9wH,GAASgpH,GAAO,YAAY,CAAA,CAAE,GACjDhpH,EAAQ,SAASmwH,GACVnwH;AAAA,IACX;AACE,aAASwxH,GAAerB,GAAanwH,GAASw+B,IAAUw4E,IAAO3yH,IAAK;AAClE,aAAa2b,MAAT,QAA0BA,EAAQ,QAAd,KAEnBA,IAAU2oH;AAAA,QACTnqF;AAAA,QACA2xF,EAAY;AAAA,QACZnZ;AAAA,QACA3yH;AAAA,SAED2b,EAAQ,SAASmwH,GAClBnwH,MAEJA,IAAU8wH,EAAS9wH,GAASw+B,EAAQ,GACpCx+B,EAAQ,SAASmwH,GACVnwH;AAAA,IACX;AACE,aAAS0xH,GAAYvB,GAAaC,GAAUpZ,IAAO;AACjD,UACgB,OAAOoZ,KAApB,YAAuCA,MAAP,MACpB,OAAOA,KAApB,YACa,OAAOA,KAApB;AAEA,eACGA,IAAWxH;AAAA,UACV,KAAKwH;AAAA,UACLD,EAAY;AAAA,UACZnZ;AAAA,WAEDoZ,EAAS,SAASD,GACnBC;AAEJ,UAAiB,OAAOA,KAApB,YAAyCA,MAAT,MAAmB;AACrD,gBAAQA,EAAS,UAAQ;AAAA,UACvB,KAAKrsI;AACH,mBACGizH,KAAQwR;AAAA,cACP4H,EAAS;AAAA,cACTA,EAAS;AAAA,cACTA,EAAS;AAAA,cACT;AAAA,cACAD,EAAY;AAAA,cACZnZ;AAAA,eAEFiZ,GAAUjZ,IAAOoZ,CAAQ,GACxBpZ,GAAM,SAASmZ,GAChBnZ;AAAA,UAEJ,KAAK1jH;AACH,mBACG88H,IAAWrH;AAAA,cACVqH;AAAA,cACAD,EAAY;AAAA,cACZnZ;AAAA,eAEDoZ,EAAS,SAASD,GACnBC;AAAA,UAEJ,KAAKt8H;AACH,mBACGs8H,IAAWV,GAAYU,CAAQ,GAChCsB,GAAYvB,GAAaC,GAAUpZ,EAAK;AAAA,QAEpD;AACM,YAAIjiH,EAAYq7H,CAAQ,KAAKn8H,EAAcm8H,CAAQ;AACjD,iBACGA,IAAWzH;AAAA,YACVyH;AAAA,YACAD,EAAY;AAAA,YACZnZ;AAAA,YACA;AAAA,aAEDoZ,EAAS,SAASD,GACnBC;AAEJ,YAAmB,OAAOA,EAAS,QAA/B;AACF,iBAAOsB,GAAYvB,GAAaH,GAAeI,CAAQ,GAAGpZ,EAAK;AACjE,YAAIoZ,EAAS,aAAa18H;AACxB,iBAAOg+H;AAAA,YACLvB;AAAA,YACAlD,GAAgCkD,GAAaC,CAAQ;AAAA,YACrDpZ;AAAA;AAEJ,QAAAkZ,GAA6BC,GAAaC,CAAQ;AAAA,MACxD;AACI,aAAO;AAAA,IACX;AACE,aAASuB,GAAWxB,GAAayB,GAAUxB,IAAUpZ,IAAO;AAC1D,UAAI3yH,KAAeutI,MAAT,OAAoBA,EAAS,MAAM;AAC7C,UACgB,OAAOxB,MAApB,YAAuCA,OAAP,MACpB,OAAOA,MAApB,YACa,OAAOA,MAApB;AAEA,eAAgB/rI,OAAT,OACH,OACA+sI,EAAejB,GAAayB,GAAU,KAAKxB,IAAUpZ,EAAK;AAChE,UAAiB,OAAOoZ,MAApB,YAAyCA,OAAT,MAAmB;AACrD,gBAAQA,GAAS,UAAQ;AAAA,UACvB,KAAKrsI;AACH,mBAAOqsI,GAAS,QAAQ/rI,KACpBitI,EAAcnB,GAAayB,GAAUxB,IAAUpZ,EAAK,IACpD;AAAA,UACN,KAAK1jH;AACH,mBAAO88H,GAAS,QAAQ/rI,KACpBotI,GAAatB,GAAayB,GAAUxB,IAAUpZ,EAAK,IACnD;AAAA,UACN,KAAKljH;AACH,mBACGs8H,KAAWV,GAAYU,EAAQ,GAChCuB,GAAWxB,GAAayB,GAAUxB,IAAUpZ,EAAK;AAAA,QAE7D;AACM,YAAIjiH,EAAYq7H,EAAQ,KAAKn8H,EAAcm8H,EAAQ;AACjD,iBAAgB/rI,OAAT,OACH,OACAmtI,GAAerB,GAAayB,GAAUxB,IAAUpZ,IAAO,IAAI;AACjE,YAAmB,OAAOoZ,GAAS,QAA/B;AACF,iBAAOuB;AAAA,YACLxB;AAAA,YACAyB;AAAA,YACA5B,GAAeI,EAAQ;AAAA,YACvBpZ;AAAA;AAEJ,YAAIoZ,GAAS,aAAa18H;AACxB,iBAAOi+H;AAAA,YACLxB;AAAA,YACAyB;AAAA,YACA3E,GAAgCkD,GAAaC,EAAQ;AAAA,YACrDpZ;AAAA;AAEJ,QAAAkZ,GAA6BC,GAAaC,EAAQ;AAAA,MACxD;AACI,aAAO;AAAA,IACX;AACE,aAASyB,GACPhB,GACAV,GACA2B,IACA1B,IACApZ,IACA;AACA,UACgB,OAAOoZ,MAApB,YAAuCA,OAAP,MACpB,OAAOA,MAApB,YACa,OAAOA,MAApB;AAEA,eACGS,IAAmBA,EAAiB,IAAIiB,EAAM,KAAK,MACpDV,EAAejB,GAAaU,GAAkB,KAAKT,IAAUpZ,EAAK;AAEtE,UAAiB,OAAOoZ,MAApB,YAAyCA,OAAT,MAAmB;AACrD,gBAAQA,GAAS,UAAQ;AAAA,UACvB,KAAKrsI;AACH,mBACG8sI,IACCA,EAAiB;AAAA,cACNT,GAAS,QAAlB,OAAwB0B,KAAS1B,GAAS;AAAA,YAC1D,KAAmB,MACPkB,EAAcnB,GAAaU,GAAkBT,IAAUpZ,EAAK;AAAA,UAEhE,KAAK1jH;AACH,mBACGu9H,IACCA,EAAiB;AAAA,cACNT,GAAS,QAAlB,OAAwB0B,KAAS1B,GAAS;AAAA,YAC1D,KAAmB,MACPqB,GAAatB,GAAaU,GAAkBT,IAAUpZ,EAAK;AAAA,UAE/D,KAAKljH;AACH,mBACGs8H,KAAWV,GAAYU,EAAQ,GAChCyB;AAAA,cACEhB;AAAA,cACAV;AAAA,cACA2B;AAAA,cACA1B;AAAA,cACApZ;AAAA,YACd;AAAA,QAEA;AACM,YAAIjiH,EAAYq7H,EAAQ,KAAKn8H,EAAcm8H,EAAQ;AACjD,iBACGS,IAAmBA,EAAiB,IAAIiB,EAAM,KAAK,MACpDN,GAAerB,GAAaU,GAAkBT,IAAUpZ,IAAO,IAAI;AAEvE,YAAmB,OAAOoZ,GAAS,QAA/B;AACF,iBAAOyB;AAAA,YACLhB;AAAA,YACAV;AAAA,YACA2B;AAAA,YACA9B,GAAeI,EAAQ;AAAA,YACvBpZ;AAAA;AAEJ,YAAIoZ,GAAS,aAAa18H;AACxB,iBAAOm+H;AAAA,YACLhB;AAAA,YACAV;AAAA,YACA2B;AAAA,YACA7E,GAAgCkD,GAAaC,EAAQ;AAAA,YACrDpZ;AAAA;AAEJ,QAAAkZ,GAA6BC,GAAaC,EAAQ;AAAA,MACxD;AACI,aAAO;AAAA,IACX;AACE,aAAS2B,GACP5B,GACAQ,GACAqB,IACAhb,IACA;AACA,eACMib,KAAsB,MACxBC,KAAmB,MACnBN,KAAWjB,GACXmB,KAAUnB,IAAoB,GAC9BwB,KAAe,MACRP,OAAT,QAAqBE,KAASE,GAAY,QAC1CF,MACA;AACA,QAAAF,GAAS,QAAQE,MACXK,KAAeP,IAAYA,KAAW,QACvCO,KAAeP,GAAS;AAC7B,YAAIZ,KAAWW;AAAA,UACbxB;AAAA,UACAyB;AAAA,UACAI,GAAYF,EAAM;AAAA,UAClB9a;AAAA;AAEF,YAAaga,OAAT,MAAmB;AACrB,UAASY,OAAT,SAAsBA,KAAWO;AACjC;AAAA,QACR;AACM,QAAA7B,KACEsB,MACSZ,GAAS,cAAlB,QACAT,EAAYJ,GAAayB,EAAQ,GACnCjB,IAAoBI,EAAWC,IAAUL,GAAmBmB,EAAM,GACzDI,OAAT,OACKD,KAAsBjB,KACtBkB,GAAiB,UAAUlB,IAChCkB,KAAmBlB,IACnBY,KAAWO;AAAA,MACjB;AACI,UAAIL,OAAWE,GAAY;AACzB,eACEtB,EAAwBP,GAAayB,EAAQ,GAC7CzU,MAAeyM,GAAauG,GAAa2B,EAAM,GAC/CG;AAEJ,UAAaL,OAAT,MAAmB;AACrB,eAAOE,KAASE,GAAY,QAAQF;AAClC,UAACF,KAAWF,GAAYvB,GAAa6B,GAAYF,EAAM,GAAG9a,EAAK,GACpD4a,OAAT,SACIjB,IAAoBI;AAAA,YACpBa;AAAA,YACAjB;AAAA,YACAmB;AAAA,aAEOI,OAAT,OACKD,KAAsBL,KACtBM,GAAiB,UAAUN,IAC/BM,KAAmBN;AAC1B,eAAAzU,MAAeyM,GAAauG,GAAa2B,EAAM,GACxCG;AAAA,MACb;AACI,WACEL,KAAWhB,EAAqBgB,EAAQ,GACxCE,KAASE,GAAY,QACrBF;AAEA,QAACK,KAAeN;AAAA,UACdD;AAAA,UACAzB;AAAA,UACA2B;AAAA,UACAE,GAAYF,EAAM;AAAA,UAClB9a;AAAA,WAESmb,OAAT,SACG7B,KACU6B,GAAa,cAAtB,QACAP,GAAS;AAAA,UACEO,GAAa,QAAtB,OAA4BL,KAASK,GAAa;AAAA,WAErDxB,IAAoBI;AAAA,UACnBoB;AAAA,UACAxB;AAAA,UACAmB;AAAA,WAEOI,OAAT,OACKD,KAAsBE,KACtBD,GAAiB,UAAUC,IAC/BD,KAAmBC;AAC1B,aAAA7B,KACEsB,GAAS,QAAQ,SAAU5pI,IAAO;AAChC,eAAOuoI,EAAYJ,GAAanoI,EAAK;AAAA,MAC7C,CAAO,GACHm1H,MAAeyM,GAAauG,GAAa2B,EAAM,GACxCG;AAAA,IACX;AACE,aAASG,GACPjC,GACAQ,GACAqB,IACAhb,IACA;AACA,UAAYgb,MAAR,KAAqB,OAAM,MAAM/sE,EAAuB,GAAG,CAAC;AAChE,eACMgtE,KAAsB,MACxBC,KAAmB,MACnBN,KAAWjB,GACXmB,KAAUnB,IAAoB,GAC9BwB,KAAe,MACfE,KAAOL,GAAY,KAAI,GAChBJ,OAAT,QAAqB,CAACS,GAAK,MAC3BP,MAAUO,KAAOL,GAAY,KAAI,GACjC;AACA,QAAAJ,GAAS,QAAQE,MACXK,KAAeP,IAAYA,KAAW,QACvCO,KAAeP,GAAS;AAC7B,YAAIZ,KAAWW,GAAWxB,GAAayB,IAAUS,GAAK,OAAOrb,EAAK;AAClE,YAAaga,OAAT,MAAmB;AACrB,UAASY,OAAT,SAAsBA,KAAWO;AACjC;AAAA,QACR;AACM,QAAA7B,KACEsB,MACSZ,GAAS,cAAlB,QACAT,EAAYJ,GAAayB,EAAQ,GACnCjB,IAAoBI,EAAWC,IAAUL,GAAmBmB,EAAM,GACzDI,OAAT,OACKD,KAAsBjB,KACtBkB,GAAiB,UAAUlB,IAChCkB,KAAmBlB,IACnBY,KAAWO;AAAA,MACjB;AACI,UAAIE,GAAK;AACP,eACE3B,EAAwBP,GAAayB,EAAQ,GAC7CzU,MAAeyM,GAAauG,GAAa2B,EAAM,GAC/CG;AAEJ,UAAaL,OAAT,MAAmB;AACrB,eAAO,CAACS,GAAK,MAAMP,MAAUO,KAAOL,GAAY,KAAI;AAClD,UAACK,KAAOX,GAAYvB,GAAakC,GAAK,OAAOrb,EAAK,GACvCqb,OAAT,SACI1B,IAAoBI,EAAWsB,IAAM1B,GAAmBmB,EAAM,GACvDI,OAAT,OACKD,KAAsBI,KACtBH,GAAiB,UAAUG,IAC/BH,KAAmBG;AAC1B,eAAAlV,MAAeyM,GAAauG,GAAa2B,EAAM,GACxCG;AAAA,MACb;AACI,WACEL,KAAWhB,EAAqBgB,EAAQ,GACxC,CAACS,GAAK,MACNP,MAAUO,KAAOL,GAAY,KAAI;AAEjC,QAACK,KAAOR,GAAcD,IAAUzB,GAAa2B,IAAQO,GAAK,OAAOrb,EAAK,GAC3Dqb,OAAT,SACG/B,KACU+B,GAAK,cAAd,QACAT,GAAS,OAAgBS,GAAK,QAAd,OAAoBP,KAASO,GAAK,GAAG,GACtD1B,IAAoBI,EAAWsB,IAAM1B,GAAmBmB,EAAM,GACtDI,OAAT,OACKD,KAAsBI,KACtBH,GAAiB,UAAUG,IAC/BH,KAAmBG;AAC1B,aAAA/B,KACEsB,GAAS,QAAQ,SAAU5pI,IAAO;AAChC,eAAOuoI,EAAYJ,GAAanoI,EAAK;AAAA,MAC7C,CAAO,GACHm1H,MAAeyM,GAAauG,GAAa2B,EAAM,GACxCG;AAAA,IACX;AACE,aAASK,GACPnC,GACAQ,GACAP,IACApZ,IACA;AAMA,UALa,OAAOoZ,MAApB,YACWA,OAAT,QACAA,GAAS,SAASpsI,KACTosI,GAAS,QAAlB,SACCA,KAAWA,GAAS,MAAM,WACZ,OAAOA,MAApB,YAAyCA,OAAT,MAAmB;AACrD,gBAAQA,GAAS,UAAQ;AAAA,UACvB,KAAKrsI;AACH,YAAAyB,GAAG;AACD,uBAASnB,KAAM+rI,GAAS,KAAcO,MAAT,QAA8B;AACzD,oBAAIA,EAAkB,QAAQtsI,IAAK;AAEjC,sBADAA,KAAM+rI,GAAS,MACX/rI,OAAQL;AACV,wBAAU2sI,EAAkB,QAAxB,GAA6B;AAC/B,sBAAAD;AAAA,wBACEP;AAAA,wBACAQ,EAAkB;AAAA,yBAEpB3Z,KAAQ8Z;AAAA,wBACNH;AAAA,wBACAP,GAAS,MAAM;AAAA,yBAEjBpZ,GAAM,SAASmZ,GACfA,IAAcnZ;AACd,4BAAMxxH;AAAA,oBAC1B;AAAA,6BAEkBmrI,EAAkB,gBAAgBtsI,MACpB,OAAOA,MAApB,YACUA,OAAT,QACAA,GAAI,aAAayP,KACjB47H,GAAYrrI,EAAG,MAAMssI,EAAkB,MACzC;AACA,oBAAAD;AAAA,sBACEP;AAAA,sBACAQ,EAAkB;AAAA,uBAEpB3Z,KAAQ8Z,EAASH,GAAmBP,GAAS,KAAK,GAClDH,GAAUjZ,IAAOoZ,EAAQ,GACzBpZ,GAAM,SAASmZ,GACfA,IAAcnZ;AACd,0BAAMxxH;AAAA,kBACxB;AACgB,kBAAAkrI,EAAwBP,GAAaQ,CAAiB;AACtD;AAAA,gBAChB,MAAqB,CAAAJ,EAAYJ,GAAaQ,CAAiB;AACjD,gBAAAA,IAAoBA,EAAkB;AAAA,cACpD;AACY,cAAAP,GAAS,SAASpsI,KACZgzH,KAAQ2R;AAAA,gBACRyH,GAAS,MAAM;AAAA,gBACfD,EAAY;AAAA,gBACZnZ;AAAA,gBACAoZ,GAAS;AAAA,iBAEVpZ,GAAM,SAASmZ,GACfA,IAAcnZ,OACbA,KAAQwR;AAAA,gBACR4H,GAAS;AAAA,gBACTA,GAAS;AAAA,gBACTA,GAAS;AAAA,gBACT;AAAA,gBACAD,EAAY;AAAA,gBACZnZ;AAAA,iBAEFiZ,GAAUjZ,IAAOoZ,EAAQ,GACxBpZ,GAAM,SAASmZ,GACfA,IAAcnZ;AAAA,YAC/B;AACU,mBAAOma,EAAiBhB,CAAW;AAAA,UACrC,KAAK78H;AACH,YAAA9N,GAAG;AACD,mBAAKnB,KAAM+rI,GAAS,KAAcO,MAAT,QAA8B;AACrD,oBAAIA,EAAkB,QAAQtsI;AAC5B,sBACQssI,EAAkB,QAAxB,KACAA,EAAkB,UAAU,kBAC1BP,GAAS,iBACXO,EAAkB,UAAU,mBAC1BP,GAAS,gBACX;AACA,oBAAAM;AAAA,sBACEP;AAAA,sBACAQ,EAAkB;AAAA,uBAEpB3Z,KAAQ8Z,EAASH,GAAmBP,GAAS,YAAY,CAAA,CAAE,GAC3DpZ,GAAM,SAASmZ,GACfA,IAAcnZ;AACd,0BAAMxxH;AAAA,kBACxB,OAAuB;AACL,oBAAAkrI,EAAwBP,GAAaQ,CAAiB;AACtD;AAAA,kBAClB;AAAA,oBACmB,CAAAJ,EAAYJ,GAAaQ,CAAiB;AAC/C,gBAAAA,IAAoBA,EAAkB;AAAA,cACpD;AACY,cAAA3Z,KAAQ+R,GAAsBqH,IAAUD,EAAY,MAAMnZ,EAAK,GAC/DA,GAAM,SAASmZ,GACfA,IAAcnZ;AAAA,YAC1B;AACU,mBAAOma,EAAiBhB,CAAW;AAAA,UACrC,KAAKr8H;AACH,mBACGs8H,KAAWV,GAAYU,EAAQ,GAChCkC;AAAA,cACEnC;AAAA,cACAQ;AAAA,cACAP;AAAA,cACApZ;AAAA,YACd;AAAA,QAEA;AACM,YAAIjiH,EAAYq7H,EAAQ;AACtB,iBAAO2B;AAAA,YACL5B;AAAA,YACAQ;AAAA,YACAP;AAAA,YACApZ;AAAA;AAEJ,YAAI/iH,EAAcm8H,EAAQ,GAAG;AAE3B,cADA/rI,KAAM4P,EAAcm8H,EAAQ,GACT,OAAO/rI,MAAtB,WAA2B,OAAM,MAAM4gE,EAAuB,GAAG,CAAC;AACtE,iBAAAmrE,KAAW/rI,GAAI,KAAK+rI,EAAQ,GACrBgC;AAAA,YACLjC;AAAA,YACAQ;AAAA,YACAP;AAAA,YACApZ;AAAA;QAEV;AACM,YAAmB,OAAOoZ,GAAS,QAA/B;AACF,iBAAOkC;AAAA,YACLnC;AAAA,YACAQ;AAAA,YACAX,GAAeI,EAAQ;AAAA,YACvBpZ;AAAA;AAEJ,YAAIoZ,GAAS,aAAa18H;AACxB,iBAAO4+H;AAAA,YACLnC;AAAA,YACAQ;AAAA,YACA1D,GAAgCkD,GAAaC,EAAQ;AAAA,YACrDpZ;AAAA;AAEJ,QAAAkZ,GAA6BC,GAAaC,EAAQ;AAAA,MACxD;AACI,aAAqB,OAAOA,MAApB,YAAuCA,OAAP,MACzB,OAAOA,MAApB,YACa,OAAOA,MAApB,YACIA,KAAW,KAAKA,IACTO,MAAT,QAAoCA,EAAkB,QAAxB,KACzBD,EAAwBP,GAAaQ,EAAkB,OAAO,GAC9D3Z,KAAQ8Z,EAASH,GAAmBP,EAAQ,GAC5CpZ,GAAM,SAASmZ,GACfA,IAAcnZ,OACd0Z,EAAwBP,GAAaQ,CAAiB,GACtD3Z,KAAQ4R,GAAoBwH,IAAUD,EAAY,MAAMnZ,EAAK,GAC7DA,GAAM,SAASmZ,GACfA,IAAcnZ,KACnBma,EAAiBhB,CAAW,KAC5BO,EAAwBP,GAAaQ,CAAiB;AAAA,IAC9D;AACE,WAAO,SAAUR,GAAaQ,GAAmBP,IAAUpZ,IAAO;AAChE,UAAI;AACF,QAAA+Y,KAAyB;AACzB,YAAIwC,KAAkBD;AAAA,UACpBnC;AAAA,UACAQ;AAAA,UACAP;AAAA,UACApZ;AAAA;AAEF,eAAA8Y,KAAkB,MACXyC;AAAA,MACb,SAAa54H,IAAG;AACV,YAAIA,OAAMo1H,MAAqBp1H,OAAMs1H,GAAyB,OAAMt1H;AACpE,YAAIm4G,KAAQsW,GAAqB,IAAIzuH,IAAG,MAAMw2H,EAAY,IAAI;AAC9D,eAAAre,GAAM,QAAQkF,IACdlF,GAAM,SAASqe,GACRre;AAAA,MACb,UAAK;AAAA,MACL;AAAA,IACA;AAAA,EACA;AACA,MAAI0gB,KAAuBnC,GAAsB,EAAE,GACjDoC,KAAmBpC,GAAsB,EAAE,GAC3CqC,KAAiB;AACnB,WAASC,GAAsB7gB,GAAO;AACpC,IAAAA,EAAM,cAAc;AAAA,MAClB,WAAWA,EAAM;AAAA,MACjB,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,QAAQ,EAAE,SAAS,MAAM,OAAO,GAAG,iBAAiB,KAAI;AAAA,MACxD,WAAW;AAAA;EAEf;AACA,WAAS8gB,GAAiB5yH,GAASs1G,GAAgB;AACjD,IAAAt1G,IAAUA,EAAQ,aAClBs1G,EAAe,gBAAgBt1G,MAC5Bs1G,EAAe,cAAc;AAAA,MAC5B,WAAWt1G,EAAQ;AAAA,MACnB,iBAAiBA,EAAQ;AAAA,MACzB,gBAAgBA,EAAQ;AAAA,MACxB,QAAQA,EAAQ;AAAA,MAChB,WAAW;AAAA,IACjB;AAAA,EACA;AACA,WAAS6yH,GAAahb,GAAM;AAC1B,WAAO,EAAE,MAAMA,GAAM,KAAK,GAAG,SAAS,MAAM,UAAU,MAAM,MAAM,KAAI;AAAA,EACxE;AACA,WAASib,GAAchhB,GAAO/1G,GAAQ87G,GAAM;AAC1C,QAAIkb,IAAcjhB,EAAM;AACxB,QAAaihB,MAAT,KAAsB,QAAO;AAEjC,QADAA,IAAcA,EAAY,SACfC,KAAmB,OAA1B,GAA8B;AAChC,UAAI55F,IAAU25F,EAAY;AAC1B,aAAS35F,MAAT,OACKr9B,EAAO,OAAOA,KACbA,EAAO,OAAOq9B,EAAQ,MAAQA,EAAQ,OAAOr9B,IACnDg3H,EAAY,UAAUh3H,GACtBA,IAAS6rH,GAAuB9V,CAAK,GACrC2V,GAA8B3V,GAAO,MAAM+F,CAAI,GACxC97G;AAAA,IACX;AACE,WAAA2rH,GAAgB5V,GAAOihB,GAAah3H,GAAQ87G,CAAI,GACzC+P,GAAuB9V,CAAK;AAAA,EACrC;AACA,WAASmhB,GAAoB94C,GAAM23B,GAAO+F,GAAM;AAE9C,QADA/F,IAAQA,EAAM,aACDA,MAAT,SAAoBA,IAAQA,EAAM,SAAgB+F,IAAO,aAAd,IAAyB;AACtE,UAAIqb,IAAaphB,EAAM;AACvB,MAAAohB,KAAc/4C,EAAK,cACnB09B,KAAQqb,GACRphB,EAAM,QAAQ+F,GACdsB,GAAkBh/B,GAAM09B,CAAI;AAAA,IAChC;AAAA,EACA;AACA,WAASsb,GAAsB7d,GAAgB8d,GAAgB;AAC7D,QAAI5L,IAAQlS,EAAe,aACzBt1G,IAAUs1G,EAAe;AAC3B,QACWt1G,MAAT,SACEA,IAAUA,EAAQ,aAAcwnH,MAAUxnH,IAC5C;AACA,UAAIqzH,IAAW,MACbC,IAAU;AAEZ,UADA9L,IAAQA,EAAM,iBACDA,MAAT,MAAgB;AAClB,WAAG;AACD,cAAIx+E,IAAQ;AAAA,YACV,MAAMw+E,EAAM;AAAA,YACZ,KAAKA,EAAM;AAAA,YACX,SAASA,EAAM;AAAA,YACf,UAAU;AAAA,YACV,MAAM;AAAA;AAER,UAAS8L,MAAT,OACKD,IAAWC,IAAUtqF,IACrBsqF,IAAUA,EAAQ,OAAOtqF,GAC9Bw+E,IAAQA,EAAM;AAAA,QACtB,SAAwBA,MAAT;AACT,QAAS8L,MAAT,OACKD,IAAWC,IAAUF,IACrBE,IAAUA,EAAQ,OAAOF;AAAA,MACpC,MAAW,CAAAC,IAAWC,IAAUF;AAC5B,MAAA5L,IAAQ;AAAA,QACN,WAAWxnH,EAAQ;AAAA,QACnB,iBAAiBqzH;AAAA,QACjB,gBAAgBC;AAAA,QAChB,QAAQtzH,EAAQ;AAAA,QAChB,WAAWA,EAAQ;AAAA,SAErBs1G,EAAe,cAAckS;AAC7B;AAAA,IACJ;AACE,IAAAlS,IAAiBkS,EAAM,gBACdlS,MAAT,OACKkS,EAAM,kBAAkB4L,IACxB9d,EAAe,OAAO8d,GAC3B5L,EAAM,iBAAiB4L;AAAA,EACzB;AACA,MAAIG,KAAkC;AACtC,WAASC,KAA8C;AACrD,QAAID,IAAiC;AACnC,UAAIE,IAA0B5F;AAC9B,UAAa4F,MAAT,KAAkC,OAAMA;AAAA,IAChD;AAAA,EACA;AACA,WAASC,GACPC,GACAp/H,GACAq/H,GACAjc,GACA;AACA,IAAA4b,KAAkC;AAClC,QAAI/L,IAAQmM,EAAwB;AACpC,IAAAjB,KAAiB;AACjB,QAAImB,IAAkBrM,EAAM,iBAC1BsM,IAAiBtM,EAAM,gBACvBuM,IAAevM,EAAM,OAAO;AAC9B,QAAauM,MAAT,MAAuB;AACzB,MAAAvM,EAAM,OAAO,UAAU;AACvB,UAAIwM,IAAoBD,GACtBE,KAAqBD,EAAkB;AACzC,MAAAA,EAAkB,OAAO,MAChBF,MAAT,OACKD,IAAkBI,KAClBH,EAAe,OAAOG,IAC3BH,IAAiBE;AACjB,UAAIh0H,KAAU2zH,EAAwB;AACtC,MAAS3zH,OAAT,SACIA,KAAUA,GAAQ,aACnB+zH,IAAe/zH,GAAQ,gBACxB+zH,MAAiBD,MACLC,MAAT,OACI/zH,GAAQ,kBAAkBi0H,KAC1BF,EAAa,OAAOE,IACxBj0H,GAAQ,iBAAiBg0H;AAAA,IAClC;AACE,QAAaH,MAAT,MAA0B;AAC5B,UAAItgH,KAAWi0G,EAAM;AACrB,MAAAsM,IAAiB,GACjB9zH,KAAUi0H,KAAqBD,IAAoB,MACnDD,IAAeF;AACf,SAAG;AACD,YAAI1b,KAAa4b,EAAa,OAAO,YACnCG,KAAiB/b,OAAe4b,EAAa;AAC/C,YACEG,MACKC,KAAgChc,QAAgBA,MAChDR,IAAcQ,QAAgBA,IACnC;AACA,UAAMA,OAAN,KACEA,OAAeyV,OACd2F,KAAkC,KAC5BvzH,OAAT,SACGA,KAAUA,GAAQ,OACjB;AAAA,YACE,MAAM;AAAA,YACN,KAAK+zH,EAAa;AAAA,YAClB,SAASA,EAAa;AAAA,YACtB,UAAU;AAAA,YACV,MAAM;AAAA,UACpB;AACQ,UAAAvuI,GAAG;AACD,gBAAI8vH,KAAiBqe,GACnB53H,KAASg4H;AACX,YAAA5b,KAAa5jH;AACb,gBAAIixC,KAAWouF;AACf,oBAAQ73H,GAAO,KAAG;AAAA,cAChB,KAAK;AAEH,oBADAu5G,KAAiBv5G,GAAO,SACL,OAAOu5G,MAAtB,YAAsC;AACxC,kBAAA/hG,KAAW+hG,GAAe,KAAK9vE,IAAUjyB,IAAU4kG,EAAU;AAC7D,wBAAM3yH;AAAA,gBACtB;AACc,gBAAA+tB,KAAW+hG;AACX,sBAAM9vH;AAAA,cACR,KAAK;AACH,gBAAA8vH,GAAe,QAASA,GAAe,QAAQ,SAAU;AAAA,cAC3D,KAAK;AAMH,oBALAA,KAAiBv5G,GAAO,SACxBo8G,KACiB,OAAO7C,MAAtB,aACIA,GAAe,KAAK9vE,IAAUjyB,IAAU4kG,EAAU,IAClD7C,IACO6C,MAAT,KAA8C,OAAM3yH;AACxD,gBAAA+tB,KAAWnf,EAAO,IAAImf,IAAU4kG,EAAU;AAC1C,sBAAM3yH;AAAA,cACR,KAAK;AACH,gBAAAktI,KAAiB;AAAA,YAC/B;AAAA,UACA;AACQ,UAAAva,KAAa4b,EAAa,UACjB5b,OAAT,SACIwb,EAAwB,SAAS,IACnCO,OAAmBP,EAAwB,SAAS,OACnDO,KAAiB1M,EAAM,WACf0M,OAAT,OACK1M,EAAM,YAAY,CAACrP,EAAU,IAC9B+b,GAAe,KAAK/b,EAAU;AAAA,QAC5C;AACQ,UAAC+b,KAAiB;AAAA,YAChB,MAAM/b;AAAA,YACN,KAAK4b,EAAa;AAAA,YAClB,SAASA,EAAa;AAAA,YACtB,UAAUA,EAAa;AAAA,YACvB,MAAM;AAAA,aAEG/zH,OAAT,QACMi0H,KAAqBj0H,KAAUk0H,IAChCF,IAAoBzgH,MACpBvT,KAAUA,GAAQ,OAAOk0H,IAC7BJ,KAAkB3b;AAEvB,YADA4b,IAAeA,EAAa,MACfA,MAAT,MACF;AAAA,cAAMA,IAAevM,EAAM,OAAO,SAAmBuM,MAAT;AAC1C;AAEA,UAACG,KAAiBH,GACfA,IAAeG,GAAe,MAC9BA,GAAe,OAAO,MACtB1M,EAAM,iBAAiB0M,IACvB1M,EAAM,OAAO,UAAU;AAAA;AAAA,MACpC,SAAa;AACT,MAASxnH,OAAT,SAAqBg0H,IAAoBzgH,KACzCi0G,EAAM,YAAYwM,GAClBxM,EAAM,kBAAkByM,IACxBzM,EAAM,iBAAiBxnH,IACd6zH,MAAT,SAA6BrM,EAAM,OAAO,QAAQ,IAClD4M,MAAkCN,GAClCH,EAAwB,QAAQG,GAChCH,EAAwB,gBAAgBpgH;AAAA,IAC5C;AAAA,EACA;AACA,WAAS8gH,GAAa1/H,GAAUH,GAAS;AACvC,QAAmB,OAAOG,KAAtB;AACF,YAAM,MAAMswD,EAAuB,KAAKtwD,CAAQ,CAAC;AACnD,IAAAA,EAAS,KAAKH,CAAO;AAAA,EACvB;AACA,WAAS8/H,GAAgBvB,GAAav+H,GAAS;AAC7C,QAAI9F,IAAYqkI,EAAY;AAC5B,QAAarkI,MAAT;AACF,WACEqkI,EAAY,YAAY,MAAMA,IAAc,GAC5CA,IAAcrkI,EAAU,QACxBqkI;AAEA,QAAAsB,GAAa3lI,EAAUqkI,CAAW,GAAGv+H,CAAO;AAAA,EAClD;AACA,MAAI+/H,KAA+BlhB,EAAa,IAAI,GAClDmhB,KAAiCnhB,EAAa,CAAC;AACjD,WAASohB,GAAkB3iB,GAAOt9G,GAAS;AACzC,IAAAs9G,IAAQ4iB,IACRhmB,EAAK8lB,IAAgC1iB,CAAK,GAC1CpD,EAAK6lB,IAA8B//H,CAAO,GAC1CkgI,KAAuB5iB,IAAQt9G,EAAQ;AAAA,EACzC;AACA,WAASmgI,KAA4B;AACnC,IAAAjmB,EAAK8lB,IAAgCE,EAAoB,GACzDhmB,EAAK6lB,IAA8BA,GAA6B,OAAO;AAAA,EACzE;AACA,WAASK,KAAmB;AAC1B,IAAAF,KAAuBF,GAA+B,SACtD1lB,EAAIylB,EAA4B,GAChCzlB,EAAI0lB,EAA8B;AAAA,EACpC;AACA,MAAIK,KAA6BxhB,EAAa,IAAI,GAChDyhB,KAAgB;AAClB,WAASC,GAA+BttE,GAAS;AAC/C,QAAIznD,IAAUynD,EAAQ;AACtB,IAAAinD,EAAKsmB,IAAqBA,GAAoB,UAAU,CAAC,GACzDtmB,EAAKmmB,IAA4BptE,CAAO,GAC/BqtE,OAAT,SACY90H,MAAT,QAA6Bu0H,GAA6B,YAAtC,QAERv0H,EAAQ,kBAAjB,UAAmC80H,KAAgBrtE;AAAA,EAC3D;AACA,WAASwtE,GAAsCnjB,GAAO;AACpD,IAAApD,EAAKsmB,IAAqBA,GAAoB,OAAO,GACrDtmB,EAAKmmB,IAA4B/iB,CAAK,GAC7BgjB,OAAT,SAA2BA,KAAgBhjB;AAAA,EAC7C;AACA,WAASojB,GAA6BpjB,GAAO;AAC3C,IAAOA,EAAM,QAAb,MACKpD,EAAKsmB,IAAqBA,GAAoB,OAAO,GACtDtmB,EAAKmmB,IAA4B/iB,CAAK,GAC7BgjB,OAAT,SAA2BA,KAAgBhjB,MAC3CqjB,GAAiC;AAAA,EACvC;AACA,WAASA,KAA8B;AACrC,IAAAzmB,EAAKsmB,IAAqBA,GAAoB,OAAO,GACrDtmB,EAAKmmB,IAA4BA,GAA2B,OAAO;AAAA,EACrE;AACA,WAASO,GAAmBtjB,GAAO;AACjC,IAAAhD,EAAI+lB,EAA0B,GAC9BC,OAAkBhjB,MAAUgjB,KAAgB,OAC5ChmB,EAAIkmB,EAAmB;AAAA,EACzB;AACA,MAAIA,KAAsB3hB,EAAa,CAAC;AACxC,WAASgiB,GAAmBnjG,GAAK;AAC/B,aAASha,IAAOga,GAAcha,MAAT,QAAiB;AACpC,UAAWA,EAAK,QAAZ,IAAiB;AACnB,YAAIjR,IAAQiR,EAAK;AACjB,YACWjR,MAAT,SACEA,IAAQA,EAAM,YACPA,MAAT,QACEquH,GAA0BruH,CAAK,KAC/BsuH,GAA2BtuH,CAAK;AAElC,iBAAOiR;AAAA,MACf,WACaA,EAAK,QAAZ,OACgBA,EAAK,cAAc,gBAAlC,cACiBA,EAAK,cAAc,gBAAnC,eACgCA,EAAK,cAAc,gBAAnD,+BACeA,EAAK,cAAc,gBAAlC;AAEF,aAAWA,EAAK,QAAQ,SAApB,EAA0B,QAAOA;AAAA,iBACnBA,EAAK,UAAd,MAAqB;AAC9B,QAAAA,EAAK,MAAM,SAASA,GACpBA,IAAOA,EAAK;AACZ;AAAA,MACN;AACI,UAAIA,MAASga,EAAK;AAClB,aAAgBha,EAAK,YAAd,QAAyB;AAC9B,YAAaA,EAAK,WAAd,QAAwBA,EAAK,WAAWga,EAAK,QAAO;AACxD,QAAAha,IAAOA,EAAK;AAAA,MAClB;AACI,MAAAA,EAAK,QAAQ,SAASA,EAAK,QAC3BA,IAAOA,EAAK;AAAA,IAChB;AACE,WAAO;AAAA,EACT;AACA,MAAIy/F,KAAc,GAChB6d,KAA0B,MAC1BC,KAAc,MACdC,KAAqB,MACrBC,KAA+B,IAC/BC,KAA6C,IAC7CC,KAAsC,IACtCC,KAAiB,GACjBC,KAAuB,GACvB1G,KAAgB,MAChB2G,KAAwB;AAC1B,WAASC,KAAwB;AAC/B,UAAM,MAAMhxE,EAAuB,GAAG,CAAC;AAAA,EACzC;AACA,WAASixE,GAAmBC,GAAUC,GAAU;AAC9C,QAAaA,MAAT,KAAmB,QAAO;AAC9B,aAASzwI,IAAI,GAAGA,IAAIywI,EAAS,UAAUzwI,IAAIwwI,EAAS,QAAQxwI;AAC1D,UAAI,CAAC0pE,GAAS8mE,EAASxwI,CAAC,GAAGywI,EAASzwI,CAAC,CAAC,EAAG,QAAO;AAClD,WAAO;AAAA,EACT;AACA,WAAS0wI,GACPr2H,GACAs1G,GACAhhH,GACAC,GACA+hI,GACAC,GACA;AACA,WAAA5e,KAAc4e,GACdf,KAA0BlgB,GAC1BA,EAAe,gBAAgB,MAC/BA,EAAe,cAAc,MAC7BA,EAAe,QAAQ,GACvBtgH,EAAqB,IACVgL,MAAT,QAA6BA,EAAQ,kBAAjB,OAChBw2H,KACAC,IACNZ,KAAsC,IACtCU,IAAkBjiI,EAAUC,GAAO+hI,CAAS,GAC5CT,KAAsC,IACtCD,OACGW,IAAkBG;AAAA,MACjBphB;AAAA,MACAhhH;AAAA,MACAC;AAAA,MACA+hI;AAAA,IACN,IACEK,GAAqB32H,CAAO,GACrBu2H;AAAA,EACT;AACA,WAASI,GAAqB32H,GAAS;AACrC,IAAAhL,EAAqB,IAAI4hI;AACzB,QAAIC,IAAgCpB,OAAT,QAAiCA,GAAY,SAArB;AAMnD,QALA9d,KAAc,GACd+d,KAAqBD,KAAcD,KAA0B,MAC7DG,KAA+B,IAC/BI,KAAuB,GACvB1G,KAAgB,MACZwH,EAAsB,OAAM,MAAM5xE,EAAuB,GAAG,CAAC;AACjE,IAASjlD,MAAT,QACE82H,OACE92H,IAAUA,EAAQ,cACXA,MAAT,QACE4sH,GAAsB5sH,CAAO,MAC5B82H,KAAmB;AAAA,EAC1B;AACA,WAASJ,GAAqBphB,GAAgBhhH,GAAWC,GAAO+hI,GAAW;AACzE,IAAAd,KAA0BlgB;AAC1B,QAAIyhB,IAAoB;AACxB,OAAG;AAID,UAHAnB,OAA+CvG,KAAgB,OAC/D0G,KAAuB,GACvBH,KAA6C,IACzC,MAAMmB,EAAmB,OAAM,MAAM9xE,EAAuB,GAAG,CAAC;AAGpE,UAFA8xE,KAAqB,GACrBrB,KAAqBD,KAAc,MACvBngB,EAAe,eAAvB,MAAoC;AACtC,YAAIn/G,IAAWm/G,EAAe;AAC9B,QAAAn/G,EAAS,aAAa,MACtBA,EAAS,SAAS,MAClBA,EAAS,SAAS,MACVA,EAAS,aAAjB,SAA+BA,EAAS,UAAU,QAAQ;AAAA,MAChE;AACI,MAAAnB,EAAqB,IAAIgiI,IACzB7gI,IAAW7B,EAAUC,GAAO+hI,CAAS;AAAA,IACzC,SAAWV;AACT,WAAOz/H;AAAA,EACT;AACA,WAAS8gI,KAA+B;AACtC,QAAIC,IAAaliI,EAAqB,GACpCmiI,IAAgBD,EAAW,SAAQ,EAAG,CAAC;AACzC,WAAAC,IACiB,OAAOA,EAAc,QAApC,aACIC,GAAYD,CAAa,IACzBA,GACND,IAAaA,EAAW,SAAQ,EAAG,CAAC,IAC1BzB,OAAT,OAAuBA,GAAY,gBAAgB,UAAUyB,MAC3D1B,GAAwB,SAAS,OAC7B2B;AAAA,EACT;AACA,WAASE,KAAuB;AAC9B,QAAIC,IAAwBxB,OAAN;AACtB,WAAAA,KAAiB,GACVwB;AAAA,EACT;AACA,WAASC,GAAav3H,GAASs1G,GAAgB0B,GAAO;AACpD,IAAA1B,EAAe,cAAct1G,EAAQ,aACrCs1G,EAAe,SAAS,OACxBt1G,EAAQ,SAAS,CAACg3G;AAAA,EACpB;AACA,WAASwgB,GAAmBliB,GAAgB;AAC1C,QAAIqgB,IAA8B;AAChC,WACErgB,IAAiBA,EAAe,eACvBA,MAAT,QAEA;AACA,YAAIkS,IAAQlS,EAAe;AAC3B,QAASkS,MAAT,SAAmBA,EAAM,UAAU,OACnClS,IAAiBA,EAAe;AAAA,MACtC;AACI,MAAAqgB,KAA+B;AAAA,IACnC;AACE,IAAAhe,KAAc,GACd+d,KAAqBD,KAAcD,KAA0B,MAC7DI,KAA6C,IAC7CG,KAAuBD,KAAiB,GACxCzG,KAAgB;AAAA,EAClB;AACA,WAASoI,KAA0B;AACjC,QAAI93C,IAAO;AAAA,MACT,eAAe;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA;AAER,WAAS+1C,OAAT,OACKF,GAAwB,gBAAgBE,KAAqB/1C,IAC7D+1C,KAAqBA,GAAmB,OAAO/1C,GAC7C+1C;AAAA,EACT;AACA,WAASgC,KAA2B;AAClC,QAAajC,OAAT,MAAsB;AACxB,UAAIkC,IAAkBnC,GAAwB;AAC9C,MAAAmC,IACWA,MAAT,OAA2BA,EAAgB,gBAAgB;AAAA,IACjE,MAAS,CAAAA,IAAkBlC,GAAY;AACrC,QAAImC,IACOlC,OAAT,OACIF,GAAwB,gBACxBE,GAAmB;AACzB,QAAakC,MAAT;AACF,MAAClC,KAAqBkC,GACnBnC,KAAckC;AAAA,SACd;AACH,UAAaA,MAAT;AACF,cAAanC,GAAwB,cAAjC,OACI,MAAMvwE,EAAuB,GAAG,CAAC,IACnC,MAAMA,EAAuB,GAAG,CAAC;AAEzC,MAAAwwE,KAAckC,GACdA,IAAkB;AAAA,QAChB,eAAelC,GAAY;AAAA,QAC3B,WAAWA,GAAY;AAAA,QACvB,WAAWA,GAAY;AAAA,QACvB,OAAOA,GAAY;AAAA,QACnB,MAAM;AAAA,SAECC,OAAT,OACKF,GAAwB,gBAAgBE,KACvCiC,IACDjC,KAAqBA,GAAmB,OAAOiC;AAAA,IACxD;AACE,WAAOjC;AAAA,EACT;AACA,WAASmC,KAAqC;AAC5C,WAAO,EAAE,YAAY,MAAM,QAAQ,MAAM,QAAQ,MAAM,WAAW,KAAI;AAAA,EACxE;AACA,WAAST,GAAYphI,GAAU;AAC7B,QAAI3Q,IAAQ0wI;AACZ,WAAAA,MAAwB,GACf1G,OAAT,SAA2BA,KAAgB,KAC3Cr5H,IAAWo5H,GAAkBC,IAAer5H,GAAU3Q,CAAK,GAC3DA,IAAQmwI,KAEIE,OAAT,OACGrwI,EAAM,gBACNqwI,GAAmB,UAHzB,SAIIrwI,IAAQA,EAAM,WACf2P,EAAqB,IACX3P,MAAT,QAA2BA,EAAM,kBAAf,OACdmxI,KACAC,KACDzgI;AAAA,EACT;AACA,WAAS6D,GAAI1B,GAAQ;AACnB,QAAaA,MAAT,QAAgC,OAAOA,KAApB,UAA4B;AACjD,UAAmB,OAAOA,EAAO,QAA7B,WAAmC,QAAOi/H,GAAYj/H,CAAM;AAChE,UAAIA,EAAO,aAAazE,EAAoB,QAAOq5H,GAAY50H,CAAM;AAAA,IACzE;AACE,UAAM,MAAM8sD,EAAuB,KAAK,OAAO9sD,CAAM,CAAC,CAAC;AAAA,EACzD;AACA,WAAS2/H,GAAatgI,GAAM;AAC1B,QAAIugI,IAAY,MACdhF,IAAcyC,GAAwB;AAExC,QADSzC,MAAT,SAAyBgF,IAAYhF,EAAY,YACrCgF,KAAR,MAAmB;AACrB,UAAI/3H,IAAUw1H,GAAwB;AACtC,MAASx1H,MAAT,SACIA,IAAUA,EAAQ,aACXA,MAAT,SACIA,IAAUA,EAAQ,WACZA,KAAR,SACG+3H,IAAY;AAAA,QACX,MAAM/3H,EAAQ,KAAK,IAAI,SAAU5J,GAAO;AACtC,iBAAOA,EAAM,MAAK;AAAA,QAChC,CAAa;AAAA,QACD,OAAO;AAAA;IAEnB;AAOE,QANQ2hI,KAAR,SAAsBA,IAAY,EAAE,MAAM,IAAI,OAAO,MAC5ChF,MAAT,SACIA,IAAc8E,GAAkC,GACjDrC,GAAwB,cAAczC,IACzCA,EAAY,YAAYgF,GACxBhF,IAAcgF,EAAU,KAAKA,EAAU,KAAK,GAC7BhF,MAAX;AACF,WACEA,IAAcgF,EAAU,KAAKA,EAAU,KAAK,IAAI,MAAMvgI,CAAI,GAAGwI,IAAU,GACvEA,IAAUxI,GACVwI;AAEA,QAAA+yH,EAAY/yH,CAAO,IAAI8yG;AAC3B,WAAAilB,EAAU,SACHhF;AAAA,EACT;AACA,WAASiF,GAAkB/wH,GAAO7O,GAAQ;AACxC,WAAsB,OAAOA,KAAtB,aAA+BA,EAAO6O,CAAK,IAAI7O;AAAA,EACxD;AACA,WAAS6/H,GAAcr/H,GAAS;AAC9B,QAAI+mF,IAAO+3C,GAAwB;AACnC,WAAOQ,GAAkBv4C,GAAM81C,IAAa78H,CAAO;AAAA,EACrD;AACA,WAASs/H,GAAkBv4C,GAAM3/E,GAASpH,GAAS;AACjD,QAAI4uH,IAAQ7nC,EAAK;AACjB,QAAa6nC,MAAT,KAAgB,OAAM,MAAMviE,EAAuB,GAAG,CAAC;AAC3D,IAAAuiE,EAAM,sBAAsB5uH;AAC5B,QAAIu/H,IAAYx4C,EAAK,WACnBo0C,IAAevM,EAAM;AACvB,QAAauM,MAAT,MAAuB;AACzB,UAAaoE,MAAT,MAAoB;AACtB,YAAIC,IAAYD,EAAU;AAC1B,QAAAA,EAAU,OAAOpE,EAAa,MAC9BA,EAAa,OAAOqE;AAAA,MAC1B;AACI,MAAAp4H,EAAQ,YAAYm4H,IAAYpE,GAChCvM,EAAM,UAAU;AAAA,IACpB;AAEE,QADAuM,IAAep0C,EAAK,WACPw4C,MAAT,KAAoB,CAAAx4C,EAAK,gBAAgBo0C;AAAA,SACxC;AACH,MAAA/zH,IAAUm4H,EAAU;AACpB,UAAIE,IAAqBD,IAAY,MACnCE,IAAmB,MACnBv8H,KAASiE,GACTu4H,KAAqC;AACvC,SAAG;AACD,YAAIpgB,KAAap8G,GAAO,OAAO;AAC/B,YACEo8G,OAAep8G,GAAO,QACjBo4H,KAAgChc,QAAgBA,MAChDR,KAAcQ,QAAgBA,IACnC;AACA,cAAIqgB,KAAaz8H,GAAO;AACxB,cAAUy8H,OAAN;AACF,YAASF,MAAT,SACGA,IAAmBA,EAAiB,OACnC;AAAA,cACE,MAAM;AAAA,cACN,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,QAAQv8H,GAAO;AAAA,cACf,eAAeA,GAAO;AAAA,cACtB,YAAYA,GAAO;AAAA,cACnB,MAAM;AAAA,YACtB,IACYo8G,OAAeyV,OACZ2K,KAAqC;AAAA,oBAClC5gB,KAAc6gB,QAAgBA,IAAY;AAClD,YAAAz8H,KAASA,GAAO,MAChBy8H,OAAe5K,OACZ2K,KAAqC;AACxC;AAAA,UACV;AACU,YAACpgB,KAAa;AAAA,cACZ,MAAM;AAAA,cACN,YAAYp8G,GAAO;AAAA,cACnB,SAAS;AAAA,cACT,QAAQA,GAAO;AAAA,cACf,eAAeA,GAAO;AAAA,cACtB,YAAYA,GAAO;AAAA,cACnB,MAAM;AAAA,eAEGu8H,MAAT,QACMD,IAAoBC,IAAmBngB,IACxCigB,IAAYrE,KACZuE,IAAmBA,EAAiB,OAAOngB,IAC/Cqd,GAAwB,SAASgD,IACjCpE,MAAkCoE;AACvC,UAAArgB,KAAap8G,GAAO,QACpB85H,MACEj9H,EAAQm7H,GAAc5b,EAAU,GAClC4b,IAAeh4H,GAAO,gBAClBA,GAAO,aACPnD,EAAQm7H,GAAc5b,EAAU;AAAA,QAC5C;AACQ,UAACqgB,KAAa;AAAA,YACZ,MAAMrgB;AAAA,YACN,YAAYp8G,GAAO;AAAA,YACnB,SAASA,GAAO;AAAA,YAChB,QAAQA,GAAO;AAAA,YACf,eAAeA,GAAO;AAAA,YACtB,YAAYA,GAAO;AAAA,YACnB,MAAM;AAAA,aAEGu8H,MAAT,QACMD,IAAoBC,IAAmBE,IACxCJ,IAAYrE,KACZuE,IAAmBA,EAAiB,OAAOE,IAC/ChD,GAAwB,SAASrd,IACjCic,MAAkCjc;AACvC,QAAAp8G,KAASA,GAAO;AAAA,MACtB,SAAsBA,OAAT,QAAmBA,OAAWiE;AAIvC,UAHSs4H,MAAT,OACKF,IAAYrE,IACZuE,EAAiB,OAAOD,GAE3B,CAAChpE,GAAS0kE,GAAcp0C,EAAK,aAAa,MACxCm3C,KAAmB,IACrByB,OACI3/H,IAAUi1H,IAA0Cj1H,MAAT;AAE/C,cAAMA;AACR,MAAA+mF,EAAK,gBAAgBo0C,GACrBp0C,EAAK,YAAYy4C,GACjBz4C,EAAK,YAAY24C,GACjB9Q,EAAM,oBAAoBuM;AAAA,IAC9B;AACE,WAASoE,MAAT,SAAuB3Q,EAAM,QAAQ,IAC9B,CAAC7nC,EAAK,eAAe6nC,EAAM,QAAQ;AAAA,EAC5C;AACA,WAASiR,GAAgB7/H,GAAS;AAChC,QAAI+mF,IAAO+3C,GAAwB,GACjClQ,IAAQ7nC,EAAK;AACf,QAAa6nC,MAAT,KAAgB,OAAM,MAAMviE,EAAuB,GAAG,CAAC;AAC3D,IAAAuiE,EAAM,sBAAsB5uH;AAC5B,QAAI8/H,IAAWlR,EAAM,UACnBmR,IAAwBnR,EAAM,SAC9Bj0G,IAAWosE,EAAK;AAClB,QAAag5C,MAAT,MAAgC;AAClC,MAAAnR,EAAM,UAAU;AAChB,UAAIzrH,IAAU48H,IAAwBA,EAAsB;AAC5D;AAAG,QAACplH,IAAW3a,EAAQ2a,GAAUxX,EAAO,MAAM,GAAKA,IAASA,EAAO;AAAA,aAC5DA,MAAW48H;AAClB,MAAAtpE,GAAS97C,GAAUosE,EAAK,aAAa,MAAMm3C,KAAmB,KAC9Dn3C,EAAK,gBAAgBpsE,GACZosE,EAAK,cAAd,SAA4BA,EAAK,YAAYpsE,IAC7Ci0G,EAAM,oBAAoBj0G;AAAA,IAC9B;AACE,WAAO,CAACA,GAAUmlH,CAAQ;AAAA,EAC5B;AACA,WAASE,GAAwB7/H,GAAWC,GAAaC,GAAmB;AAC1E,QAAI64G,IAAQ0jB,IACV71C,IAAO+3C,GAAwB,GAC/BmB,IAAuB1b;AACzB,QAAI0b,GAAsB;AACxB,UAAe5/H,MAAX,OAA8B,OAAM,MAAMgsD,EAAuB,GAAG,CAAC;AACzE,MAAAhsD,IAAoBA,EAAiB;AAAA,IACzC,MAAS,CAAAA,IAAoBD,EAAW;AACtC,QAAI8/H,IAAkB,CAACzpE;AAAA,OACpBomE,MAAe91C,GAAM;AAAA,MACtB1mF;AAAA;AAQF,QANA6/H,MACIn5C,EAAK,gBAAgB1mF,GAAqB69H,KAAmB,KACjEn3C,IAAOA,EAAK,OACZo5C,GAAaC,GAAiB,KAAK,MAAMlnB,GAAOnyB,GAAM5mF,CAAS,GAAG;AAAA,MAChEA;AAAA,IACJ,CAAG,GAEC4mF,EAAK,gBAAgB3mF,KACrB8/H,KACUpD,OAAT,QAA+BA,GAAmB,cAAc,MAAM,GACvE;AAcA,UAbA5jB,EAAM,SAAS,MACfmnB;AAAA,QACE;AAAA,QACA,EAAE,SAAS,OAAM;AAAA,QACjBC,GAAoB;AAAA,UAClB;AAAA,UACApnB;AAAA,UACAnyB;AAAA,UACA1mF;AAAA,UACAD;AAAA;QAEF;AAAA,SAEWy1H,OAAT,KAA6B,OAAM,MAAMxpE,EAAuB,GAAG,CAAC;AACxE,MAAA4zE,MACSlhB,KAAc,SAArB,KACAwhB,GAA0BrnB,GAAO94G,GAAaC,CAAiB;AAAA,IACrE;AACE,WAAOA;AAAA,EACT;AACA,WAASkgI,GAA0BrnB,GAAO94G,GAAaogI,GAAkB;AACvE,IAAAtnB,EAAM,SAAS,OACfA,IAAQ,EAAE,aAAa94G,GAAa,OAAOogI,EAAgB,GAC3DpgI,IAAcw8H,GAAwB,aAC7Bx8H,MAAT,QACMA,IAAc6+H,GAAkC,GACjDrC,GAAwB,cAAcx8H,GACtCA,EAAY,SAAS,CAAC84G,CAAK,MAC1BsnB,IAAmBpgI,EAAY,QACxBogI,MAAT,OACKpgI,EAAY,SAAS,CAAC84G,CAAK,IAC5BsnB,EAAiB,KAAKtnB,CAAK;AAAA,EACrC;AACA,WAASonB,GAAoBpnB,GAAOniD,GAAME,GAAc72D,GAAa;AACnE,IAAA22D,EAAK,QAAQE,GACbF,EAAK,cAAc32D,GACnBqgI,GAAuB1pE,CAAI,KAAK2pE,GAAmBxnB,CAAK;AAAA,EAC1D;AACA,WAASknB,GAAiBlnB,GAAOniD,GAAM52D,GAAW;AAChD,WAAOA,EAAU,WAAY;AAC3B,MAAAsgI,GAAuB1pE,CAAI,KAAK2pE,GAAmBxnB,CAAK;AAAA,IAC5D,CAAG;AAAA,EACH;AACA,WAASunB,GAAuB1pE,GAAM;AACpC,QAAI4pE,IAAoB5pE,EAAK;AAC7B,IAAAA,IAAOA,EAAK;AACZ,QAAI;AACF,UAAIj1D,IAAY6+H,EAAiB;AACjC,aAAO,CAAClqE,GAASM,GAAMj1D,CAAS;AAAA,IACpC,QAAkB;AACd,aAAO;AAAA,IACX;AAAA,EACA;AACA,WAAS4+H,GAAmBxnB,GAAO;AACjC,QAAI33B,IAAO0tC,GAA+B/V,GAAO,CAAC;AAClD,IAAS33B,MAAT,QAAiBq/C,GAAsBr/C,GAAM23B,GAAO,CAAC;AAAA,EACvD;AACA,WAAS2nB,GAAephI,GAAc;AACpC,QAAIsnF,IAAO83C,GAAuB;AAClC,QAAmB,OAAOp/H,KAAtB,YAAoC;AACtC,UAAIqhI,IAA0BrhI;AAE9B,UADAA,IAAeqhI,EAAuB,GAClC7D,IAAqC;AACvC,QAAAvf,GAA2B,EAAE;AAC7B,YAAI;AACF,UAAAojB,EAAuB;AAAA,QAC/B,UAAO;AACC,UAAApjB,GAA2B,EAAE;AAAA,QACrC;AAAA,MACA;AAAA,IACA;AACE,WAAA32B,EAAK,gBAAgBA,EAAK,YAAYtnF,GACtCsnF,EAAK,QAAQ;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,qBAAqBq4C;AAAA,MACrB,mBAAmB3/H;AAAA,OAEdsnF;AAAA,EACT;AACA,WAASg6C,GAAqBh6C,GAAM3/E,GAAS9Z,GAAa0S,GAAS;AACjE,WAAA+mF,EAAK,YAAYz5F,GACVgyI;AAAA,MACLv4C;AAAA,MACA81C;AAAA,MACe,OAAO78H,KAAtB,aAAgCA,IAAUo/H;AAAA;EAE9C;AACA,WAAS4B,GACP9nB,GACA+nB,GACAC,GACAC,GACAhjI,GACA;AACA,QAAIijI,GAAoBloB,CAAK,EAAG,OAAM,MAAM7sD,EAAuB,GAAG,CAAC;AAEvE,QADA6sD,IAAQ+nB,EAAY,QACP/nB,MAAT,MAAgB;AAClB,UAAImoB,IAAa;AAAA,QACf,SAASljI;AAAA,QACT,QAAQ+6G;AAAA,QACR,MAAM;AAAA,QACN,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW,CAAA;AAAA,QACX,MAAM,SAAUz/G,GAAU;AACxB,UAAA4nI,EAAW,UAAU,KAAK5nI,CAAQ;AAAA,QAC1C;AAAA;AAEI,MAAS2C,EAAqB,MAA9B,OACI8kI,EAAgB,EAAE,IACjBG,EAAW,eAAe,IAC/BF,EAASE,CAAU,GACnBH,IAAkBD,EAAY,SACrBC,MAAT,QACMG,EAAW,OAAOJ,EAAY,UAAUI,GAC1CC,GAAqBL,GAAaI,CAAU,MAC1CA,EAAW,OAAOH,EAAgB,MACnCD,EAAY,UAAUC,EAAgB,OAAOG;AAAA,IACtD;AAAA,EACA;AACA,WAASC,GAAqBL,GAAa3hH,GAAM;AAC/C,QAAI9f,IAAS8f,EAAK,QAChBnhB,IAAUmhB,EAAK,SACfiiH,IAAYN,EAAY;AAC1B,QAAI3hH,EAAK,cAAc;AACrB,UAAIngB,IAAiB/C,EAAqB,GACxCgD,IAAoB,CAAA;AACtB,MAAAhD,EAAqB,IAAIgD;AACzB,UAAI;AACF,YAAIC,IAAcG,EAAO+hI,GAAWpjI,CAAO,GACzCmB,IAA0BlD,EAAqB;AACjD,QAASkD,MAAT,QACEA,EAAwBF,GAAmBC,CAAW,GACxDmiI,GAAwBP,GAAa3hH,GAAMjgB,CAAW;AAAA,MAC5D,SAAatH,IAAO;AACd,QAAA0pI,GAAcR,GAAa3hH,GAAMvnB,EAAK;AAAA,MAC5C,UAAK;AACC,QAASoH,MAAT,QACWC,EAAkB,UAA3B,SACCD,EAAe,QAAQC,EAAkB,QACzChD,EAAqB,IAAI+C;AAAA,MAClC;AAAA,IACA;AACI,UAAI;AACF,QAACA,IAAiBK,EAAO+hI,GAAWpjI,CAAO,GACzCqjI,GAAwBP,GAAa3hH,GAAMngB,CAAc;AAAA,MACjE,SAAauiI,IAAU;AACjB,QAAAD,GAAcR,GAAa3hH,GAAMoiH,EAAQ;AAAA,MAC/C;AAAA,EACA;AACA,WAASF,GAAwBP,GAAa3hH,GAAMjgB,GAAa;AAC/D,IAASA,MAAT,QACa,OAAOA,KAApB,YACe,OAAOA,EAAY,QAAlC,aACIA,EAAY;AAAA,MACV,SAAUsiI,GAAW;AACnB,QAAAC,GAAgBX,GAAa3hH,GAAMqiH,CAAS;AAAA,MACtD;AAAA,MACQ,SAAU5pI,GAAO;AACf,eAAO0pI,GAAcR,GAAa3hH,GAAMvnB,CAAK;AAAA,MACvD;AAAA,IACA,IACM6pI,GAAgBX,GAAa3hH,GAAMjgB,CAAW;AAAA,EACpD;AACA,WAASuiI,GAAgBX,GAAaI,GAAYM,GAAW;AAC3D,IAAAN,EAAW,SAAS,aACpBA,EAAW,QAAQM,GACnBE,GAAsBR,CAAU,GAChCJ,EAAY,QAAQU,GACpBN,IAAaJ,EAAY,SAChBI,MAAT,SACIM,IAAYN,EAAW,MACzBM,MAAcN,IACTJ,EAAY,UAAU,QACrBU,IAAYA,EAAU,MACvBN,EAAW,OAAOM,GACnBL,GAAqBL,GAAaU,CAAS;AAAA,EACnD;AACA,WAASF,GAAcR,GAAaI,GAAYtpI,GAAO;AACrD,QAAIi4G,IAAOixB,EAAY;AAEvB,QADAA,EAAY,UAAU,MACTjxB,MAAT,MAAe;AACjB,MAAAA,IAAOA,EAAK;AACZ;AACE,QAACqxB,EAAW,SAAS,YAClBA,EAAW,SAAStpI,GACrB8pI,GAAsBR,CAAU,GAC/BA,IAAaA,EAAW;AAAA,aACtBA,MAAerxB;AAAA,IAC1B;AACE,IAAAixB,EAAY,SAAS;AAAA,EACvB;AACA,WAASY,GAAsBR,GAAY;AACzC,IAAAA,IAAaA,EAAW;AACxB,aAASt0I,IAAI,GAAGA,IAAIs0I,EAAW,QAAQt0I,IAAK,KAAIs0I,EAAWt0I,CAAC,GAAC;AAAA,EAC/D;AACA,WAAS+0I,GAAmBC,GAAUpnH,GAAU;AAC9C,WAAOA;AAAA,EACT;AACA,WAASqnH,GAAiBxiI,GAAQyiI,GAAkB;AAClD,QAAI1d,IAAa;AACf,UAAI2d,IAAerM,GAAmB;AACtC,UAAaqM,MAAT,MAAuB;AACzB,QAAAt1I,GAAG;AACD,cAAIwuH,IAA2BwhB;AAC/B,cAAIrY,IAAa;AACf,gBAAIoN,IAAwB;AAC1B,cAAA5sH,GAAG;AAED,yBADIo9H,IAAoCxQ,IAElCyQ,IAAoBvQ,IAClBsQ,EAAkC,aAAxC,KAEA;AACA,sBAAI,CAACC,GAAmB;AACtB,oBAAAD,IAAoC;AACpC,0BAAMp9H;AAAA,kBACxB;AAIgB,sBAHAo9H,IAAoCvP;AAAA,oBAClCuP,EAAkC;AAAA,qBAEvBA,MAAT,MAA4C;AAC9C,oBAAAA,IAAoC;AACpC,0BAAMp9H;AAAA,kBACxB;AAAA,gBACA;AACc,gBAAAq9H,IAAoBD,EAAkC,MACtDA,IACWC,MAAT,QAAsCA,MAAR,MAC1BD,IACA;AAAA,cACpB;AACY,kBAAIA,GAAmC;AACrC,gBAAAxQ,KAAyBiB;AAAA,kBACvBuP,EAAkC;AAAA,mBAEpC/mB,IACW+mB,EAAkC,SAA3C;AACF,sBAAMv1I;AAAA,cACpB;AAAA,YACA;AACU,YAAAmlI,GAAyB3W,CAAwB;AAAA,UAC3D;AACQ,UAAAA,IAA2B;AAAA,QACnC;AACM,QAAAA,MAA6B6mB,IAAmBC,EAAa,CAAC;AAAA,MACpE;AAAA,IACA;AACE,WAAAA,IAAerD,GAAuB,GACtCqD,EAAa,gBAAgBA,EAAa,YAAYD,GACtD7mB,IAA2B;AAAA,MACzB,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,qBAAqB0mB;AAAA,MACrB,mBAAmBG;AAAA,OAErBC,EAAa,QAAQ9mB,GACrB8mB,IAAeG,GAAiB;AAAA,MAC9B;AAAA,MACAzF;AAAA,MACAxhB;AAAA,OAEFA,EAAyB,WAAW8mB,GACpC9mB,IAA2BylB,GAAe,EAAE,GAC5CuB,IAAoBE,GAA2B;AAAA,MAC7C;AAAA,MACA1F;AAAA,MACA;AAAA,MACAxhB,EAAyB;AAAA,OAE3BA,IAA2ByjB,GAAuB,GAClDsD,IAAoC;AAAA,MAClC,OAAOF;AAAA,MACP,UAAU;AAAA,MACV,QAAQziI;AAAA,MACR,SAAS;AAAA,OAEX47G,EAAyB,QAAQ+mB,GACjCD,IAAelB,GAAoB;AAAA,MACjC;AAAA,MACApE;AAAA,MACAuF;AAAA,MACAC;AAAA,MACAF;AAAA,OAEFC,EAAkC,WAAWD,GAC7C9mB,EAAyB,gBAAgB57G,GAClC,CAACyiI,GAAkBC,GAAc,EAAE;AAAA,EAC5C;AACA,WAASK,GAAkB/iI,GAAQ;AACjC,QAAIgjI,IAAY1D,GAAwB;AACxC,WAAO2D,GAAsBD,GAAW3F,IAAar9H,CAAM;AAAA,EAC7D;AACA,WAASijI,GAAsBD,GAAWE,GAAkBljI,GAAQ;AAOlE,QANAkjI,IAAmBpD;AAAA,MACjBkD;AAAA,MACAE;AAAA,MACAZ;AAAA,MACA,CAAC,GACHU,IAAYnD,GAAcD,EAAiB,EAAE,CAAC,GAE/B,OAAOsD,KAApB,YACSA,MAAT,QACe,OAAOA,EAAiB,QAAvC;AAEA,UAAI;AACF,YAAIr0H,IAAQmwH,GAAYkE,CAAgB;AAAA,MAC9C,SAAa3hI,GAAG;AACV,cAAIA,MAAMo1H,KAAyBE,KAC7Bt1H;AAAA,MACZ;AAAA,QACO,CAAAsN,IAAQq0H;AACb,IAAAA,IAAmB5D,GAAwB;AAC3C,QAAImC,IAAcyB,EAAiB,OACjC5C,IAAWmB,EAAY;AACzB,WAAAzhI,MAAWkjI,EAAiB,kBACxB9F,GAAwB,SAAS,MACnCyD;AAAA,MACE;AAAA,MACA,EAAE,SAAS,OAAM;AAAA,MACjBsC,GAAwB,KAAK,MAAM1B,GAAazhI,CAAM;AAAA,MACtD;AAAA,IACN,IACS,CAAC6O,GAAOyxH,GAAU0C,CAAS;AAAA,EACpC;AACA,WAASG,GAAwB1B,GAAazhI,GAAQ;AACpD,IAAAyhI,EAAY,SAASzhI;AAAA,EACvB;AACA,WAASojI,GAAoBpjI,GAAQ;AACnC,QAAIgjI,IAAY1D,GAAwB,GACtC4D,IAAmB7F;AACrB,QAAa6F,MAAT;AACF,aAAOD,GAAsBD,GAAWE,GAAkBljI,CAAM;AAClE,IAAAs/H,GAAwB,GACxB0D,IAAYA,EAAU,eACtBE,IAAmB5D,GAAwB;AAC3C,QAAIgB,IAAW4C,EAAiB,MAAM;AACtC,WAAAA,EAAiB,gBAAgBljI,GAC1B,CAACgjI,GAAW1C,GAAU,EAAE;AAAA,EACjC;AACA,WAASO,GAAiBtkG,GAAKg7B,GAAMj3D,GAAQH,GAAM;AACjD,WAAAo8B,IAAM,EAAE,KAAKA,GAAK,QAAQj8B,GAAQ,MAAMH,GAAM,MAAMo3D,GAAM,MAAM,KAAI,GACpEA,IAAO6lE,GAAwB,aACtB7lE,MAAT,SACIA,IAAOkoE,GAAkC,GAC1CrC,GAAwB,cAAc7lE,IACzCj3D,IAASi3D,EAAK,YACLj3D,MAAT,OACKi3D,EAAK,aAAah7B,EAAI,OAAOA,KAC5Bp8B,IAAOG,EAAO,MACfA,EAAO,OAAOi8B,GACdA,EAAI,OAAOp8B,GACXo3D,EAAK,aAAah7B,IAChBA;AAAA,EACT;AACA,WAAS8mG,KAAY;AACnB,WAAO/D,GAAwB,EAAG;AAAA,EACpC;AACA,WAASgE,GAAgBC,GAAYC,GAAWljI,GAAQH,GAAM;AAC5D,QAAIonF,IAAO83C,GAAuB;AAClC,IAAAjC,GAAwB,SAASmG,GACjCh8C,EAAK,gBAAgBs5C;AAAA,MACnB,IAAI2C;AAAA,MACJ,EAAE,SAAS,OAAM;AAAA,MACjBljI;AAAA,MACWH,MAAX,SAAkB,OAAOA;AAAA;EAE7B;AACA,WAASsjI,GAAiBF,GAAYC,GAAWljI,GAAQH,GAAM;AAC7D,QAAIonF,IAAO+3C,GAAwB;AACnC,IAAAn/H,IAAkBA,MAAX,SAAkB,OAAOA;AAChC,QAAIo3D,IAAOgwB,EAAK,cAAc;AAC9B,IAAS81C,OAAT,QACSl9H,MAAT,QACA29H,GAAmB39H,GAAMk9H,GAAY,cAAc,IAAI,IAClD91C,EAAK,gBAAgBs5C,GAAiB2C,GAAWjsE,GAAMj3D,GAAQH,CAAI,KAClEi9H,GAAwB,SAASmG,GAClCh8C,EAAK,gBAAgBs5C;AAAA,MACpB,IAAI2C;AAAA,MACJjsE;AAAA,MACAj3D;AAAA,MACAH;AAAA,IACR;AAAA,EACA;AACA,WAASujI,GAAYpjI,GAAQH,GAAM;AACjC,IAAAmjI,GAAgB,SAAS,GAAGhjI,GAAQH,CAAI;AAAA,EAC1C;AACA,WAASwgI,GAAargI,GAAQH,GAAM;AAClC,IAAAsjI,GAAiB,MAAM,GAAGnjI,GAAQH,CAAI;AAAA,EACxC;AACA,WAASwjI,GAAmBhlI,GAAS;AACnC,IAAAy+H,GAAwB,SAAS;AACjC,QAAIwG,IAAuBxG,GAAwB;AACnD,QAAawG,MAAT;AACF,MAACA,IAAuBnE,GAAkC,GACvDrC,GAAwB,cAAcwG,GACtCA,EAAqB,SAAS,CAACjlI,CAAO;AAAA,SACtC;AACH,UAAIwtG,IAASy3B,EAAqB;AAClC,MAASz3B,MAAT,OACKy3B,EAAqB,SAAS,CAACjlI,CAAO,IACvCwtG,EAAO,KAAKxtG,CAAO;AAAA,IAC3B;AAAA,EACA;AACA,WAASklI,GAAYtnI,GAAU;AAC7B,QAAIgE,IAAM++H,GAAwB,EAAG;AACrC,WAAAqE,GAAmB,EAAE,KAAKpjI,GAAK,UAAUhE,EAAQ,CAAE,GAC5C,WAAY;AACjB,WAAWq+H,KAAmB,OAA1B,EAA8B,OAAM,MAAM/tE,EAAuB,GAAG,CAAC;AACzE,aAAOtsD,EAAI,KAAK,MAAM,QAAQ,SAAS;AAAA,IAC3C;AAAA,EACA;AACA,WAASujI,GAAsBxjI,GAAQH,GAAM;AAC3C,WAAOsjI,GAAiB,GAAG,GAAGnjI,GAAQH,CAAI;AAAA,EAC5C;AACA,WAAS4jI,GAAmBzjI,GAAQH,GAAM;AACxC,WAAOsjI,GAAiB,GAAG,GAAGnjI,GAAQH,CAAI;AAAA,EAC5C;AACA,WAAS6jI,GAAuB1jI,GAAQC,GAAK;AAC3C,QAAmB,OAAOA,KAAtB,YAA2B;AAC7B,MAAAD,IAASA,EAAM;AACf,UAAI2jI,IAAa1jI,EAAID,CAAM;AAC3B,aAAO,WAAY;AACjB,QAAe,OAAO2jI,KAAtB,aAAmCA,EAAU,IAAK1jI,EAAI,IAAI;AAAA,MAChE;AAAA,IACA;AACE,QAAaA,KAAT;AACF,aACGD,IAASA,EAAM,GACfC,EAAI,UAAUD,GACf,WAAY;AACV,QAAAC,EAAI,UAAU;AAAA,MACtB;AAAA,EAEA;AACA,WAAS2jI,GAAuB3jI,GAAKD,GAAQH,GAAM;AACjD,IAAAA,IAAgBA,KAAT,OAAmCA,EAAK,OAAO,CAACI,CAAG,CAAC,IAAI,MAC/DkjI,GAAiB,GAAG,GAAGO,GAAuB,KAAK,MAAM1jI,GAAQC,CAAG,GAAGJ,CAAI;AAAA,EAC7E;AACA,WAASgkI,KAAkB;AAAA,EAAA;AAC3B,WAASC,GAAe7nI,GAAU4D,GAAM;AACtC,QAAIonF,IAAO+3C,GAAwB;AACnC,IAAAn/H,IAAkBA,MAAX,SAAkB,OAAOA;AAChC,QAAI4hI,IAAYx6C,EAAK;AACrB,WAAapnF,MAAT,QAAiB29H,GAAmB39H,GAAM4hI,EAAU,CAAC,CAAC,IACjDA,EAAU,CAAC,KACpBx6C,EAAK,gBAAgB,CAAChrF,GAAU4D,CAAI,GAC7B5D;AAAA,EACT;AACA,WAAS8nI,GAAWC,GAAYnkI,GAAM;AACpC,QAAIonF,IAAO+3C,GAAwB;AACnC,IAAAn/H,IAAkBA,MAAX,SAAkB,OAAOA;AAChC,QAAI4hI,IAAYx6C,EAAK;AACrB,QAAapnF,MAAT,QAAiB29H,GAAmB39H,GAAM4hI,EAAU,CAAC,CAAC;AACxD,aAAOA,EAAU,CAAC;AAEpB,QADAA,IAAYuC,EAAU,GAClB7G,IAAqC;AACvC,MAAAvf,GAA2B,EAAE;AAC7B,UAAI;AACF,QAAAomB,EAAU;AAAA,MAChB,UAAK;AACC,QAAApmB,GAA2B,EAAE;AAAA,MACnC;AAAA,IACA;AACE,WAAA32B,EAAK,gBAAgB,CAACw6C,GAAW5hI,CAAI,GAC9B4hI;AAAA,EACT;AACA,WAASwC,GAAuBh9C,GAAMzzF,GAAOuM,GAAc;AACzD,WACaA,MAAX,WACQk/G,KAAc,gBAArB,MACQwc,KAAgC,YAAvC,IAEMx0C,EAAK,gBAAgBzzF,KAC/ByzF,EAAK,gBAAgBlnF,GACrBknF,IAAOi9C,GAAmB,GAC1BpH,GAAwB,SAAS71C,GACjCy0C,MAAkCz0C,GAC3BlnF;AAAA,EACT;AACA,WAASokI,GAAwBl9C,GAAM1tF,GAAW/F,GAAOuM,GAAc;AACrE,WAAI42D,GAASnjE,GAAO+F,CAAS,IAAU/F,IAC1BqoI,GAA6B,YAAtC,QAEC50C,IAAOg9C,GAAuBh9C,GAAMzzF,GAAOuM,CAAY,GACxD42D,GAASswB,GAAM1tF,CAAS,MAAM6kI,KAAmB,KACjDn3C,MAGKg4B,KAAc,QAArB,MACQA,KAAc,gBAArB,MACQwc,KAAgC,YAAvC,KAEM2C,KAAmB,IAAMn3C,EAAK,gBAAgBzzF,MACxDyzF,IAAOi9C,GAAmB,GAC1BpH,GAAwB,SAAS71C,GACjCy0C,MAAkCz0C,GAC3B1tF;AAAA,EACT;AACA,WAAS6qI,GAAgBhrB,GAAO0V,GAAOuV,GAAcC,GAAeroI,GAAU;AAC5E,QAAImlH,IAAmB5G,EAAwB;AAC/C,IAAAA,EAAwB,IAChB4G,MAAN,KAA0B,IAAIA,IAAmBA,IAAmB;AACtE,QAAI/hH,IAAiB/C,EAAqB,GACxCgD,IAAoB,CAAA;AACtB,IAAAhD,EAAqB,IAAIgD,GACzBkjI,GAA2BppB,GAAO,IAAI0V,GAAOuV,CAAY;AACzD,QAAI;AACF,UAAI9kI,IAActD,EAAQ,GACxBuD,KAA0BlD,EAAqB;AAGjD,UAFSkD,OAAT,QACEA,GAAwBF,GAAmBC,CAAW,GAE7CA,MAAT,QACa,OAAOA,KAApB,YACe,OAAOA,EAAY,QAAlC,YACA;AACA,YAAIglI,KAA2B/O;AAAA,UAC7Bj2H;AAAA,UACA+kI;AAAA;AAEF,QAAAE;AAAA,UACEprB;AAAA,UACA0V;AAAA,UACAyV;AAAA,UACAE,GAAkBrrB,CAAK;AAAA;MAE/B;AACM,QAAAorB;AAAA,UACEprB;AAAA,UACA0V;AAAA,UACAwV;AAAA,UACAG,GAAkBrrB,CAAK;AAAA;IAE/B,SAAWnhH,IAAO;AACd,MAAAusI;AAAA,QACEprB;AAAA,QACA0V;AAAA,QACA,EAAE,MAAM,WAAY;AAAA,QAAA,GAAI,QAAQ,YAAY,QAAQ72H,GAAK;AAAA,QACzDwsI,GAAiB;AAAA;IAEvB,UAAG;AACC,MAACjqB,EAAwB,IAAI4G,GAClB/hH,MAAT,QACWC,EAAkB,UAA3B,SACCD,EAAe,QAAQC,EAAkB,QAC3ChD,EAAqB,IAAI+C;AAAA,IAChC;AAAA,EACA;AACA,WAAS7Q,KAAO;AAAA,EAAA;AAChB,WAASk2I,GAAoBC,GAAWN,GAAc3kI,GAAQklI,GAAU;AACtE,QAAUD,EAAU,QAAhB,EAAqB,OAAM,MAAMp4E,EAAuB,GAAG,CAAC;AAChE,QAAIuiE,IAAQ+V,GAA8BF,CAAS,EAAE;AACrD,IAAAP;AAAA,MACEO;AAAA,MACA7V;AAAA,MACAuV;AAAA,MACA5pB;AAAA,MACS/6G,MAAT,OACIlR,KACA,WAAY;AACV,eAAAs2I,GAAmBH,CAAS,GACrBjlI,EAAOklI,CAAQ;AAAA,MAChC;AAAA;EAEA;AACA,WAASC,GAA8BF,GAAW;AAChD,QAAII,IAAoBJ,EAAU;AAClC,QAAaI,MAAT,KAA4B,QAAOA;AACvC,IAAAA,IAAoB;AAAA,MAClB,eAAetqB;AAAA,MACf,WAAWA;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,qBAAqB6kB;AAAA,QACrB,mBAAmB7kB;AAAA;MAErB,MAAM;AAAA;AAER,QAAIuqB,IAAoB,CAAA;AACxB,WAAAD,EAAkB,OAAO;AAAA,MACvB,eAAeC;AAAA,MACf,WAAWA;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,qBAAqB1F;AAAA,QACrB,mBAAmB0F;AAAA;MAErB,MAAM;AAAA,OAERL,EAAU,gBAAgBI,GAC1BJ,IAAYA,EAAU,WACbA,MAAT,SAAuBA,EAAU,gBAAgBI,IAC1CA;AAAA,EACT;AACA,WAASD,GAAmBH,GAAW;AACrC,QAAIjC,IAAYmC,GAA8BF,CAAS;AACvD,IAASjC,EAAU,SAAnB,SAA4BA,IAAYiC,EAAU,UAAU,gBAC5DH;AAAA,MACEG;AAAA,MACAjC,EAAU,KAAK;AAAA,MACf,CAAA;AAAA,MACA+B,GAAiB;AAAA;EAErB;AACA,WAASQ,KAA0B;AACjC,WAAO5Q,GAAY7Y,EAAqB;AAAA,EAC1C;AACA,WAAS0pB,KAAW;AAClB,WAAOlG,GAAwB,EAAG;AAAA,EACpC;AACA,WAASmG,KAAgB;AACvB,WAAOnG,GAAwB,EAAG;AAAA,EACpC;AACA,WAASoG,GAAahsB,GAAO;AAC3B,aAASisB,IAAWjsB,EAAM,QAAiBisB,MAAT,QAAqB;AACrD,cAAQA,EAAS,KAAG;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,cAAIlmB,IAAOslB,GAAiB;AAC5B,UAAArrB,IAAQ+gB,GAAahb,CAAI;AACzB,cAAImmB,IAAUlL,GAAciL,GAAUjsB,GAAO+F,CAAI;AACjD,UAASmmB,MAAT,SACGxE,GAAsBwE,GAASD,GAAUlmB,CAAI,GAC9Cob,GAAoB+K,GAASD,GAAUlmB,CAAI,IAC7CkmB,IAAW,EAAE,OAAOvQ,KAAa,GACjC1b,EAAM,UAAUisB;AAChB;AAAA,MACR;AACI,MAAAA,IAAWA,EAAS;AAAA,IACxB;AAAA,EACA;AACA,WAASE,GAAsBnsB,GAAO0V,GAAOpvH,GAAQ;AACnD,QAAIy/G,IAAOslB,GAAiB;AAC5B,IAAA/kI,IAAS;AAAA,MACP,MAAMy/G;AAAA,MACN,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQz/G;AAAA,MACR,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,MAAM;AAAA,OAER4hI,GAAoBloB,CAAK,IACrBosB,GAAyB1W,GAAOpvH,CAAM,KACpCA,IAASuvH,GAA4B7V,GAAO0V,GAAOpvH,GAAQy/G,CAAI,GACxDz/G,MAAT,SACGohI,GAAsBphI,GAAQ05G,GAAO+F,CAAI,GAC1CsmB,GAAyB/lI,GAAQovH,GAAO3P,CAAI;AAAA,EACpD;AACA,WAASojB,GAAiBnpB,GAAO0V,GAAOpvH,GAAQ;AAC9C,QAAIy/G,IAAOslB,GAAiB;AAC5B,IAAAD,GAAyBprB,GAAO0V,GAAOpvH,GAAQy/G,CAAI;AAAA,EACrD;AACA,WAASqlB,GAAyBprB,GAAO0V,GAAOpvH,GAAQy/G,GAAM;AAC5D,QAAI97G,IAAS;AAAA,MACX,MAAM87G;AAAA,MACN,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQz/G;AAAA,MACR,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,MAAM;AAAA;AAER,QAAI4hI,GAAoBloB,CAAK,EAAG,CAAAosB,GAAyB1W,GAAOzrH,CAAM;AAAA,SACjE;AACH,UAAIu2G,IAAYR,EAAM;AACtB,UACQA,EAAM,UAAZ,MACUQ,MAAT,QAA4BA,EAAU,UAAhB,OACrBA,IAAYkV,EAAM,qBAA+BlV,MAAT;AAE1C,YAAI;AACF,cAAI8rB,IAAe5W,EAAM,mBACvB6W,IAAa/rB,EAAU8rB,GAAchmI,CAAM;AAG7C,cAFA2D,EAAO,gBAAgB,IACvBA,EAAO,aAAasiI,GAChBhvE,GAASgvE,GAAYD,CAAY;AACnC,mBACE1W,GAAgB5V,GAAO0V,GAAOzrH,GAAQ,CAAC,GAC9B0yH,OAAT,QAA+BlH,GAA+B,GAC9D;AAAA,QAEZ,QAAsB;AAAA,QACtB,UAAO;AAAA,QACP;AAEI,UADAnvH,IAASuvH,GAA4B7V,GAAO0V,GAAOzrH,GAAQ87G,CAAI,GAClDz/G,MAAT;AACF,eACEohI,GAAsBphI,GAAQ05G,GAAO+F,CAAI,GACzCsmB,GAAyB/lI,GAAQovH,GAAO3P,CAAI,GAC5C;AAAA,IAER;AACE,WAAO;AAAA,EACT;AACA,WAASqjB,GAA2BppB,GAAOwsB,GAAqB9W,GAAOpvH,GAAQ;AAU7E,QATAA,IAAS;AAAA,MACP,MAAM;AAAA,MACN,YAAY41H,GAAqB;AAAA,MACjC,SAAS;AAAA,MACT,QAAQ51H;AAAA,MACR,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,MAAM;AAAA,OAEJ4hI,GAAoBloB,CAAK;AAC3B,UAAIwsB,EAAqB,OAAM,MAAMr5E,EAAuB,GAAG,CAAC;AAAA;AAEhE,MAACq5E,IAAsB3W;AAAA,QACrB7V;AAAA,QACA0V;AAAA,QACApvH;AAAA,QACA;AAAA,SAESkmI,MAAT,QACE9E,GAAsB8E,GAAqBxsB,GAAO,CAAC;AAAA,EAC3D;AACA,WAASkoB,GAAoBloB,GAAO;AAClC,QAAIQ,IAAYR,EAAM;AACtB,WACEA,MAAU0jB,MACAljB,MAAT,QAAsBA,MAAckjB;AAAA,EAEzC;AACA,WAAS0I,GAAyB1W,GAAOzrH,GAAQ;AAC/C,IAAA65H,KAA6CD,KAC3C;AACF,QAAIv8F,IAAUouF,EAAM;AACpB,IAASpuF,MAAT,OACKr9B,EAAO,OAAOA,KACbA,EAAO,OAAOq9B,EAAQ,MAAQA,EAAQ,OAAOr9B,IACnDyrH,EAAM,UAAUzrH;AAAA,EAClB;AACA,WAASoiI,GAAyBhkD,GAAMqtC,GAAO3P,GAAM;AACnD,SAAWA,IAAO,aAAd,GAAwB;AAC1B,UAAIqb,IAAa1L,EAAM;AACvB,MAAA0L,KAAc/4C,EAAK,cACnB09B,KAAQqb,GACR1L,EAAM,QAAQ3P,GACdsB,GAAkBh/B,GAAM09B,CAAI;AAAA,IAChC;AAAA,EACA;AACA,MAAI+e,KAAwB;AAAA,IAC1B,aAAa7J;AAAA,IACb,KAAKlzH;AAAA,IACL,aAAao8H;AAAA,IACb,YAAYA;AAAA,IACZ,WAAWA;AAAA,IACX,qBAAqBA;AAAA,IACrB,iBAAiBA;AAAA,IACjB,oBAAoBA;AAAA,IACpB,SAASA;AAAA,IACT,YAAYA;AAAA,IACZ,QAAQA;AAAA,IACR,UAAUA;AAAA,IACV,eAAeA;AAAA,IACf,kBAAkBA;AAAA,IAClB,eAAeA;AAAA,IACf,sBAAsBA;AAAA,IACtB,OAAOA;AAAA,IACP,yBAAyBA;AAAA,IACzB,cAAcA;AAAA,IACd,gBAAgBA;AAAA,IAChB,eAAeA;AAAA,IACf,cAAcA;AAAA,IACd,iBAAiBA;AAAA;AAEnB,EAAAW,GAAsB,iBAAiBX;AACvC,MAAIO,KAAyB;AAAA,IACzB,aAAazJ;AAAA,IACb,KAAKlzH;AAAA,IACL,aAAa,SAAUlF,GAAU4D,GAAM;AACrC,aAAAk/H,GAAuB,EAAG,gBAAgB;AAAA,QACxC9iI;AAAA,QACW4D,MAAX,SAAkB,OAAOA;AAAA,SAEpB5D;AAAA,IACb;AAAA,IACI,YAAYo4H;AAAA,IACZ,WAAW+O;AAAA,IACX,qBAAqB,SAAUnjI,GAAKD,GAAQH,GAAM;AAChD,MAAAA,IAAgBA,KAAT,OAAmCA,EAAK,OAAO,CAACI,CAAG,CAAC,IAAI,MAC/D+iI;AAAA,QACE;AAAA,QACA;AAAA,QACAU,GAAuB,KAAK,MAAM1jI,GAAQC,CAAG;AAAA,QAC7CJ;AAAA;IAER;AAAA,IACI,iBAAiB,SAAUG,GAAQH,GAAM;AACvC,aAAOmjI,GAAgB,SAAS,GAAGhjI,GAAQH,CAAI;AAAA,IACrD;AAAA,IACI,oBAAoB,SAAUG,GAAQH,GAAM;AAC1C,MAAAmjI,GAAgB,GAAG,GAAGhjI,GAAQH,CAAI;AAAA,IACxC;AAAA,IACI,SAAS,SAAUmkI,GAAYnkI,GAAM;AACnC,UAAIonF,IAAO83C,GAAuB;AAClC,MAAAl/H,IAAkBA,MAAX,SAAkB,OAAOA;AAChC,UAAImC,IAAYgiI,EAAU;AAC1B,UAAI7G,IAAqC;AACvC,QAAAvf,GAA2B,EAAE;AAC7B,YAAI;AACF,UAAAomB,EAAU;AAAA,QACpB,UAAS;AACC,UAAApmB,GAA2B,EAAE;AAAA,QACvC;AAAA,MACA;AACM,aAAA32B,EAAK,gBAAgB,CAACjlF,GAAWnC,CAAI,GAC9BmC;AAAA,IACb;AAAA,IACI,YAAY,SAAU9B,GAASC,GAAYC,GAAM;AAC/C,UAAI6mF,IAAO83C,GAAuB;AAClC,UAAe3+H,MAAX,QAAiB;AACnB,YAAIT,IAAeS,EAAKD,CAAU;AAClC,YAAIg9H,IAAqC;AACvC,UAAAvf,GAA2B,EAAE;AAC7B,cAAI;AACF,YAAAx9G,EAAKD,CAAU;AAAA,UAC3B,UAAW;AACC,YAAAy9G,GAA2B,EAAE;AAAA,UACzC;AAAA,QACA;AAAA,MACA,MAAa,CAAAj+G,IAAeQ;AACtB,aAAA8mF,EAAK,gBAAgBA,EAAK,YAAYtnF,GACtCO,IAAU;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,qBAAqBA;AAAA,QACrB,mBAAmBP;AAAA,SAErBsnF,EAAK,QAAQ/mF,GACbA,IAAUA,EAAQ,WAAWqlI,GAAsB;AAAA,QACjD;AAAA,QACAzI;AAAA,QACA58H;AAAA,SAEK,CAAC+mF,EAAK,eAAe/mF,CAAO;AAAA,IACzC;AAAA,IACI,QAAQ,SAAUH,GAAc;AAC9B,UAAIknF,IAAO83C,GAAuB;AAClC,aAAAh/H,IAAe,EAAE,SAASA,EAAY,GAC9BknF,EAAK,gBAAgBlnF;AAAA,IACnC;AAAA,IACI,UAAU,SAAUJ,GAAc;AAChC,MAAAA,IAAeohI,GAAephI,CAAY;AAC1C,UAAImvH,IAAQnvH,EAAa,OACvBqgI,IAAWuC,GAAiB,KAAK,MAAMzF,IAAyBhO,CAAK;AACvE,aAAAA,EAAM,WAAWkR,GACV,CAACrgI,EAAa,eAAeqgI,CAAQ;AAAA,IAClD;AAAA,IACI,eAAe6D;AAAA,IACf,kBAAkB,SAAUrwI,GAAOuM,GAAc;AAC/C,UAAIknF,IAAO83C,GAAuB;AAClC,aAAOkF,GAAuBh9C,GAAMzzF,GAAOuM,CAAY;AAAA,IAC7D;AAAA,IACI,eAAe,WAAY;AACzB,UAAI2iI,IAAY3B,GAAe,EAAE;AACjC,aAAA2B,IAAY0B,GAAgB;AAAA,QAC1B;AAAA,QACAtH;AAAA,QACA4F,EAAU;AAAA,QACV;AAAA,QACA;AAAA,SAEF3D,GAAuB,EAAG,gBAAgB2D,GACnC,CAAC,IAAIA,CAAS;AAAA,IAC3B;AAAA,IACI,sBAAsB,SAAUriI,GAAWC,GAAaC,GAAmB;AACzE,UAAI64G,IAAQ0jB,IACV71C,IAAO83C,GAAuB;AAChC,UAAIta,IAAa;AACf,YAAelkH,MAAX;AACF,gBAAM,MAAMgsD,EAAuB,GAAG,CAAC;AACzC,QAAAhsD,IAAoBA,EAAiB;AAAA,MAC7C,OAAa;AAEL,YADAA,IAAoBD,EAAW,GAClBy1H,OAAT;AACF,gBAAM,MAAMxpE,EAAuB,GAAG,CAAC;AACzC,SAAOkvE,KAAgC,SAAvC,KACEgF,GAA0BrnB,GAAO94G,GAAaC,CAAiB;AAAA,MACzE;AACM,MAAA0mF,EAAK,gBAAgB1mF;AACrB,UAAI02D,IAAO,EAAE,OAAO12D,GAAmB,aAAaD,EAAW;AAC/D,aAAA2mF,EAAK,QAAQhwB,GACbmsE,GAAY9C,GAAiB,KAAK,MAAMlnB,GAAOniD,GAAM52D,CAAS,GAAG;AAAA,QAC/DA;AAAA,MACR,CAAO,GACD+4G,EAAM,SAAS,MACfmnB;AAAA,QACE;AAAA,QACA,EAAE,SAAS,OAAM;AAAA,QACjBC,GAAoB;AAAA,UAClB;AAAA,UACApnB;AAAA,UACAniD;AAAA,UACA12D;AAAA,UACAD;AAAA;QAEF;AAAA,SAEKC;AAAA,IACb;AAAA,IACI,OAAO,WAAY;AACjB,UAAI0mF,IAAO83C,GAAuB,GAChC8G,IAAmB9P,GAAmB;AACxC,UAAItR,IAAa;AACf,YAAInJ,IAA2B2V,IAC3B6U,IAAmB9U;AACvB,QAAA1V,KAEIwqB,IAAmB,EAAE,KAAM,KAAKhoB,GAAMgoB,CAAgB,IAAI,IAC1D,SAAS,EAAE,IAAIxqB,GACnBuqB,IACE,MAAMA,IAAmB,OAAOvqB,GAClCA,IAA2B8hB,MAC3B,IAAI9hB,MACDuqB,KAAoB,MAAMvqB,EAAyB,SAAS,EAAE,IACjEuqB,KAAoB;AAAA,MAC5B;AACQ,QAACvqB,IAA2BgiB,MACzBuI,IACC,MACAA,IACA,OACAvqB,EAAyB,SAAS,EAAE,IACpC;AACN,aAAQr0B,EAAK,gBAAgB4+C;AAAA,IACnC;AAAA,IACI,yBAAyBZ;AAAA,IACzB,cAAc/C;AAAA,IACd,gBAAgBA;AAAA,IAChB,eAAe,SAAU10I,GAAa;AACpC,UAAIy5F,IAAO83C,GAAuB;AAClC,MAAA93C,EAAK,gBAAgBA,EAAK,YAAYz5F;AACtC,UAAIshI,IAAQ;AAAA,QACV,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,qBAAqB;AAAA,QACrB,mBAAmB;AAAA;AAErB,aAAA7nC,EAAK,QAAQ6nC,GACb7nC,IAAOu7C,GAA2B;AAAA,QAChC;AAAA,QACA1F;AAAA,QACA;AAAA,QACAhO;AAAA,SAEFA,EAAM,WAAW7nC,GACV,CAACz5F,GAAay5F,CAAI;AAAA,IAC/B;AAAA,IACI,cAAcm4C;AAAA,IACd,iBAAiB,WAAY;AAC3B,aAAQL,GAAuB,EAAG,gBAAgBqG,GAAa;AAAA,QAC7D;AAAA,QACAtI;AAAA;IAER;AAAA,IACI,gBAAgB,SAAU7gI,GAAU;AAClC,UAAIgrF,IAAO83C,GAAuB,GAChC9+H,IAAM,EAAE,MAAMhE,EAAQ;AACxB,aAAAgrF,EAAK,gBAAgBhnF,GACd,WAAY;AACjB,aAAWq6H,KAAmB,OAA1B;AACF,gBAAM,MAAM/tE,EAAuB,GAAG,CAAC;AACzC,eAAOtsD,EAAI,KAAK,MAAM,QAAQ,SAAS;AAAA,MAC/C;AAAA,IACA;AAAA,KAEE89H,KAA0B;AAAA,IACxB,aAAa1J;AAAA,IACb,KAAKlzH;AAAA,IACL,aAAa2iI;AAAA,IACb,YAAYzP;AAAA,IACZ,WAAWgM;AAAA,IACX,qBAAqBuD;AAAA,IACrB,oBAAoBJ;AAAA,IACpB,iBAAiBC;AAAA,IACjB,SAASM;AAAA,IACT,YAAYxE;AAAA,IACZ,QAAQwD;AAAA,IACR,UAAU,WAAY;AACpB,aAAOxD,GAAcD,EAAiB;AAAA,IAC5C;AAAA,IACI,eAAeuE;AAAA,IACf,kBAAkB,SAAUrwI,GAAOuM,GAAc;AAC/C,UAAIknF,IAAO+3C,GAAwB;AACnC,aAAOmF;AAAA,QACLl9C;AAAA,QACA81C,GAAY;AAAA,QACZvpI;AAAA,QACAuM;AAAA;IAER;AAAA,IACI,eAAe,WAAY;AACzB,UAAIgmI,IAAoBxG,GAAcD,EAAiB,EAAE,CAAC,GACxDx4H,IAAQk4H,GAAwB,EAAG;AACrC,aAAO;AAAA,QACS,OAAO+G,KAArB,YACIA,IACArH,GAAYqH,CAAiB;AAAA,QACjCj/H;AAAA;IAER;AAAA,IACI,sBAAsBo5H;AAAA,IACtB,OAAOgF;AAAA,IACP,yBAAyBD;AAAA,IACzB,cAAcxC;AAAA,IACd,gBAAgBA;AAAA,IAChB,eAAe,SAAUj1I,GAAa0S,GAAS;AAC7C,UAAI+mF,IAAO+3C,GAAwB;AACnC,aAAOiC,GAAqBh6C,GAAM81C,IAAavvI,GAAa0S,CAAO;AAAA,IACzE;AAAA,IACI,cAAck/H;AAAA,IACd,iBAAiB+F;AAAA;AAErB,EAAApH,GAAwB,iBAAiBwF;AACzC,MAAIjF,KAA4B;AAAA,IAC9B,aAAajK;AAAA,IACb,KAAKlzH;AAAA,IACL,aAAa2iI;AAAA,IACb,YAAYzP;AAAA,IACZ,WAAWgM;AAAA,IACX,qBAAqBuD;AAAA,IACrB,oBAAoBJ;AAAA,IACpB,iBAAiBC;AAAA,IACjB,SAASM;AAAA,IACT,YAAYhE;AAAA,IACZ,QAAQgD;AAAA,IACR,UAAU,WAAY;AACpB,aAAOhD,GAAgBT,EAAiB;AAAA,IAC5C;AAAA,IACE,eAAeuE;AAAA,IACf,kBAAkB,SAAUrwI,GAAOuM,GAAc;AAC/C,UAAIknF,IAAO+3C,GAAwB;AACnC,aAAgBjC,OAAT,OACHkH,GAAuBh9C,GAAMzzF,GAAOuM,CAAY,IAChDokI;AAAA,QACEl9C;AAAA,QACA81C,GAAY;AAAA,QACZvpI;AAAA,QACAuM;AAAA;IAEV;AAAA,IACE,eAAe,WAAY;AACzB,UAAIgmI,IAAoBhG,GAAgBT,EAAiB,EAAE,CAAC,GAC1Dx4H,IAAQk4H,GAAwB,EAAG;AACrC,aAAO;AAAA,QACS,OAAO+G,KAArB,YACIA,IACArH,GAAYqH,CAAiB;AAAA,QACjCj/H;AAAA;IAEN;AAAA,IACE,sBAAsBo5H;AAAA,IACtB,OAAOgF;AAAA,IACP,yBAAyBD;AAAA,IACzB,cAAcnC;AAAA,IACd,gBAAgBA;AAAA,IAChB,eAAe,SAAUt1I,GAAa0S,GAAS;AAC7C,UAAI+mF,IAAO+3C,GAAwB;AACnC,aAAajC,OAAT,OACKkE,GAAqBh6C,GAAM81C,IAAavvI,GAAa0S,CAAO,KACrE+mF,EAAK,YAAYz5F,GACV,CAACA,GAAay5F,EAAK,MAAM,QAAQ;AAAA,IAC5C;AAAA,IACE,cAAcm4C;AAAA,IACd,iBAAiB+F;AAAA;AAEnB,EAAA7G,GAA0B,iBAAiBiF;AAC3C,WAASyC,GACPppB,GACAt+G,GACA2nI,GACAC,GACA;AACA,IAAA5nI,IAAOs+G,EAAe,eACtBqpB,IAA2BA,EAAyBC,GAAW5nI,CAAI,GACnE2nI,IACWA,KAAT,OACI3nI,IACA5C,EAAO,CAAA,GAAI4C,GAAM2nI,CAAwB,GAC/CrpB,EAAe,gBAAgBqpB,GACzBrpB,EAAe,UAArB,MACGA,EAAe,YAAY,YAAYqpB;AAAA,EAC5C;AACA,MAAIE,KAAwB;AAAA,IAC1B,iBAAiB,SAAUlvE,GAAM54D,GAASpC,GAAU;AAClD,MAAAg7D,IAAOA,EAAK;AACZ,UAAIkoD,IAAOslB,GAAiB,GAC1BphI,IAAS82H,GAAahb,CAAI;AAC5B,MAAA97G,EAAO,UAAUhF,GACepC,KAAT,SAAsBoH,EAAO,WAAWpH,IAC/DoC,IAAU+7H,GAAcnjE,GAAM5zD,GAAQ87G,CAAI,GACjC9gH,MAAT,SACGyiI,GAAsBziI,GAAS44D,GAAMkoD,CAAI,GAC1Cob,GAAoBl8H,GAAS44D,GAAMkoD,CAAI;AAAA,IAC7C;AAAA,IACE,qBAAqB,SAAUloD,GAAM54D,GAASpC,GAAU;AACtD,MAAAg7D,IAAOA,EAAK;AACZ,UAAIkoD,IAAOslB,GAAiB,GAC1BphI,IAAS82H,GAAahb,CAAI;AAC5B,MAAA97G,EAAO,MAAM,GACbA,EAAO,UAAUhF,GACepC,KAAT,SAAsBoH,EAAO,WAAWpH,IAC/DoC,IAAU+7H,GAAcnjE,GAAM5zD,GAAQ87G,CAAI,GACjC9gH,MAAT,SACGyiI,GAAsBziI,GAAS44D,GAAMkoD,CAAI,GAC1Cob,GAAoBl8H,GAAS44D,GAAMkoD,CAAI;AAAA,IAC7C;AAAA,IACE,oBAAoB,SAAUloD,GAAMh7D,GAAU;AAC5C,MAAAg7D,IAAOA,EAAK;AACZ,UAAIkoD,IAAOslB,GAAiB,GAC1BphI,IAAS82H,GAAahb,CAAI;AAC5B,MAAA97G,EAAO,MAAM,GACmBpH,KAAT,SAAsBoH,EAAO,WAAWpH,IAC/DA,IAAWm+H,GAAcnjE,GAAM5zD,GAAQ87G,CAAI,GAClCljH,MAAT,SACG6kI,GAAsB7kI,GAAUg7D,GAAMkoD,CAAI,GAC3Cob,GAAoBt+H,GAAUg7D,GAAMkoD,CAAI;AAAA,IAC9C;AAAA;AAEA,WAASinB,GACPxpB,GACAt+G,GACA+nI,GACAC,GACArE,GACApnH,GACA0rH,GACA;AACA,WAAA3pB,IAAiBA,EAAe,WACV,OAAOA,EAAe,yBAArC,aACHA,EAAe,sBAAsB0pB,GAAUzrH,GAAU0rH,CAAW,IACpEjoI,EAAK,aAAaA,EAAK,UAAU,uBAC/B,CAAC+tH,GAAaga,GAAUC,CAAQ,KAAK,CAACja,GAAa4V,GAAUpnH,CAAQ,IACrE;AAAA,EACR;AACA,WAAS2rH,GACP5pB,GACA9vE,GACAw5F,GACAC,GACA;AACA,IAAA3pB,IAAiB9vE,EAAS,OACX,OAAOA,EAAS,6BAA/B,cACEA,EAAS,0BAA0Bw5F,GAAUC,CAAW,GAC3C,OAAOz5F,EAAS,oCAA/B,cACEA,EAAS,iCAAiCw5F,GAAUC,CAAW,GACjEz5F,EAAS,UAAU8vE,KACjBupB,GAAsB,oBAAoBr5F,GAAUA,EAAS,OAAO,IAAI;AAAA,EAC5E;AACA,WAAS25F,GAA2B7qI,GAAW8qI,GAAW;AACxD,QAAIJ,IAAWI;AACf,QAAI,SAASA,GAAW;AACtB,MAAAJ,IAAW,CAAA;AACX,eAAS16I,KAAY86I;AACnB,QAAU96I,MAAV,UAAuB06I,EAAS16I,CAAQ,IAAI86I,EAAU96I,CAAQ;AAAA,IACpE;AACE,QAAKgQ,IAAYA,EAAU,cAAe;AACxC,MAAA0qI,MAAaI,MAAcJ,IAAW5qI,EAAO,CAAA,GAAI4qI,CAAQ;AACzD,eAASK,KAAe/qI;AACtB,QAAW0qI,EAASK,CAAW,MAA/B,WACGL,EAASK,CAAW,IAAI/qI,EAAU+qI,CAAW;AAAA,IACtD;AACE,WAAOL;AAAA,EACT;AACA,WAASM,GAAuB3uI,GAAO;AACrC,IAAAuG,GAAkBvG,CAAK;AAAA,EACzB;AACA,WAAS4uI,GAAqB5uI,GAAO;AACnC,YAAQ,MAAMA,CAAK;AAAA,EACrB;AACA,WAAS6uI,GAA0B7uI,GAAO;AACxC,IAAAuG,GAAkBvG,CAAK;AAAA,EACzB;AACA,WAAS8uI,GAAiBtlD,GAAMulD,GAAW;AACzC,QAAI;AACF,UAAIC,IAAkBxlD,EAAK;AAC3B,MAAAwlD,EAAgBD,EAAU,OAAO,EAAE,gBAAgBA,EAAU,OAAO;AAAA,IACxE,SAAWE,GAAM;AACb,iBAAW,WAAY;AACrB,cAAMA;AAAA,MACZ,CAAK;AAAA,IACL;AAAA,EACA;AACA,WAASC,GAAe1lD,GAAMjc,GAAUwhE,GAAW;AACjD,QAAI;AACF,UAAII,IAAgB3lD,EAAK;AACzB,MAAA2lD,EAAcJ,EAAU,OAAO;AAAA,QAC7B,gBAAgBA,EAAU;AAAA,QAC1B,eAAqBxhE,EAAS,QAAf,IAAqBA,EAAS,YAAY;AAAA,MAC/D,CAAK;AAAA,IACL,SAAW6hE,GAAM;AACb,iBAAW,WAAY;AACrB,cAAMA;AAAA,MACZ,CAAK;AAAA,IACL;AAAA,EACA;AACA,WAASC,GAAsB7lD,GAAMulD,GAAW7nB,GAAM;AACpD,WAAAA,IAAOgb,GAAahb,CAAI,GACxBA,EAAK,MAAM,GACXA,EAAK,UAAU,EAAE,SAAS,KAAI,GAC9BA,EAAK,WAAW,WAAY;AAC1B,MAAA4nB,GAAiBtlD,GAAMulD,CAAS;AAAA,IACpC,GACS7nB;AAAA,EACT;AACA,WAASooB,GAAuBpoB,GAAM;AACpC,WAAAA,IAAOgb,GAAahb,CAAI,GACxBA,EAAK,MAAM,GACJA;AAAA,EACT;AACA,WAASqoB,GAA2BnkI,GAAQo+E,GAAM23B,GAAO4tB,GAAW;AAClE,QAAIS,IAA2BruB,EAAM,KAAK;AAC1C,QAAmB,OAAOquB,KAAtB,YAAgD;AAClD,UAAIxvI,IAAQ+uI,EAAU;AACtB,MAAA3jI,EAAO,UAAU,WAAY;AAC3B,eAAOokI,EAAyBxvI,CAAK;AAAA,MAC3C,GACIoL,EAAO,WAAW,WAAY;AAC5B,QAAA8jI,GAAe1lD,GAAM23B,GAAO4tB,CAAS;AAAA,MAC3C;AAAA,IACA;AACE,QAAI/vE,IAAOmiD,EAAM;AACjB,IAASniD,MAAT,QACiB,OAAOA,EAAK,qBAA3B,eACC5zD,EAAO,WAAW,WAAY;AAC7B,MAAA8jI,GAAe1lD,GAAM23B,GAAO4tB,CAAS,GACtB,OAAOS,KAAtB,eACYC,OAAT,OACIA,KAAyC,oBAAI,IAAI,CAAC,IAAI,CAAC,IACxDA,GAAuC,IAAI,IAAI;AACrD,UAAIhxI,IAAQswI,EAAU;AACtB,WAAK,kBAAkBA,EAAU,OAAO;AAAA,QACtC,gBAAyBtwI,MAAT,OAAiBA,IAAQ;AAAA,MACjD,CAAO;AAAA,IACP;AAAA,EACA;AACA,WAASixI,GACPlmD,GACAg2C,GACArI,GACA57H,GACAo0I,GACA;AAEA,QADAxY,EAAY,SAAS,OAEV57H,MAAT,QACa,OAAOA,KAApB,YACe,OAAOA,EAAM,QAA5B,YACA;AAUA,UATAikI,IAAcrI,EAAY,WACjBqI,MAAT,QACE1D;AAAA,QACE0D;AAAA,QACArI;AAAA,QACAwY;AAAA,QACA;AAAA,SAEJxY,IAAc+M,GAA2B,SAC5B/M,MAAT,MAAsB;AACxB,gBAAQA,EAAY,KAAG;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AACH,mBACWgN,OAAT,OACIyL,GAA+B,IACtBzY,EAAY,cAArB,QACM0Y,OAAN,MACCA,KAA+B,IACnC1Y,EAAY,SAAS,MACrBA,EAAY,SAAS,OACrBA,EAAY,QAAQwY,GACrBp0I,MAAUgjI,KACLpH,EAAY,SAAS,SACpBqI,IAAcrI,EAAY,aACnBqI,MAAT,OACKrI,EAAY,cAAc,oBAAI,IAAI,CAAC57H,CAAK,CAAC,IAC1CikI,EAAY,IAAIjkI,CAAK,GACzBu0I,GAAmBtmD,GAAMjuF,GAAOo0I,CAAe,IACnD;AAAA,UAEJ,KAAK;AACH,mBACGxY,EAAY,SAAS,OACtB57H,MAAUgjI,KACLpH,EAAY,SAAS,SACpBqI,IAAcrI,EAAY,aACnBqI,MAAT,QACMA,IAAc;AAAA,cACd,aAAa;AAAA,cACb,iBAAiB;AAAA,cACjB,YAAY,oBAAI,IAAI,CAACjkI,CAAK,CAAC;AAAA,eAE5B47H,EAAY,cAAcqI,MACzBrI,IAAcqI,EAAY,YACnBrI,MAAT,OACKqI,EAAY,aAAa,oBAAI,IAAI,CAACjkI,CAAK,CAAC,IACzC47H,EAAY,IAAI57H,CAAK,IAC7Bu0I,GAAmBtmD,GAAMjuF,GAAOo0I,CAAe,IACnD;AAAA,QAEZ;AACM,cAAM,MAAMr7E,EAAuB,KAAK6iE,EAAY,GAAG,CAAC;AAAA,MAC9D;AACI,aAAA2Y,GAAmBtmD,GAAMjuF,GAAOo0I,CAAe,GAC/CC,GAA+B,GACxB;AAAA,IACX;AACE,QAAIpjB;AACF,aACGgT,IAAc0E,GAA2B,SACjC1E,MAAT,SACYA,EAAY,QAAQ,WAA3B,MAAsCA,EAAY,SAAS,MAC3DA,EAAY,SAAS,OACrBA,EAAY,QAAQmQ,GACrBp0I,MAAUw+H,OACNvwC,IAAO,MAAMl1B,EAAuB,GAAG,GAAG,EAAE,OAAO/4D,GAAO,GAC5D0+H,GAAoB1B,GAA2B/uC,GAAM2tC,CAAW,CAAC,OAClE57H,MAAUw+H,OACPyF,IAAc,MAAMlrE,EAAuB,GAAG,GAAG;AAAA,QACjD,OAAO/4D;AAAA,MACrB,CAAa,GACD0+H;AAAA,QACE1B,GAA2BiH,GAAarI,CAAW;AAAA,MACjE,IACW3tC,IAAOA,EAAK,QAAQ,WACpBA,EAAK,SAAS,OACdmmD,KAAmB,CAACA,GACpBnmD,EAAK,SAASmmD,GACdp0I,IAAQg9H,GAA2Bh9H,GAAO47H,CAAW,GACrDwY,IAAkBN;AAAA,QACjB7lD,EAAK;AAAA,QACLjuF;AAAA,QACAo0I;AAAA,SAEFnN,GAAsBh5C,GAAMmmD,CAAe,GACrCE,OAAN,MACGA,KAA+B,KACtC;AAEJ,QAAIE,IAAe,MAAMz7E,EAAuB,GAAG,GAAG,EAAE,OAAO/4D,GAAO;AAMtE,QALAw0I,IAAexX,GAA2BwX,GAAc5Y,CAAW,GAC1D6Y,OAAT,OACKA,KAAqC,CAACD,CAAY,IACnDC,GAAmC,KAAKD,CAAY,GAClDF,OAAN,MAAuCA,KAA+B,IACzDrQ,MAAT,KAAsB,QAAO;AACjC,IAAAjkI,IAAQg9H,GAA2Bh9H,GAAO47H,CAAW,GACrDA,IAAcqI;AACd,OAAG;AACD,cAAQrI,EAAY,KAAG;AAAA,QACrB,KAAK;AACH,iBACGA,EAAY,SAAS,OACrB3tC,IAAOmmD,IAAkB,CAACA,GAC1BxY,EAAY,SAAS3tC,GACrBA,IAAO6lD,GAAsBlY,EAAY,WAAW57H,GAAOiuF,CAAI,GAChEg5C,GAAsBrL,GAAa3tC,CAAI,GACvC;AAAA,QAEJ,KAAK;AACH,cACIg2C,IAAcrI,EAAY,MAC3B4Y,IAAe5Y,EAAY,YACrBA,EAAY,QAAQ,SAA3B,MACkB,OAAOqI,EAAY,4BAAlC,cACWuQ,MAAT,QACgB,OAAOA,EAAa,qBAAnC,eACUN,OAAT,QACC,CAACA,GAAuC,IAAIM,CAAY;AAEhE,mBACG5Y,EAAY,SAAS,OACrBwY,KAAmB,CAACA,GACpBxY,EAAY,SAASwY,GACrBA,IAAkBL,GAAuBK,CAAe,GACzDJ;AAAA,cACEI;AAAA,cACAnmD;AAAA,cACA2tC;AAAA,cACA57H;AAAA,eAEFinI,GAAsBrL,GAAawY,CAAe,GAClD;AAAA,MAEZ;AACI,MAAAxY,IAAcA,EAAY;AAAA,IAC9B,SAAoBA,MAAT;AACT,WAAO;AAAA,EACT;AACA,MAAI8Y,KAA8B,MAAM37E,EAAuB,GAAG,CAAC,GACjE6xE,KAAmB;AACrB,WAAS+J,GAAkB7gI,GAASs1G,GAAgBwrB,GAAcnpB,GAAa;AAC7E,IAAArC,EAAe,QACJt1G,MAAT,OACIyyH,GAAiBnd,GAAgB,MAAMwrB,GAAcnpB,CAAW,IAChE6a;AAAA,MACEld;AAAA,MACAt1G,EAAQ;AAAA,MACR8gI;AAAA,MACAnpB;AAAA;EAEV;AACA,WAASopB,GACP/gI,GACAs1G,GACAhhH,GACAsqI,GACAjnB,GACA;AACA,IAAArjH,IAAYA,EAAU;AACtB,QAAIqE,IAAM28G,EAAe;AACzB,QAAI,SAASspB,GAAW;AACtB,UAAIoC,IAAkB,CAAA;AACtB,eAAS38I,KAAOu6I;AACd,QAAUv6I,MAAV,UAAkB28I,EAAgB38I,CAAG,IAAIu6I,EAAUv6I,CAAG;AAAA,IAC5D,MAAS,CAAA28I,IAAkBpC;AAWzB,WAVA9R,GAAqBxX,CAAc,GACnCspB,IAAYvI;AAAA,MACVr2H;AAAA,MACAs1G;AAAA,MACAhhH;AAAA,MACA0sI;AAAA,MACAroI;AAAA,MACAg/G;AAAA,OAEFtzH,IAAMgzI,GAAoB,GACbr3H,MAAT,QAAoB,CAAC82H,MAErBS,GAAav3H,GAASs1G,GAAgBqC,CAAW,GACjDspB,GAA6BjhI,GAASs1G,GAAgBqC,CAAW,MAErEwF,MAAe94H,KAAO6lI,GAAuB5U,CAAc,GAC3DA,EAAe,SAAS,GACxBurB,GAAkB7gI,GAASs1G,GAAgBspB,GAAWjnB,CAAW,GAC1DrC,EAAe;AAAA,EACxB;AACA,WAAS4rB,GACPlhI,GACAs1G,GACAhhH,GACAsqI,GACAjnB,GACA;AACA,QAAa33G,MAAT,MAAkB;AACpB,UAAI9b,IAAOoQ,EAAU;AACrB,aACiB,OAAOpQ,KAAtB,cACA,CAACmkI,GAAgBnkI,CAAI,KACVA,EAAK,iBAAhB,UACSoQ,EAAU,YAAnB,QAGGghH,EAAe,MAAM,IACrBA,EAAe,OAAOpxH,GACvBi9I;AAAA,QACEnhI;AAAA,QACAs1G;AAAA,QACApxH;AAAA,QACA06I;AAAA,QACAjnB;AAAA,MACV,MAEI33G,IAAUwoH;AAAA,QACRl0H,EAAU;AAAA,QACV;AAAA,QACAsqI;AAAA,QACAtpB;AAAA,QACAA,EAAe;AAAA,QACfqC;AAAA,SAEF33G,EAAQ,MAAMs1G,EAAe,KAC7Bt1G,EAAQ,SAASs1G,GACTA,EAAe,QAAQt1G;AAAA,IACnC;AAEE,QADA9b,IAAO8b,EAAQ,OACX,CAACohI,GAA8BphI,GAAS23G,CAAW,GAAG;AACxD,UAAI0pB,IAAYn9I,EAAK;AAGrB,UAFAoQ,IAAYA,EAAU,SACtBA,IAAqBA,MAAT,OAAqBA,IAAYywH,IACzCzwH,EAAU+sI,GAAWzC,CAAS,KAAK5+H,EAAQ,QAAQs1G,EAAe;AACpE,eAAO2rB,GAA6BjhI,GAASs1G,GAAgBqC,CAAW;AAAA,IAC9E;AACE,WAAArC,EAAe,SAAS,GACxBt1G,IAAUsoH,GAAqBpkI,GAAM06I,CAAS,GAC9C5+H,EAAQ,MAAMs1G,EAAe,KAC7Bt1G,EAAQ,SAASs1G,GACTA,EAAe,QAAQt1G;AAAA,EACjC;AACA,WAASmhI,GACPnhI,GACAs1G,GACAhhH,GACAsqI,GACAjnB,GACA;AACA,QAAa33G,MAAT,MAAkB;AACpB,UAAIqhI,IAAYrhI,EAAQ;AACxB,UACE+kH,GAAasc,GAAWzC,CAAS,KACjC5+H,EAAQ,QAAQs1G,EAAe;AAE/B,YACIwhB,KAAmB,IACpBxhB,EAAe,eAAespB,IAAYyC,GAC3CD,GAA8BphI,GAAS23G,CAAW;AAElD,WAAO33G,EAAQ,QAAQ,YAAvB,MAAmC82H,KAAmB;AAAA;AAEtD,iBACGxhB,EAAe,QAAQt1G,EAAQ,OAChCihI,GAA6BjhI,GAASs1G,GAAgBqC,CAAW;AAAA,IAE3E;AACE,WAAO2pB;AAAA,MACLthI;AAAA,MACAs1G;AAAA,MACAhhH;AAAA,MACAsqI;AAAA,MACAjnB;AAAA;EAEJ;AACA,WAAS4pB,GACPvhI,GACAs1G,GACAqC,GACAinB,GACA;AACA,QAAIkC,IAAelC,EAAU,UAC3BzE,IAAqBn6H,MAAT,OAAmBA,EAAQ,gBAAgB;AASzD,QARSA,MAAT,QACWs1G,EAAe,cAAxB,SACCA,EAAe,YAAY;AAAA,MAC1B,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,cAAc;AAAA,IACpB,IACmBspB,EAAU,SAAvB,UAA6B;AAC/B,WAAWtpB,EAAe,QAAQ,SAA9B,GAAoC;AAGtC,YAFA6kB,IACWA,MAAT,OAAqBA,EAAU,YAAYxiB,IAAcA,GAC9C33G,MAAT,MAAkB;AAEpB,eADA4+H,IAAYtpB,EAAe,QAAQt1G,EAAQ,OACtC8gI,IAAe,GAAYlC,MAAT;AACrB,YAACkC,IACCA,IAAelC,EAAU,QAAQA,EAAU,YAC1CA,IAAYA,EAAU;AAC3B,UAAAA,IAAYkC,IAAe,CAAC3G;AAAA,QACpC,MAAa,CAACyE,IAAY,GAAKtpB,EAAe,QAAQ;AAChD,eAAOksB;AAAA,UACLxhI;AAAA,UACAs1G;AAAA,UACA6kB;AAAA,UACAxiB;AAAA,UACAinB;AAAA;MAER;AACI,WAAWjnB,IAAc,eAArB;AACF,QAACrC,EAAe,gBAAgB,EAAE,WAAW,GAAG,WAAW,KAAI,GACpDt1G,MAAT,QACE0uH;AAAA,UACEpZ;AAAA,UACS6kB,MAAT,OAAqBA,EAAU,YAAY;AAAA,WAEtCA,MAAT,OACI1F,GAAkBnf,GAAgB6kB,CAAS,IAC3CxF,GAAyB,GAC7BO,GAA6B5f,CAAc;AAAA;AAE7C,eACGspB,IAAYtpB,EAAe,QAAQ,WACpCksB;AAAA,UACExhI;AAAA,UACAs1G;AAAA,UACS6kB,MAAT,OAAqBA,EAAU,YAAYxiB,IAAcA;AAAA,UACzDA;AAAA,UACAinB;AAAA,QACV;AAAA,IAEA;AACI,MAASzE,MAAT,QACKzL,GAAepZ,GAAgB6kB,EAAU,SAAS,GACnD1F,GAAkBnf,GAAgB6kB,CAAS,GAC3ChF,GAA0C,GACzC7f,EAAe,gBAAgB,SACtBt1G,MAAT,QAAoB0uH,GAAepZ,GAAgB,IAAI,GACxDqf,GAAyB,GACzBQ,GAA0C;AAChD,WAAA0L,GAAkB7gI,GAASs1G,GAAgBwrB,GAAcnpB,CAAW,GAC7DrC,EAAe;AAAA,EACxB;AACA,WAASmsB,GAA0BzhI,GAASs1G,GAAgB;AAC1D,WAAUt1G,MAAT,QAA2BA,EAAQ,QAAf,MACVs1G,EAAe,cAAxB,SACCA,EAAe,YAAY;AAAA,MAC1B,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,cAAc;AAAA,IACpB,IACSA,EAAe;AAAA,EACxB;AACA,WAASksB,GACPxhI,GACAs1G,GACAosB,GACA/pB,GACAgqB,GACA;AACA,QAAI3tB,IAA2Bua,GAAiB;AAChD,WAAAva,IACWA,MAAT,OACI,OACA,EAAE,QAAQuZ,GAAa,eAAe,MAAMvZ,EAAwB,GAC1EsB,EAAe,gBAAgB;AAAA,MAC7B,WAAWosB;AAAA,MACX,WAAW1tB;AAAA,OAEJh0G,MAAT,QAAoB0uH,GAAepZ,GAAgB,IAAI,GACvDqf,GAAyB,GACzBO,GAA6B5f,CAAc,GAClCt1G,MAAT,QACEysH,GAA8BzsH,GAASs1G,GAAgBqC,GAAa,EAAE,GACxErC,EAAe,aAAaqsB,GACrB;AAAA,EACT;AACA,WAASC,GAAsBtsB,GAAgBspB,GAAW;AACxD,WAAAA,IAAYiD;AAAA,MACV,EAAE,MAAMjD,EAAU,MAAM,UAAUA,EAAU,SAAQ;AAAA,MACpDtpB,EAAe;AAAA,OAEjBspB,EAAU,MAAMtpB,EAAe,KAC/BA,EAAe,QAAQspB,GACvBA,EAAU,SAAStpB,GACZspB;AAAA,EACT;AACA,WAASkD,GACP9hI,GACAs1G,GACAqC,GACA;AACA,WAAA6a,GAAqBld,GAAgBt1G,EAAQ,OAAO,MAAM23G,CAAW,GACrE33G,IAAU4hI,GAAsBtsB,GAAgBA,EAAe,YAAY,GAC3Et1G,EAAQ,SAAS,GACjBo1H,GAAmB9f,CAAc,GACjCA,EAAe,gBAAgB,MACxBt1G;AAAA,EACT;AACA,WAAS+hI,GAAwB/hI,GAASs1G,GAAgBqC,GAAa;AACrE,QAAIinB,IAAYtpB,EAAe,cAC7B0sB,KAAoB1sB,EAAe,QAAQ,SAA9B;AAEf,QADAA,EAAe,SAAS,MACXt1G,MAAT,MAAkB;AACpB,UAAIm9G,IAAa;AACf,YAAiByhB,EAAU,SAAvB;AACF,iBACG5+H,IAAU4hI,GAAsBtsB,GAAgBspB,CAAS,GACzDtpB,EAAe,QAAQ,WACxBmsB,GAA0B,MAAMzhI,CAAO;AAyB3C,YAvBAi1H,GAAsC3f,CAAc,IACnDt1G,IAAUuqH,OACLvqH,IAAUiiI;AAAA,UACVjiI;AAAA,UACAyqH;AAAA,WAEDzqH,IAAmBA,MAAT,QAA4BA,EAAQ,SAAhB,MAAuBA,IAAU,MACvDA,MAAT,SACIs1G,EAAe,gBAAgB;AAAA,UAC/B,YAAYt1G;AAAA,UACZ,aACWypH,OAAT,OACI,EAAE,IAAIC,IAAe,UAAUC,GAAmB,IAClD;AAAA,UACN,WAAW;AAAA,UACX,iBAAiB;AAAA,WAElBhS,IAAckR,GAAkC7oH,CAAO,GACvD23G,EAAY,SAASrC,GACrBA,EAAe,QAAQqC,GACvB2S,KAAuBhV,GACvBiV,KAAyB,SAC3BvqH,IAAU,MACFA,MAAT,KAAkB,OAAM2qH,GAAyBrV,CAAc;AACnE,eAAAA,EAAe,QAAQ,WAChB;AAAA,MACb;AACI,aAAOssB,GAAsBtsB,GAAgBspB,CAAS;AAAA,IAC1D;AACE,QAAIzE,IAAYn6H,EAAQ;AACxB,QAAam6H,MAAT,MAAoB;AACtB,UAAI+H,IAAa/H,EAAU;AAE3B,UADAlF,GAAsC3f,CAAc,GAChD0sB;AACF,YAAI1sB,EAAe,QAAQ;AACzB,UAACA,EAAe,SAAS,MACtBA,IAAiBwsB;AAAA,YAChB9hI;AAAA,YACAs1G;AAAA,YACAqC;AAAA,UACZ;AAAA,iBACwBrC,EAAe,kBAAxB;AACP,UAACA,EAAe,QAAQt1G,EAAQ,OAC7Bs1G,EAAe,SAAS,KACxBA,IAAiB;AAAA,YACjB,OAAM,MAAMrwD,EAAuB,GAAG,CAAC;AAAA,eAE3C6xE,MACCrK,GAA8BzsH,GAASs1G,GAAgBqC,GAAa,EAAE,GACvEqqB,KAAoBrqB,IAAc33G,EAAQ,gBAA7B,GACd82H,MAAoBkL,GACpB;AAEA,YADApD,IAAYnQ,IAEDmQ,MAAT,SACEsD,IAAa5oB,GAA0BslB,GAAWjnB,CAAW,GACzDuqB,MAAN,KAAoBA,MAAe/H,EAAU;AAE7C,gBACIA,EAAU,YAAY+H,GACxBra,GAA+B7nH,GAASkiI,CAAU,GAClD1I,GAAsBoF,GAAW5+H,GAASkiI,CAAU,GACpDtB;AAEJ,QAAAL,GAA+B,GAC/BjrB,IAAiBwsB;AAAA,UACf9hI;AAAA,UACAs1G;AAAA,UACAqC;AAAA;MAER;AACM,QAAC33G,IAAUm6H,EAAU,aAClB5P,KAAyBiB,GAAkB0W,EAAW,WAAW,GACjE5X,KAAuBhV,GACvB6H,KAAc,IACdqN,KAAkB,MAClBC,KAAyB,IACjBzqH,MAAT,QACEoqH,GAA4B9U,GAAgBt1G,CAAO,GACpDs1G,IAAiBssB,GAAsBtsB,GAAgBspB,CAAS,GAChEtpB,EAAe,SAAS;AAC7B,aAAOA;AAAA,IACX;AACE,WAAAt1G,IAAUsoH,GAAqBtoH,EAAQ,OAAO;AAAA,MAC5C,MAAM4+H,EAAU;AAAA,MAChB,UAAUA,EAAU;AAAA,IACxB,CAAG,GACD5+H,EAAQ,MAAMs1G,EAAe,KAC7BA,EAAe,QAAQt1G,GACvBA,EAAQ,SAASs1G,GACVt1G;AAAA,EACT;AACA,WAASmiI,GAAQniI,GAASs1G,GAAgB;AACxC,QAAI38G,IAAM28G,EAAe;AACzB,QAAa38G,MAAT;AACF,MAASqH,MAAT,QACWA,EAAQ,QAAjB,SACCs1G,EAAe,SAAS;AAAA,SACxB;AACH,UAAmB,OAAO38G,KAAtB,cAA0C,OAAOA,KAApB;AAC/B,cAAM,MAAMssD,EAAuB,GAAG,CAAC;AACzC,OAAajlD,MAAT,QAAoBA,EAAQ,QAAQrH,OACtC28G,EAAe,SAAS;AAAA,IAC9B;AAAA,EACA;AACA,WAASgsB,GACPthI,GACAs1G,GACAhhH,GACAsqI,GACAjnB,GACA;AAWA,WAVAmV,GAAqBxX,CAAc,GACnChhH,IAAY+hI;AAAA,MACVr2H;AAAA,MACAs1G;AAAA,MACAhhH;AAAA,MACAsqI;AAAA,MACA;AAAA,MACAjnB;AAAA,OAEFinB,IAAYvH,GAAoB,GACnBr3H,MAAT,QAAoB,CAAC82H,MAErBS,GAAav3H,GAASs1G,GAAgBqC,CAAW,GACjDspB,GAA6BjhI,GAASs1G,GAAgBqC,CAAW,MAErEwF,MAAeyhB,KAAa1U,GAAuB5U,CAAc,GACjEA,EAAe,SAAS,GACxBurB,GAAkB7gI,GAASs1G,GAAgBhhH,GAAWqjH,CAAW,GAC1DrC,EAAe;AAAA,EACxB;AACA,WAAS8sB,GACPpiI,GACAs1G,GACAspB,GACAtqI,GACAgiI,GACA3e,GACA;AAWA,WAVAmV,GAAqBxX,CAAc,GACnCA,EAAe,cAAc,MAC7BspB,IAAYlI;AAAA,MACVphB;AAAA,MACAhhH;AAAA,MACAsqI;AAAA,MACAtI;AAAA,OAEFK,GAAqB32H,CAAO,GAC5B1L,IAAY+iI,GAAoB,GACnBr3H,MAAT,QAAoB,CAAC82H,MAErBS,GAAav3H,GAASs1G,GAAgBqC,CAAW,GACjDspB,GAA6BjhI,GAASs1G,GAAgBqC,CAAW,MAErEwF,MAAe7oH,KAAa41H,GAAuB5U,CAAc,GACjEA,EAAe,SAAS,GACxBurB,GAAkB7gI,GAASs1G,GAAgBspB,GAAWjnB,CAAW,GAC1DrC,EAAe;AAAA,EACxB;AACA,WAAS+sB,GACPriI,GACAs1G,GACAhhH,GACAsqI,GACAjnB,GACA;AAEA,QADAmV,GAAqBxX,CAAc,GACtBA,EAAe,cAAxB,MAAmC;AACrC,UAAI9gH,IAAUyzH,IACZqa,IAAchuI,EAAU;AAC1B,MAAa,OAAOguI,KAApB,YACWA,MAAT,SACC9tI,IAAUu4H,GAAYuV,CAAW,IACpC9tI,IAAU,IAAIF,EAAUsqI,GAAWpqI,CAAO,GAC1C8gH,EAAe,gBACJ9gH,EAAQ,UAAjB,QAAqCA,EAAQ,UAAnB,SAA2BA,EAAQ,QAAQ,MACvEA,EAAQ,UAAUqqI,IAClBvpB,EAAe,YAAY9gH,GAC3BA,EAAQ,kBAAkB8gH,GAC1B9gH,IAAU8gH,EAAe,WACzB9gH,EAAQ,QAAQoqI,GAChBpqI,EAAQ,QAAQ8gH,EAAe,eAC/B9gH,EAAQ,OAAO,CAAA,GACfm+H,GAAsBrd,CAAc,GACpCgtB,IAAchuI,EAAU,aACxBE,EAAQ,UACO,OAAO8tI,KAApB,YAA4CA,MAAT,OAC/BvV,GAAYuV,CAAW,IACvBra,IACNzzH,EAAQ,QAAQ8gH,EAAe,eAC/BgtB,IAAchuI,EAAU,0BACT,OAAOguI,KAAtB,eACG5D;AAAA,QACCppB;AAAA,QACAhhH;AAAA,QACAguI;AAAA,QACA1D;AAAA,SAEDpqI,EAAQ,QAAQ8gH,EAAe,gBACnB,OAAOhhH,EAAU,4BAAhC,cACiB,OAAOE,EAAQ,2BAA9B,cACgB,OAAOA,EAAQ,6BAA9B,cACgB,OAAOA,EAAQ,sBAA9B,eACA8tI,IAAc9tI,EAAQ,OACT,OAAOA,EAAQ,sBAA9B,cACEA,EAAQ,mBAAkB,GACb,OAAOA,EAAQ,6BAA9B,cACEA,EAAQ,0BAAyB,GACnC8tI,MAAgB9tI,EAAQ,SACtBqqI,GAAsB,oBAAoBrqI,GAASA,EAAQ,OAAO,IAAI,GACxEk/H,GAAmBpe,GAAgBspB,GAAWpqI,GAASmjH,CAAW,GAClE6b,GAA2C,GAC1Ch/H,EAAQ,QAAQ8gH,EAAe,gBACnB,OAAO9gH,EAAQ,qBAA9B,eACG8gH,EAAe,SAAS,UAC3BspB,IAAY;AAAA,IAChB,WAAsB5+H,MAAT,MAAkB;AAC3B,MAAAxL,IAAU8gH,EAAe;AACzB,UAAIitB,IAAqBjtB,EAAe,eACtCypB,IAAWI,GAA2B7qI,GAAWiuI,CAAkB;AACrE,MAAA/tI,EAAQ,QAAQuqI;AAChB,UAAIyD,KAAahuI,EAAQ,SACvBiuI,KAAuBnuI,EAAU;AACnC,MAAAguI,IAAcra,IACD,OAAOwa,MAApB,YACWA,OAAT,SACCH,IAAcvV,GAAY0V,EAAoB;AACjD,UAAI9D,KAA2BrqI,EAAU;AACzC,MAAAmuI,KACiB,OAAO9D,MAAtB,cACe,OAAOnqI,EAAQ,2BAA9B,YACF+tI,IAAqBjtB,EAAe,iBAAiBitB,GACrDE,MACkB,OAAOjuI,EAAQ,oCAA9B,cACgB,OAAOA,EAAQ,6BAA9B,eACA+tI,KAAsBC,OAAeF,MACrCpD;AAAA,QACE5pB;AAAA,QACA9gH;AAAA,QACAoqI;AAAA,QACA0D;AAAA,MACV,GACI5P,KAAiB;AACjB,UAAIiI,KAAWrlB,EAAe;AAC9B,MAAA9gH,EAAQ,QAAQmmI,IAChBjH,GAAmBpe,GAAgBspB,GAAWpqI,GAASmjH,CAAW,GAClE6b,GAA2C,GAC3CgP,KAAaltB,EAAe,eAC5BitB,KAAsB5H,OAAa6H,MAAc9P,MAC7B,OAAOiM,MAAtB,eACED;AAAA,QACCppB;AAAA,QACAhhH;AAAA,QACAqqI;AAAA,QACAC;AAAA,SAED4D,KAAaltB,EAAe,iBAC9BypB,IACCrM,MACAoM;AAAA,QACExpB;AAAA,QACAhhH;AAAA,QACAyqI;AAAA,QACAH;AAAA,QACAjE;AAAA,QACA6H;AAAA,QACAF;AAAA,YAECG,MACiB,OAAOjuI,EAAQ,6BAA9B,cACgB,OAAOA,EAAQ,sBAA9B,eACc,OAAOA,EAAQ,sBAA9B,cACCA,EAAQ,mBAAkB,GACb,OAAOA,EAAQ,6BAA9B,cACEA,EAAQ,0BAAyB,IACtB,OAAOA,EAAQ,qBAA9B,eACG8gH,EAAe,SAAS,aACX,OAAO9gH,EAAQ,qBAA9B,eACE8gH,EAAe,SAAS,UAC1BA,EAAe,gBAAgBspB,GAC/BtpB,EAAe,gBAAgBktB,KACnChuI,EAAQ,QAAQoqI,GAChBpqI,EAAQ,QAAQguI,IAChBhuI,EAAQ,UAAU8tI,GAClB1D,IAAYG,MACG,OAAOvqI,EAAQ,qBAA9B,eACE8gH,EAAe,SAAS,UAC1BspB,IAAY;AAAA,IACrB,OAAS;AACL,MAAApqI,IAAU8gH,EAAe,WACzBsd,GAAiB5yH,GAASs1G,CAAc,GACxCgtB,IAAchtB,EAAe,eAC7BmtB,KAAuBtD,GAA2B7qI,GAAWguI,CAAW,GACxE9tI,EAAQ,QAAQiuI,IAChB9D,KAA2BrpB,EAAe,cAC1CqlB,KAAWnmI,EAAQ,SACnBguI,KAAaluI,EAAU,aACvByqI,IAAW9W,IACE,OAAOua,MAApB,YACWA,OAAT,SACCzD,IAAWhS,GAAYyV,EAAU,IACpCD,IAAqBjuI,EAAU,2BAC9BkuI,KACgB,OAAOD,KAAtB,cACe,OAAO/tI,EAAQ,2BAA9B,eACgB,OAAOA,EAAQ,oCAA9B,cACgB,OAAOA,EAAQ,6BAA9B,eACA8tI,MAAgB3D,MAA4BhE,OAAaoE,MACzDG;AAAA,QACE5pB;AAAA,QACA9gH;AAAA,QACAoqI;AAAA,QACAG;AAAA,MACV,GACIrM,KAAiB,IACjBiI,KAAWrlB,EAAe,eAC1B9gH,EAAQ,QAAQmmI,IAChBjH,GAAmBpe,GAAgBspB,GAAWpqI,GAASmjH,CAAW,GAClE6b,GAA2C;AAC3C,UAAIjgH,KAAW+hG,EAAe;AAC9B,MAAAgtB,MAAgB3D,MAChBhE,OAAapnH,MACbm/G,MACU1yH,MAAT,QACUA,EAAQ,iBAAjB,QACA4sH,GAAsB5sH,EAAQ,YAAY,KACxB,OAAOuiI,KAAtB,eACE7D;AAAA,QACCppB;AAAA,QACAhhH;AAAA,QACAiuI;AAAA,QACA3D;AAAA,SAEDrrH,KAAW+hG,EAAe,iBAC5BmtB,KACC/P,MACAoM;AAAA,QACExpB;AAAA,QACAhhH;AAAA,QACAmuI;AAAA,QACA7D;AAAA,QACAjE;AAAA,QACApnH;AAAA,QACAwrH;AAAA,WAEQ/+H,MAAT,QACUA,EAAQ,iBAAjB,QACA4sH,GAAsB5sH,EAAQ,YAAY,MACzCwiI,MACiB,OAAOhuI,EAAQ,8BAA9B,cACgB,OAAOA,EAAQ,uBAA9B,eACc,OAAOA,EAAQ,uBAA9B,cACCA,EAAQ,oBAAoBoqI,GAAWrrH,IAAUwrH,CAAQ,GAC5C,OAAOvqI,EAAQ,8BAA9B,cACEA,EAAQ;AAAA,QACNoqI;AAAA,QACArrH;AAAA,QACAwrH;AAAA,MAClB,IAC2B,OAAOvqI,EAAQ,sBAA9B,eACG8gH,EAAe,SAAS,IACZ,OAAO9gH,EAAQ,2BAA9B,eACG8gH,EAAe,SAAS,UACX,OAAO9gH,EAAQ,sBAA9B,cACE8tI,MAAgBtiI,EAAQ,iBACvB26H,OAAa36H,EAAQ,kBACtBs1G,EAAe,SAAS,IACZ,OAAO9gH,EAAQ,2BAA9B,cACG8tI,MAAgBtiI,EAAQ,iBACvB26H,OAAa36H,EAAQ,kBACtBs1G,EAAe,SAAS,OAC1BA,EAAe,gBAAgBspB,GAC/BtpB,EAAe,gBAAgB/hG,KACnC/e,EAAQ,QAAQoqI,GAChBpqI,EAAQ,QAAQ+e,IAChB/e,EAAQ,UAAUuqI,GAClBH,IAAY6D,OACG,OAAOjuI,EAAQ,sBAA9B,cACE8tI,MAAgBtiI,EAAQ,iBACvB26H,OAAa36H,EAAQ,kBACtBs1G,EAAe,SAAS,IACZ,OAAO9gH,EAAQ,2BAA9B,cACG8tI,MAAgBtiI,EAAQ,iBACvB26H,OAAa36H,EAAQ,kBACtBs1G,EAAe,SAAS,OAC1BspB,IAAY;AAAA,IACrB;AACE,WAAApqI,IAAUoqI,GACVuD,GAAQniI,GAASs1G,CAAc,GAC/BspB,KAAmBtpB,EAAe,QAAQ,SAA9B,GACZ9gH,KAAWoqI,KACLpqI,IAAU8gH,EAAe,WAC1BhhH,IACCsqI,KAA4B,OAAOtqI,EAAU,4BAAhC,aACT,OACAE,EAAQ,OAAM,GACnB8gH,EAAe,SAAS,GAChBt1G,MAAT,QAAoB4+H,KACdtpB,EAAe,QAAQkd;AAAA,MACvBld;AAAA,MACAt1G,EAAQ;AAAA,MACR;AAAA,MACA23G;AAAA,OAEDrC,EAAe,QAAQkd;AAAA,MACtBld;AAAA,MACA;AAAA,MACAhhH;AAAA,MACAqjH;AAAA,IACZ,KACUkpB,GAAkB7gI,GAASs1G,GAAgBhhH,GAAWqjH,CAAW,GACpErC,EAAe,gBAAgB9gH,EAAQ,OACvCwL,IAAUs1G,EAAe,SACzBt1G,IAAUihI;AAAA,MACTjhI;AAAA,MACAs1G;AAAA,MACAqC;AAAA,IACR,GACS33G;AAAA,EACT;AACA,WAAS0iI,GACP1iI,GACAs1G,GACAwrB,GACAnpB,GACA;AACA,WAAA8T,GAAmB,GACnBnW,EAAe,SAAS,KACxBurB,GAAkB7gI,GAASs1G,GAAgBwrB,GAAcnpB,CAAW,GAC7DrC,EAAe;AAAA,EACxB;AACA,MAAIqtB,KAAmB;AAAA,IACrB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA;AAEnB,WAASC,GAA4BjrB,GAAa;AAChD,WAAO,EAAE,WAAWA,GAAa,WAAWkX,GAAiB,EAAE;AAAA,EACjE;AACA,WAASgU,GACP7iI,GACA8iI,GACAnrB,GACA;AACA,WAAA33G,IAAmBA,MAAT,OAAmBA,EAAQ,aAAa,CAAC23G,IAAc,GACjEmrB,MAAwB9iI,KAAW+iI,KAC5B/iI;AAAA,EACT;AACA,WAASgjI,GAAwBhjI,GAASs1G,GAAgBqC,GAAa;AACrE,QAAIinB,IAAYtpB,EAAe,cAC7B2tB,IAAe,IACfjB,KAAoB1sB,EAAe,QAAQ,SAA9B,GACb6V;AASF,SARCA,IAAkB6W,OAChB7W,IACUnrH,MAAT,QAA6BA,EAAQ,kBAAjB,OAChB,MACOg1H,GAAoB,UAAU,OAArC,IACR7J,MAAqB8X,IAAe,IAAM3tB,EAAe,SAAS,OAClE6V,KAAyB7V,EAAe,QAAQ,QAA9B,GAClBA,EAAe,SAAS,KACXt1G,MAAT,MAAkB;AACpB,UAAIm9G,IAAa;AA0Bf,YAzBA8lB,IACIlO,GAA+Bzf,CAAc,IAC7C6f,GAA0C,IAC7Cn1H,IAAUuqH,OACLvqH,IAAUiiI;AAAA,UACVjiI;AAAA,UACAyqH;AAAA,WAEDzqH,IAAmBA,MAAT,QAA4BA,EAAQ,SAAhB,MAAuBA,IAAU,MACvDA,MAAT,SACIs1G,EAAe,gBAAgB;AAAA,UAC/B,YAAYt1G;AAAA,UACZ,aACWypH,OAAT,OACI,EAAE,IAAIC,IAAe,UAAUC,GAAmB,IAClD;AAAA,UACN,WAAW;AAAA,UACX,iBAAiB;AAAA,WAElBhS,IAAckR,GAAkC7oH,CAAO,GACvD23G,EAAY,SAASrC,GACrBA,EAAe,QAAQqC,GACvB2S,KAAuBhV,GACvBiV,KAAyB,SAC3BvqH,IAAU,MACFA,MAAT,KAAkB,OAAM2qH,GAAyBrV,CAAc;AACnE,eAAAigB,GAA2Bv1H,CAAO,IAC7Bs1G,EAAe,QAAQ,KACvBA,EAAe,QAAQ,WACrB;AAAA,MACb;AACI,UAAI4tB,IAAsBtE,EAAU;AAEpC,aADAA,IAAYA,EAAU,UAClBqE,KAEA9N,GAA0C,GACzC8N,IAAe3tB,EAAe,MAC9B4tB,IAAsBrB;AAAA,QACrB,EAAE,MAAM,UAAU,UAAUqB,EAAmB;AAAA,QAC/CD;AAAA,SAEDrE,IAAYjW;AAAA,QACXiW;AAAA,QACAqE;AAAA,QACAtrB;AAAA,QACA;AAAA,SAEDurB,EAAoB,SAAS5tB,GAC7BspB,EAAU,SAAStpB,GACnB4tB,EAAoB,UAAUtE,GAC9BtpB,EAAe,QAAQ4tB,GACvBtE,IAAYtpB,EAAe,OAC3BspB,EAAU,gBAAgBgE,GAA4BjrB,CAAW,GACjEinB,EAAU,aAAaiE;AAAA,QACtB7iI;AAAA,QACAmrH;AAAA,QACAxT;AAAA,SAEDrC,EAAe,gBAAgBqtB,IAChClB,GAA0B,MAAM7C,CAAS,MAE7C7J,GAA+Bzf,CAAc,GACtC6tB,GAA6B7tB,GAAgB4tB,CAAmB;AAAA,IAC3E;AACE,QAAI/I,IAAYn6H,EAAQ;AACxB,QACWm6H,MAAT,SACE+I,IAAsB/I,EAAU,YAAsB+I,MAAT,OAC/C;AACA,UAAIlB;AACF,QAAA1sB,EAAe,QAAQ,OAClByf,GAA+Bzf,CAAc,GAC7CA,EAAe,SAAS,MACxBA,IAAiB8tB;AAAA,UAChBpjI;AAAA,UACAs1G;AAAA,UACAqC;AAAA,QACZ,KACmBrC,EAAe,kBAAxB,QACG6f,GAA0C,GAC1C7f,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,EAAe,SAAS,KACxBA,IAAiB,SACjB6f,GAA0C,GAC1C+N,IAAsBtE,EAAU,UAChCqE,IAAe3tB,EAAe,MAC9BspB,IAAYiD;AAAA,UACX,EAAE,MAAM,WAAW,UAAUjD,EAAU,SAAQ;AAAA,UAC/CqE;AAAA,WAEDC,IAAsBva;AAAA,UACrBua;AAAA,UACAD;AAAA,UACAtrB;AAAA,UACA;AAAA,WAEDurB,EAAoB,SAAS,GAC7BtE,EAAU,SAAStpB,GACnB4tB,EAAoB,SAAS5tB,GAC7BspB,EAAU,UAAUsE,GACpB5tB,EAAe,QAAQspB,GACxBpM;AAAA,UACEld;AAAA,UACAt1G,EAAQ;AAAA,UACR;AAAA,UACA23G;AAAA,WAEDinB,IAAYtpB,EAAe,OAC3BspB,EAAU,gBACTgE,GAA4BjrB,CAAW,GACxCinB,EAAU,aAAaiE;AAAA,UACtB7iI;AAAA,UACAmrH;AAAA,UACAxT;AAAA,WAEDrC,EAAe,gBAAgBqtB,IAC/BrtB,IAAiBmsB,GAA0B,MAAM7C,CAAS;AAAA,eAEhE7J,GAA+Bzf,CAAc,GAC9CigB,GAA2B2N,CAAmB,GAC9C;AAIA,YAHA/X,IACE+X,EAAoB,eACpBA,EAAoB,YAAY,SAC9B/X,EAAiB,KAAIkY,KAASlY,EAAgB;AAClD,QAAAA,IAAkBkY,IAClBzE,IAAY,MAAM35E,EAAuB,GAAG,CAAC,GAC7C25E,EAAU,QAAQ,IAClBA,EAAU,SAASzT,GACnBP,GAAoB,EAAE,OAAOgU,GAAW,QAAQ,MAAM,OAAO,MAAM,GACnEtpB,IAAiB8tB;AAAA,UACfpjI;AAAA,UACAs1G;AAAA,UACAqC;AAAA;MAER,WACOmf,MACCrK,GAA8BzsH,GAASs1G,GAAgBqC,GAAa,EAAE,GACvEwT,KAAyBxT,IAAc33G,EAAQ,gBAA7B,GACnB82H,MAAoB3L,GACpB;AAEA,YADAA,IAAkBsD,IAEPtD,MAAT,SACEyT,IAAYtlB,GAA0B6R,GAAiBxT,CAAW,GAC9DinB,MAAN,KAAmBA,MAAczE,EAAU;AAE3C,gBACIA,EAAU,YAAYyE,GACxB/W,GAA+B7nH,GAAS4+H,CAAS,GACjDpF,GAAsBrO,GAAiBnrH,GAAS4+H,CAAS,GACzDgC;AAEJ,QAAAtL,GAA0B4N,CAAmB,KAC3C3C,GAA+B,GACjCjrB,IAAiB8tB;AAAA,UACfpjI;AAAA,UACAs1G;AAAA,UACAqC;AAAA;MAER;AACM,QAAA2d,GAA0B4N,CAAmB,KACvC5tB,EAAe,SAAS,KACzBA,EAAe,QAAQt1G,EAAQ,OAC/Bs1G,IAAiB,SAChBt1G,IAAUm6H,EAAU,aACrB5P,KAAyBiB;AAAA,UACxB0X,EAAoB;AAAA,WAErB5Y,KAAuBhV,GACvB6H,KAAc,IACdqN,KAAkB,MAClBC,KAAyB,IACjBzqH,MAAT,QACEoqH,GAA4B9U,GAAgBt1G,CAAO,GACpDs1G,IAAiB6tB;AAAA,UAChB7tB;AAAA,UACAspB,EAAU;AAAA,WAEXtpB,EAAe,SAAS;AAC/B,aAAOA;AAAA,IACX;AACE,WAAI2tB,KAEA9N,GAA0C,GACzC+N,IAAsBtE,EAAU,UAChCqE,IAAe3tB,EAAe,MAC9B6kB,IAAYn6H,EAAQ,OACpBqjI,KAASlJ,EAAU,SACnByE,IAAYtW,GAAqB6R,GAAW;AAAA,MAC3C,MAAM;AAAA,MACN,UAAUyE,EAAU;AAAA,IAC5B,CAAO,GACAA,EAAU,eAAezE,EAAU,eAAe,UAC1CkJ,OAAT,OACKH,IAAsB5a;AAAA,MACrB+a;AAAA,MACAH;AAAA,SAEAA,IAAsBva;AAAA,MACtBua;AAAA,MACAD;AAAA,MACAtrB;AAAA,MACA;AAAA,OAEDurB,EAAoB,SAAS,IACjCA,EAAoB,SAAS5tB,GAC7BspB,EAAU,SAAStpB,GACnBspB,EAAU,UAAUsE,GACpB5tB,EAAe,QAAQspB,GACxB6C,GAA0B,MAAM7C,CAAS,GACxCA,IAAYtpB,EAAe,OAC3B4tB,IAAsBljI,EAAQ,MAAM,eAC5BkjI,MAAT,OACKA,IAAsBN,GAA4BjrB,CAAW,KAC5DsrB,IAAeC,EAAoB,WAC5BD,MAAT,QACM9I,IAAY5M,GAAa,eAC1B0V,IACCA,EAAa,WAAW9I,IACpB,EAAE,QAAQA,GAAW,MAAMA,EAAS,IACpC8I,KACLA,IAAepU,GAAiB,GACpCqU,IAAsB;AAAA,MACrB,WAAWA,EAAoB,YAAYvrB;AAAA,MAC3C,WAAWsrB;AAAA,IACvB,IACOrE,EAAU,gBAAgBsE,GAC1BtE,EAAU,aAAaiE;AAAA,MACtB7iI;AAAA,MACAmrH;AAAA,MACAxT;AAAA,OAEDrC,EAAe,gBAAgBqtB,IAChClB,GAA0BzhI,EAAQ,OAAO4+H,CAAS,MAEtD7J,GAA+Bzf,CAAc,GAC7CqC,IAAc33G,EAAQ,OACtBA,IAAU23G,EAAY,SACtBA,IAAc2Q,GAAqB3Q,GAAa;AAAA,MAC9C,MAAM;AAAA,MACN,UAAUinB,EAAU;AAAA,IACxB,CAAG,GACDjnB,EAAY,SAASrC,GACrBqC,EAAY,UAAU,MACb33G,MAAT,SACImrH,IAAkB7V,EAAe,WAC1B6V,MAAT,QACM7V,EAAe,YAAY,CAACt1G,CAAO,GAAKs1G,EAAe,SAAS,MAClE6V,EAAgB,KAAKnrH,CAAO,IAClCs1G,EAAe,QAAQqC,GACvBrC,EAAe,gBAAgB,MACxBqC;AAAA,EACT;AACA,WAASwrB,GAA6B7tB,GAAgBguB,GAAiB;AACrE,WAAAA,IAAkBzB;AAAA,MAChB,EAAE,MAAM,WAAW,UAAUyB,EAAe;AAAA,MAC5ChuB,EAAe;AAAA,OAEjBguB,EAAgB,SAAShuB,GACjBA,EAAe,QAAQguB;AAAA,EACjC;AACA,WAASzB,GAAkC0B,GAAgBx5H,GAAM;AAC/D,WAAAw5H,IAAiBnb,GAAqB,IAAImb,GAAgB,MAAMx5H,CAAI,GACpEw5H,EAAe,QAAQ,GAChBA;AAAA,EACT;AACA,WAASH,GACPpjI,GACAs1G,GACAqC,GACA;AACA,WAAA6a,GAAqBld,GAAgBt1G,EAAQ,OAAO,MAAM23G,CAAW,GACrE33G,IAAUmjI;AAAA,MACR7tB;AAAA,MACAA,EAAe,aAAa;AAAA,OAE9Bt1G,EAAQ,SAAS,GACjBs1G,EAAe,gBAAgB,MACxBt1G;AAAA,EACT;AACA,WAASwjI,GAA4B1xB,GAAO6F,GAAayU,GAAiB;AACxE,IAAAta,EAAM,SAAS6F;AACf,QAAIrF,IAAYR,EAAM;AACtB,IAASQ,MAAT,SAAuBA,EAAU,SAASqF,IAC1CwU,GAAgCra,EAAM,QAAQ6F,GAAayU,CAAe;AAAA,EAC5E;AACA,WAASqX,GACPnuB,GACAouB,GACAC,GACAC,GACAC,GACAva,GACA;AACA,QAAIwa,IAAcxuB,EAAe;AACjC,IAASwuB,MAAT,OACKxuB,EAAe,gBAAgB;AAAA,MAC9B,aAAaouB;AAAA,MACb,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,MAAME;AAAA,MACN,MAAMD;AAAA,MACN,UAAUE;AAAA,MACV,eAAeva;AAAA,SAEfwa,EAAY,cAAcJ,GAC3BI,EAAY,YAAY,MACxBA,EAAY,qBAAqB,GACjCA,EAAY,OAAOF,GACnBE,EAAY,OAAOH,GACnBG,EAAY,WAAWD,GACvBC,EAAY,gBAAgBxa;AAAA,EACnC;AACA,WAASya,GAA4B/jI,GAASs1G,GAAgBqC,GAAa;AACzE,QAAIinB,IAAYtpB,EAAe,cAC7B0uB,IAAcpF,EAAU,aACxBiF,IAAWjF,EAAU;AACvB,IAAAA,IAAYA,EAAU;AACtB,QAAIqF,IAAkBjP,GAAoB,SACxCkP,KAA6BD,IAAkB,OAAzB;AAQxB,QAPAC,KACMD,IAAmBA,IAAkB,IAAK,GAC3C3uB,EAAe,SAAS,OACxB2uB,KAAmB,GACxBv1B,EAAKsmB,IAAqBiP,CAAe,GACzCpD,GAAkB7gI,GAASs1G,GAAgBspB,GAAWjnB,CAAW,GACjEinB,IAAYzhB,KAAcmM,KAAgB,GACtC,CAAC4a,KAAgClkI,MAAT,SAA2BA,EAAQ,QAAQ,SAAvB;AAC9C,MAAAxa,EAAG,MAAKwa,IAAUs1G,EAAe,OAAgBt1G,MAAT,QAAoB;AAC1D,YAAWA,EAAQ,QAAf;AACF,UAASA,EAAQ,kBAAjB,QACEwjI,GAA4BxjI,GAAS23G,GAAarC,CAAc;AAAA,iBACpDt1G,EAAQ,QAAf;AACP,UAAAwjI,GAA4BxjI,GAAS23G,GAAarC,CAAc;AAAA,iBAChDt1G,EAAQ,UAAjB,MAAwB;AAC/B,UAAAA,EAAQ,MAAM,SAASA,GACvBA,IAAUA,EAAQ;AAClB;AAAA,QACR;AACM,YAAIA,MAAYs1G,EAAgB,OAAM9vH;AACtC,eAAgBwa,EAAQ,YAAjB,QAA4B;AACjC,cAAaA,EAAQ,WAAjB,QAA2BA,EAAQ,WAAWs1G;AAChD,kBAAM9vH;AACR,UAAAwa,IAAUA,EAAQ;AAAA,QAC1B;AACM,QAAAA,EAAQ,QAAQ,SAASA,EAAQ,QACjCA,IAAUA,EAAQ;AAAA,MACxB;AACE,YAAQgkI,GAAW;AAAA,MACjB,KAAK;AAEH,aADArsB,IAAcrC,EAAe,OACxB0uB,IAAc,MAAersB,MAAT;AACvB,UAAC33G,IAAU23G,EAAY,WACZ33G,MAAT,QACWq1H,GAAmBr1H,CAAO,MAAnC,SACCgkI,IAAcrsB,IAChBA,IAAcA,EAAY;AAC/B,QAAAA,IAAcqsB,GACLrsB,MAAT,QACMqsB,IAAc1uB,EAAe,OAASA,EAAe,QAAQ,SAC7D0uB,IAAcrsB,EAAY,SAAWA,EAAY,UAAU,OACjE8rB;AAAA,UACEnuB;AAAA,UACA;AAAA,UACA0uB;AAAA,UACArsB;AAAA,UACAksB;AAAA,UACAjF;AAAA;AAEF;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAGH,aAFAjnB,IAAc,MACdqsB,IAAc1uB,EAAe,OACxBA,EAAe,QAAQ,MAAe0uB,MAAT,QAAwB;AAExD,cADAhkI,IAAUgkI,EAAY,WACThkI,MAAT,QAA6Bq1H,GAAmBr1H,CAAO,MAAnC,MAAsC;AAC5D,YAAAs1G,EAAe,QAAQ0uB;AACvB;AAAA,UACV;AACQ,UAAAhkI,IAAUgkI,EAAY,SACtBA,EAAY,UAAUrsB,GACtBA,IAAcqsB,GACdA,IAAchkI;AAAA,QACtB;AACM,QAAAyjI;AAAA,UACEnuB;AAAA,UACA;AAAA,UACAqC;AAAA,UACA;AAAA,UACAksB;AAAA,UACAjF;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6E;AAAA,UACEnuB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAspB;AAAA;AAEF;AAAA,MACF;AACE,QAAAtpB,EAAe,gBAAgB;AAAA,IACrC;AACE,WAAOA,EAAe;AAAA,EACxB;AACA,WAAS2rB,GAA6BjhI,GAASs1G,GAAgBqC,GAAa;AAG1E,QAFS33G,MAAT,SAAqBs1G,EAAe,eAAet1G,EAAQ,eAC3Do0H,MAAkC9e,EAAe,QACtCqC,IAAcrC,EAAe,gBAApC;AACF,UAAat1G,MAAT;AACF,YACGysH;AAAA,UACCzsH;AAAA,UACAs1G;AAAA,UACAqC;AAAA,UACA;AAAA,YAEKA,IAAcrC,EAAe,gBAApC;AAEA,iBAAO;AAAA,YACJ,QAAO;AAChB,QAAat1G,MAAT,QAAoBs1G,EAAe,UAAUt1G,EAAQ;AACvD,YAAM,MAAMilD,EAAuB,GAAG,CAAC;AACzC,QAAaqwD,EAAe,UAAxB,MAA+B;AAIjC,WAHAt1G,IAAUs1G,EAAe,OACzBqC,IAAc2Q,GAAqBtoH,GAASA,EAAQ,YAAY,GAChEs1G,EAAe,QAAQqC,GAClBA,EAAY,SAASrC,GAAyBt1G,EAAQ,YAAjB;AACxC,QAACA,IAAUA,EAAQ,SAChB23G,IAAcA,EAAY,UACzB2Q,GAAqBtoH,GAASA,EAAQ,YAAY,GACnD23G,EAAY,SAASrC;AAC1B,MAAAqC,EAAY,UAAU;AAAA,IAC1B;AACE,WAAOrC,EAAe;AAAA,EACxB;AACA,WAAS8rB,GAA8BphI,GAAS23G,GAAa;AAC3D,YAAW33G,EAAQ,QAAQ23G,OAAvB,IAA4C,MAChD33G,IAAUA,EAAQ,cACX,GAASA,MAAT,QAAoB4sH,GAAsB5sH,CAAO;AAAA,EAC1D;AACA,WAASmkI,GACPnkI,GACAs1G,GACAqC,GACA;AACA,YAAQrC,EAAe,KAAG;AAAA,MACxB,KAAK;AACH,QAAA5B,GAAkB4B,GAAgBA,EAAe,UAAU,aAAa,GACxE0W,GAAa1W,GAAgBiY,IAAcvtH,EAAQ,cAAc,KAAK,GACtEyrH,GAAmB;AACnB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA1X,GAAgBuB,CAAc;AAC9B;AAAA,MACF,KAAK;AACH,QAAA5B,GAAkB4B,GAAgBA,EAAe,UAAU,aAAa;AACxE;AAAA,MACF,KAAK;AACH,QAAA0W;AAAA,UACE1W;AAAA,UACAA,EAAe;AAAA,UACfA,EAAe,cAAc;AAAA;AAE/B;AAAA,MACF,KAAK;AACH,YAAaA,EAAe,kBAAxB;AACF,iBACGA,EAAe,SAAS,KACzB2f,GAAsC3f,CAAc,GACpD;AAEJ;AAAA,MACF,KAAK;AACH,YAAI8uB,IAAY9uB,EAAe;AAC/B,YAAa8uB,MAAT;AACF,iBAAaA,EAAU,eAAnB,QAEArP,GAA+Bzf,CAAc,GAC5CA,EAAe,SAAS,KACzB,SAEOqC,IAAcrC,EAAe,MAAM,gBAA1C,IACK0tB,GAAwBhjI,GAASs1G,GAAgBqC,CAAW,KACrEod,GAA+Bzf,CAAc,GAC7Ct1G,IAAUihI;AAAA,YACRjhI;AAAA,YACAs1G;AAAA,YACAqC;AAAA,aAEc33G,MAAT,OAAmBA,EAAQ,UAAU;AAE9C,QAAA+0H,GAA+Bzf,CAAc;AAC7C;AAAA,MACF,KAAK;AACH,YAAI+uB,KAA0BrkI,EAAQ,QAAQ,SAAvB;AAUvB,YATAokI,KAAmBzsB,IAAcrC,EAAe,gBAApC,GACZ8uB,MACG3X;AAAA,UACCzsH;AAAA,UACAs1G;AAAA,UACAqC;AAAA,UACA;AAAA,WAEDysB,KAAmBzsB,IAAcrC,EAAe,gBAApC,IACX+uB,GAAkB;AACpB,cAAID;AACF,mBAAOL;AAAA,cACL/jI;AAAA,cACAs1G;AAAA,cACAqC;AAAA;AAEJ,UAAArC,EAAe,SAAS;AAAA,QAChC;AAOM,YANA+uB,IAAmB/uB,EAAe,eACzB+uB,MAAT,SACIA,EAAiB,YAAY,MAC9BA,EAAiB,OAAO,MACxBA,EAAiB,aAAa,OACjC31B,EAAKsmB,IAAqBA,GAAoB,OAAO,GACjDoP,EAAW;AACV,eAAO;AAAA,MACd,KAAK;AACH,eACG9uB,EAAe,QAAQ,GACxBisB;AAAA,UACEvhI;AAAA,UACAs1G;AAAA,UACAqC;AAAA,UACArC,EAAe;AAAA,QACzB;AAAA,MAEI,KAAK;AACH,QAAA0W,GAAa1W,GAAgBiY,IAAcvtH,EAAQ,cAAc,KAAK;AAAA,IAC5E;AACE,WAAOihI,GAA6BjhI,GAASs1G,GAAgBqC,CAAW;AAAA,EAC1E;AACA,WAAS2sB,GAAUtkI,GAASs1G,GAAgBqC,GAAa;AACvD,QAAa33G,MAAT;AACF,UAAIA,EAAQ,kBAAkBs1G,EAAe;AAC3C,QAAAwhB,KAAmB;AAAA,WAChB;AACH,YACE,CAACsK,GAA8BphI,GAAS23G,CAAW,MAC5CrC,EAAe,QAAQ,SAA9B;AAEA,iBACGwhB,KAAmB,IACpBqN;AAAA,YACEnkI;AAAA,YACAs1G;AAAA,YACAqC;AAAA,UACZ;AAEM,QAAAmf,MAA0B92H,EAAQ,QAAQ,YAAvB;AAAA,MACzB;AAAA;AAEI,MAAC82H,KAAmB,IAClB3Z,OACS7H,EAAe,QAAQ,aAA9B,KACAwU,GAAWxU,GAAgBgU,IAAehU,EAAe,KAAK;AAEpE,YADAA,EAAe,QAAQ,GACfA,EAAe,KAAG;AAAA,MACxB,KAAK;AACH,QAAA9vH,GAAG;AACD,cAAI+O,IAAQ+gH,EAAe;AAG3B,cAFAt1G,IAAU0vH,GAAYpa,EAAe,WAAW,GAChDA,EAAe,OAAOt1G,GACH,OAAOA,KAAtB;AACF,YAAAqoH,GAAgBroH,CAAO,KACjBzL,IAAQ4qI,GAA2Bn/H,GAASzL,CAAK,GAClD+gH,EAAe,MAAM,GACrBA,IAAiB+sB;AAAA,cAChB;AAAA,cACA/sB;AAAA,cACAt1G;AAAA,cACAzL;AAAA,cACAojH;AAAA,YAChB,MACgBrC,EAAe,MAAM,GACtBA,IAAiBgsB;AAAA,cAChB;AAAA,cACAhsB;AAAA,cACAt1G;AAAA,cACAzL;AAAA,cACAojH;AAAA,YAChB;AAAA,eACa;AACH,gBAAmC33G,KAAT,MAAkB;AAC1C,kBAAIukI,IAAWvkI,EAAQ;AACvB,kBAAIukI,MAAa5wI,GAAwB;AACvC,gBAAA2hH,EAAe,MAAM,IACrBA,IAAiByrB;AAAA,kBACf;AAAA,kBACAzrB;AAAA,kBACAt1G;AAAA,kBACAzL;AAAA,kBACAojH;AAAA;AAEF,sBAAMnyH;AAAA,cACpB,WAAuB++I,MAAa1wI,GAAiB;AACvC,gBAAAyhH,EAAe,MAAM,IACrBA,IAAiB4rB;AAAA,kBACf;AAAA,kBACA5rB;AAAA,kBACAt1G;AAAA,kBACAzL;AAAA,kBACAojH;AAAA;AAEF,sBAAMnyH;AAAA,cACpB;AAAA,YACA;AACU,kBAAA8vH,IAAiBtC,GAAyBhzG,CAAO,KAAKA,GAChD,MAAMilD,EAAuB,KAAKqwD,GAAgB,EAAE,CAAC;AAAA,UACrE;AAAA,QACA;AACM,eAAOA;AAAA,MACT,KAAK;AACH,eAAOgsB;AAAA,UACLthI;AAAA,UACAs1G;AAAA,UACAA,EAAe;AAAA,UACfA,EAAe;AAAA,UACfqC;AAAA;MAEJ,KAAK;AACH,eACGpjH,IAAQ+gH,EAAe,MACvBivB,IAAWpF;AAAA,UACV5qI;AAAA,UACA+gH,EAAe;AAAA,WAEjB+sB;AAAA,UACEriI;AAAA,UACAs1G;AAAA,UACA/gH;AAAA,UACAgwI;AAAA,UACA5sB;AAAA,QACV;AAAA,MAEI,KAAK;AACH,QAAAnyH,GAAG;AAKD,cAJAkuH;AAAA,YACE4B;AAAA,YACAA,EAAe,UAAU;AAAA,aAEdt1G,MAAT,KAAkB,OAAM,MAAMilD,EAAuB,GAAG,CAAC;AAC7D,UAAA1wD,IAAQ+gH,EAAe;AACvB,cAAI6kB,IAAY7kB,EAAe;AAC/B,UAAAivB,IAAWpK,EAAU,SACrBvH,GAAiB5yH,GAASs1G,CAAc,GACxCoe,GAAmBpe,GAAgB/gH,GAAO,MAAMojH,CAAW;AAC3D,cAAI4iB,IAAYjlB,EAAe;AAY/B,cAXA/gH,IAAQgmI,EAAU,OAClBvO,GAAa1W,GAAgBiY,IAAch5H,CAAK,GAChDA,MAAU4lI,EAAU,SAClB9N;AAAA,YACE/W;AAAA,YACA,CAACiY,EAAY;AAAA,YACb5V;AAAA,YACA;AAAA,aAEJ6b,GAA2C,GAC3Cj/H,IAAQgmI,EAAU,SACdJ,EAAU;AACZ,gBACIA,IAAY;AAAA,cACZ,SAAS5lI;AAAA,cACT,cAAc;AAAA,cACd,OAAOgmI,EAAU;AAAA,eAElBjlB,EAAe,YAAY,YAAY6kB,GACvC7kB,EAAe,gBAAgB6kB,GAChC7kB,EAAe,QAAQ,KACvB;AACA,cAAAA,IAAiBotB;AAAA,gBACf1iI;AAAA,gBACAs1G;AAAA,gBACA/gH;AAAA,gBACAojH;AAAA;AAEF,oBAAMnyH;AAAA,YAClB,WAAqB+O,MAAUgwI,GAAU;AAC7B,cAAAA,IAAWrb;AAAA,gBACT,MAAMjkE,EAAuB,GAAG,CAAC;AAAA,gBACjCqwD;AAAA,iBAEFsV,GAAoB2Z,CAAQ,GAC5BjvB,IAAiBotB;AAAA,gBACf1iI;AAAA,gBACAs1G;AAAA,gBACA/gH;AAAA,gBACAojH;AAAA;AAEF,oBAAMnyH;AAAA,YAClB,OAAiB;AAEL,sBADAwa,IAAUs1G,EAAe,UAAU,eAC3Bt1G,EAAQ,UAAQ;AAAA,gBACtB,KAAK;AACH,kBAAAA,IAAUA,EAAQ;AAClB;AAAA,gBACF;AACE,kBAAAA,IACaA,EAAQ,aAAnB,SACIA,EAAQ,cAAc,OACtBA;AAAA,cACtB;AAYY,mBAXAuqH,KAAyBiB,GAAkBxrH,EAAQ,UAAU,GAC7DsqH,KAAuBhV,GACvB6H,KAAc,IACdqN,KAAkB,MAClBC,KAAyB,IACzB9S,IAAc8a;AAAA,gBACZnd;AAAA,gBACA;AAAA,gBACA/gH;AAAA,gBACAojH;AAAA,iBAEGrC,EAAe,QAAQqC,GAAaA;AACvC,gBAACA,EAAY,QAASA,EAAY,QAAQ,KAAM,MAC7CA,IAAcA,EAAY;AAAA,YAC3C;AAAA,eACa;AAEH,gBADA8T,GAAmB,GACfl3H,MAAUgwI,GAAU;AACtB,cAAAjvB,IAAiB2rB;AAAA,gBACfjhI;AAAA,gBACAs1G;AAAA,gBACAqC;AAAA;AAEF,oBAAMnyH;AAAA,YAClB;AACU,YAAAq7I,GAAkB7gI,GAASs1G,GAAgB/gH,GAAOojH,CAAW;AAAA,UACvE;AACQ,UAAArC,IAAiBA,EAAe;AAAA,QACxC;AACM,eAAOA;AAAA,MACT,KAAK;AACH,eACE6sB,GAAQniI,GAASs1G,CAAc,GACtBt1G,MAAT,QACK23G,IAAc6sB;AAAA,UACblvB,EAAe;AAAA,UACf;AAAA,UACAA,EAAe;AAAA,UACf;AAAA,aAECA,EAAe,gBAAgBqC,IAChCwF,OACExF,IAAcrC,EAAe,MAC9Bt1G,IAAUs1G,EAAe,cACzB/gH,IAAQkwI;AAAA,UACPjxB,GAAwB;AAAA,QACxC,EAAgB,cAAcmE,CAAW,GAC1BpjH,EAAMylH,EAAmB,IAAI1E,GAC7B/gH,EAAM0lH,EAAgB,IAAIj6G,GAC3B0kI,GAAqBnwI,GAAOojH,GAAa33G,CAAO,GAChDg7G,GAAoBzmH,CAAK,GACxB+gH,EAAe,YAAY/gH,KAC7B+gH,EAAe,gBAAgBkvB;AAAA,UAC9BlvB,EAAe;AAAA,UACft1G,EAAQ;AAAA,UACRs1G,EAAe;AAAA,UACft1G,EAAQ;AAAA,QACtB,GACQ;AAAA,MAEJ,KAAK;AACH,eACE+zG,GAAgBuB,CAAc,GACrBt1G,MAAT,QACEm9G,OACE5oH,IAAQ+gH,EAAe,YACvBqvB;AAAA,UACErvB,EAAe;AAAA,UACfA,EAAe;AAAA,UACf9B,GAAwB;AAAA,WAE3B8W,KAAuBhV,GACvBmV,KAAyB,IACzB8Z,IAAWha,IACZe,GAAiBhW,EAAe,IAAI,KAC9BiW,KAA8CgZ,GAC/Cha,KAAyBiB,GAAkBj3H,EAAM,UAAU,KAC3Dg2H,KAAyBga,IAChC1D;AAAA,UACE7gI;AAAA,UACAs1G;AAAA,UACAA,EAAe,aAAa;AAAA,UAC5BqC;AAAA,WAEFwqB,GAAQniI,GAASs1G,CAAc,GACtBt1G,MAAT,SAAqBs1G,EAAe,SAAS,UAC7CA,EAAe;AAAA,MAEnB,KAAK;AACH,eAAat1G,MAAT,QAAoBm9G,QACjBonB,IAAWhwI,IAAQg2H,QACrBh2H,IAAQqwI;AAAA,UACPrwI;AAAA,UACA+gH,EAAe;AAAA,UACfA,EAAe;AAAA,UACfmV;AAAA,WAESl2H,MAAT,QACM+gH,EAAe,YAAY/gH,GAC5B+1H,KAAuBhV,GACvBiV,KAAyBiB,GAAkBj3H,EAAM,UAAU,GAC3Dk2H,KAAyB,IACzB8Z,IAAW,MACXA,IAAW,KACpBA,KAAY5Z,GAAyBrV,CAAc,IAErDvB,GAAgBuB,CAAc,GAC9BivB,IAAWjvB,EAAe,MAC1B6kB,IAAY7kB,EAAe,cAC3BilB,IAAqBv6H,MAAT,OAAmBA,EAAQ,gBAAgB,MACvDzL,IAAQ4lI,EAAU,UAClB/O,GAAqBmZ,GAAUpK,CAAS,IACnC5lI,IAAQ,OACAgmI,MAAT,QACAnP,GAAqBmZ,GAAUhK,CAAS,MACvCjlB,EAAe,SAAS,KACpBA,EAAe,kBAAxB,SACIivB,IAAWlO;AAAA,UACXr2H;AAAA,UACAs1G;AAAA,UACA2hB;AAAA,UACA;AAAA,UACA;AAAA,UACAtf;AAAA,WAEDzD,GAAsB,gBAAgBqwB,IACzCpC,GAAQniI,GAASs1G,CAAc,GAC/BurB,GAAkB7gI,GAASs1G,GAAgB/gH,GAAOojH,CAAW,GACtDrC,EAAe;AAAA,MACxB,KAAK;AACH,eAAat1G,MAAT,QAAoBm9G,QACjBn9G,IAAU23G,IAAc4S,QAC1B5S,IAAcktB;AAAA,UACbltB;AAAA,UACArC,EAAe;AAAA,UACfmV;AAAA,WAES9S,MAAT,QACMrC,EAAe,YAAYqC,GAC5B2S,KAAuBhV,GACvBiV,KAAyB,MACzBvqH,IAAU,MACVA,IAAU,KACnBA,KAAW2qH,GAAyBrV,CAAc,IAE7C;AAAA,MACT,KAAK;AACH,eAAO0tB,GAAwBhjI,GAASs1G,GAAgBqC,CAAW;AAAA,MACrE,KAAK;AACH,eACEjE;AAAA,UACE4B;AAAA,UACAA,EAAe,UAAU;AAAA,WAE1B/gH,IAAQ+gH,EAAe,cACft1G,MAAT,OACKs1G,EAAe,QAAQkd;AAAA,UACtBld;AAAA,UACA;AAAA,UACA/gH;AAAA,UACAojH;AAAA,YAEFkpB,GAAkB7gI,GAASs1G,GAAgB/gH,GAAOojH,CAAW,GACjErC,EAAe;AAAA,MAEnB,KAAK;AACH,eAAOyrB;AAAA,UACL/gI;AAAA,UACAs1G;AAAA,UACAA,EAAe;AAAA,UACfA,EAAe;AAAA,UACfqC;AAAA;MAEJ,KAAK;AACH,eACEkpB;AAAA,UACE7gI;AAAA,UACAs1G;AAAA,UACAA,EAAe;AAAA,UACfqC;AAAA,WAEFrC,EAAe;AAAA,MAEnB,KAAK;AACH,eACEurB;AAAA,UACE7gI;AAAA,UACAs1G;AAAA,UACAA,EAAe,aAAa;AAAA,UAC5BqC;AAAA,WAEFrC,EAAe;AAAA,MAEnB,KAAK;AACH,eACEurB;AAAA,UACE7gI;AAAA,UACAs1G;AAAA,UACAA,EAAe,aAAa;AAAA,UAC5BqC;AAAA,WAEFrC,EAAe;AAAA,MAEnB,KAAK;AACH,eACG/gH,IAAQ+gH,EAAe,cACxB0W,GAAa1W,GAAgBA,EAAe,MAAM/gH,EAAM,KAAK,GAC7DssI,GAAkB7gI,GAASs1G,GAAgB/gH,EAAM,UAAUojH,CAAW,GACtErC,EAAe;AAAA,MAEnB,KAAK;AACH,eACGivB,IAAWjvB,EAAe,KAAK,UAC/B/gH,IAAQ+gH,EAAe,aAAa,UACrCwX,GAAqBxX,CAAc,GAClCivB,IAAWxX,GAAYwX,CAAQ,GAC/BhwI,IAAQA,EAAMgwI,CAAQ,GACtBjvB,EAAe,SAAS,GACzBurB,GAAkB7gI,GAASs1G,GAAgB/gH,GAAOojH,CAAW,GAC7DrC,EAAe;AAAA,MAEnB,KAAK;AACH,eAAO4rB;AAAA,UACLlhI;AAAA,UACAs1G;AAAA,UACAA,EAAe;AAAA,UACfA,EAAe;AAAA,UACfqC;AAAA;MAEJ,KAAK;AACH,eAAOwpB;AAAA,UACLnhI;AAAA,UACAs1G;AAAA,UACAA,EAAe;AAAA,UACfA,EAAe;AAAA,UACfqC;AAAA;MAEJ,KAAK;AACH,eAAOosB,GAA4B/jI,GAASs1G,GAAgBqC,CAAW;AAAA,MACzE,KAAK;AACH,eAAOoqB,GAAwB/hI,GAASs1G,GAAgBqC,CAAW;AAAA,MACrE,KAAK;AACH,eAAO4pB;AAAA,UACLvhI;AAAA,UACAs1G;AAAA,UACAqC;AAAA,UACArC,EAAe;AAAA;MAEnB,KAAK;AACH,eACEwX,GAAqBxX,CAAc,GAClC/gH,IAAQw4H,GAAYQ,EAAY,GACxBvtH,MAAT,QACMukI,IAAWhW,GAAiB,GACrBgW,MAAT,SACIA,IAAW9V,IACZ0L,IAAY3M,GAAW,GACvB+W,EAAS,cAAcpK,GACxBA,EAAU,YACDA,MAAT,SAAuBoK,EAAS,oBAAoB5sB,IACnD4sB,IAAWpK,IACb7kB,EAAe,gBAAgB,EAAE,QAAQ/gH,GAAO,OAAOgwI,EAAQ,GAChE5R,GAAsBrd,CAAc,GACpC0W,GAAa1W,GAAgBiY,IAAcgX,CAAQ,OAC3CvkI,EAAQ,QAAQ23G,OAAvB,MACEib,GAAiB5yH,GAASs1G,CAAc,GACzCoe,GAAmBpe,GAAgB,MAAM,MAAMqC,CAAW,GAC1D6b,OACD+Q,IAAWvkI,EAAQ,eACnBm6H,IAAY7kB,EAAe,eAC5BivB,EAAS,WAAWhwI,KACdgwI,IAAW,EAAE,QAAQhwI,GAAO,OAAOA,EAAK,GACzC+gH,EAAe,gBAAgBivB,GAC1BjvB,EAAe,UAArB,MACGA,EAAe,gBACdA,EAAe,YAAY,YACzBivB,IACNvY,GAAa1W,GAAgBiY,IAAch5H,CAAK,MAC9CA,IAAQ4lI,EAAU,OACpBnO,GAAa1W,GAAgBiY,IAAch5H,CAAK,GAChDA,MAAUgwI,EAAS,SACjBlY;AAAA,UACE/W;AAAA,UACA,CAACiY,EAAY;AAAA,UACb5V;AAAA,UACA;AAAA,QACpB,KACQkpB;AAAA,UACE7gI;AAAA,UACAs1G;AAAA,UACAA,EAAe,aAAa;AAAA,UAC5BqC;AAAA,WAEFrC,EAAe;AAAA,MAEnB,KAAK;AACH,cAAMA,EAAe;AAAA,IAC3B;AACE,UAAM,MAAMrwD,EAAuB,KAAKqwD,EAAe,GAAG,CAAC;AAAA,EAC7D;AACA,WAASwvB,GAAWxvB,GAAgB;AAClC,IAAAA,EAAe,SAAS;AAAA,EAC1B;AACA,WAASyvB,GACPzvB,GACApxH,GACA66I,GACAC,GACArnB,GACA;AAEA,SADKzzH,KAAcoxH,EAAe,OAAO,QAA7B,OAAmCpxH,IAAO,KAClDA;AACF,UACIoxH,EAAe,SAAS,WACzBqC,IAAc,eAAeA;AAE9B,YAAIrC,EAAe,UAAU,SAAU,CAAAA,EAAe,SAAS;AAAA,iBACtD0vB,GAA4B,EAAI,CAAA1vB,EAAe,SAAS;AAAA;AAE/D,gBACIma,KAAoBP,IACtBF;AAAA,UAED,CAAA1Z,EAAe,SAAS;AAAA,EACjC;AACA,WAAS2vB,GAAkC3vB,GAAgB4vB,GAAU;AACnE,QAAqBA,EAAS,SAA1B,iBAAyCA,EAAS,MAAM,UAAU,OAAhC;AACpC,MAAA5vB,EAAe,SAAS;AAAA,aACfA,EAAe,SAAS,UAAW,CAAC6vB,GAAgBD,CAAQ;AACrE,UAAIF,GAA4B,EAAI,CAAA1vB,EAAe,SAAS;AAAA;AAE1D,cACIma,KAAoBP,IACtBF;AAAA,EAER;AACA,WAASoW,GAAoB9vB,GAAgB+vB,GAAY;AACvD,IAASA,MAAT,SAAwB/vB,EAAe,SAAS,IAChDA,EAAe,QAAQ,UACnB+vB,IACO/vB,EAAe,QAAtB,KAA4BwC,GAAkB,IAAK,WACpDxC,EAAe,SAAS+vB,GACxBC,MAAqCD;AAAA,EAC1C;AACA,WAASE,GAAmBzB,GAAa0B,GAA0B;AACjE,QAAI,CAACroB;AACH,cAAQ2mB,EAAY,UAAQ;AAAA,QAC1B,KAAK;AACH,UAAA0B,IAA2B1B,EAAY;AACvC,mBAAS2B,IAAe,MAAeD,MAAT;AAC5B,YAASA,EAAyB,cAAlC,SACGC,IAAeD,IACfA,IAA2BA,EAAyB;AACzD,UAASC,MAAT,OACK3B,EAAY,OAAO,OACnB2B,EAAa,UAAU;AAC5B;AAAA,QACF,KAAK;AACH,UAAAA,IAAe3B,EAAY;AAC3B,mBAAS4B,IAAmB,MAAeD,MAAT;AAChC,YAASA,EAAa,cAAtB,SAAoCC,IAAmBD,IACpDA,IAAeA,EAAa;AACjC,UAASC,MAAT,OACIF,KAAqC1B,EAAY,SAArB,OACzBA,EAAY,OAAO,OACnBA,EAAY,KAAK,UAAU,OAC7B4B,EAAiB,UAAU;AAAA,MACxC;AAAA,EACA;AACA,WAASC,GAAiBC,GAAe;AACvC,QAAIC,IACSD,EAAc,cAAvB,QACAA,EAAc,UAAU,UAAUA,EAAc,OAClDE,IAAgB,GAChBC,IAAe;AACjB,QAAIF;AACF,eAASG,IAAYJ,EAAc,OAAgBI,MAAT;AACxC,QAACF,KAAiBE,EAAU,QAAQA,EAAU,YAC3CD,KAAgBC,EAAU,eAAe,UACzCD,KAAgBC,EAAU,QAAQ,UAClCA,EAAU,SAASJ,GACnBI,IAAYA,EAAU;AAAA;AAE3B,WAAKA,IAAYJ,EAAc,OAAgBI,MAAT;AACpC,QAACF,KAAiBE,EAAU,QAAQA,EAAU,YAC3CD,KAAgBC,EAAU,cAC1BD,KAAgBC,EAAU,OAC1BA,EAAU,SAASJ,GACnBI,IAAYA,EAAU;AAC7B,WAAAJ,EAAc,gBAAgBG,GAC9BH,EAAc,aAAaE,GACpBD;AAAA,EACT;AACA,WAASI,GAAajmI,GAASs1G,GAAgBqC,GAAa;AAC1D,QAAIqnB,IAAW1pB,EAAe;AAE9B,YADA6U,GAAe7U,CAAc,GACrBA,EAAe,KAAG;AAAA,MACxB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOqwB,GAAiBrwB,CAAc,GAAG;AAAA,MAC3C,KAAK;AACH,eAAOqwB,GAAiBrwB,CAAc,GAAG;AAAA,MAC3C,KAAK;AACH,eAAAqC,IAAcrC,EAAe,WAC7B0pB,IAAW,MACFh/H,MAAT,SAAqBg/H,IAAWh/H,EAAQ,cAAc,QACtDs1G,EAAe,cAAc,UAAU0pB,MACpC1pB,EAAe,SAAS,OAC3B4W,GAAYqB,EAAY,GACxBzZ,GAAgB,GAChB6D,EAAY,mBACRA,EAAY,UAAUA,EAAY,gBACnCA,EAAY,iBAAiB,QACnB33G,MAAT,QAA6BA,EAAQ,UAAjB,UACtBkrH,GAAkB5V,CAAc,IAC5BwvB,GAAWxvB,CAAc,IAChBt1G,MAAT,QACCA,EAAQ,cAAc,iBACds1G,EAAe,QAAQ,SAA9B,MACAA,EAAe,SAAS,MAC1BoW,QACNia,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AACH,YAAIpxH,IAAOoxH,EAAe,MACxB4wB,IAAe5wB,EAAe;AAChC,eAASt1G,MAAT,QACK8kI,GAAWxvB,CAAc,GACjB4wB,MAAT,QACKP,GAAiBrwB,CAAc,GAChC2vB,GAAkC3vB,GAAgB4wB,CAAY,MAC7DP,GAAiBrwB,CAAc,GAChCyvB;AAAA,UACEzvB;AAAA,UACApxH;AAAA,UACA;AAAA,UACA86I;AAAA,UACArnB;AAAA,QAChB,MACUuuB,IACEA,MAAiBlmI,EAAQ,iBACtB8kI,GAAWxvB,CAAc,GAC1BqwB,GAAiBrwB,CAAc,GAC/B2vB,GAAkC3vB,GAAgB4wB,CAAY,MAC7DP,GAAiBrwB,CAAc,GAC/BA,EAAe,SAAS,cACzBt1G,IAAUA,EAAQ,eACpBA,MAAYg/H,KAAY8F,GAAWxvB,CAAc,GACjDqwB,GAAiBrwB,CAAc,GAC/ByvB;AAAA,UACEzvB;AAAA,UACApxH;AAAA,UACA8b;AAAA,UACAg/H;AAAA,UACArnB;AAAA,QACd,IACa;AAAA,MACT,KAAK;AAIH,YAHA1D,GAAeqB,CAAc,GAC7BqC,IAAcnE,GAAwB,SACtCtvH,IAAOoxH,EAAe,MACTt1G,MAAT,QAA4Bs1G,EAAe,aAAvB;AACtB,UAAAt1G,EAAQ,kBAAkBg/H,KAAY8F,GAAWxvB,CAAc;AAAA,aAC5D;AACH,cAAI,CAAC0pB,GAAU;AACb,gBAAa1pB,EAAe,cAAxB;AACF,oBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AACzC,mBAAA0gF,GAAiBrwB,CAAc,GACxB;AAAA,UACjB;AACQ,UAAAt1G,IAAUszG,EAAmB,SAC7B4X,GAAkB5V,CAAc,IAC5BuV,GAA6BvV,CAAuB,KAClDt1G,IAAU2kI,GAAyBzgJ,GAAM86I,GAAUrnB,CAAW,GAC/DrC,EAAe,YAAYt1G,GAC5B8kI,GAAWxvB,CAAc;AAAA,QACrC;AACM,eAAAqwB,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AAGH,YAFArB,GAAeqB,CAAc,GAC7BpxH,IAAOoxH,EAAe,MACTt1G,MAAT,QAA4Bs1G,EAAe,aAAvB;AACtB,UAAAt1G,EAAQ,kBAAkBg/H,KAAY8F,GAAWxvB,CAAc;AAAA,aAC5D;AACH,cAAI,CAAC0pB,GAAU;AACb,gBAAa1pB,EAAe,cAAxB;AACF,oBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AACzC,mBAAA0gF,GAAiBrwB,CAAc,GACxB;AAAA,UACjB;AAEQ,cADA4wB,IAAe5yB,EAAmB,SAC9B4X,GAAkB5V,CAAc;AAClC,YAAAuV,GAA6BvV,CAA4B;AAAA,eACtD;AACH,gBAAIxrD,IAAgB26E;AAAA,cAClBjxB,GAAwB;AAAA;AAE1B,oBAAQ0yB,GAAY;AAAA,cAClB,KAAK;AACH,gBAAAA,IAAep8E,EAAc;AAAA,kBAC3B;AAAA,kBACA5lE;AAAA;AAEF;AAAA,cACF,KAAK;AACH,gBAAAgiJ,IAAep8E,EAAc;AAAA,kBAC3B;AAAA,kBACA5lE;AAAA;AAEF;AAAA,cACF;AACE,wBAAQA,GAAI;AAAA,kBACV,KAAK;AACH,oBAAAgiJ,IAAep8E,EAAc;AAAA,sBAC3B;AAAA,sBACA5lE;AAAA;AAEF;AAAA,kBACF,KAAK;AACH,oBAAAgiJ,IAAep8E,EAAc;AAAA,sBAC3B;AAAA,sBACA5lE;AAAA;AAEF;AAAA,kBACF,KAAK;AACH,oBAAAgiJ,IAAep8E,EAAc,cAAc,KAAK,GAChDo8E,EAAa,YAAY,sBACzBA,IAAeA,EAAa;AAAA,sBAC1BA,EAAa;AAAA;AAEf;AAAA,kBACF,KAAK;AACH,oBAAAA,IACe,OAAOlH,EAAS,MAA7B,WACIl1E,EAAc,cAAc,UAAU;AAAA,sBACpC,IAAIk1E,EAAS;AAAA,qBACd,IACDl1E,EAAc,cAAc,QAAQ,GAC1Ck1E,EAAS,WACJkH,EAAa,WAAW,KACzBlH,EAAS,SAASkH,EAAa,OAAOlH,EAAS;AACnD;AAAA,kBACF;AACE,oBAAAkH,IACe,OAAOlH,EAAS,MAA7B,WACIl1E,EAAc,cAAc5lE,GAAM,EAAE,IAAI86I,EAAS,GAAE,CAAE,IACrDl1E,EAAc,cAAc5lE,CAAI;AAAA,gBACxD;AAAA,YACA;AACU,YAAAgiJ,EAAalsB,EAAmB,IAAI1E,GACpC4wB,EAAajsB,EAAgB,IAAI+kB;AACjC,YAAAx5I,EAAG,MACDskE,IAAgBwrD,EAAe,OACtBxrD,MAAT,QAEA;AACA,kBAAUA,EAAc,QAApB,KAAiCA,EAAc,QAApB;AAC7B,gBAAAo8E,EAAa,YAAYp8E,EAAc,SAAS;AAAA,uBAE1CA,EAAc,QAApB,KACOA,EAAc,QAArB,MACSA,EAAc,UAAvB,MACA;AACA,gBAAAA,EAAc,MAAM,SAASA,GAC7BA,IAAgBA,EAAc;AAC9B;AAAA,cACd;AACY,kBAAIA,MAAkBwrD,EAAgB,OAAM9vH;AAC5C,qBAAgBskE,EAAc,YAAvB,QAAkC;AACvC,oBACWA,EAAc,WAAvB,QACAA,EAAc,WAAWwrD;AAEzB,wBAAM9vH;AACR,gBAAAskE,IAAgBA,EAAc;AAAA,cAC5C;AACY,cAAAA,EAAc,QAAQ,SAASA,EAAc,QAC7CA,IAAgBA,EAAc;AAAA,YAC1C;AACU,YAAAwrD,EAAe,YAAY4wB;AAC3B,YAAA1gJ,EAAG,SACAk/I,GAAqBwB,GAAchiJ,GAAM86I,CAAQ,GAAG96I,GACjE;AAAA,cACY,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,gBAAA86I,IAAW,CAAC,CAACA,EAAS;AACtB,sBAAMx5I;AAAA,cACR,KAAK;AACH,gBAAAw5I,IAAW;AACX,sBAAMx5I;AAAA,cACR;AACE,gBAAAw5I,IAAW;AAAA,YACzB;AACU,YAAAA,KAAY8F,GAAWxvB,CAAc;AAAA,UAC/C;AAAA,QACA;AACM,eAAAqwB,GAAiBrwB,CAAc,GAC/ByvB;AAAA,UACEzvB;AAAA,UACAA,EAAe;AAAA,UACNt1G,MAAT,OAAmB,OAAOA,EAAQ;AAAA,UAClCs1G,EAAe;AAAA,UACfqC;AAAA,WAEK;AAAA,MACT,KAAK;AACH,YAAI33G,KAAmBs1G,EAAe,aAAvB;AACb,UAAAt1G,EAAQ,kBAAkBg/H,KAAY8F,GAAWxvB,CAAc;AAAA,aAC5D;AACH,cAAiB,OAAO0pB,KAApB,YAAyC1pB,EAAe,cAAxB;AAClC,kBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AAEzC,cADAjlD,IAAUwzG,GAAwB,SAC9B0X,GAAkB5V,CAAc,GAAG;AAKrC,gBAJAt1G,IAAUs1G,EAAe,WACzBqC,IAAcrC,EAAe,eAC7B0pB,IAAW,MACX96I,IAAOomI,IACMpmI,MAAT;AACF,sBAAQA,EAAK,KAAG;AAAA,gBACd,KAAK;AAAA,gBACL,KAAK;AACH,kBAAA86I,IAAW96I,EAAK;AAAA,cAChC;AACU,YAAA8b,EAAQg6G,EAAmB,IAAI1E,GAC/Bt1G,IACE,GAAAA,EAAQ,cAAc23G,KACZqnB,MAAT,QAA4BA,EAAS,6BAAhB,MACtBhU,GAAsBhrH,EAAQ,WAAW23G,CAAW,IAGtD33G,KAAW2qH,GAAyBrV,GAAgB,EAAE;AAAA,UAChE;AACU,YAACt1G,IACCykI,GAAkCzkI,CAAO,EAAE;AAAA,cACzCg/H;AAAA,eAEDh/H,EAAQg6G,EAAmB,IAAI1E,GAC/BA,EAAe,YAAYt1G;AAAA,QACxC;AACM,eAAA2lI,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AAEH,YADAqC,IAAcrC,EAAe,eAChBt1G,MAAT,QAA6BA,EAAQ,kBAAjB,MAAgC;AAEtD,cADAg/H,IAAW9T,GAAkB5V,CAAc,GAC9BqC,MAAT,MAAsB;AACxB,gBAAa33G,MAAT,MAAkB;AACpB,kBAAI,CAACg/H,EAAU,OAAM,MAAM/5E,EAAuB,GAAG,CAAC;AAGtD,kBAFAjlD,IAAUs1G,EAAe,eACzBt1G,IAAmBA,MAAT,OAAmBA,EAAQ,aAAa,MAC9C,CAACA,EAAS,OAAM,MAAMilD,EAAuB,GAAG,CAAC;AACrD,cAAAjlD,EAAQg6G,EAAmB,IAAI1E;AAAA,YAC3C;AACY,cAAAmW,GAAmB,IACVnW,EAAe,QAAQ,SAA9B,MACGA,EAAe,gBAAgB,OACjCA,EAAe,SAAS;AAC7B,YAAAqwB,GAAiBrwB,CAAc,GAC/Bt1G,IAAU;AAAA,UACpB;AACU,YAAC23G,IAAc+T,GAAmC,GACvC1rH,MAAT,QACWA,EAAQ,kBAAjB,SACCA,EAAQ,cAAc,kBAAkB23G,IAC1C33G,IAAU;AACf,cAAI,CAACA;AACH,mBAAIs1G,EAAe,QAAQ,OAClB8f,GAAmB9f,CAAc,GAAGA,MAC7C8f,GAAmB9f,CAAc,GAC1B;AAET,eAAWA,EAAe,QAAQ,SAA9B;AACF,kBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AAAA,QACjD;AACM,eAAA0gF,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AAEH,YADA0pB,IAAW1pB,EAAe,eAEft1G,MAAT,QACUA,EAAQ,kBAAjB,QACUA,EAAQ,cAAc,eAA/B,MACF;AAEA,cADA9b,IAAOgnI,GAAkB5V,CAAc,GAC1B0pB,MAAT,QAA8BA,EAAS,eAAlB,MAA8B;AACrD,gBAAah/H,MAAT,MAAkB;AACpB,kBAAI,CAAC9b,EAAM,OAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAGlD,kBAFA/gE,IAAOoxH,EAAe,eACtBpxH,IAAgBA,MAAT,OAAgBA,EAAK,aAAa,MACrC,CAACA,EAAM,OAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAClD,cAAA/gE,EAAK81H,EAAmB,IAAI1E;AAAA,YACxC;AACY,cAAAmW,GAAmB,IACVnW,EAAe,QAAQ,SAA9B,MACGA,EAAe,gBAAgB,OACjCA,EAAe,SAAS;AAC7B,YAAAqwB,GAAiBrwB,CAAc,GAC/BpxH,IAAO;AAAA,UACjB;AACU,YAACA,IAAOwnI,GAAmC,GAChC1rH,MAAT,QACWA,EAAQ,kBAAjB,SACCA,EAAQ,cAAc,kBAAkB9b,IAC1CA,IAAO;AACZ,cAAI,CAACA;AACH,mBAAIoxH,EAAe,QAAQ,OAClB8f,GAAmB9f,CAAc,GAAGA,MAC7C8f,GAAmB9f,CAAc,GAC1B;AAAA,QAEjB;AAEM,eADA8f,GAAmB9f,CAAc,IACtBA,EAAe,QAAQ,SAA9B,KACMA,EAAe,QAAQqC,GAAcrC,MAC/CqC,IAAuBqnB,MAAT,MACdh/H,IAAmBA,MAAT,QAA6BA,EAAQ,kBAAjB,MAC9B23G,MACIqnB,IAAW1pB,EAAe,OAC3BpxH,IAAO,MACC86I,EAAS,cAAlB,QACWA,EAAS,UAAU,kBAA5B,QACSA,EAAS,UAAU,cAAc,cAA1C,SACC96I,IAAO86I,EAAS,UAAU,cAAc,UAAU,OACpDkH,IAAe,MACPlH,EAAS,kBAAlB,QACWA,EAAS,cAAc,cAAhC,SACCkH,IAAelH,EAAS,cAAc,UAAU,OACnDkH,MAAiBhiJ,MAAS86I,EAAS,SAAS,QAC9CrnB,MAAgB33G,KACd23G,MACCrC,EAAe,MAAM,SAAS,OACjC8vB,GAAoB9vB,GAAgBA,EAAe,WAAW,GAC9DqwB,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AACH,eACExB,GAAgB,GACP9zG,MAAT,QACEmmI,GAA2B7wB,EAAe,UAAU,aAAa,GACnEqwB,GAAiBrwB,CAAc,GAC/B;AAAA,MAEJ,KAAK;AACH,eACE4W,GAAY5W,EAAe,IAAI,GAAGqwB,GAAiBrwB,CAAc,GAAG;AAAA,MAExE,KAAK;AAGH,YAFAxG,EAAIkmB,EAAmB,GACvBgK,IAAW1pB,EAAe,eACb0pB,MAAT,KAAmB,QAAO2G,GAAiBrwB,CAAc,GAAG;AAGhE,YAFApxH,KAAcoxH,EAAe,QAAQ,SAA9B,GACP4wB,IAAelH,EAAS,WACXkH,MAAT;AACF,cAAIhiJ,EAAM,CAAAqhJ,GAAmBvG,GAAU,EAAE;AAAA,eACpC;AACH,gBACQwB,OAAN,KACUxgI,MAAT,SAA2BA,EAAQ,QAAQ,SAAvB;AAErB,mBAAKA,IAAUs1G,EAAe,OAAgBt1G,MAAT,QAAoB;AAEvD,oBADAkmI,IAAe7Q,GAAmBr1H,CAAO,GAC5BkmI,MAAT,MAAuB;AAQzB,uBAPA5wB,EAAe,SAAS,KACxBiwB,GAAmBvG,GAAU,EAAE,GAC/Bh/H,IAAUkmI,EAAa,aACvB5wB,EAAe,cAAct1G,GAC7BolI,GAAoB9vB,GAAgBt1G,CAAO,GAC3Cs1G,EAAe,eAAe,GAC9Bt1G,IAAU23G,GACLA,IAAcrC,EAAe,OAAgBqC,MAAT;AACvC,oBAAA4Q,GAAoB5Q,GAAa33G,CAAO,GACrC23G,IAAcA,EAAY;AAC/B,yBAAAjJ;AAAA,oBACEsmB;AAAA,oBACCA,GAAoB,UAAU,IAAK;AAAA,qBAEtC7X,MACEyM,GAAatU,GAAgB0pB,EAAS,aAAa,GAC9C1pB,EAAe;AAAA,gBACtC;AACc,gBAAAt1G,IAAUA,EAAQ;AAAA,cAChC;AACU,YAASg/H,EAAS,SAAlB,QACErpB,GAAG,IAAKywB,OACN9wB,EAAe,SAAS,KACzBpxH,IAAO,IACRqhJ,GAAmBvG,GAAU,EAAE,GAC9B1pB,EAAe,QAAQ;AAAA,UACpC;AAAA,aACW;AACH,cAAI,CAACpxH;AACH,gBACI8b,IAAUq1H,GAAmB6Q,CAAY,GAAalmI,MAAT;AAE/C,kBACIs1G,EAAe,SAAS,KACzBpxH,IAAO,IACP8b,IAAUA,EAAQ,aAClBs1G,EAAe,cAAct1G,GAC9BolI,GAAoB9vB,GAAgBt1G,CAAO,GAC3CulI,GAAmBvG,GAAU,EAAE,GACtBA,EAAS,SAAlB,QACeA,EAAS,aAAtB,YACA,CAACkH,EAAa,aACd,CAAC/oB;AAEH,uBAAOwoB,GAAiBrwB,CAAc,GAAG;AAAA;AAE3C,kBAAIK,OAAQqpB,EAAS,qBACnBoH,MACczuB,MAAd,cACErC,EAAe,SAAS,KACzBpxH,IAAO,IACRqhJ,GAAmBvG,GAAU,EAAE,GAC9B1pB,EAAe,QAAQ;AAC9B,UAAA0pB,EAAS,eACHkH,EAAa,UAAU5wB,EAAe,OACvCA,EAAe,QAAQ4wB,MACtBlmI,IAAUg/H,EAAS,MACZh/H,MAAT,OACKA,EAAQ,UAAUkmI,IAClB5wB,EAAe,QAAQ4wB,GAC3BlH,EAAS,OAAOkH;AAAA,QAC7B;AACM,eAAalH,EAAS,SAAlB,QAECh/H,IAAUg/H,EAAS,MACnBA,EAAS,YAAYh/H,GACrBg/H,EAAS,OAAOh/H,EAAQ,SACxBg/H,EAAS,qBAAqBrpB,GAAG,GACjC31G,EAAQ,UAAU,MAClB23G,IAAcqd,GAAoB,SACnCtmB;AAAA,UACEsmB;AAAA,UACA9wI,IAAQyzH,IAAc,IAAK,IAAIA,IAAc;AAAA,WAE/CwF,MAAeyM,GAAatU,GAAgB0pB,EAAS,aAAa,GAClEh/H,MAEJ2lI,GAAiBrwB,CAAc,GACxB;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACH,eACE8f,GAAmB9f,CAAc,GACjCsf,GAAgB,GACfoK,IAAoB1pB,EAAe,kBAAxB,MACHt1G,MAAT,OACcA,EAAQ,kBAAjB,SAAoCg/H,MACpC1pB,EAAe,SAAS,QACzB0pB,MAAa1pB,EAAe,SAAS,OACzC0pB,KACWrnB,IAAc,eAArB,MACOrC,EAAe,QAAQ,SAA9B,MACCqwB,GAAiBrwB,CAAc,GAChCA,EAAe,eAAe,MAAMA,EAAe,SAAS,SAC5DqwB,GAAiBrwB,CAAc,GAClCqC,IAAcrC,EAAe,aACrBqC,MAAT,QACEytB,GAAoB9vB,GAAgBqC,EAAY,UAAU,GAC3DA,IAAc,MACN33G,MAAT,QACWA,EAAQ,kBAAjB,QACSA,EAAQ,cAAc,cAA/B,SACC23G,IAAc33G,EAAQ,cAAc,UAAU,OAChDg/H,IAAW,MACH1pB,EAAe,kBAAxB,QACWA,EAAe,cAAc,cAAtC,SACC0pB,IAAW1pB,EAAe,cAAc,UAAU,OACrD0pB,MAAarnB,MAAgBrC,EAAe,SAAS,OAC5Ct1G,MAAT,QAAoB8uG,EAAIwf,EAAY,GACpC;AAAA,MAEJ,KAAK;AACH,eACG3W,IAAc,MACN33G,MAAT,SAAqB23G,IAAc33G,EAAQ,cAAc,QACzDs1G,EAAe,cAAc,UAAUqC,MACpCrC,EAAe,SAAS,OAC3B4W,GAAYqB,EAAY,GACxBoY,GAAiBrwB,CAAc,GAC/B;AAAA,MAEJ,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACb;AACE,UAAM,MAAMrwD,EAAuB,KAAKqwD,EAAe,GAAG,CAAC;AAAA,EAC7D;AACA,WAAS+wB,GAAWrmI,GAASs1G,GAAgB;AAE3C,YADA6U,GAAe7U,CAAc,GACrBA,EAAe,KAAG;AAAA,MACxB,KAAK;AACH,eACGt1G,IAAUs1G,EAAe,OAC1Bt1G,IAAU,SACJs1G,EAAe,QAASt1G,IAAU,SAAU,KAAMs1G,KACpD;AAAA,MAER,KAAK;AACH,eACE4W,GAAYqB,EAAY,GACxBzZ,GAAgB,GACf9zG,IAAUs1G,EAAe,QACnBt1G,IAAU,WAAjB,MAAkCA,IAAU,SAAjB,KACrBs1G,EAAe,QAASt1G,IAAU,SAAU,KAAMs1G,KACpD;AAAA,MAER,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOrB,GAAeqB,CAAc,GAAG;AAAA,MACzC,KAAK;AACH,YAAaA,EAAe,kBAAxB,MAAuC;AAEzC,cADA8f,GAAmB9f,CAAc,GACpBA,EAAe,cAAxB;AACF,kBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AACzC,UAAAwmE,GAAmB;AAAA,QAC3B;AACM,eAAAzrH,IAAUs1G,EAAe,OAClBt1G,IAAU,SACXs1G,EAAe,QAASt1G,IAAU,SAAU,KAAMs1G,KACpD;AAAA,MACN,KAAK;AAGH,YAFA8f,GAAmB9f,CAAc,GACjCt1G,IAAUs1G,EAAe,eACZt1G,MAAT,QAA6BA,EAAQ,eAAjB,MAA6B;AACnD,cAAas1G,EAAe,cAAxB;AACF,kBAAM,MAAMrwD,EAAuB,GAAG,CAAC;AACzC,UAAAwmE,GAAmB;AAAA,QAC3B;AACM,eAAAzrH,IAAUs1G,EAAe,OAClBt1G,IAAU,SACXs1G,EAAe,QAASt1G,IAAU,SAAU,KAAMs1G,KACpD;AAAA,MACN,KAAK;AACH,eAAOxG,EAAIkmB,EAAmB,GAAG;AAAA,MACnC,KAAK;AACH,eAAOlhB,GAAgB,GAAI;AAAA,MAC7B,KAAK;AACH,eAAOoY,GAAY5W,EAAe,IAAI,GAAG;AAAA,MAC3C,KAAK;AAAA,MACL,KAAK;AACH,eACE8f,GAAmB9f,CAAc,GACjCsf,GAAgB,GACP50H,MAAT,QAAoB8uG,EAAIwf,EAAY,GACnCtuH,IAAUs1G,EAAe,OAC1Bt1G,IAAU,SACJs1G,EAAe,QAASt1G,IAAU,SAAU,KAAMs1G,KACpD;AAAA,MAER,KAAK;AACH,eAAO4W,GAAYqB,EAAY,GAAG;AAAA,MACpC,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAAS+Y,GAAsBtmI,GAASumI,GAAiB;AAEvD,YADApc,GAAeoc,CAAe,GACtBA,EAAgB,KAAG;AAAA,MACzB,KAAK;AACH,QAAAra,GAAYqB,EAAY,GACxBzZ,GAAgB;AAChB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAG,GAAesyB,CAAe;AAC9B;AAAA,MACF,KAAK;AACH,QAAAzyB,GAAgB;AAChB;AAAA,MACF,KAAK;AACH,QAASyyB,EAAgB,kBAAzB,QACEnR,GAAmBmR,CAAe;AACpC;AAAA,MACF,KAAK;AACH,QAAAnR,GAAmBmR,CAAe;AAClC;AAAA,MACF,KAAK;AACH,QAAAz3B,EAAIkmB,EAAmB;AACvB;AAAA,MACF,KAAK;AACH,QAAA9I,GAAYqa,EAAgB,IAAI;AAChC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAnR,GAAmBmR,CAAe,GAClC3R,GAAgB,GACP50H,MAAT,QAAoB8uG,EAAIwf,EAAY;AACpC;AAAA,MACF,KAAK;AACH,QAAApC,GAAYqB,EAAY;AAAA,IAC9B;AAAA,EACA;AACA,WAASiZ,GAA0B9uG,GAAO+uG,GAAc;AACtD,QAAI;AACF,UAAI1T,IAAc0T,EAAa,aAC7BC,IAAsB3T,MAAT,OAAuBA,EAAY,aAAa;AAC/D,UAAa2T,MAAT,MAAqB;AACvB,YAAIC,IAAcD,EAAW;AAC7B,QAAA3T,IAAc4T;AACd,WAAG;AACD,eAAK5T,EAAY,MAAMr7F,OAAWA,GAAO;AACvC,YAAAgvG,IAAa;AACb,gBAAIhuI,IAASq6H,EAAY,QACvBpjE,IAAOojE,EAAY;AACrB,YAAA2T,IAAahuI,EAAM,GACnBi3D,EAAK,UAAU+2E;AAAA,UACzB;AACQ,UAAA3T,IAAcA,EAAY;AAAA,QAClC,SAAeA,MAAgB4T;AAAA,MAC/B;AAAA,IACA,SAAWh2I,GAAO;AACd,MAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,IACpE;AAAA,EACA;AACA,WAASk2I,GACPnvG,GACA+uG,GACAK,GACA;AACA,QAAI;AACF,UAAI/T,IAAc0T,EAAa,aAC7BC,IAAsB3T,MAAT,OAAuBA,EAAY,aAAa;AAC/D,UAAa2T,MAAT,MAAqB;AACvB,YAAIC,IAAcD,EAAW;AAC7B,QAAA3T,IAAc4T;AACd,WAAG;AACD,eAAK5T,EAAY,MAAMr7F,OAAWA,GAAO;AACvC,gBAAIi4B,IAAOojE,EAAY,MACrBgU,IAAUp3E,EAAK;AACjB,gBAAeo3E,MAAX,QAAoB;AACtB,cAAAp3E,EAAK,UAAU,QACf+2E,IAAaD;AACb,kBAAIO,IAAyBF,GAC3BG,KAAWF;AACb,kBAAI;AACF,gBAAAE,GAAQ;AAAA,cACtB,SAAqBt2I,IAAO;AACd,gBAAAi2I;AAAA,kBACEF;AAAA,kBACAM;AAAA,kBACAr2I;AAAA;cAEhB;AAAA,YACA;AAAA,UACA;AACQ,UAAAoiI,IAAcA,EAAY;AAAA,QAClC,SAAeA,MAAgB4T;AAAA,MAC/B;AAAA,IACA,SAAWh2I,IAAO;AACd,MAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,EAAK;AAAA,IACpE;AAAA,EACA;AACA,WAASu2I,GAAqBT,GAAc;AAC1C,QAAI1T,IAAc0T,EAAa;AAC/B,QAAa1T,MAAT,MAAsB;AACxB,UAAIvtF,IAAWihG,EAAa;AAC5B,UAAI;AACF,QAAAnS,GAAgBvB,GAAavtF,CAAQ;AAAA,MAC3C,SAAa70C,GAAO;AACd,QAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,MACtE;AAAA,IACA;AAAA,EACA;AACA,WAASw2I,GACPnnI,GACAgnI,GACAxhG,GACA;AACA,IAAAA,EAAS,QAAQ25F;AAAA,MACfn/H,EAAQ;AAAA,MACRA,EAAQ;AAAA,OAEVwlC,EAAS,QAAQxlC,EAAQ;AACzB,QAAI;AACF,MAAAwlC,EAAS,qBAAoB;AAAA,IACjC,SAAW70C,GAAO;AACd,MAAAi2I,GAAwB5mI,GAASgnI,GAAwBr2I,CAAK;AAAA,IAClE;AAAA,EACA;AACA,WAASy2I,GAAgBpnI,GAASgnI,GAAwB;AACxD,QAAI;AACF,UAAIruI,IAAMqH,EAAQ;AAClB,UAAarH,MAAT,MAAc;AAChB,gBAAQqH,EAAQ,KAAG;AAAA,UACjB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,gBAAIqnI,IAAgBrnI,EAAQ;AAC5B;AAAA,UACF,KAAK;AACH,YAAAqnI,IAAgBrnI,EAAQ;AACxB;AAAA,UACF;AACE,YAAAqnI,IAAgBrnI,EAAQ;AAAA,QAClC;AACM,QAAe,OAAOrH,KAAtB,aACKqH,EAAQ,aAAarH,EAAI0uI,CAAa,IACtC1uI,EAAI,UAAU0uI;AAAA,MACzB;AAAA,IACA,SAAW12I,GAAO;AACd,MAAAi2I,GAAwB5mI,GAASgnI,GAAwBr2I,CAAK;AAAA,IAClE;AAAA,EACA;AACA,WAAS22I,GAAgBtnI,GAASgnI,GAAwB;AACxD,QAAIruI,IAAMqH,EAAQ,KAChBq8H,IAAar8H,EAAQ;AACvB,QAAarH,MAAT;AACF,UAAmB,OAAO0jI,KAAtB;AACF,YAAI;AACF,UAAAA,EAAU;AAAA,QAClB,SAAe1rI,GAAO;AACd,UAAAi2I,GAAwB5mI,GAASgnI,GAAwBr2I,CAAK;AAAA,QACtE,UAAO;AACC,UAACqP,EAAQ,aAAa,MACnBA,IAAUA,EAAQ,WACXA,KAAR,SAAoBA,EAAQ,aAAa;AAAA,QACnD;AAAA,eAC4B,OAAOrH,KAAtB;AACP,YAAI;AACF,UAAAA,EAAI,IAAI;AAAA,QAChB,SAAe4uI,GAAW;AAClB,UAAAX,GAAwB5mI,GAASgnI,GAAwBO,CAAS;AAAA,QAC1E;AAAA,UACS,CAAA5uI,EAAI,UAAU;AAAA,EACvB;AACA,WAAS6uI,GAAgBf,GAAc;AACrC,QAAIviJ,IAAOuiJ,EAAa,MACtBlyI,IAAQkyI,EAAa,eACrBjhG,IAAWihG,EAAa;AAC1B,QAAI;AACF,MAAAjhJ,EAAG,SAAQtB,GAAI;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAqQ,EAAM,aAAaixC,EAAS,MAAK;AACjC,gBAAMhgD;AAAA,QACR,KAAK;AACH,UAAA+O,EAAM,MACDixC,EAAS,MAAMjxC,EAAM,MACtBA,EAAM,WAAWixC,EAAS,SAASjxC,EAAM;AAAA,MACrD;AAAA,IACA,SAAW5D,GAAO;AACd,MAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,IACpE;AAAA,EACA;AACA,WAAS82I,GAAiBhB,GAAczH,GAAUD,GAAU;AAC1D,QAAI;AACF,UAAIlkE,IAAa4rE,EAAa;AAC9B,MAAAiB,GAAiB7sE,GAAY4rE,EAAa,MAAM1H,GAAUC,CAAQ,GAClEnkE,EAAWo/C,EAAgB,IAAI+kB;AAAA,IACnC,SAAWruI,GAAO;AACd,MAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,IACpE;AAAA,EACA;AACA,WAASg3I,GAAa71B,GAAO;AAC3B,WACQA,EAAM,QAAZ,KACMA,EAAM,QAAZ,KACOA,EAAM,QAAb,MACQA,EAAM,QAAb,MAAoBwZ,GAAiBxZ,EAAM,IAAI,KAC1CA,EAAM,QAAZ;AAAA,EAEJ;AACA,WAAS81B,GAAe91B,GAAO;AAC7B,IAAAtsH,EAAG,YAAS;AACV,aAAgBssH,EAAM,YAAf,QAA0B;AAC/B,YAAaA,EAAM,WAAf,QAAyB61B,GAAa71B,EAAM,MAAM,EAAG,QAAO;AAChE,QAAAA,IAAQA,EAAM;AAAA,MACpB;AAEI,WADAA,EAAM,QAAQ,SAASA,EAAM,QAE3BA,IAAQA,EAAM,SACRA,EAAM,QAAZ,KAAyBA,EAAM,QAAZ,KAA0BA,EAAM,QAAb,MAEtC;AAGA,YAFWA,EAAM,QAAb,MAAoBwZ,GAAiBxZ,EAAM,IAAI,KAC/CA,EAAM,QAAQ,KACLA,EAAM,UAAf,QAA8BA,EAAM,QAAZ,EAAiB,UAAStsH;AACjD,QAACssH,EAAM,MAAM,SAASA,GAASA,IAAQA,EAAM;AAAA,MACxD;AACI,UAAI,EAAEA,EAAM,QAAQ,GAAI,QAAOA,EAAM;AAAA,IACzC;AAAA,EACA;AACA,WAAS+1B,GAAyC3vH,GAAM4vH,GAAQp/I,GAAQ;AACtE,QAAIisC,IAAMzc,EAAK;AACf,QAAUyc,MAAN,KAAmBA,MAAN;AACf,MAACzc,IAAOA,EAAK,WACX4vH,KACWp/I,EAAO,aAAb,IACGA,EAAO,OACIA,EAAO,aAAlB,SACEA,EAAO,cAAc,OACrBA,GACJ,aAAawvB,GAAM4vH,CAAM,KACzBA,IACMp/I,EAAO,aAAb,IACIA,EAAO,OACIA,EAAO,aAAlB,SACEA,EAAO,cAAc,OACrBA,GACRo/I,EAAO,YAAY5vH,CAAI,GACtBxvB,IAASA,EAAO,qBACPA,KAAT,QACUo/I,EAAO,YAAhB,SACCA,EAAO,UAAUxpB;AAAA,aAEpB3pF,MAAN,MACQA,MAAP,MACC22F,GAAiBpzG,EAAK,IAAI,MACxBxvB,IAASwvB,EAAK,WAAa4vH,IAAS,OACvC5vH,IAAOA,EAAK,OACJA,MAAT;AAEA,WACE2vH,GAAyC3vH,GAAM4vH,GAAQp/I,CAAM,GAC3DwvB,IAAOA,EAAK,SACLA,MAAT;AAGA,QAAA2vH,GAAyC3vH,GAAM4vH,GAAQp/I,CAAM,GAC1DwvB,IAAOA,EAAK;AAAA,EACrB;AACA,WAAS6vH,GAA4B7vH,GAAM4vH,GAAQp/I,GAAQ;AACzD,QAAIisC,IAAMzc,EAAK;AACf,QAAUyc,MAAN,KAAmBA,MAAN;AACf,MAACzc,IAAOA,EAAK,WACX4vH,IAASp/I,EAAO,aAAawvB,GAAM4vH,CAAM,IAAIp/I,EAAO,YAAYwvB,CAAI;AAAA,aAEhEyc,MAAN,MACQA,MAAP,MAAc22F,GAAiBpzG,EAAK,IAAI,MAAMxvB,IAASwvB,EAAK,YAC5DA,IAAOA,EAAK,OACJA,MAAT;AAEA,WACE6vH,GAA4B7vH,GAAM4vH,GAAQp/I,CAAM,GAAGwvB,IAAOA,EAAK,SACtDA,MAAT;AAGA,QAAA6vH,GAA4B7vH,GAAM4vH,GAAQp/I,CAAM,GAAIwvB,IAAOA,EAAK;AAAA,EACtE;AACA,WAAS8vH,GAA+BvB,GAAc;AACpD,QAAIwB,IAAYxB,EAAa,WAC3BlyI,IAAQkyI,EAAa;AACvB,QAAI;AACF,eACMviJ,IAAOuiJ,EAAa,MAAMz7F,IAAai9F,EAAU,YACrDj9F,EAAW;AAGX,QAAAi9F,EAAU,oBAAoBj9F,EAAW,CAAC,CAAC;AAC7C,MAAA05F,GAAqBuD,GAAW/jJ,GAAMqQ,CAAK,GAC3C0zI,EAAUjuB,EAAmB,IAAIysB,GACjCwB,EAAUhuB,EAAgB,IAAI1lH;AAAA,IAClC,SAAW5D,GAAO;AACd,MAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,IACpE;AAAA,EACA;AACA,MAAIu3I,KAA2B,IAC7BC,KAA4B,IAC5BC,KAAiB,IACjBC,KAAiC,OAAO,WAAtB,aAAgC,UAAU,KAC5DC,KAAa;AACf,WAASC,GAA4BpuD,GAAMujC,GAAY;AAIrD,QAHAvjC,IAAOA,EAAK,eACZquD,KAAgBC,IAChBtuD,IAAOwrC,GAAqBxrC,CAAI,GAC5ByrC,GAAyBzrC,CAAI,GAAG;AAClC,UAAI,oBAAoBA;AACtB,YAAIgxC,IAAkB;AAAA,UACpB,OAAOhxC,EAAK;AAAA,UACZ,KAAKA,EAAK;AAAA;;AAGZ,QAAA30F,GAAG;AACD,UAAA2lI,KACIA,IAAkBhxC,EAAK,kBACvBgxC,EAAgB,eAClB;AACF,cAAIhsE,IACFgsE,EAAgB,gBAAgBA,EAAgB,aAAY;AAC9D,cAAIhsE,KAAmBA,EAAU,eAAhB,GAA4B;AAC3C,YAAAgsE,IAAkBhsE,EAAU;AAC5B,gBAAIupF,IAAevpF,EAAU,cAC3BwpF,IAAYxpF,EAAU;AACxB,YAAAA,IAAYA,EAAU;AACtB,gBAAI;AACF,cAAAgsE,EAAgB,UAAUwd,EAAU;AAAA,YAChD,QAAyB;AACb,cAAAxd,IAAkB;AAClB,oBAAM3lI;AAAA,YAClB;AACU,gBAAI8X,IAAS,GACXkC,IAAQ,IACRqmB,IAAM,IACN+iH,KAAoB,GACpBC,KAAmB,GACnB3wH,KAAOiiE,GACPtnB,KAAa;AACf,YAAAl1D,EAAG,YAAS;AACV,uBAASsC,IACPiY,OAASizG,KACAud,MAAN,KAA4BxwH,GAAK,aAAX,MACtB1Y,IAAQlC,IAASorI,IACpBxwH,OAASywH,KACAxpF,MAAN,KAAyBjnC,GAAK,aAAX,MACnB2N,IAAMvoB,IAAS6hD,IACZjnC,GAAK,aAAX,MAAwB5a,KAAU4a,GAAK,UAAU,UACnCjY,KAAOiY,GAAK,gBAAtB;AACJ,gBAAA26C,KAAa36C,IACbA,KAAOjY;AAET,yBAAS;AACP,oBAAIiY,OAASiiE,EAAM,OAAMx8E;AAOzB,oBANAk1D,OAAes4D,KACb,EAAEyd,OAAsBF,MACvBlpI,IAAQlC,IACXu1D,OAAe81E,KACb,EAAEE,OAAqB1pF,MACtBt5B,IAAMvoB,KACK2C,KAAOiY,GAAK,iBAAtB,KAAoC;AACxC,gBAAAA,KAAO26C,IACPA,KAAa36C,GAAK;AAAA,cAChC;AACY,cAAAA,KAAOjY;AAAA,YACnB;AACU,YAAAkrH,IACS3rH,MAAP,MAAuBqmB,MAAP,KAAa,OAAO,EAAE,OAAOrmB,GAAO,KAAKqmB,EAAG;AAAA,UACxE,MAAe,CAAAslG,IAAkB;AAAA,QACjC;AACI,MAAAA,IAAkBA,KAAmB,EAAE,OAAO,GAAG,KAAK,EAAC;AAAA,IAC3D,MAAS,CAAAA,IAAkB;AAGzB,SAFA2d,KAAuB,EAAE,aAAa3uD,GAAM,gBAAgBgxC,EAAe,GAC3Esd,KAAW,IACNH,KAAa5qB,GAAqB4qB,OAAT;AAC5B,UACI5qB,IAAa4qB,IACdnuD,IAAOujC,EAAW,QACZA,EAAW,eAAe,UAAjC,KAAmDvjC,MAAT;AAE1C,QAACA,EAAK,SAASujC,GAAc4qB,KAAanuD;AAAA;AAE1C,eAAgBmuD,OAAT,QAAuB;AAI5B,kBAHA5qB,IAAa4qB,IACbK,IAAYjrB,EAAW,WACvBvjC,IAAOujC,EAAW,OACVA,EAAW,KAAG;AAAA,YACpB,KAAK;AACH,mBACSvjC,IAAO,OAAd,MACEA,IAAOujC,EAAW,aACnBvjC,IAAgBA,MAAT,OAAgBA,EAAK,SAAS,MAC7BA,MAAT;AAEA,qBACEgxC,IAAkB,GAClBA,IAAkBhxC,EAAK,QACvBgxC;AAEA,kBAACud,IAAevuD,EAAKgxC,CAAe,GACjCud,EAAa,IAAI,OAAOA,EAAa;AAC5C;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH;AAAA,YACF,KAAK;AACH,mBAAWvuD,IAAO,UAAd,KAAgCwuD,MAAT,MAAoB;AAC7C,gBAAAxuD,IAAO,QACPgxC,IAAkBzN,GAClBgrB,IAAeC,EAAU,eACzBA,IAAYA,EAAU,eACtBxpF,IAAYgsE,EAAgB;AAC5B,oBAAI;AACF,sBAAI4d,KAAoB5J;AAAA,oBACtBhU,EAAgB;AAAA,oBAChBud;AAAA;AAEF,kBAAAvuD,IAAOh7B,EAAU;AAAA,oBACf4pF;AAAA,oBACAJ;AAAA,qBAEFxpF,EAAU,sCAAsCg7B;AAAA,gBAChE,SAAuBxpF,IAAO;AACd,kBAAAi2I;AAAA,oBACEzb;AAAA,oBACAA,EAAgB;AAAA,oBAChBx6H;AAAA;gBAElB;AAAA,cACA;AACY;AAAA,YACF,KAAK;AACH,mBAAWwpF,IAAO,UAAd;AACF,oBACIA,IAAOujC,EAAW,UAAU,eAC7ByN,IAAkBhxC,EAAK,UAClBgxC,MAAN;AAEA,kBAAA6d,GAAwB7uD,CAAI;AAAA,yBACfgxC,MAAN;AACP,0BAAQhxC,EAAK,UAAQ;AAAA,oBACnB,KAAK;AAAA,oBACL,KAAK;AAAA,oBACL,KAAK;AACH,sBAAA6uD,GAAwB7uD,CAAI;AAC5B;AAAA,oBACF;AACE,sBAAAA,EAAK,cAAc;AAAA,kBACvC;AAAA;AACY;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH;AAAA,YACF;AACE,mBAAWA,IAAO,UAAd,EAAqB,OAAM,MAAMl1B,EAAuB,GAAG,CAAC;AAAA,UAC5E;AAEQ,cADAk1B,IAAOujC,EAAW,SACLvjC,MAAT,MAAe;AACjB,YAAAA,EAAK,SAASujC,EAAW,QACzB4qB,KAAanuD;AACb;AAAA,UACV;AACQ,UAAAmuD,KAAa5qB,EAAW;AAAA,QAChC;AAAA,EACA;AACA,WAASurB,GAA0BC,GAAclpI,GAASymI,GAAc;AACtE,QAAI/uG,IAAQ+uG,EAAa;AACzB,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,GAAiCD,GAAczC,CAAY,GAC3D/uG,IAAQ,KAAK8uG,GAA0B,GAAGC,CAAY;AACtD;AAAA,MACF,KAAK;AAEH,YADA0C,GAAiCD,GAAczC,CAAY,GACvD/uG,IAAQ;AACV,cAAMwxG,IAAezC,EAAa,WAAqBzmI,MAAT;AAC5C,gBAAI;AACF,cAAAkpI,EAAa,kBAAiB;AAAA,YAC1C,SAAmBv4I,GAAO;AACd,cAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,YAC5E;AAAA,eACa;AACH,gBAAI0wI,IAAYlC;AAAA,cACdsH,EAAa;AAAA,cACbzmI,EAAQ;AAAA;AAEV,YAAAA,IAAUA,EAAQ;AAClB,gBAAI;AACF,cAAAkpI,EAAa;AAAA,gBACX7H;AAAA,gBACArhI;AAAA,gBACAkpI,EAAa;AAAA;YAE3B,SAAmBE,GAAW;AAClB,cAAAxC;AAAA,gBACEH;AAAA,gBACAA,EAAa;AAAA,gBACb2C;AAAA;YAEd;AAAA,UACA;AACM,QAAA1xG,IAAQ,MAAMwvG,GAAqBT,CAAY,GAC/C/uG,IAAQ,OAAO0vG,GAAgBX,GAAcA,EAAa,MAAM;AAChE;AAAA,MACF,KAAK;AAEH,YADA0C,GAAiCD,GAAczC,CAAY,GAEzD/uG,IAAQ,OACNwxG,IAAezC,EAAa,aAAuByC,MAAT,OAC5C;AAEA,cADAlpI,IAAU,MACGymI,EAAa,UAAtB;AACF,oBAAQA,EAAa,MAAM,KAAG;AAAA,cAC5B,KAAK;AAAA,cACL,KAAK;AACH,gBAAAzmI,IAAUymI,EAAa,MAAM;AAC7B;AAAA,cACF,KAAK;AACH,gBAAAzmI,IAAUymI,EAAa,MAAM;AAAA,YAC3C;AACQ,cAAI;AACF,YAAAnS,GAAgB4U,GAAclpI,CAAO;AAAA,UAC/C,SAAiBrP,GAAO;AACd,YAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,UAC1E;AAAA,QACA;AACM;AAAA,MACF,KAAK;AACH,QAASqP,MAAT,QACE03B,IAAQ,KACRswG,GAA+BvB,CAAY;AAAA,MAC/C,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,GAAiCD,GAAczC,CAAY,GAClDzmI,MAAT,QAAoB03B,IAAQ,KAAK8vG,GAAgBf,CAAY,GAC7D/uG,IAAQ,OAAO0vG,GAAgBX,GAAcA,EAAa,MAAM;AAChE;AAAA,MACF,KAAK;AACH,QAAA0C,GAAiCD,GAAczC,CAAY;AAC3D;AAAA,MACF,KAAK;AACH,QAAA0C,GAAiCD,GAAczC,CAAY,GAC3D/uG,IAAQ,KAAK2xG,GAAiCH,GAAczC,CAAY;AACxE;AAAA,MACF,KAAK;AACH,QAAA0C,GAAiCD,GAAczC,CAAY,GAC3D/uG,IAAQ,KAAK4xG,GAAiCJ,GAAczC,CAAY,GACxE/uG,IAAQ,OACJwxG,IAAezC,EAAa,eACrByC,MAAT,SACIA,IAAeA,EAAa,YACrBA,MAAT,SACIzC,IAAe8C,GAAgC;AAAA,UAC/C;AAAA,UACA9C;AAAA,WAEF+C,GAA8BN,GAAczC,CAAY;AAC9D;AAAA,MACF,KAAK;AAEH,YADA/uG,IAAiB+uG,EAAa,kBAAtB,QAAuCyB,IAC3C,CAACxwG,GAAO;AACV,UAAA13B,IACYA,MAAT,QAA6BA,EAAQ,kBAAjB,QACrBmoI,IACF9G,IAAY6G;AACZ,cAAIuB,IAAgCtB;AACpC,UAAAD,KAA2BxwG,IAC1BywG,KAA4BnoI,MAAY,CAACypI,IACtCC;AAAA,YACER;AAAA,YACAzC;AAAA,aACOA,EAAa,eAAe,UAAnC;AAAA,UACd,IACY0C,GAAiCD,GAAczC,CAAY,GAC/DyB,KAA2B7G,GAC3B8G,KAA4BsB;AAAA,QACpC;AACM;AAAA,MACF,KAAK;AACH;AAAA,MACF;AACE,QAAAN,GAAiCD,GAAczC,CAAY;AAAA,IACjE;AAAA,EACA;AACA,WAASkD,GAAwB73B,GAAO;AACtC,QAAIQ,IAAYR,EAAM;AACtB,IAASQ,MAAT,SACIR,EAAM,YAAY,MAAO63B,GAAwBr3B,CAAS,IAC9DR,EAAM,QAAQ,MACdA,EAAM,YAAY,MAClBA,EAAM,UAAU,MACVA,EAAM,QAAZ,MACIQ,IAAYR,EAAM,WACXQ,MAAT,QAAsBkI,EAAsBlI,CAAS,IACvDR,EAAM,YAAY,MAClBA,EAAM,SAAS,MACfA,EAAM,eAAe,MACrBA,EAAM,gBAAgB,MACtBA,EAAM,gBAAgB,MACtBA,EAAM,eAAe,MACrBA,EAAM,YAAY,MAClBA,EAAM,cAAc;AAAA,EACtB;AACA,MAAI83B,KAAa,MACfC,KAAwB;AAC1B,WAASC,GACPZ,GACAlC,GACAt+I,GACA;AACA,SAAKA,IAASA,EAAO,OAAgBA,MAAT;AAC1B,MAAAqhJ,GAA6Bb,GAAclC,GAAwBt+I,CAAM,GACtEA,IAASA,EAAO;AAAA,EACvB;AACA,WAASqhJ,GACPb,GACAlC,GACAgD,GACA;AACA,QAAI3zB,MAA+B,OAAOA,GAAa,wBAAnC;AAClB,UAAI;AACF,QAAAA,GAAa,qBAAqBD,IAAY4zB,CAAY;AAAA,MAChE,QAAkB;AAAA,MAAA;AAChB,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AACH,QAAA7B,MACEb,GAAgB0C,GAAchD,CAAsB,GACtD8C;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA,WAEFA,EAAa,gBACTA,EAAa,cAAc,UAC3BA,EAAa,cACXA,IAAeA,EAAa,WAC9BA,EAAa,WAAW,YAAYA,CAAY;AACpD;AAAA,MACF,KAAK;AACH,QAAA7B,MACEb,GAAgB0C,GAAchD,CAAsB;AACtD,YAAIiD,IAAiBL,IACnBM,IAA4BL;AAC9B,QAAAve,GAAiB0e,EAAa,IAAI,MAC9BJ,KAAaI,EAAa,WAAaH,KAAwB,KACnEC;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA,WAEFG,GAAyBH,EAAa,SAAS,GAC/CJ,KAAaK,GACbJ,KAAwBK;AACxB;AAAA,MACF,KAAK;AACH,QAAA/B,MACEb,GAAgB0C,GAAchD,CAAsB;AAAA,MACxD,KAAK;AAWH,YAVAiD,IAAiBL,IACjBM,IAA4BL,IAC5BD,KAAa,MACbE;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA,WAEFJ,KAAaK,GACbJ,KAAwBK,GACXN,OAAT;AACF,cAAIC;AACF,gBAAI;AACF,eAAOD,GAAW,aAAjB,IACGA,GAAW,OACAA,GAAW,aAAtB,SACEA,GAAW,cAAc,OACzBA,IACJ,YAAYI,EAAa,SAAS;AAAA,YAChD,SAAmBr5I,GAAO;AACd,cAAAi2I;AAAA,gBACEoD;AAAA,gBACAhD;AAAA,gBACAr2I;AAAA;YAEd;AAAA;AAEU,gBAAI;AACF,cAAAi5I,GAAW,YAAYI,EAAa,SAAS;AAAA,YACzD,SAAmBr5I,GAAO;AACd,cAAAi2I;AAAA,gBACEoD;AAAA,gBACAhD;AAAA,gBACAr2I;AAAA;YAEd;AACM;AAAA,MACF,KAAK;AACH,QAASi5I,OAAT,SACGC,MACKX,IAAeU,IACjBQ;AAAA,UACQlB,EAAa,aAAnB,IACIA,EAAa,OACFA,EAAa,aAAxB,SACEA,EAAa,cAAc,OAC3BA;AAAA,UACNc,EAAa;AAAA,WAEfK,GAAiBnB,CAAY,KAC7BkB,GAAuBR,IAAYI,EAAa,SAAS;AAC/D;AAAA,MACF,KAAK;AACH,QAAAC,IAAiBL,IACjBM,IAA4BL,IAC5BD,KAAaI,EAAa,UAAU,eACpCH,KAAwB,IACxBC;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA,WAEFJ,KAAaK,GACbJ,KAAwBK;AACxB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAArD,GAA4B,GAAGmD,GAAchD,CAAsB,GACnEmB,MACEtB,GAA4B,GAAGmD,GAAchD,CAAsB,GACrE8C;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA7B,OACGb,GAAgB0C,GAAchD,CAAsB,GACpDiD,IAAiBD,EAAa,WAChB,OAAOC,EAAe,wBAArC,cACE9C;AAAA,UACE6C;AAAA,UACAhD;AAAA,UACAiD;AAAA,QACZ,IACMH;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAF;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA7B,MACG8B,IAAiB9B,OACT6B,EAAa,kBAAtB,MACFF;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA,WAEF7B,KAA4B8B;AAC5B;AAAA,MACF;AACE,QAAAH;AAAA,UACEZ;AAAA,UACAlC;AAAA,UACAgD;AAAA;IAER;AAAA,EACA;AACA,WAASX,GAAiCH,GAAczC,GAAc;AACpE,QACWA,EAAa,kBAAtB,SACEyC,IAAezC,EAAa,WACrByC,MAAT,SACIA,IAAeA,EAAa,eAAyBA,MAAT,QAChD;AACA,MAAAA,IAAeA,EAAa;AAC5B,UAAI;AACF,QAAAmB,GAAiBnB,CAAY;AAAA,MACnC,SAAav4I,GAAO;AACd,QAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,MACtE;AAAA,IACA;AAAA,EACA;AACA,WAAS24I,GAAiCJ,GAAczC,GAAc;AACpE,QACWA,EAAa,kBAAtB,SACEyC,IAAezC,EAAa,WACrByC,MAAT,SACIA,IAAeA,EAAa,eACrBA,MAAT,SACIA,IAAeA,EAAa,YAAsBA,MAAT;AAE/C,UAAI;AACF,QAAAmB,GAAiBnB,CAAY;AAAA,MACnC,SAAav4I,GAAO;AACd,QAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,MACtE;AAAA,EACA;AACA,WAAS25I,GAAc7D,GAAc;AACnC,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,YAAI8D,IAAa9D,EAAa;AAC9B,eAAS8D,MAAT,SACGA,IAAa9D,EAAa,YAAY,IAAI4B,GAAe,IACrDkC;AAAA,MACT,KAAK;AACH,eACG9D,IAAeA,EAAa,WAC5B8D,IAAa9D,EAAa,aAClB8D,MAAT,SACGA,IAAa9D,EAAa,cAAc,IAAI4B,GAAe,IAC9DkC;AAAA,MAEJ;AACE,cAAM,MAAMtlF,EAAuB,KAAKwhF,EAAa,GAAG,CAAC;AAAA,IAC/D;AAAA,EACA;AACA,WAAS+D,GAA6B/D,GAAcgE,GAAW;AAC7D,QAAIF,IAAaD,GAAc7D,CAAY;AAC3C,IAAAgE,EAAU,QAAQ,SAAUC,GAAU;AACpC,UAAI,CAACH,EAAW,IAAIG,CAAQ,GAAG;AAC7B,QAAAH,EAAW,IAAIG,CAAQ;AACvB,YAAIC,IAAQC,GAAqB,KAAK,MAAMnE,GAAciE,CAAQ;AAClE,QAAAA,EAAS,KAAKC,GAAOA,CAAK;AAAA,MAChC;AAAA,IACA,CAAG;AAAA,EACH;AACA,WAASE,GAAmCC,GAAeC,GAAa;AACtE,QAAIta,IAAYsa,EAAY;AAC5B,QAAata,MAAT;AACF,eAAS9qI,IAAI,GAAGA,IAAI8qI,EAAU,QAAQ9qI,KAAK;AACzC,YAAI6qI,IAAgBC,EAAU9qI,CAAC,GAC7Bw0F,IAAO2wD,GACP3a,IAAc4a,GACdriJ,IAASynI;AACX,QAAA3qI,EAAG,QAAgBkD,MAAT,QAAmB;AAC3B,kBAAQA,EAAO,KAAG;AAAA,YAChB,KAAK;AACH,kBAAI4iI,GAAiB5iI,EAAO,IAAI,GAAG;AACjC,gBAAAkhJ,KAAalhJ,EAAO,WACpBmhJ,KAAwB;AACxB,sBAAMrkJ;AAAA,cACpB;AACY;AAAA,YACF,KAAK;AACH,cAAAokJ,KAAalhJ,EAAO,WACpBmhJ,KAAwB;AACxB,oBAAMrkJ;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACH,cAAAokJ,KAAalhJ,EAAO,UAAU,eAC9BmhJ,KAAwB;AACxB,oBAAMrkJ;AAAA,UAClB;AACQ,UAAAkD,IAASA,EAAO;AAAA,QACxB;AACM,YAAakhJ,OAAT,KAAqB,OAAM,MAAM3kF,EAAuB,GAAG,CAAC;AAChE,QAAA8kF,GAA6B5vD,GAAMg2C,GAAaK,CAAa,GAC7DoZ,KAAa,MACbC,KAAwB,IACxB1vD,IAAOq2C,EAAc,WACZr2C,MAAT,SAAkBA,EAAK,SAAS,OAChCq2C,EAAc,SAAS;AAAA,MAC7B;AACE,QAAIua,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT;AACpC,QAAAC,GAA6BD,GAAaD,CAAa,GACpDC,IAAcA,EAAY;AAAA,EACnC;AACA,MAAIE,KAAuB;AAC3B,WAASD,GAA6BvE,GAActsD,GAAM;AACxD,QAAIn6E,IAAUymI,EAAa,WACzB/uG,IAAQ+uG,EAAa;AACvB,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAoE,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,MACLmvG,GAA4B,GAAGJ,GAAcA,EAAa,MAAM,GACjED,GAA0B,GAAGC,CAAY,GACzCI,GAA4B,GAAGJ,GAAcA,EAAa,MAAM;AAClE;AAAA,MACF,KAAK;AACH,QAAAoE,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,QACLywG,MACUnoI,MAAT,QACAsnI,GAAgBtnI,GAASA,EAAQ,MAAM,IAC3C03B,IAAQ,MACNwwG,OACEzB,IAAeA,EAAa,aACrBA,MAAT,SACI/uG,IAAQ+uG,EAAa,WACd/uG,MAAT,SACI13B,IAAUymI,EAAa,OAAO,iBAC/BA,EAAa,OAAO,kBACVzmI,MAAT,OAAmB03B,IAAQ13B,EAAQ,OAAO03B,CAAK;AACvD;AAAA,MACF,KAAK;AACH,YAAIyzG,IAAgBF;AAOpB,YANAJ,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,QACLywG,MACUnoI,MAAT,QACAsnI,GAAgBtnI,GAASA,EAAQ,MAAM,IACvC03B,IAAQ,GAAG;AACb,cAAI0zG,IAA2BprI,MAAT,OAAmBA,EAAQ,gBAAgB;AAEjE,cADA03B,IAAQ+uG,EAAa,eACRzmI,MAAT;AACF,gBAAa03B,MAAT;AACF,kBAAa+uG,EAAa,cAAtB,MAAiC;AACnC,gBAAAjhJ,GAAG;AACD,kBAAAkyC,IAAQ+uG,EAAa,MACrBzmI,IAAUymI,EAAa,eACvB0E,IAAgBA,EAAc,iBAAiBA;AAC/C,kBAAAxtI,EAAG,SAAQ+5B,GAAK;AAAA,oBACd,KAAK;AACH,sBAAA0zG,IACED,EAAc,qBAAqB,OAAO,EAAE,CAAC,IAE7C,CAACC,KACDA,EAAgB7wB,EAAuB,KACvC6wB,EAAgBpxB,EAAmB,KAEjCoxB,EAAgB,iBADlB,gCAEAA,EAAgB,aAAa,UAAU,OAEtCA,IAAkBD,EAAc,cAAczzG,CAAK,GAClDyzG,EAAc,KAAK;AAAA,wBACjBC;AAAA,wBACAD,EAAc,cAAc,cAAc;AAAA,0BAEhDzG,GAAqB0G,GAAiB1zG,GAAO13B,CAAO,GACpDorI,EAAgBpxB,EAAmB,IAAIysB,GACvCzrB,GAAoBowB,CAAe,GACnC1zG,IAAQ0zG;AACR,4BAAM5lJ;AAAA,oBACR,KAAK;AACH,0BAAI6lJ,IAAaC;AAAA,wBACf;AAAA,wBACA;AAAA,wBACAH;AAAA,wBACA,IAAIzzG,KAAS13B,EAAQ,QAAQ,GAAG;AAClC,0BAAIqrI;AACF,iCAAS1lJ,IAAI,GAAGA,IAAI0lJ,EAAW,QAAQ1lJ;AACrC,8BACIylJ,IAAkBC,EAAW1lJ,CAAC,GAChCylJ,EAAgB,aAAa,MAAM,OACxBprI,EAAQ,QAAhB,QAA+BA,EAAQ,SAAf,KACrB,OACAA,EAAQ,SACZorI,EAAgB,aAAa,KAAK,OACvBprI,EAAQ,OAAhB,OAAsB,OAAOA,EAAQ,QACxCorI,EAAgB,aAAa,OAAO,OACzBprI,EAAQ,SAAhB,OAAwB,OAAOA,EAAQ,UAC1CorI,EAAgB,aAAa,aAAa,OAC/BprI,EAAQ,eAAhB,OACG,OACAA,EAAQ,cAChB;AACA,4BAAAqrI,EAAW,OAAO1lJ,GAAG,CAAC;AACtB,kCAAMgY;AAAA,0BAChC;AAAA;AACoB,sBAAAytI,IAAkBD,EAAc,cAAczzG,CAAK,GACnDgtG,GAAqB0G,GAAiB1zG,GAAO13B,CAAO,GACpDmrI,EAAc,KAAK,YAAYC,CAAe;AAC9C;AAAA,oBACF,KAAK;AACH,0BACGC,IAAaC;AAAA,wBACZ;AAAA,wBACA;AAAA,wBACAH;AAAA,wBACA,IAAIzzG,KAAS13B,EAAQ,WAAW,GAAG;AAErC,6BAAKra,IAAI,GAAGA,IAAI0lJ,EAAW,QAAQ1lJ;AACjC,8BACIylJ,IAAkBC,EAAW1lJ,CAAC,GAChCylJ,EAAgB,aAAa,SAAS,OAC3BprI,EAAQ,WAAhB,OACG,OACA,KAAKA,EAAQ,YACjBorI,EAAgB,aAAa,MAAM,OACxBprI,EAAQ,QAAhB,OAAuB,OAAOA,EAAQ,SACzCorI,EAAgB,aAAa,UAAU,OAC5BprI,EAAQ,YAAhB,OACG,OACAA,EAAQ,aACdorI,EAAgB,aAAa,YAAY,OAC9BprI,EAAQ,aAAhB,OACG,OACAA,EAAQ,cACdorI,EAAgB,aAAa,SAAS,OAC3BprI,EAAQ,WAAhB,OACG,OACAA,EAAQ,UAChB;AACA,4BAAAqrI,EAAW,OAAO1lJ,GAAG,CAAC;AACtB,kCAAMgY;AAAA,0BAChC;AAAA;AACoB,sBAAAytI,IAAkBD,EAAc,cAAczzG,CAAK,GACnDgtG,GAAqB0G,GAAiB1zG,GAAO13B,CAAO,GACpDmrI,EAAc,KAAK,YAAYC,CAAe;AAC9C;AAAA,oBACF;AACE,4BAAM,MAAMnmF,EAAuB,KAAKvtB,CAAK,CAAC;AAAA,kBAClE;AACgB,kBAAA0zG,EAAgBpxB,EAAmB,IAAIysB,GACvCzrB,GAAoBowB,CAAe,GACnC1zG,IAAQ0zG;AAAA,gBACxB;AACc,gBAAA3E,EAAa,YAAY/uG;AAAA,cACvC;AACc,gBAAA6zG;AAAA,kBACEJ;AAAA,kBACA1E,EAAa;AAAA,kBACbA,EAAa;AAAA;;AAGjB,cAAAA,EAAa,YAAY+E;AAAA,gBACvBL;AAAA,gBACAzzG;AAAA,gBACA+uG,EAAa;AAAA;;AAGjB,YAAA2E,MAAoB1zG,KACN0zG,MAAT,OACYprI,EAAQ,cAAjB,SACEA,IAAUA,EAAQ,WACpBA,EAAQ,WAAW,YAAYA,CAAO,KACtCorI,EAAgB,SACX1zG,MAAT,OACI6zG;AAAA,cACEJ;AAAA,cACA1E,EAAa;AAAA,cACbA,EAAa;AAAA,YACjC,IACkB+E;AAAA,cACEL;AAAA,cACAzzG;AAAA,cACA+uG,EAAa;AAAA,iBAEV/uG,MAAT,QACS+uG,EAAa,cAAtB,QACAgB;AAAA,cACEhB;AAAA,cACAA,EAAa;AAAA,cACbzmI,EAAQ;AAAA;QAExB;AACM;AAAA,MACF,KAAK;AACH,QAAA6qI,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,QACLywG,MACUnoI,MAAT,QACAsnI,GAAgBtnI,GAASA,EAAQ,MAAM,IAClCA,MAAT,QACE03B,IAAQ,KACR+vG;AAAA,UACEhB;AAAA,UACAA,EAAa;AAAA,UACbzmI,EAAQ;AAAA;AAEZ;AAAA,MACF,KAAK;AAOH,YANA6qI,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,QACLywG,MACUnoI,MAAT,QACAsnI,GAAgBtnI,GAASA,EAAQ,MAAM,IACvCymI,EAAa,QAAQ,IAAI;AAC3B,UAAA0E,IAAgB1E,EAAa;AAC7B,cAAI;AACF,YAAAhpB,GAAe0tB,GAAe,EAAE;AAAA,UAC1C,SAAiBx6I,IAAO;AACd,YAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,EAAK;AAAA,UAC1E;AAAA,QACA;AACM,QAAA+mC,IAAQ,KACE+uG,EAAa,aAArB,SACE0E,IAAgB1E,EAAa,eAC/BgB;AAAA,UACEhB;AAAA,UACA0E;AAAA,UACSnrI,MAAT,OAAmBA,EAAQ,gBAAgBmrI;AAAA,QACrD,IACMzzG,IAAQ,SAAS0wG,KAAiB;AAClC;AAAA,MACF,KAAK;AAGH,YAFAyC,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACpC/uG,IAAQ,GAAG;AACb,cAAa+uG,EAAa,cAAtB;AACF,kBAAM,MAAMxhF,EAAuB,GAAG,CAAC;AACzC,UAAAvtB,IAAQ+uG,EAAa,eACrBzmI,IAAUymI,EAAa;AACvB,cAAI;AACF,YAAAzmI,EAAQ,YAAY03B;AAAA,UAC9B,SAAiB/mC,IAAO;AACd,YAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,EAAK;AAAA,UAC1E;AAAA,QACA;AACM;AAAA,MACF,KAAK;AAOH,YANA86I,KAAY,MACZN,IAAgBF,IAChBA,KAAuBS,GAAiBvxD,EAAK,aAAa,GAC1D0wD,GAAmC1wD,GAAMssD,CAAY,GACrDwE,KAAuBE,GACvBD,GAA4BzE,CAAY,GACpC/uG,IAAQ,KAAc13B,MAAT,QAAoBA,EAAQ,cAAc;AACzD,cAAI;AACF,YAAAqqI,GAAiBlwD,EAAK,aAAa;AAAA,UAC7C,SAAiBxpF,IAAO;AACd,YAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,EAAK;AAAA,UAC1E;AACM,QAAAy3I,OACIA,KAAiB,IAAKuD,GAAsBlF,CAAY;AAC5D;AAAA,MACF,KAAK;AACH,QAAA/uG,IAAQuzG,IACRA,KAAuBS;AAAA,UACrBjF,EAAa,UAAU;AAAA,WAEzBoE,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxCwE,KAAuBvzG;AACvB;AAAA,MACF,KAAK;AACH,QAAAmzG,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY;AACxC;AAAA,MACF,KAAK;AACH,QAAAoE,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,MACJA,IAAQ+uG,EAAa,aACd/uG,MAAT,SACI+uG,EAAa,cAAc,MAC7B+D,GAA6B/D,GAAc/uG,CAAK;AACpD;AAAA,MACF,KAAK;AACH,QAAAmzG,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxCA,EAAa,MAAM,QAAQ,QACfA,EAAa,kBAAtB,SACWzmI,MAAT,QAA6BA,EAAQ,kBAAjB,UACtB4rI,KAA+Bj2B,GAAG,IACrCj+E,IAAQ,MACJA,IAAQ+uG,EAAa,aACd/uG,MAAT,SACI+uG,EAAa,cAAc,MAC7B+D,GAA6B/D,GAAc/uG,CAAK;AACpD;AAAA,MACF,KAAK;AACH,QAAAyzG,IAAyB1E,EAAa,kBAAtB;AAChB,YAAIoF,IAAqB7rI,MAAT,QAA6BA,EAAQ,kBAAjB,MAClC8rI,KAA+B5D,IAC/BuB,KAAgCtB;AAOlC,YANAD,KAA2B4D,MAAgCX,GAC3DhD,KAA4BsB,MAAiCoC,GAC7DhB,GAAmC1wD,GAAMssD,CAAY,GACrD0B,KAA4BsB,IAC5BvB,KAA2B4D,IAC3BZ,GAA4BzE,CAAY,GACpC/uG,IAAQ;AACV,UAAAlyC,EAAG,MACD20F,IAAOssD,EAAa,WAClBtsD,EAAK,cAAcgxD,IACfhxD,EAAK,cAAc,KACnBA,EAAK,cAAc,GACvBgxD,MACYnrI,MAAT,QACC6rI,KACA3D,MACAC,MACA4D,GAA0CtF,CAAY,IAC1DzmI,IAAU,MACVm6E,IAAOssD,OAGT;AACA,gBAAUtsD,EAAK,QAAX,KAAyBA,EAAK,QAAZ;AACpB,kBAAan6E,MAAT,MAAkB;AACpB,gBAAA6rI,IAAY7rI,IAAUm6E;AACtB,oBAAI;AACF,sBAAMixD,IAAkBS,EAAU,WAAYV;AAC5C,oBAACE,IAAaD,EAAgB,OACb,OAAOC,EAAW,eAAjC,aACIA,EAAW,YAAY,WAAW,QAAQ,WAAW,IACpDA,EAAW,UAAU;AAAA,uBACzB;AACH,oBAAA1lJ,IAAIkmJ,EAAU;AACd,wBAAI1lB,KAAY0lB,EAAU,cAAc,OACtCn6E,KAEWy0D,MAAT,QACAA,GAAU,eAAe,SAAS,IAC9BA,GAAU,UACV;AACR,oBAAAxgI,EAAE,MAAM,UACE+rE,MAAR,QAAiC,OAAOA,MAArB,YACf,MACC,KAAKA,IAAS,KAAI;AAAA,kBAC3C;AAAA,gBACA,SAAuB/gE,IAAO;AACd,kBAAAi2I,GAAwBiF,GAAWA,EAAU,QAAQl7I,EAAK;AAAA,gBAC1E;AAAA,cACA;AAAA,uBAC2BwpF,EAAK,QAAX;AACT,kBAAan6E,MAAT,MAAkB;AACpB,gBAAA6rI,IAAY1xD;AACZ,oBAAI;AACF,kBAAA0xD,EAAU,UAAU,YAAYV,IAC5B,KACAU,EAAU;AAAA,gBAC9B,SAAuBl7I,IAAO;AACd,kBAAAi2I,GAAwBiF,GAAWA,EAAU,QAAQl7I,EAAK;AAAA,gBAC1E;AAAA,cACA;AAAA,uBAC4BwpF,EAAK,QAAZ;AACT,kBAAan6E,MAAT,MAAkB;AACpB,gBAAA6rI,IAAY1xD;AACZ,oBAAI;AACF,sBAAI30C,KAAWqmG,EAAU;AACzB,kBAAAV,IACIa,GAA+BxmG,IAAU,EAAE,IAC3CwmG,GAA+BH,EAAU,WAAW,EAAE;AAAA,gBAC1E,SAAuBl7I,IAAO;AACd,kBAAAi2I,GAAwBiF,GAAWA,EAAU,QAAQl7I,EAAK;AAAA,gBAC1E;AAAA,cACA;AAAA,wBAEqBwpF,EAAK,QAAZ,MAA0BA,EAAK,QAAZ,MACVA,EAAK,kBAAd,QACAA,MAASssD,MACFtsD,EAAK,UAAd,MACA;AACA,cAAAA,EAAK,MAAM,SAASA,GACpBA,IAAOA,EAAK;AACZ;AAAA,YACZ;AACU,gBAAIA,MAASssD,EAAc,OAAMjhJ;AACjC,mBAAgB20F,EAAK,YAAd,QAAyB;AAC9B,kBAAaA,EAAK,WAAd,QAAwBA,EAAK,WAAWssD,EAAc,OAAMjhJ;AAChE,cAAAwa,MAAYm6E,MAASn6E,IAAU,OAC/Bm6E,IAAOA,EAAK;AAAA,YACxB;AACU,YAAAn6E,MAAYm6E,MAASn6E,IAAU,OAC/Bm6E,EAAK,QAAQ,SAASA,EAAK,QAC3BA,IAAOA,EAAK;AAAA,UACtB;AACM,QAAAziD,IAAQ,MACJA,IAAQ+uG,EAAa,aACd/uG,MAAT,SACI13B,IAAU03B,EAAM,YACT13B,MAAT,SACI03B,EAAM,aAAa,MACrB8yG,GAA6B/D,GAAczmI,CAAO;AACxD;AAAA,MACF,KAAK;AACH,QAAA6qI,GAAmC1wD,GAAMssD,CAAY,GACrDyE,GAA4BzE,CAAY,GACxC/uG,IAAQ,MACJA,IAAQ+uG,EAAa,aACd/uG,MAAT,SACI+uG,EAAa,cAAc,MAC7B+D,GAA6B/D,GAAc/uG,CAAK;AACpD;AAAA,MACF,KAAK;AACH;AAAA,MACF,KAAK;AACH;AAAA,MACF;AACE,QAAAmzG,GAAmC1wD,GAAMssD,CAAY,GACnDyE,GAA4BzE,CAAY;AAAA,IAChD;AAAA,EACA;AACA,WAASyE,GAA4BzE,GAAc;AACjD,QAAI/uG,IAAQ+uG,EAAa;AACzB,QAAI/uG,IAAQ,GAAG;AACb,UAAI;AACF,iBACMu0G,GAAiBlB,IAActE,EAAa,QACvCsE,MAAT,QAEA;AACA,cAAIpD,GAAaoD,CAAW,GAAG;AAC7B,YAAAkB,IAAkBlB;AAClB;AAAA,UACV;AACQ,UAAAA,IAAcA,EAAY;AAAA,QAClC;AACM,YAAYkB,KAAR,KAAyB,OAAM,MAAMhnF,EAAuB,GAAG,CAAC;AACpE,gBAAQgnF,EAAgB,KAAG;AAAA,UACzB,KAAK;AACH,gBAAIvjJ,IAASujJ,EAAgB,WAC3BnE,IAASF,GAAenB,CAAY;AACtC,YAAAsB,GAA4BtB,GAAcqB,GAAQp/I,CAAM;AACxD;AAAA,UACF,KAAK;AACH,gBAAIwjJ,IAAaD,EAAgB;AACjC,YAAAA,EAAgB,QAAQ,OACrBxuB,GAAeyuB,GAAY,EAAE,GAAID,EAAgB,SAAS;AAC7D,gBAAIE,IAAavE,GAAenB,CAAY;AAC5C,YAAAsB,GAA4BtB,GAAc0F,GAAYD,CAAU;AAChE;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,gBAAIE,IAAaH,EAAgB,UAAU,eACzCI,KAAazE,GAAenB,CAAY;AAC1C,YAAAoB;AAAA,cACEpB;AAAA,cACA4F;AAAA,cACAD;AAAA;AAEF;AAAA,UACF;AACE,kBAAM,MAAMnnF,EAAuB,GAAG,CAAC;AAAA,QACjD;AAAA,MACA,SAAat0D,IAAO;AACd,QAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,EAAK;AAAA,MACtE;AACI,MAAA81I,EAAa,SAAS;AAAA,IAC1B;AACE,IAAA/uG,IAAQ,SAAS+uG,EAAa,SAAS;AAAA,EACzC;AACA,WAASkF,GAAsBZ,GAAa;AAC1C,QAAIA,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAC5D,YAAIj5B,IAAQi5B;AACZ,QAAAY,GAAsB75B,CAAK,GACrBA,EAAM,QAAZ,KAAmBA,EAAM,QAAQ,QAAQA,EAAM,UAAU,MAAK,GAC9Di5B,IAAcA,EAAY;AAAA,MAChC;AAAA,EACA;AACA,WAAS5B,GAAiChvD,GAAM4wD,GAAa;AAC3D,QAAIA,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT;AACpC,QAAA9B,GAA0B9uD,GAAM4wD,EAAY,WAAWA,CAAW,GAC/DA,IAAcA,EAAY;AAAA,EACnC;AACA,WAASgB,GAA0ChB,GAAa;AAC9D,SAAKA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAC5D,UAAItE,IAAesE;AACnB,cAAQtE,EAAa,KAAG;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAI,GAA4B,GAAGJ,GAAcA,EAAa,MAAM,GAChEsF,GAA0CtF,CAAY;AACtD;AAAA,QACF,KAAK;AACH,UAAAa,GAAgBb,GAAcA,EAAa,MAAM;AACjD,cAAIjhG,IAAWihG,EAAa;AAC5B,UAAe,OAAOjhG,EAAS,wBAA/B,cACE2hG;AAAA,YACEV;AAAA,YACAA,EAAa;AAAA,YACbjhG;AAAA,aAEJumG,GAA0CtF,CAAY;AACtD;AAAA,QACF,KAAK;AACH,UAAA0D,GAAyB1D,EAAa,SAAS;AAAA,QACjD,KAAK;AAAA,QACL,KAAK;AACH,UAAAa,GAAgBb,GAAcA,EAAa,MAAM,GACjDsF,GAA0CtF,CAAY;AACtD;AAAA,QACF,KAAK;AACH,UAASA,EAAa,kBAAtB,QACEsF,GAA0CtF,CAAY;AACxD;AAAA,QACF,KAAK;AACH,UAAAsF,GAA0CtF,CAAY;AACtD;AAAA,QACF;AACE,UAAAsF,GAA0CtF,CAAY;AAAA,MAC9D;AACI,MAAAsE,IAAcA,EAAY;AAAA,IAC9B;AAAA,EACA;AACA,WAASrB,GACP4C,GACAvB,GACAwB,GACA;AAGA,SAFAA,IACEA,MAAuCxB,EAAY,eAAe,UAAlC,GAC7BA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAC5D,UAAI/qI,IAAU+qI,EAAY,WACxB7B,IAAeoD,GACf7F,IAAesE,GACfrzG,IAAQ+uG,EAAa;AACvB,cAAQA,EAAa,KAAG;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEF/F,GAA0B,GAAGC,CAAY;AACzC;AAAA,QACF,KAAK;AAQH,cAPAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEFvsI,IAAUymI,GACVyC,IAAelpI,EAAQ,WACJ,OAAOkpI,EAAa,qBAAnC;AACF,gBAAI;AACF,cAAAA,EAAa,kBAAiB;AAAA,YAC1C,SAAmBv4I,IAAO;AACd,cAAAi2I,GAAwB5mI,GAASA,EAAQ,QAAQrP,EAAK;AAAA,YAClE;AAGQ,cAFAqP,IAAUymI,GACVyC,IAAelpI,EAAQ,aACVkpI,MAAT,MAAuB;AACzB,gBAAI1jG,IAAWxlC,EAAQ;AACvB,gBAAI;AACF,kBAAIwsI,IAAkBtD,EAAa,OAAO;AAC1C,kBAAasD,MAAT;AACF,qBACEtD,EAAa,OAAO,kBAAkB,MAAMA,IAAe,GAC3DA,IAAesD,EAAgB,QAC/BtD;AAEA,kBAAA7U,GAAamY,EAAgBtD,CAAY,GAAG1jG,CAAQ;AAAA,YACpE,SAAmB70C,IAAO;AACd,cAAAi2I,GAAwB5mI,GAASA,EAAQ,QAAQrP,EAAK;AAAA,YAClE;AAAA,UACA;AACQ,UAAA47I,KACE70G,IAAQ,MACRwvG,GAAqBT,CAAY,GACnCW,GAAgBX,GAAcA,EAAa,MAAM;AACjD;AAAA,QACF,KAAK;AACH,UAAAuB,GAA+BvB,CAAY;AAAA,QAC7C,KAAK;AAAA,QACL,KAAK;AACH,UAAAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEFA,KACWvsI,MAAT,QACA03B,IAAQ,KACR8vG,GAAgBf,CAAY,GAC9BW,GAAgBX,GAAcA,EAAa,MAAM;AACjD;AAAA,QACF,KAAK;AACH,UAAAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA;AAEF;AAAA,QACF,KAAK;AACH,UAAA7C;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEFA,KACE70G,IAAQ,KACR2xG,GAAiCH,GAAczC,CAAY;AAC7D;AAAA,QACF,KAAK;AACH,UAAAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEFA,KACE70G,IAAQ,KACR4xG,GAAiCJ,GAAczC,CAAY;AAC7D;AAAA,QACF,KAAK;AACH,UAASA,EAAa,kBAAtB,QACEiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA,aAEJnF,GAAgBX,GAAcA,EAAa,MAAM;AACjD;AAAA,QACF,KAAK;AACH;AAAA,QACF;AACE,UAAAiD;AAAA,YACER;AAAA,YACAzC;AAAA,YACA8F;AAAA;MAEV;AACI,MAAAxB,IAAcA,EAAY;AAAA,IAC9B;AAAA,EACA;AACA,WAAS0B,GAAmCzsI,GAASymI,GAAc;AACjE,QAAIv1F,IAAgB;AACpB,IAASlxC,MAAT,QACWA,EAAQ,kBAAjB,QACSA,EAAQ,cAAc,cAA/B,SACCkxC,IAAgBlxC,EAAQ,cAAc,UAAU,OACnDA,IAAU,MACDymI,EAAa,kBAAtB,QACWA,EAAa,cAAc,cAApC,SACCzmI,IAAUymI,EAAa,cAAc,UAAU,OAClDzmI,MAAYkxC,MACDlxC,KAAR,QAAmBA,EAAQ,YACpBkxC,KAAR,QAAyBu8E,GAAav8E,CAAa;AAAA,EACvD;AACA,WAASw7F,GAA8B1sI,GAASymI,GAAc;AAC5D,IAAAzmI,IAAU,MACDymI,EAAa,cAAtB,SACGzmI,IAAUymI,EAAa,UAAU,cAAc,QAClDA,IAAeA,EAAa,cAAc,OAC1CA,MAAiBzmI,MACdymI,EAAa,YAAoBzmI,KAAR,QAAmBytH,GAAaztH,CAAO;AAAA,EACrE;AACA,WAAS2sI,GACPxyD,GACA4wD,GACA6B,GACAC,GACA;AACA,QAAI9B,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT;AACpC,QAAA+B;AAAA,UACE3yD;AAAA,UACA4wD;AAAA,UACA6B;AAAA,UACAC;AAAA,WAEC9B,IAAcA,EAAY;AAAA,EACnC;AACA,WAAS+B,GACP5D,GACAzC,GACAmG,GACAC,GACA;AACA,QAAIn1G,IAAQ+uG,EAAa;AACzB,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAkG;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,WAEFn1G,IAAQ,QAAQ8uG,GAA0B,GAAGC,CAAY;AACzD;AAAA,MACF,KAAK;AACH,QAAAkG;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAF;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,WAEFn1G,IAAQ,SACJwxG,IAAe,MACRzC,EAAa,cAAtB,SACGyC,IAAezC,EAAa,UAAU,cAAc,QACtDA,IAAeA,EAAa,cAAc,OAC3CA,MAAiByC,MACdzC,EAAa,YACNyC,KAAR,QAAwBzb,GAAayb,CAAY;AACrD;AAAA,MACF,KAAK;AACH,YAAIxxG,IAAQ,MAAM;AAChB,UAAAi1G;AAAA,YACEzD;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,aAEF3D,IAAezC,EAAa;AAC5B,cAAI;AACF,gBAAIsG,IAAyBtG,EAAa,eACxCtvG,IAAK41G,EAAuB,IAC5BC,IAAeD,EAAuB;AACxC,YAAe,OAAOC,KAAtB,cACEA;AAAA,cACE71G;AAAA,cACSsvG,EAAa,cAAtB,OAAkC,UAAU;AAAA,cAC5CyC,EAAa;AAAA,cACb;AAAA;UAEd,SAAiBv4I,GAAO;AACd,YAAAi2I,GAAwBH,GAAcA,EAAa,QAAQ91I,CAAK;AAAA,UAC1E;AAAA,QACA;AACQ,UAAAg8I;AAAA,YACEzD;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA;AAEJ;AAAA,MACF,KAAK;AACH,QAAAF;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAF;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA;AAEF;AAAA,MACF,KAAK;AACH;AAAA,MACF,KAAK;AACH,QAAAE,IAAyBtG,EAAa,WACtCtvG,IAAKsvG,EAAa,WACTA,EAAa,kBAAtB,OACIsG,EAAuB,cAAc,IACnCJ;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,QACd,IACYI,GAAwC/D,GAAczC,CAAY,IACpEsG,EAAuB,cAAc,IACnCJ;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,QACd,KACcE,EAAuB,eAAe,GACxCG;AAAA,UACEhE;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,WACOpG,EAAa,eAAe,WAAnC,KAA6C;AAAA,QAC3D,IACM/uG,IAAQ,QAAQ+0G,GAAmCt1G,GAAIsvG,CAAY;AACnE;AAAA,MACF,KAAK;AACH,QAAAkG;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA,WAEFn1G,IAAQ,QACNg1G,GAA8BjG,EAAa,WAAWA,CAAY;AACpE;AAAA,MACF;AACE,QAAAkG;AAAA,UACEzD;AAAA,UACAzC;AAAA,UACAmG;AAAA,UACAC;AAAA;IAER;AAAA,EACA;AACA,WAASK,GACPZ,GACAvB,GACAoC,GACAC,GACAb,GACA;AAIA,SAHAA,IACEA,OACQxB,EAAY,eAAe,WAAlC,KAA4C,KAC1CA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAC5D,UAAI7B,IAAeoD,GACjB7F,IAAesE,GACf6B,IAAiBO,GACjBN,IAAuBO,GACvB11G,KAAQ+uG,EAAa;AACvB,cAAQA,EAAa,KAAG;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAyG;AAAA,YACEhE;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,YACAN;AAAA,aAEF/F,GAA0B,GAAGC,CAAY;AACzC;AAAA,QACF,KAAK;AACH;AAAA,QACF,KAAK;AACH,cAAIjhG,KAAWihG,EAAa;AAC5B,UAASA,EAAa,kBAAtB,OACIjhG,GAAS,cAAc,IACrB0nG;AAAA,YACEhE;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,YACAN;AAAA,UAChB,IACcU;AAAA,YACE/D;AAAA,YACAzC;AAAA,UAChB,KACcjhG,GAAS,eAAe,GAC1B0nG;AAAA,YACEhE;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,YACAN;AAAA,UACd,IACQA,KACE70G,KAAQ,QACR+0G;AAAA,YACEhG,EAAa;AAAA,YACbA;AAAA;AAEJ;AAAA,QACF,KAAK;AACH,UAAAyG;AAAA,YACEhE;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,YACAN;AAAA,aAEFA,KACE70G,KAAQ,QACRg1G,GAA8BjG,EAAa,WAAWA,CAAY;AACpE;AAAA,QACF;AACE,UAAAyG;AAAA,YACEhE;AAAA,YACAzC;AAAA,YACAmG;AAAA,YACAC;AAAA,YACAN;AAAA;MAEV;AACI,MAAAxB,IAAcA,EAAY;AAAA,IAC9B;AAAA,EACA;AACA,WAASkC,GACPX,GACAvB,GACA;AACA,QAAIA,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAC5D,YAAI7B,IAAeoD,GACjB7F,IAAesE,GACfrzG,IAAQ+uG,EAAa;AACvB,gBAAQA,EAAa,KAAG;AAAA,UACtB,KAAK;AACH,YAAAwG,GAAwC/D,GAAczC,CAAY,GAClE/uG,IAAQ,QACN+0G;AAAA,cACEhG,EAAa;AAAA,cACbA;AAAA;AAEJ;AAAA,UACF,KAAK;AACH,YAAAwG,GAAwC/D,GAAczC,CAAY,GAClE/uG,IAAQ,QACNg1G,GAA8BjG,EAAa,WAAWA,CAAY;AACpE;AAAA,UACF;AACE,YAAAwG,GAAwC/D,GAAczC,CAAY;AAAA,QAC5E;AACM,QAAAsE,IAAcA,EAAY;AAAA,MAChC;AAAA,EACA;AACA,MAAIsC,KAAsB;AAC1B,WAASC,GACPvC,GACA6B,GACAW,GACA;AACA,QAAIxC,EAAY,eAAesC;AAC7B,WAAKtC,IAAcA,EAAY,OAAgBA,MAAT;AACpC,QAAAyC;AAAA,UACEzC;AAAA,UACA6B;AAAA,UACAW;AAAA,WAECxC,IAAcA,EAAY;AAAA,EACnC;AACA,WAASyC,GACP17B,GACA86B,GACAW,GACA;AACA,YAAQz7B,EAAM,KAAG;AAAA,MACf,KAAK;AACH,QAAAw7B;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA,WAEFz7B,EAAM,QAAQu7B,MACHv7B,EAAM,kBAAf,QACA27B;AAAA,UACEF;AAAA,UACAtC;AAAA,UACAn5B,EAAM;AAAA,UACNA,EAAM;AAAA;AAEV;AAAA,MACF,KAAK;AACH,QAAAw7B;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA;AAEF;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAIG,IAAwBzC;AAC5B,QAAAA,KAAuBS,GAAiB55B,EAAM,UAAU,aAAa,GACrEw7B;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA,WAEFtC,KAAuByC;AACvB;AAAA,MACF,KAAK;AACH,QAAS57B,EAAM,kBAAf,SACI47B,IAAwB57B,EAAM,WACvB47B,MAAT,QACSA,EAAsB,kBAA/B,QACMA,IAAwBL,IACzBA,KAAsB,UACvBC;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA,WAEDF,KAAsBK,KACvBJ;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA,QACd;AACM;AAAA,MACF;AACE,QAAAD;AAAA,UACEx7B;AAAA,UACA86B;AAAA,UACAW;AAAA;IAER;AAAA,EACA;AACA,WAASI,GAAwB5C,GAAa;AAC5C,QAAI6C,IAAgB7C,EAAY;AAChC,QACW6C,MAAT,SACE7C,IAAc6C,EAAc,OAAiB7C,MAAT,OACtC;AACA,MAAA6C,EAAc,QAAQ;AACtB;AACE,QAACA,IAAgB7C,EAAY,SAC1BA,EAAY,UAAU,MACtBA,IAAc6C;AAAA,aACH7C,MAAT;AAAA,IACX;AAAA,EACA;AACA,WAAS8C,GAAyC9C,GAAa;AAC7D,QAAIta,IAAYsa,EAAY;AAC5B,SAAWA,EAAY,QAAQ,QAA3B,GAAgC;AAClC,UAAata,MAAT;AACF,iBAAS9qI,IAAI,GAAGA,IAAI8qI,EAAU,QAAQ9qI,KAAK;AACzC,cAAI6qI,IAAgBC,EAAU9qI,CAAC;AAC/B,UAAA2iJ,KAAa9X,GACbsd;AAAA,YACEtd;AAAA,YACAua;AAAA;QAEV;AACI,MAAA4C,GAAwB5C,CAAW;AAAA,IACvC;AACE,QAAIA,EAAY,eAAe;AAC7B,WAAKA,IAAcA,EAAY,OAAgBA,MAAT;AACpC,QAAAgD,GAA4BhD,CAAW,GACpCA,IAAcA,EAAY;AAAA,EACnC;AACA,WAASgD,GAA4BtH,GAAc;AACjD,YAAQA,EAAa,KAAG;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAoH,GAAyCpH,CAAY,GACrDA,EAAa,QAAQ,QACnBI,GAA4B,GAAGJ,GAAcA,EAAa,MAAM;AAClE;AAAA,MACF,KAAK;AACH,QAAAoH,GAAyCpH,CAAY;AACrD;AAAA,MACF,KAAK;AACH,QAAAoH,GAAyCpH,CAAY;AACrD;AAAA,MACF,KAAK;AACH,YAAIjhG,IAAWihG,EAAa;AAC5B,QAASA,EAAa,kBAAtB,QACAjhG,EAAS,cAAc,MACbihG,EAAa,WAAtB,QAAuCA,EAAa,OAAO,QAA3B,OAC3BjhG,EAAS,eAAe,IAC1BwoG,GAA4CvH,CAAY,KACxDoH,GAAyCpH,CAAY;AACzD;AAAA,MACF;AACE,QAAAoH,GAAyCpH,CAAY;AAAA,IAC3D;AAAA,EACA;AACA,WAASuH,GAA4CjD,GAAa;AAChE,QAAIta,IAAYsa,EAAY;AAC5B,SAAWA,EAAY,QAAQ,QAA3B,GAAgC;AAClC,UAAata,MAAT;AACF,iBAAS9qI,IAAI,GAAGA,IAAI8qI,EAAU,QAAQ9qI,KAAK;AACzC,cAAI6qI,IAAgBC,EAAU9qI,CAAC;AAC/B,UAAA2iJ,KAAa9X,GACbsd;AAAA,YACEtd;AAAA,YACAua;AAAA;QAEV;AACI,MAAA4C,GAAwB5C,CAAW;AAAA,IACvC;AACE,SAAKA,IAAcA,EAAY,OAAgBA,MAAT,QAAwB;AAE5D,cADAta,IAAYsa,GACJta,EAAU,KAAG;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAoW,GAA4B,GAAGpW,GAAWA,EAAU,MAAM,GAC1Dud,GAA4Cvd,CAAS;AACrD;AAAA,QACF,KAAK;AACH,UAAA9qI,IAAI8qI,EAAU,WACd9qI,EAAE,cAAc,MACZA,EAAE,eAAe,IACnBqoJ,GAA4Cvd,CAAS;AACvD;AAAA,QACF;AACE,UAAAud,GAA4Cvd,CAAS;AAAA,MAC7D;AACI,MAAAsa,IAAcA,EAAY;AAAA,IAC9B;AAAA,EACA;AACA,WAAS+C,GACPG,GACAjH,GACA;AACA,WAAgBsB,OAAT,QAAuB;AAC5B,UAAIx2B,IAAQw2B;AACZ,cAAQx2B,EAAM,KAAG;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAA+0B,GAA4B,GAAG/0B,GAAOk1B,CAAsB;AAC5D;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,cACWl1B,EAAM,kBAAf,QACSA,EAAM,cAAc,cAA7B,MACA;AACA,gBAAI72E,IAAQ62E,EAAM,cAAc,UAAU;AAC1C,YAAQ72E,KAAR,QAAiBA,EAAM;AAAA,UACjC;AACQ;AAAA,QACF,KAAK;AACH,UAAAwyF,GAAa3b,EAAM,cAAc,KAAK;AAAA,MAC9C;AAEI,UADA72E,IAAQ62E,EAAM,OACD72E,MAAT,KAAgB,CAACA,EAAM,SAAS62E,GAASw2B,KAAartG;AAAA;AAExD,QAAAz1C,EAAG,MAAKssH,IAAQm8B,GAA6B3F,OAAT,QAAuB;AACzD,UAAArtG,IAAQqtG;AACR,cAAI4F,IAAUjzG,EAAM,SAClBk1F,IAAcl1F,EAAM;AAEtB,cADA0uG,GAAwB1uG,CAAK,GACzBA,MAAU62E,GAAO;AACnB,YAAAw2B,KAAa;AACb,kBAAM9iJ;AAAA,UAChB;AACQ,cAAa0oJ,MAAT,MAAkB;AACpB,YAAAA,EAAQ,SAAS/d,GACjBmY,KAAa4F;AACb,kBAAM1oJ;AAAA,UAChB;AACQ,UAAA8iJ,KAAanY;AAAA,QACrB;AAAA,IACA;AAAA,EACA;AACA,MAAIge,KAAyB;AAAA,IACzB,iBAAiB,SAAUC,GAAc;AACvC,UAAInzG,IAAQ8xF,GAAYQ,EAAY,GAClC8gB,IAAepzG,EAAM,KAAK,IAAImzG,CAAY;AAC5C,aAAWC,MAAX,WACIA,IAAeD,EAAY,GAC7BnzG,EAAM,KAAK,IAAImzG,GAAcC,CAAY,IACpCA;AAAA,IACb;AAAA,IACI,aAAa,WAAY;AACvB,aAAOthB,GAAYQ,EAAY,EAAE,WAAW;AAAA,IAClD;AAAA,KAEE+gB,KAAiC,OAAO,WAAtB,aAAgC,UAAU,KAC5Dtb,KAAmB,GACnBvE,KAAqB,MACrBnZ,KAAiB,MACjB6e,KAAgC,GAChCoa,KAAgC,GAChCC,KAA4B,MAC5BC,KAA6C,IAC7CC,KAAmC,IACnCC,KAA0C,IAC1Cja,KAAuB,GACvB8L,KAA+B,GAC/BpM,KAAiC,GACjCwa,KAA4C,GAC5CC,KAAgC,GAChC9L,KAA6B,GAC7BuC,KAAoC,GACpC3E,KAAqC,MACrC/U,KAAsC,MACtCkjB,KAAoD,IACpDlD,KAA+B,GAC/Bvd,KAAiC,GACjC+X,KAAqC,OACrC2I,KAA4B,MAC5B3O,KAAyC,MACzC4O,KAAuB,GACvBC,KAAqB,MACrBC,KAAsB,MACtBC,KAAsB,GACtBC,KAA+B,GAC/BC,KAA4B,MAC5BC,KAA2B,MAC3BvnB,KAAoB,GACpBC,KAAwB;AAC1B,WAASmV,KAAoB;AAC3B,YAAcnK,KAAmB,OAA1B,KAAsCmB,OAAN,IACnCA,KAAgC,CAACA,KACxBn/H,EAAqB,MAA9B,OACEg5H,GAAqB,IACrBtU,GAAqB;AAAA,EAC7B;AACA,WAASkjB,KAAsB;AAC7B,QAAUmG,OAAN;AACF,WAAW5O,KAAgC,eAAvC,KAAqDhX,IAAa;AACpE,YAAItF,IAAOhB;AACX,QAAAA,OAA+B,IACxBA,KAA6B,aAApC,MACGA,KAA6B,SAChCksB,KAA6BlrB;AAAA,MACnC,MAAW,CAAAkrB,KAA6B;AACtC,WAAAlrB,IAAOgd,GAA2B,SACzBhd,MAAT,SAAkBA,EAAK,SAAS,KACzBkrB;AAAA,EACT;AACA,WAASvJ,GAAsBr/C,GAAM23B,GAAO+F,GAAM;AAChD,KACG19B,MAASs0C,OACD8f,OAAN,KACOA,OAAN,MACKp0D,EAAK,wBAAd,UAEAo1D,GAAkBp1D,GAAM,CAAC,GACvBq1D;AAAA,MACEr1D;AAAA,MACAg6C;AAAA,MACA4O;AAAA,MACA;AAAA,QAEN7qB,GAAkB/9B,GAAM09B,CAAI,KACjBmb,KAAmB,OAA1B,KAAgC74C,MAASs0C,QAC3Ct0C,MAASs0C,QACCuE,KAAmB,OAA1B,MACE4b,MAA6C/2B,IAC1C2oB,OAAN,KACEgP;AAAA,MACEr1D;AAAA,MACAg6C;AAAA,MACA4O;AAAA,MACA;AAAA,IACV,IACM0M,GAAsBt1D,CAAI;AAAA,EAChC;AACA,WAASu1D,GAAkB5E,GAAe9zB,GAAO24B,GAAW;AAC1D,SAAW3c,KAAmB,OAA1B,EAA8B,OAAM,MAAM/tE,EAAuB,GAAG,CAAC;AACzE,QAAI2qF,IACC,CAACD,MACO34B,IAAQ,SAAf,MACOA,IAAQ8zB,EAAc,kBAA7B,KACFpzB,GAA0BozB,GAAe9zB,CAAK,GAChD64B,IAAaD,IACTE,GAAqBhF,GAAe9zB,CAAK,IACzC+4B,GAAejF,GAAe9zB,GAAO,EAAE,GAC3Cg5B,IAAsBJ;AACxB,OAAG;AACD,UAAUC,MAAN,GAAkB;AACpB,QAAAnB,MACE,CAACkB,KACDJ,GAAkB1E,GAAe9zB,GAAO,GAAG,EAAE;AAC/C;AAAA,MACN,OAAW;AAEL,YADA24B,IAAY7E,EAAc,QAAQ,WAEhCkF,KACA,CAACC,GAAqCN,CAAS,GAC/C;AACA,UAAAE,IAAaE,GAAejF,GAAe9zB,GAAO,EAAE,GACpDg5B,IAAsB;AACtB;AAAA,QACR;AACM,YAAUH,MAAN,GAAkB;AAEpB,cADAG,IAAsBh5B,GAClB8zB,EAAc,6BAA6BkF;AAC7C,gBAAIh8B,IAA2B;AAAA;AAE/B,YAACA,IAA2B82B,EAAc,eAAe,YACtD92B,IACOA,MAAN,IACIA,IACAA,IAA2B,YACzB,YACA;AACZ,cAAUA,MAAN,GAAgC;AAClC,YAAAgD,IAAQhD;AACR,YAAAxuH,GAAG;AACD,kBAAI20F,IAAO2wD;AACX,cAAA+E,IAAalP;AACb,kBAAIuP,IAAoB/1D,EAAK,QAAQ,cAAc;AAQnD,kBAPA+1D,MACGX,GAAkBp1D,GAAM65B,CAAwB,EAAE,SAAS,MAC9DA,IAA2B+7B;AAAA,gBACzB51D;AAAA,gBACA65B;AAAA,gBACA;AAAA,iBAEQA,MAAN,GAAgC;AAClC,oBACE26B,MACA,CAACuB,GACD;AACA,kBAAA/1D,EAAK,8BAA8B61D,GACnCpB,MACEoB,GACFH,IAAa;AACb,wBAAMrqJ;AAAA,gBACtB;AACc,gBAAAwqJ,IAAsBpkB,IACtBA,KAAsCikB,GAC7BG,MAAT,SACYpkB,OAAT,OACIA,KAAsCokB,IACvCpkB,GAAoC,KAAK;AAAA,kBACvCA;AAAA,kBACAokB;AAAA,gBACtB;AAAA,cACA;AACY,cAAAH,IAAa77B;AAAA,YACzB;AAEU,gBADAg8B,IAAsB,IACZH,MAAN,EAAkB;AAAA,UAChC;AAAA,QACA;AACM,YAAUA,MAAN,GAAkB;AACpB,UAAAN,GAAkBzE,GAAe,CAAC,GAClC0E,GAAkB1E,GAAe9zB,GAAO,GAAG,EAAE;AAC7C;AAAA,QACR;AACM,QAAAxxH,GAAG;AAGD,kBAFAoqJ,IAAkB9E,GAClBkF,IAAsBH,GACdG,GAAmB;AAAA,YACzB,KAAK;AAAA,YACL,KAAK;AACH,oBAAM,MAAM/qF,EAAuB,GAAG,CAAC;AAAA,YACzC,KAAK;AACH,mBAAK+xD,IAAQ,aAAaA,EAAO;AAAA,YACnC,KAAK;AACH,cAAAw4B;AAAA,gBACEI;AAAA,gBACA54B;AAAA,gBACA+rB;AAAA,gBACA,CAAC0L;AAAA;AAEH,oBAAMjpJ;AAAA,YACR,KAAK;AACH,cAAAomI,KAAsC;AACtC;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH;AAAA,YACF;AACE,oBAAM,MAAM3mE,EAAuB,GAAG,CAAC;AAAA,UACnD;AACQ,eACG+xD,IAAQ,cAAcA,MACrB64B,IAAajE,KAA+B,MAAMj2B,GAAG,GACvD,KAAKk6B,IACL;AAOA,gBANAL;AAAA,cACEI;AAAA,cACA54B;AAAA,cACA+rB;AAAA,cACA,CAAC0L;AAAA,eAEOv3B,EAAa04B,GAAiB,GAAG,EAAE,MAAzC,EAA4C,OAAMpqJ;AACtD,YAAA2pJ,KAAsBn4B,GACtB44B,EAAgB,gBAAgBO;AAAA,cAC9BC,GAAoB;AAAA,gBAClB;AAAA,gBACAR;AAAA,gBACAD;AAAA,gBACA/jB;AAAA,gBACAmjB;AAAA,gBACAD;AAAA,gBACA93B;AAAA,gBACA+rB;AAAA,gBACA6L;AAAA,gBACAtJ;AAAA,gBACAmJ;AAAA,gBACAuB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA;cAEFH;AAAA;AAEF,kBAAMrqJ;AAAA,UAChB;AACQ,UAAA4qJ;AAAA,YACER;AAAA,YACAD;AAAA,YACA/jB;AAAA,YACAmjB;AAAA,YACAD;AAAA,YACA93B;AAAA,YACA+rB;AAAA,YACA6L;AAAA,YACAtJ;AAAA,YACAmJ;AAAA,YACAuB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;QAEV;AAAA,MACA;AACI;AAAA,IACJ,SAAW;AACT,IAAAP,GAAsB3E,CAAa;AAAA,EACrC;AACA,WAASsF,GACPj2D,GACAssD,GACA4J,GACAC,GACAC,GACAv5B,GACAuB,GACAC,GACAC,GACA+3B,IACAX,IACAY,IACAC,IACAC,IACA;AAGA,QAFAx2D,EAAK,gBAAgB,IACrBs2D,KAAwBhK,EAAa,cAEnCgK,KAAwB,SACVA,KAAwB,cAAtC,UACA;AACA,MAAAA,KAAwB;AAAA,QACtB,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,iBAAiB,CAAA;AAAA,QACjB,kBAAkB;AAAA,QAClB,0BAA0B;AAAA,QAC1B,WAAWnyB;AAAA,SAEbkvB;AAAA,QACE/G;AAAA,QACAzvB;AAAA,QACAy5B;AAAA;AAEF,UAAIG,MACD55B,IAAQ,cAAcA,IACnB40B,KAA+Bj2B,GAAG,KACjCqB,IAAQ,aAAaA,IACpBqX,KAAiC1Y,GAAG,IACpC;AAKR,UAJAi7B,KAAgBC;AAAA,QACdJ;AAAA,QACAG;AAAA,SAEWA,OAAT,MAAwB;AAC1B,QAAAzB,KAAsBn4B,GACtB78B,EAAK,sBAAsBy2D;AAAA,UACzBE,GAAW;AAAA,YACT;AAAA,YACA32D;AAAA,YACAssD;AAAA,YACAzvB;AAAA,YACAq5B;AAAA,YACAC;AAAA,YACAC;AAAA,YACAh4B;AAAA,YACAC;AAAA,YACAC;AAAA,YACAo3B;AAAA,YACAY;AAAA,YACA;AAAA,YACAC;AAAA,YACAC;AAAA,UACV;AAAA,WAEMnB,GAAkBr1D,GAAM68B,GAAOuB,GAAa,CAACi4B,EAAwB;AACrE;AAAA,MACN;AAAA,IACA;AACE,IAAAM;AAAA,MACE32D;AAAA,MACAssD;AAAA,MACAzvB;AAAA,MACAq5B;AAAA,MACAC;AAAA,MACAC;AAAA,MACAh4B;AAAA,MACAC;AAAA,MACAC;AAAA;EAEJ;AACA,WAASw3B,GAAqCxJ,GAAc;AAC1D,aAASvuH,IAAOuuH,OAAkB;AAChC,UAAI9xG,IAAMzc,EAAK;AACf,WACSyc,MAAN,KAAoBA,MAAP,MAAqBA,MAAP,OAC5Bzc,EAAK,QAAQ,UACXyc,IAAMzc,EAAK,aACJyc,MAAT,SAAkBA,IAAMA,EAAI,QAAkBA,MAAT;AAErC,iBAAShvC,IAAI,GAAGA,IAAIgvC,EAAI,QAAQhvC,KAAK;AACnC,cAAIorJ,IAAQp8G,EAAIhvC,CAAC,GACfqT,IAAc+3I,EAAM;AACtB,UAAAA,IAAQA,EAAM;AACd,cAAI;AACF,gBAAI,CAAC1hF,GAASr2D,EAAW,GAAI+3I,CAAK,EAAG,QAAO;AAAA,UACtD,QAAwB;AACd,mBAAO;AAAA,UACjB;AAAA,QACA;AAEI,UADAp8G,IAAMzc,EAAK,OACPA,EAAK,eAAe,SAAkByc,MAAT;AAC/B,QAACA,EAAI,SAASzc,GAAQA,IAAOyc;AAAA,WAC1B;AACH,YAAIzc,MAASuuH,EAAc;AAC3B,eAAgBvuH,EAAK,YAAd,QAAyB;AAC9B,cAAaA,EAAK,WAAd,QAAwBA,EAAK,WAAWuuH,EAAc,QAAO;AACjE,UAAAvuH,IAAOA,EAAK;AAAA,QACpB;AACM,QAAAA,EAAK,QAAQ,SAASA,EAAK,QAC3BA,IAAOA,EAAK;AAAA,MAClB;AAAA,IACA;AACE,WAAO;AAAA,EACT;AACA,WAASs3H,GACPr1D,GACAo9B,GACAgB,GACAy4B,GACA;AACA,IAAAz5B,KAAkB,CAACs3B,IACnBt3B,KAAkB,CAACq3B,IACnBz0D,EAAK,kBAAkBo9B,GACvBp9B,EAAK,eAAe,CAACo9B,GACrBy5B,MAAyB72D,EAAK,aAAao9B,IAC3Cy5B,IAAuB72D,EAAK;AAC5B,aAAS68B,IAAQO,GAAgB,IAAIP,KAAS;AAC5C,UAAIi6B,IAAU,KAAKz6B,GAAMQ,CAAK,GAC5Ba,IAAO,KAAKo5B;AACd,MAAAD,EAAqBC,CAAO,IAAI,IAChCj6B,KAAS,CAACa;AAAA,IACd;AACE,IAAMU,MAAN,KACES,GAAwB7+B,GAAMo+B,GAAahB,CAAc;AAAA,EAC7D;AACA,WAASyH,KAAkB;AACzB,YAAcgU,KAAmB,OAA1B,KACFke,GAA8B,CAAK,GAAG,MACvC;AAAA,EACN;AACA,WAASC,KAA2B;AAClC,QAAa77B,OAAT,MAAyB;AAC3B,UAAUi5B,OAAN;AACF,YAAIhI,IAAkBjxB,GAAe;AAAA;AAErC,QAACixB,IAAkBjxB,IAChByW,KAAwBD,KAA4B,MACrD0L,GAAmB+O,CAAe,GACjCzW,KAAkB,MAClBC,KAAyB,GACzBwW,IAAkBjxB;AACvB,aAAgBixB,MAAT;AACL,QAAAD,GAAsBC,EAAgB,WAAWA,CAAe,GAC7DA,IAAkBA,EAAgB;AACvC,MAAAjxB,KAAiB;AAAA,IACrB;AAAA,EACA;AACA,WAASi6B,GAAkBp1D,GAAM68B,GAAO;AACtC,QAAIo6B,IAAgBj3D,EAAK;AACzB,IAAOi3D,MAAP,OACIj3D,EAAK,gBAAgB,IAAKk3D,GAAcD,CAAa,IACzDA,IAAgBj3D,EAAK,qBACZi3D,MAAT,SACIj3D,EAAK,sBAAsB,MAAOi3D,EAAa,IACnDjC,KAAsB,GACtBgC,GAAwB,GACxB1iB,KAAqBt0C,GACrBm7B,KAAiB87B,IAAgB9oB,GAAqBnuC,EAAK,SAAS,IAAI,GACxEg6C,KAAgCnd,GAChCu3B,KAAgC,GAChCC,KAA4B,MAC5BC,KAA6C,IAC7CC,KAAmCh3B,GAA0Bv9B,GAAM68B,CAAK,GACxE23B,KAA0C,IAC1CrJ,KACEvC,KACA8L,KACAD,KACAxa,KACAoM,KACE,GACJ5U,KAAsC+U,KACpC,MACFmO,KAAoD,KAC7C93B,IAAQ,OAAf,MAAsBA,KAASA,IAAQ;AACvC,QAAIs6B,IAAoBn3D,EAAK;AAC7B,QAAUm3D,MAAN;AACF,WACEn3D,IAAOA,EAAK,eAAem3D,KAAqBt6B,GAChD,IAAIs6B,KAEJ;AACA,YAAIC,IAAU,KAAK/6B,GAAM86B,CAAiB,GACxCz5B,IAAO,KAAK05B;AACd,QAAAv6B,KAAS78B,EAAKo3D,CAAO,GACrBD,KAAqB,CAACz5B;AAAA,MAC5B;AACE,WAAA6c,KAAuB1d,GACvBuQ,GAA+B,GACxB6pB;AAAA,EACT;AACA,WAASI,GAAYr3D,GAAMs3D,GAAa;AACtC,IAAAjc,KAA0B,MAC1BxgI,EAAqB,IAAI4hI,IACzB6a,MAAgB1iB,MAAqB0iB,MAAgBxiB,MAC/CwiB,IAAc7hB,GAAoB,GACnC2e,KAAgC,KACjCkD,MAAgBziB,MACZyiB,IAAc7hB,GAAoB,GACnC2e,KAAgC,KAChCA,KACCkD,MAAgB7Q,KACZ,IACS6Q,MAAT,QACe,OAAOA,KAApB,YACe,OAAOA,EAAY,QAAlC,aACA,IACA,GACdjD,KAA4BiD,GACnBn8B,OAAT,SACIkrB,KAA+B,GACjCf;AAAA,MACEtlD;AAAA,MACA+uC,GAA2BuoB,GAAat3D,EAAK,OAAO;AAAA,IAC1D;AAAA,EACA;AACA,WAAS6qD,KAA+B;AACtC,QAAIv9E,IAAUotE,GAA2B;AACzC,WAAgBptE,MAAT,OACH,MACC0sE,KAAgC,aAC/BA,KACSW,OAAT,QAGCX,KAAgC,cAC7BA,OACKA,KAAgC,eAAvC,IACA1sE,MAAYqtE,KACZ;AAAA,EACV;AACA,WAAS4c,KAAiB;AACxB,QAAIC,IAAiB38I,EAAqB;AAC1C,WAAAA,EAAqB,IAAI4hI,IACT+a,MAAT,OAA0B/a,KAAwB+a;AAAA,EAC3D;AACA,WAASC,KAAsB;AAC7B,QAAIC,IAAsB78I,EAAqB;AAC/C,WAAAA,EAAqB,IAAIm5I,IAClB0D;AAAA,EACT;AACA,WAAStR,KAAkC;AACzC,IAAAC,KAA+B,GAC/BiO,OACIta,KAAgC,aAChCA,MACSU,GAA2B,YAApC,SACD6Z,KAAmC,MAC9Bta,KAAiC,eAAxC,MACQwa,KAA4C,eAAnD,KACSngB,OAAT,QACA+gB;AAAA,MACE/gB;AAAA,MACA0F;AAAA,MACA4O;AAAA,MACA;AAAA;EAEN;AACA,WAASgN,GAAe51D,GAAM68B,GAAO86B,GAA4B;AAC/D,QAAIC,IAAuB/e;AAC3B,IAAAA,MAAoB;AACpB,QAAI2e,IAAiBD,GAAc,GACjCG,IAAsBD,GAAmB;AAC3C,KAAInjB,OAAuBt0C,KAAQg6C,OAAkCnd,OAClE+3B,KAA4B,MAAOQ,GAAkBp1D,GAAM68B,CAAK,IACnEA,IAAQ;AACR,QAAI64B,IAAarP;AACjB,IAAAh7I,EAAG;AACD,UAAI;AACF,YAAU+oJ,OAAN,KAAgDj5B,OAAT,MAAyB;AAClE,cAAI08B,IAAa18B,IACfm8B,IAAcjD;AAChB,kBAAQD,IAA6B;AAAA,YACnC,KAAK;AACH,cAAA4C,GAAwB,GACxBtB,IAAa;AACb,oBAAMrqJ;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAASqvI,GAA2B,YAApC,SAAgD7d,IAAQ;AACxD,kBAAI3uB,KAASkmD;AAIb,kBAHAA,KAAgC,GAChCC,KAA4B,MAC5ByD,GAAuB93D,GAAM63D,GAAYP,GAAappD,EAAM,GAE1DypD,KACApD,IACA;AACA,gBAAAmB,IAAa;AACb,sBAAMrqJ;AAAA,cACpB;AACY;AAAA,YACF;AACE,cAAC6iG,KAASkmD,IACPA,KAAgC,GAChCC,KAA4B,MAC7ByD,GAAuB93D,GAAM63D,GAAYP,GAAappD,EAAM;AAAA,UAC1E;AAAA,QACA;AACM,QAAA6pD,GAAY,GACZrC,IAAarP;AACb;AAAA,MACN,SAAa2R,IAAiB;AACxB,QAAAX,GAAYr3D,GAAMg4D,EAAe;AAAA,MACvC;AAAA,WACS;AACP,WAAAn7B,KAAS78B,EAAK,uBACd4xC,KAAwBD,KAA4B,MACpDkH,KAAmB+e,GACnB/8I,EAAqB,IAAI28I,GACzB38I,EAAqB,IAAI68I,GAChBv8B,OAAT,SACImZ,KAAqB,MACtB0F,KAAgC,GACjC5M,OACKsoB;AAAA,EACT;AACA,WAASqC,KAAe;AACtB,WAAgB58B,OAAT,OAA2B,CAAA88B,GAAkB98B,EAAc;AAAA,EACpE;AACA,WAASw6B,GAAqB31D,GAAM68B,GAAO;AACzC,QAAI+6B,IAAuB/e;AAC3B,IAAAA,MAAoB;AACpB,QAAI2e,IAAiBD,GAAc,GACjCG,IAAsBD,GAAmB;AAC3C,IAAAnjB,OAAuBt0C,KAAQg6C,OAAkCnd,KAC3D+3B,KAA4B,MAC7B3I,KAAqCzwB,GAAG,IAAK,KAC9C45B,GAAkBp1D,GAAM68B,CAAK,KAC5B03B,KAAmCh3B;AAAA,MAClCv9B;AAAA,MACA68B;AAAA,IACR;AACE,IAAAxxH,EAAG;AACD,UAAI;AACF,YAAU+oJ,OAAN,KAAgDj5B,OAAT,MAAyB;AAClE,UAAA0B,IAAQ1B;AACR,cAAIm8B,IAAcjD;AAClB,UAAA7wI,EAAG,SAAQ4wI,IAA6B;AAAA,YACtC,KAAK;AACH,cAAAA,KAAgC,GAChCC,KAA4B,MAC5ByD,GAAuB93D,GAAM68B,GAAOy6B,GAAa,CAAC;AAClD;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,kBAAItiB,GAAmBsiB,CAAW,GAAG;AACnC,gBAAAlD,KAAgC,GAChCC,KAA4B,MAC5B6D,GAA0Br7B,CAAK;AAC/B;AAAA,cACd;AACY,cAAAA,IAAQ,WAAY;AAClB,gBAAOu3B,OAAN,KACOA,OAAN,KACA9f,OAAuBt0C,MACtBo0D,KAAgC,IACnCkB,GAAsBt1D,CAAI;AAAA,cACxC,GACYs3D,EAAY,KAAKz6B,GAAOA,CAAK;AAC7B,oBAAMxxH;AAAA,YACR,KAAK;AACH,cAAA+oJ,KAAgC;AAChC,oBAAM/oJ;AAAA,YACR,KAAK;AACH,cAAA+oJ,KAAgC;AAChC,oBAAM/oJ;AAAA,YACR,KAAK;AACH,cAAA2pI,GAAmBsiB,CAAW,KACxBlD,KAAgC,GACjCC,KAA4B,MAC7B6D,GAA0Br7B,CAAK,MAC7Bu3B,KAAgC,GACjCC,KAA4B,MAC7ByD,GAAuB93D,GAAM68B,GAAOy6B,GAAa,CAAC;AACtD;AAAA,YACF,KAAK;AACH,kBAAIvM,IAAW;AACf,sBAAQ5vB,GAAe,KAAG;AAAA,gBACxB,KAAK;AACH,kBAAA4vB,IAAW5vB,GAAe;AAAA,gBAC5B,KAAK;AAAA,gBACL,KAAK;AACH,sBAAIg9B,IAAYh9B;AAChB,sBACE4vB,IACIC,GAAgBD,CAAQ,IACxBoN,EAAU,UAAU,UACxB;AACA,oBAAA/D,KAAgC,GAChCC,KAA4B;AAC5B,wBAAIN,IAAUoE,EAAU;AACxB,wBAAapE,MAAT,KAAkB,CAAA54B,KAAiB44B;AAAA,yBAClC;AACH,0BAAI/d,KAAcmiB,EAAU;AAC5B,sBAASniB,OAAT,QACM7a,KAAiB6a,IACnBoiB,GAAmBpiB,EAAW,KAC7B7a,KAAiB;AAAA,oBAC1C;AACkB,0BAAM33G;AAAA,kBACxB;AAAA,cACA;AACY,cAAA4wI,KAAgC,GAChCC,KAA4B,MAC5ByD,GAAuB93D,GAAM68B,GAAOy6B,GAAa,CAAC;AAClD;AAAA,YACF,KAAK;AACH,cAAAlD,KAAgC,GAChCC,KAA4B,MAC5ByD,GAAuB93D,GAAM68B,GAAOy6B,GAAa,CAAC;AAClD;AAAA,YACF,KAAK;AACH,cAAAN,GAAwB,GACxB3Q,KAA+B;AAC/B,oBAAMh7I;AAAA,YACR;AACE,oBAAM,MAAMy/D,EAAuB,GAAG,CAAC;AAAA,UACnD;AAAA,QACA;AACM,QAAAutF,GAA6B;AAC7B;AAAA,MACN,SAAaC,IAAiB;AACxB,QAAAjB,GAAYr3D,GAAMs4D,EAAe;AAAA,MACvC;AAAA,WACS;AAKP,WAJA1mB,KAAwBD,KAA4B,MACpD92H,EAAqB,IAAI28I,GACzB38I,EAAqB,IAAI68I,GACzB7e,KAAmB+e,GACNz8B,OAAT,OAAgC,KACpCmZ,KAAqB,MACrB0F,KAAgC,GAChC5M,GAA+B,GACxBiZ;AAAA,EACT;AACA,WAASgS,KAAgC;AACvC,WAAgBl9B,OAAT,QAA2B,CAACG,GAAW;AAC5C,MAAA28B,GAAkB98B,EAAc;AAAA,EACpC;AACA,WAAS88B,GAAkBJ,GAAY;AACrC,QAAI/xI,IAAOqkI,GAAU0N,EAAW,WAAWA,GAAYtd,EAAoB;AAC3E,IAAAsd,EAAW,gBAAgBA,EAAW,cAC7B/xI,MAAT,OAAgBsyI,GAAmBP,CAAU,IAAK18B,KAAiBr1G;AAAA,EACrE;AACA,WAASoyI,GAA0BL,GAAY;AAC7C,QAAI/xI,IAAO+xI,GACPhyI,IAAUC,EAAK;AACnB,YAAQA,EAAK,KAAG;AAAA,MACd,KAAK;AAAA,MACL,KAAK;AACH,QAAAA,IAAOmiI;AAAA,UACLpiI;AAAA,UACAC;AAAA,UACAA,EAAK;AAAA,UACLA,EAAK;AAAA,UACL;AAAA,UACAk0H;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAl0H,IAAOmiI;AAAA,UACLpiI;AAAA,UACAC;AAAA,UACAA,EAAK;AAAA,UACLA,EAAK,KAAK;AAAA,UACVA,EAAK;AAAA,UACLk0H;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAqD,GAAmBv3H,CAAI;AAAA,MACzB;AACE,QAAAqmI,GAAsBtmI,GAASC,CAAI,GAChCA,IAAOq1G,KACNiT,GAAoBtoH,GAAMy0H,EAAoB,GAC/Cz0H,IAAOqkI,GAAUtkI,GAASC,GAAMy0H,EAAoB;AAAA,IAC7D;AACE,IAAAsd,EAAW,gBAAgBA,EAAW,cAC7B/xI,MAAT,OAAgBsyI,GAAmBP,CAAU,IAAK18B,KAAiBr1G;AAAA,EACrE;AACA,WAASgyI,GACP93D,GACA63D,GACAP,GACAiB,GACA;AACA,IAAA3mB,KAAwBD,KAA4B,MACpD0L,GAAmBwa,CAAU,GAC7BliB,KAAkB,MAClBC,KAAyB;AACzB,QAAII,IAAc6hB,EAAW;AAC7B,QAAI;AACF,UACE3R;AAAA,QACElmD;AAAA,QACAg2C;AAAA,QACA6hB;AAAA,QACAP;AAAA,QACAtd;AAAA,MACR,GACM;AACA,QAAAqM,KAA+B,GAC/Bf;AAAA,UACEtlD;AAAA,UACA+uC,GAA2BuoB,GAAat3D,EAAK,OAAO;AAAA,WAEtDm7B,KAAiB;AACjB;AAAA,MACN;AAAA,IACA,SAAW3kH,GAAO;AACd,UAAaw/H,MAAT,KAAsB,OAAQ7a,KAAiB6a,GAAcx/H;AACjE,MAAA6vI,KAA+B,GAC/Bf;AAAA,QACEtlD;AAAA,QACA+uC,GAA2BuoB,GAAat3D,EAAK,OAAO;AAAA,SAEtDm7B,KAAiB;AACjB;AAAA,IACJ;AACE,IAAI08B,EAAW,QAAQ,SACjB70B,MAAqBu1B,MAAN,IAAuBv4D,IAAO,KAE/Cu0D,OACOva,KAAgC,eAAvC,IAEAh6C,IAAO,MAELs0D,KAA6Ct0D,IAAO,KAChDu4D,MAAN,KACQA,MAAN,KACMA,MAAN,KACMA,MAAN,OAEDA,IAAkB7d,GAA2B,SACnC6d,MAAT,QACSA,EAAgB,QAAvB,OACCA,EAAgB,SAAS,UAChCC,GAAiBX,GAAY73D,CAAI,KAC5Bo4D,GAAmBP,CAAU;AAAA,EACtC;AACA,WAASO,GAAmBP,GAAY;AACtC,QAAIpM,IAAgBoM;AACpB,OAAG;AACD,WAAWpM,EAAc,QAAQ,WAA7B,GAAqC;AACvC,QAAA+M;AAAA,UACE/M;AAAA,UACA6I;AAAA;AAEF;AAAA,MACN;AACI,MAAAuD,IAAapM,EAAc;AAC3B,UAAI3lI,IAAOgmI;AAAA,QACTL,EAAc;AAAA,QACdA;AAAA,QACAlR;AAAA;AAEF,UAAaz0H,MAAT,MAAe;AACjB,QAAAq1G,KAAiBr1G;AACjB;AAAA,MACN;AAEI,UADA2lI,IAAgBA,EAAc,SACjBA,MAAT,MAAwB;AAC1B,QAAAtwB,KAAiBswB;AACjB;AAAA,MACN;AACI,MAAAtwB,KAAiBswB,IAAgBoM;AAAA,IACrC,SAAoBpM,MAAT;AACT,IAAMpF,OAAN,MAAuCA,KAA+B;AAAA,EACxE;AACA,WAASmS,GAAiBX,GAAYY,GAAc;AAClD,OAAG;AACD,UAAI3yI,IAAOomI,GAAW2L,EAAW,WAAWA,CAAU;AACtD,UAAa/xI,MAAT,MAAe;AACjB,QAAAA,EAAK,SAAS,OACdq1G,KAAiBr1G;AACjB;AAAA,MACN;AAII,UAHAA,IAAO+xI,EAAW,QACT/xI,MAAT,SACIA,EAAK,SAAS,OAASA,EAAK,eAAe,GAAKA,EAAK,YAAY,OAEnE,CAAC2yI,MACCZ,IAAaA,EAAW,SAAmBA,MAAT,OACpC;AACA,QAAA18B,KAAiB08B;AACjB;AAAA,MACN;AACI,MAAA18B,KAAiB08B,IAAa/xI;AAAA,IAClC,SAAoB+xI,MAAT;AACT,IAAAxR,KAA+B,GAC/BlrB,KAAiB;AAAA,EACnB;AACA,WAASw7B,GACP32D,GACAssD,GACAzvB,GACAq5B,GACAC,GACAC,GACAh4B,GACAC,GACAC,GACA;AACA,IAAAt+B,EAAK,sBAAsB;AAC3B;AAAG,MAAA04D,GAAmB;AAAA,WACT7D,OAAN;AACP,SAAWhc,KAAmB,OAA1B,EAA8B,OAAM,MAAM/tE,EAAuB,GAAG,CAAC;AACzE,QAAawhF,MAAT,MAAuB;AACzB,UAAIA,MAAiBtsD,EAAK,QAAS,OAAM,MAAMl1B,EAAuB,GAAG,CAAC;AA8B1E,UA7BAsrF,IAA8B9J,EAAa,QAAQA,EAAa,YAChE8J,KAA+BjpB,IAC/BlP;AAAA,QACEj+B;AAAA,QACA68B;AAAA,QACAu5B;AAAA,QACAh4B;AAAA,QACAC;AAAA,QACAC;AAAA,SAEFt+B,MAASs0C,OACLnZ,KAAiBmZ,KAAqB,MACvC0F,KAAgC,IACnC+a,KAAsBzI,GACtBwI,KAAqB90D,GACrBg1D,KAAsBn4B,GACtBo4B,KAA+BmB,GAC/BlB,KAA4BiB,GAC5BhB,KAA2Be,IACpB5J,EAAa,eAAe,WAAnC,MACOA,EAAa,QAAQ,WAA5B,KACMtsD,EAAK,eAAe,MACrBA,EAAK,mBAAmB,GACzB24D,GAAmB/8B,IAAkB,WAAY;AAC/C,eAAAg9B,GAAmB,GACZ;AAAA,MACjB,CAAS,MACC54D,EAAK,eAAe,MAAQA,EAAK,mBAAmB,IAC1Dk2D,KAA2B5J,EAAa,QAAQ,WAA5B,IACTA,EAAa,eAAe,WAAnC,KAA6C4J,GAAmB;AAClE,QAAAA,IAAoBr7I,EAAqB,GACzCA,EAAqB,IAAI,MACzBs7I,IAAcp9B,EAAwB,GACtCA,EAAwB,IAAI,GAC5BqF,IAAcya,IACdA,MAAoB;AACpB,YAAI;AACF,UAAAuV,GAA4BpuD,GAAMssD,GAAczvB,CAAK;AAAA,QAC7D,UAAO;AACC,UAACgc,KAAmBza,GACjBrF,EAAwB,IAAIo9B,GAC5Bt7I,EAAqB,IAAIq7I;AAAA,QACpC;AAAA,MACA;AACI,MAAArB,KAAuB,GACvBgE,GAAoB,GACpBC,GAAkB,GAClBC,GAAgB;AAAA,IACpB;AAAA,EACA;AACA,WAASF,KAAuB;AAC9B,QAAUhE,OAAN,GAA4B;AAC9B,MAAAA,KAAuB;AACvB,UAAI70D,IAAO80D,IACTxI,IAAeyI,IACfiE,KAA+B1M,EAAa,QAAQ,WAA5B;AAC1B,WAAWA,EAAa,eAAe,WAAnC,KAA6C0M,GAAuB;AACtE,QAAAA,IAAwBn+I,EAAqB,GAC7CA,EAAqB,IAAI;AACzB,YAAI8kH,IAAmB5G,EAAwB;AAC/C,QAAAA,EAAwB,IAAI;AAC5B,YAAI6+B,IAAuB/e;AAC3B,QAAAA,MAAoB;AACpB,YAAI;AACF,UAAAgY,GAA6BvE,GAActsD,CAAI;AAC/C,cAAIi5D,IAA4BtK,IAC9BuK,IAAiB1tB,GAAqBxrC,EAAK,aAAa,GACxDm5D,IAAmBF,EAA0B,aAC7CG,IAAsBH,EAA0B;AAClD,cACEC,MAAmBC,KACnBA,KACAA,EAAiB,iBACjB9tB;AAAA,YACE8tB,EAAiB,cAAc;AAAA,YAC/BA;AAAA,UACZ,GACU;AACA,gBACWC,MAAT,QACA3tB,GAAyB0tB,CAAgB,GACzC;AACA,kBAAI9zI,KAAQ+zI,EAAoB,OAC9B1tH,KAAM0tH,EAAoB;AAE5B,kBADW1tH,OAAX,WAAmBA,KAAMrmB,KACrB,oBAAoB8zI;AACtB,gBAACA,EAAiB,iBAAiB9zI,IAChC8zI,EAAiB,eAAe,KAAK;AAAA,kBACpCztH;AAAA,kBACAytH,EAAiB,MAAM;AAAA,gBACzC;AAAA,mBACiB;AACH,oBAAIhwG,KAAMgwG,EAAiB,iBAAiB,UAC1CngF,KAAO7vB,MAAOA,GAAI,eAAgB;AACpC,oBAAI6vB,GAAI,cAAc;AACpB,sBAAIhU,KAAYgU,GAAI,aAAY,GAC9B71D,KAASg2I,EAAiB,YAAY,QACtCE,KAAiB,KAAK,IAAID,EAAoB,OAAOj2I,EAAM,GAC3Dm2I,KACaF,EAAoB,QAA/B,SACIC,KACA,KAAK,IAAID,EAAoB,KAAKj2I,EAAM;AAChD,mBAAC6hD,GAAU,UACTq0F,KAAiBC,OACfJ,IAAiBI,IAClBA,KAAeD,IACfA,KAAiBH;AACpB,sBAAIK,IAAcpuB;AAAA,oBACdguB;AAAA,oBACAE;AAAA,qBAEFG,IAAYruB;AAAA,oBACVguB;AAAA,oBACAG;AAAA;AAEJ,sBACEC,KACAC,MACOx0F,GAAU,eAAhB,KACCA,GAAU,eAAeu0F,EAAY,QACrCv0F,GAAU,iBAAiBu0F,EAAY,UACvCv0F,GAAU,cAAcw0F,EAAU,QAClCx0F,GAAU,gBAAgBw0F,EAAU,SACtC;AACA,wBAAIv0F,KAAQ9b,GAAI,YAAW;AAC3B,oBAAA8b,GAAM,SAASs0F,EAAY,MAAMA,EAAY,MAAM,GACnDv0F,GAAU,gBAAe,GACzBq0F,KAAiBC,MACZt0F,GAAU,SAASC,EAAK,GACzBD,GAAU,OAAOw0F,EAAU,MAAMA,EAAU,MAAM,MAChDv0F,GAAM,OAAOu0F,EAAU,MAAMA,EAAU,MAAM,GAC9Cx0F,GAAU,SAASC,EAAK;AAAA,kBAC9C;AAAA,gBACA;AAAA,cACA;AAAA,YACA;AAEU,iBADA9b,KAAM,CAAA,GAEJ6b,KAAYm0F,GACXn0F,KAAYA,GAAU;AAGvB,cAAMA,GAAU,aAAhB,KACE7b,GAAI,KAAK;AAAA,gBACP,SAAS6b;AAAA,gBACT,MAAMA,GAAU;AAAA,gBAChB,KAAKA,GAAU;AAAA,cAC/B,CAAe;AAGL,iBAFe,OAAOm0F,EAAiB,SAAvC,cACEA,EAAiB,MAAK,GAEtBA,IAAmB,GACnBA,IAAmBhwG,GAAI,QACvBgwG,KACA;AACA,kBAAIvlC,KAAOzqE,GAAIgwG,CAAgB;AAC/B,cAAAvlC,GAAK,QAAQ,aAAaA,GAAK,MAC/BA,GAAK,QAAQ,YAAYA,GAAK;AAAA,YAC1C;AAAA,UACA;AACQ,UAAA06B,KAAW,CAAC,CAACD,IACbM,KAAuBN,KAAgB;AAAA,QAC/C,UAAO;AACC,UAACxV,KAAmB+e,GACjB7+B,EAAwB,IAAI4G,GAC5B9kH,EAAqB,IAAIm+I;AAAA,QACpC;AAAA,MACA;AACI,MAAAh5D,EAAK,UAAUssD,GACfuI,KAAuB;AAAA,IAC3B;AAAA,EACA;AACA,WAASiE,KAAqB;AAC5B,QAAUjE,OAAN,GAA4B;AAC9B,MAAAA,KAAuB;AACvB,UAAI70D,IAAO80D,IACTxI,IAAeyI,IACf0E,KAA6BnN,EAAa,QAAQ,UAA5B;AACxB,WAAWA,EAAa,eAAe,UAAnC,KAA4CmN,GAAqB;AACnE,QAAAA,IAAsB5+I,EAAqB,GAC3CA,EAAqB,IAAI;AACzB,YAAI8kH,IAAmB5G,EAAwB;AAC/C,QAAAA,EAAwB,IAAI;AAC5B,YAAI6+B,IAAuB/e;AAC3B,QAAAA,MAAoB;AACpB,YAAI;AACF,UAAAiW,GAA0B9uD,GAAMssD,EAAa,WAAWA,CAAY;AAAA,QAC5E,UAAO;AACC,UAACzT,KAAmB+e,GACjB7+B,EAAwB,IAAI4G,GAC5B9kH,EAAqB,IAAI4+I;AAAA,QACpC;AAAA,MACA;AACI,MAAA5E,KAAuB;AAAA,IAC3B;AAAA,EACA;AACA,WAASkE,KAAmB;AAC1B,QAAUlE,OAAN,KAAoCA,OAAN,GAA4B;AAC5D,MAAAA,KAAuB,GACvBt5B,GAAY;AACZ,UAAIv7B,IAAO80D,IACTxI,IAAeyI,IACfl4B,IAAQm4B,IACRkB,IAAoBf;AACtB,OAAO7I,EAAa,eAAe,WAAnC,MACOA,EAAa,QAAQ,WAA5B,IACKuI,KAAuB,KACtBA,KAAuB,GACxBE,KAAsBD,KAAqB,MAC5C4E,GAAuB15D,GAAMA,EAAK,YAAY;AAClD,UAAIm+B,IAAiBn+B,EAAK;AAI1B,UAHMm+B,MAAN,MAAyB8nB,KAAyC,OAClE3mB,GAAqBzC,CAAK,GAC1ByvB,IAAeA,EAAa,WACxBpwB,MAA+B,OAAOA,GAAa,qBAAnC;AAClB,YAAI;AACF,UAAAA,GAAa;AAAA,YACXD;AAAA,YACAqwB;AAAA,YACA;AAAA,aACSA,EAAa,QAAQ,QAAQ,SAAtC;AAAA;QAEV,QAAoB;AAAA,QAAA;AAChB,UAAa4J,MAAT,MAA4B;AAC9B,QAAA5J,IAAezxI,EAAqB,GACpCsjH,IAAiBpF,EAAwB,GACzCA,EAAwB,IAAI,GAC5Bl+G,EAAqB,IAAI;AACzB,YAAI;AACF,mBACM8+I,IAAqB35D,EAAK,oBAAoBx0F,IAAI,GACtDA,IAAI0qJ,EAAkB,QACtB1qJ,KACA;AACA,gBAAIouJ,IAAmB1D,EAAkB1qJ,CAAC;AAC1C,YAAAmuJ,EAAmBC,EAAiB,OAAO;AAAA,cACzC,gBAAgBA,EAAiB;AAAA,YAC7C,CAAW;AAAA,UACX;AAAA,QACA,UAAO;AACC,UAAC/+I,EAAqB,IAAIyxI,GACvBvzB,EAAwB,IAAIoF;AAAA,QACvC;AAAA,MACA;AACI,OAAO62B,KAAsB,OAA7B,KAAmC0D,GAAmB,GACtDpD,GAAsBt1D,CAAI,GAC1Bm+B,IAAiBn+B,EAAK,eACf68B,IAAQ,YAAf,MAAiCsB,IAAiB,QAAxB,IACtBn+B,MAAS6tC,KACPD,QACEA,KAAoB,GAAKC,KAAwB7tC,KACpD4tC,KAAoB,GACzBmpB,GAA8B,CAAK;AAAA,IACvC;AAAA,EACA;AACA,WAAS2C,GAAuB15D,GAAMm+B,GAAgB;AACpD,KAAOn+B,EAAK,oBAAoBm+B,OAAhC,MACIA,IAAiBn+B,EAAK,aAChBm+B,KAAR,SACIn+B,EAAK,cAAc,MAAOszC,GAAanV,CAAc;AAAA,EAC7D;AACA,WAASu6B,KAAsB;AAC7B,WAAAG,GAAoB,GACpBC,GAAkB,GAClBC,GAAgB,GACTH,GAAmB;AAAA,EAC5B;AACA,WAASA,KAAsB;AAC7B,QAAU/D,OAAN,EAA4B,QAAO;AACvC,QAAI70D,IAAO80D,IACT32B,IAAiB82B;AACnB,IAAAA,KAA+B;AAC/B,QAAI4E,IAAiBv6B,GAAqB01B,EAAmB,GAC3Dp3I,IAAiB/C,EAAqB,GACtC8kH,IAAmB5G,EAAwB;AAC7C,QAAI;AACF,MAAAA,EAAwB,IAAI,KAAK8gC,IAAiB,KAAKA,GACvDh/I,EAAqB,IAAI,MACzBg/I,IAAiB3E,IACjBA,KAA4B;AAC5B,UAAIvE,IAAgBmE,IAClBj4B,IAAQm4B;AAIV,UAHAH,KAAuB,GACvBE,KAAsBD,KAAqB,MAC3CE,KAAsB,IACXnc,KAAmB,OAA1B,EAA8B,OAAM,MAAM/tE,EAAuB,GAAG,CAAC;AACzE,UAAI8sF,IAAuB/e;AAW3B,UAVAA,MAAoB,GACpB+a,GAA4BjD,EAAc,OAAO,GACjDgC;AAAA,QACEhC;AAAA,QACAA,EAAc;AAAA,QACd9zB;AAAA,QACAg9B;AAAA,SAEFhhB,KAAmB+e,GACnBb,GAA8B,GAAG,EAAE,GAEjC76B,MACe,OAAOA,GAAa,yBAAnC;AAEA,YAAI;AACF,UAAAA,GAAa,sBAAsBD,IAAY00B,CAAa;AAAA,QACpE,QAAoB;AAAA,QAAA;AAChB,aAAO;AAAA,IACX,UAAG;AACC,MAAC53B,EAAwB,IAAI4G,GAC1B9kH,EAAqB,IAAI+C,GAC1B87I,GAAuB15D,GAAMm+B,CAAc;AAAA,IACjD;AAAA,EACA;AACA,WAAS27B,GAA8BC,GAAWpsB,GAAan3H,GAAO;AACpE,IAAAm3H,IAAcoB,GAA2Bv4H,GAAOm3H,CAAW,GAC3DA,IAAckY,GAAsBkU,EAAU,WAAWpsB,GAAa,CAAC,GACvEosB,IAAYphB,GAAcohB,GAAWpsB,GAAa,CAAC,GAC1CosB,MAAT,SACGh8B,GAAkBg8B,GAAW,CAAC,GAAGzE,GAAsByE,CAAS;AAAA,EACrE;AACA,WAAStN,GAAwB9e,GAAakf,GAAwBr2I,GAAO;AAC3E,QAAUm3H,EAAY,QAAlB;AACF,MAAAmsB,GAA8BnsB,GAAaA,GAAan3H,CAAK;AAAA;AAE7D,aAAgBq2I,MAAT,QAAmC;AACxC,YAAUA,EAAuB,QAA7B,GAAkC;AACpC,UAAAiN;AAAA,YACEjN;AAAA,YACAlf;AAAA,YACAn3H;AAAA;AAEF;AAAA,QACR,WAAuBq2I,EAAuB,QAA7B,GAAkC;AAC3C,cAAIxhG,IAAWwhG,EAAuB;AACtC,cAEI,OAAOA,EAAuB,KAAK,4BADrC,cAEgB,OAAOxhG,EAAS,qBAA/B,eACW46F,OAAT,QACC,CAACA,GAAuC,IAAI56F,CAAQ,IACxD;AACA,YAAAsiF,IAAcoB,GAA2Bv4H,GAAOm3H,CAAW,GAC3Dn3H,IAAQsvI,GAAuB,CAAC,GAChCz6F,IAAWstF,GAAckU,GAAwBr2I,GAAO,CAAC,GAChD60C,MAAT,SACG06F;AAAA,cACCvvI;AAAA,cACA60C;AAAA,cACAwhG;AAAA,cACAlf;AAAA,eAEF5P,GAAkB1yE,GAAU,CAAC,GAC7BiqG,GAAsBjqG,CAAQ;AAChC;AAAA,UACV;AAAA,QACA;AACM,QAAAwhG,IAAyBA,EAAuB;AAAA,MACtD;AAAA,EACA;AACA,WAASvG,GAAmBtmD,GAAMuwD,GAAU1zB,GAAO;AACjD,QAAIm9B,IAAYh6D,EAAK;AACrB,QAAag6D,MAAT,MAAoB;AACtB,MAAAA,IAAYh6D,EAAK,YAAY,IAAIm0D,GAAe;AAChD,UAAI8F,IAAY,oBAAI,IAAG;AACvB,MAAAD,EAAU,IAAIzJ,GAAU0J,CAAS;AAAA,IACrC;AACI,MAACA,IAAYD,EAAU,IAAIzJ,CAAQ,GACtB0J,MAAX,WACIA,IAAY,oBAAI,IAAG,GAAKD,EAAU,IAAIzJ,GAAU0J,CAAS;AACjE,IAAAA,EAAU,IAAIp9B,CAAK,MACf23B,KAA0C,IAC5CyF,EAAU,IAAIp9B,CAAK,GAClB78B,IAAOk6D,GAAkB,KAAK,MAAMl6D,GAAMuwD,GAAU1zB,CAAK,GAC1D0zB,EAAS,KAAKvwD,GAAMA,CAAI;AAAA,EAC5B;AACA,WAASk6D,GAAkBl6D,GAAMuwD,GAAUlzB,GAAa;AACtD,QAAI28B,IAAYh6D,EAAK;AACrB,IAASg6D,MAAT,QAAsBA,EAAU,OAAOzJ,CAAQ,GAC/CvwD,EAAK,eAAeA,EAAK,iBAAiBq9B,GAC1Cr9B,EAAK,aAAa,CAACq9B,GACnBiX,OAAuBt0C,MACpBg6C,KAAgC3c,OAAiBA,MAC3CgpB,OAAN,KACMA,OAAN,MACErM,KAAgC,cAC/BA,MACF,MAAMxe,GAAG,IAAKi2B,MACL5Y,KAAmB,OAA1B,KAAgCuc,GAAkBp1D,GAAM,CAAC,IACxD00D,MAAiCr3B,GACtC8tB,OAAsCnR,OACnCmR,KAAoC,KACzCmK,GAAsBt1D,CAAI;AAAA,EAC5B;AACA,WAASm6D,GAAsBC,GAAeC,GAAW;AACvD,IAAMA,MAAN,MAAoBA,IAAY18B,OAChCy8B,IAAgB1sB,GAA+B0sB,GAAeC,CAAS,GAC9DD,MAAT,SACGr8B,GAAkBq8B,GAAeC,CAAS,GAC3C/E,GAAsB8E,CAAa;AAAA,EACvC;AACA,WAAShL,GAAgCgL,GAAe;AACtD,QAAItiC,IAAgBsiC,EAAc,eAChCC,IAAY;AACd,IAASviC,MAAT,SAA2BuiC,IAAYviC,EAAc,YACrDqiC,GAAsBC,GAAeC,CAAS;AAAA,EAChD;AACA,WAAS5J,GAAqB2J,GAAe7J,GAAU;AACrD,QAAI8J,IAAY;AAChB,YAAQD,EAAc,KAAG;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AACH,YAAIhK,IAAagK,EAAc,WAC3BtiC,IAAgBsiC,EAAc;AAClC,QAAStiC,MAAT,SAA2BuiC,IAAYviC,EAAc;AACrD;AAAA,MACF,KAAK;AACH,QAAAs4B,IAAagK,EAAc;AAC3B;AAAA,MACF,KAAK;AACH,QAAAhK,IAAagK,EAAc,UAAU;AACrC;AAAA,MACF;AACE,cAAM,MAAMtvF,EAAuB,GAAG,CAAC;AAAA,IAC7C;AACE,IAASslF,MAAT,QAAuBA,EAAW,OAAOG,CAAQ,GACjD4J,GAAsBC,GAAeC,CAAS;AAAA,EAChD;AACA,WAAS1B,GAAmB1hC,GAAez8G,GAAU;AACnD,WAAO4gH,GAAmBnE,GAAez8G,CAAQ;AAAA,EACnD;AACA,MAAI8/I,KAAqB,MACvBC,KAAoB,MACpBC,KAAuB,IACvBC,KAA2B,IAC3BC,KAAiB,IACjBC,KAA6B;AAC/B,WAASrF,GAAsBt1D,GAAM;AACnC,IAAAA,MAASu6D,MACEv6D,EAAK,SAAd,SACUu6D,OAAT,OACID,KAAqBC,KAAoBv6D,IACzCu6D,KAAoBA,GAAkB,OAAOv6D,IACpDy6D,KAA2B,IAC3BD,OACIA,KAAuB,IAAKI;EAClC;AACA,WAAS7D,GAA8B8D,GAAqBC,GAAY;AACtE,QAAI,CAACJ,MAAkBD,IAA0B;AAC/C,MAAAC,KAAiB;AACjB;AAEE,iBADIK,IAAqB,IAChBC,IAAWV,IAA6BU,MAAT,QAAqB;AAEzD,cAAUH,MAAN,GAA2B;AAC7B,gBAAI39B,IAAe89B,EAAS;AAC5B,gBAAU99B,MAAN,EAAoB,KAAIrD,IAA2B;AAAA,iBAClD;AACH,kBAAIuD,IAAiB49B,EAAS,gBAC5B39B,IAAc29B,EAAS;AACzB,cAAAnhC,KACG,KAAM,KAAKwC,GAAM,KAAKw+B,CAAmB,IAAI,KAAM,GACtDhhC,KACEqD,IAAe,EAAEE,IAAiB,CAACC,IACrCxD,IACEA,IAA2B,YACtBA,IAA2B,YAAa,IACzCA,IACEA,IAA2B,IAC3B;AAAA,YACtB;AACY,YAAMA,MAAN,MACIkhC,IAAqB,IACvBE,GAAsBD,GAAUnhC,CAAwB;AAAA,UACtE;AACY,YAACA,IAA2BmgB,IACzBngB,IAA2BkD;AAAA,cAC1Bi+B;AAAA,cACAA,MAAa1mB,KAAqBza,IAA2B;AAAA,cACpDmhC,EAAS,wBAAlB,QACSA,EAAS,kBAAhB;AAAA,gBAEGnhC,IAA2B,OAAlC,KACE0D,GAA0By9B,GAAUnhC,CAAwB,MAC1DkhC,IAAqB,IACvBE,GAAsBD,GAAUnhC,CAAwB;AAChE,UAAAmhC,IAAWA,EAAS;AAAA,QAC5B;AAAA,aACaD;AACT,MAAAL,KAAiB;AAAA,IACrB;AAAA,EACA;AACA,WAASQ,KAAqC;AAC5C,IAAAC,GAA8B;AAAA,EAChC;AACA,WAASA,KAAiC;AACxC,IAAAV,KAA2BD,KAAuB;AAClD,QAAIK,IAAsB;AAC1B,IAAMF,OAAN,KACES,GAA4B,MAC3BP,IAAsBF;AACzB,aACM7kC,IAAc0F,GAAG,GAAIv6G,IAAO,MAAM++E,IAAOs6D,IACpCt6D,MAAT,QAEA;AACA,UAAIl6E,IAAOk6E,EAAK,MACdm9B,IAAYk+B,GAAmCr7D,GAAM81B,CAAW;AAClE,MAAUqH,MAAN,KACDn9B,EAAK,OAAO,MACF/+E,MAAT,OAAiBq5I,KAAqBx0I,IAAS7E,EAAK,OAAO6E,GAClDA,MAAT,SAAkBy0I,KAAoBt5I,OAEtCA,IAAO++E,IAAa66D,MAAN,MAAoC19B,IAAY,OAAnB,OAE7Cs9B,KAA2B,MAC7Bz6D,IAAOl6E;AAAA,IACX;AACE,IAAO+uI,OAAN,KAAoCA,OAAN,KAC7BkC,GAA8B8D,CAAuB,GACjDF,OAAN,MAAqCA,KAA6B;AAAA,EACpE;AACA,WAASU,GAAmCr7D,GAAM81B,GAAa;AAC7D,aACMsH,IAAiBp9B,EAAK,gBACxBq9B,IAAcr9B,EAAK,aACnBy+B,IAAkBz+B,EAAK,iBACvB68B,IAAQ78B,EAAK,eAAe,WAC9B,IAAI68B,KAEJ;AACA,UAAIy+B,IAAU,KAAKj/B,GAAMQ,CAAK,GAC5Ba,IAAO,KAAK49B,GACZC,IAAiB98B,EAAgB68B,CAAO;AAC1C,MAAWC,MAAP,OACS79B,IAAON,OAAd,MAAwCM,IAAOL,OAAd,OACnCoB,EAAgB68B,CAAO,IAAI79B,GAAsBC,GAAM5H,CAAW,KAC/DylC,KAAkBzlC,MAAgB91B,EAAK,gBAAgB09B,IAC9Db,KAAS,CAACa;AAAA,IACd;AASE,QARA5H,IAAcwe,IACdlX,IAAiB4c,IACjB5c,IAAiBL;AAAA,MACf/8B;AAAA,MACAA,MAAS81B,IAAcsH,IAAiB;AAAA,MAC/Bp9B,EAAK,wBAAd,QAA4CA,EAAK,kBAAZ;AAAA,OAEvCq9B,IAAcr9B,EAAK,cAEXo9B,MAAN,KACCp9B,MAAS81B,MACDs+B,OAAN,KACOA,OAAN,MACKp0D,EAAK,wBAAd;AAEA,aACWq9B,MAAT,QACWA,MAAT,QACAhC,GAAiBgC,CAAW,GAC7Br9B,EAAK,eAAe,MACpBA,EAAK,mBAAmB;AAE7B,SACSo9B,IAAiB,OAAxB,KACAG,GAA0Bv9B,GAAMo9B,CAAc,GAC9C;AAEA,UADAtH,IAAcsH,IAAiB,CAACA,GAC5BtH,MAAgB91B,EAAK,iBAAkB,QAAO81B;AAElD,cADSuH,MAAT,QAAwBhC,GAAiBgC,CAAW,GAC5CiC,GAAqBlC,CAAc,GAAC;AAAA,QAC1C,KAAK;AAAA,QACL,KAAK;AACH,UAAAA,IAAiBzB;AACjB;AAAA,QACF,KAAK;AACH,UAAAyB,IAAiBxB;AACjB;AAAA,QACF,KAAK;AACH,UAAAwB,IAAiBtB;AACjB;AAAA,QACF;AACE,UAAAsB,IAAiBxB;AAAA,MACzB;AACI,aAAAyB,IAAcm+B,GAAkC,KAAK,MAAMx7D,CAAI,GAC/Do9B,IAAiBhC,GAAmBgC,GAAgBC,CAAW,GAC/Dr9B,EAAK,mBAAmB81B,GACxB91B,EAAK,eAAeo9B,GACbtH;AAAA,IACX;AACE,WAASuH,MAAT,QAAiCA,MAAT,QAAwBhC,GAAiBgC,CAAW,GAC5Er9B,EAAK,mBAAmB,GACxBA,EAAK,eAAe,MACb;AAAA,EACT;AACA,WAASw7D,GAAkCx7D,GAAMy7D,GAAY;AAC3D,QAAU5G,OAAN,KAAoCA,OAAN;AAChC,aAAQ70D,EAAK,eAAe,MAAQA,EAAK,mBAAmB,GAAI;AAClE,QAAI07D,IAAuB17D,EAAK;AAChC,QAAI04D,GAAmB,KAAM14D,EAAK,iBAAiB07D;AACjD,aAAO;AACT,QAAIC,IAAyC3hB;AAM7C,WALA2hB,IAAyC5+B;AAAA,MACvC/8B;AAAA,MACAA,MAASs0C,KAAqBqnB,IAAyC;AAAA,MAC9D37D,EAAK,wBAAd,QAA4CA,EAAK,kBAAZ;AAAA,OAE7B27D,MAAN,IAAqD,QACzDpG,GAAkBv1D,GAAM27D,GAAwCF,CAAU,GAC1EJ,GAAmCr7D,GAAMw7B,IAAK,GAC/Bx7B,EAAK,gBAAb,QAA6BA,EAAK,iBAAiB07D,IACtDF,GAAkC,KAAK,MAAMx7D,CAAI,IACjD;AAAA,EACN;AACA,WAASi7D,GAAsBj7D,GAAM68B,GAAO;AAC1C,QAAI67B,GAAmB,EAAI,QAAO;AAClC,IAAAnD,GAAkBv1D,GAAM68B,GAAO,EAAE;AAAA,EACnC;AACA,WAAS+9B,KAAoC;AAC3C,IAAAgB,GAAkB,WAAY;AAC5B,OAAO/iB,KAAmB,OAA1B,IACIzd;AAAA,QACEM;AAAA,QACAw/B;AAAA,MACV,IACQC,GAA8B;AAAA,IACtC,CAAG;AAAA,EACH;AACA,WAAStnB,KAAwB;AAC/B,QAAU8mB,OAAN,GAAkC;AACpC,UAAIkB,IAAkBpoB;AACtB,MAAMooB,MAAN,MACIA,IAAkBp/B,IACnBA,OAA6B,IACvBA,KAA2B,YAAlC,MACGA,KAA2B,OAChCk+B,KAA6BkB;AAAA,IACjC;AACE,WAAOlB;AAAA,EACT;AACA,WAASmB,GAAqBC,GAAY;AACxC,WAAeA,KAAR,QACQ,OAAOA,KAApB,YACc,OAAOA,KAArB,YACE,OACe,OAAOA,KAAtB,aACEA,IACA73B,GAAY,KAAK63B,CAAU;AAAA,EACnC;AACA,WAASC,GAA4BpwF,GAAMqwF,GAAW;AACpD,QAAI1rI,IAAO0rI,EAAU,cAAc,cAAc,OAAO;AACxD,WAAA1rI,EAAK,OAAO0rI,EAAU,MACtB1rI,EAAK,QAAQ0rI,EAAU,OACvBrwF,EAAK,MAAMr7C,EAAK,aAAa,QAAQq7C,EAAK,EAAE,GAC5CqwF,EAAU,WAAW,aAAa1rI,GAAM0rI,CAAS,GACjDrwF,IAAO,IAAI,SAASA,CAAI,GACxBr7C,EAAK,WAAW,YAAYA,CAAI,GACzBq7C;AAAA,EACT;AACA,WAASswF,GACPxyB,GACAT,GACAkzB,GACAnwF,GACAm6D,GACA;AACA,QACe8C,MAAb,YACAkzB,KACAA,EAAgB,cAAch2B,GAC9B;AACA,UAAIloH,IAAS69I;AAAA,SACR31B,EAAkBrG,EAAgB,KAAK,MAAM;AAAA,SAEhDm8B,IAAYjwF,EAAY;AAC1B,MAAAiwF,MACIhzB,KAAgBA,IAAegzB,EAAUn8B,EAAgB,KAAK,QAC5Dg8B,GAAqB7yB,EAAa,UAAU,IAC5CgzB,EAAU,aAAa,YAAY,GAC9BhzB,MAAT,SAA2BhrH,IAASgrH,GAAgBgzB,IAAY;AAClE,UAAIj/I,IAAQ,IAAIqpH;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACAr6D;AAAA,QACAm6D;AAAA;AAEF,MAAAuD,EAAc,KAAK;AAAA,QACjB,OAAO1sH;AAAA,QACP,WAAW;AAAA,UACT;AAAA,YACE,UAAU;AAAA,YACV,UAAU,WAAY;AACpB,kBAAIgvD,EAAY;AACd,oBAAU2uF,OAAN,GAAkC;AACpC,sBAAIxX,IAAW8Y,IACXD,GAA4B71B,GAAmB81B,CAAS,IACxD,IAAI,SAAS91B,CAAiB;AAClC,kBAAA8c;AAAA,oBACEkZ;AAAA,oBACA;AAAA,sBACE,SAAS;AAAA,sBACT,MAAMhZ;AAAA,sBACN,QAAQhd,EAAkB;AAAA,sBAC1B,QAAQloH;AAAA;oBAEV;AAAA,oBACAklI;AAAA;gBAElB;AAAA;AAEc,gBAAe,OAAOllI,KAAtB,eACGjB,EAAM,eAAc,GACpBmmI,IAAW8Y,IACRD,GAA4B71B,GAAmB81B,CAAS,IACxD,IAAI,SAAS91B,CAAiB,GAClC8c;AAAA,kBACEkZ;AAAA,kBACA;AAAA,oBACE,SAAS;AAAA,oBACT,MAAMhZ;AAAA,oBACN,QAAQhd,EAAkB;AAAA,oBAC1B,QAAQloH;AAAA;kBAEVA;AAAA,kBACAklI;AAAA,gBAClB;AAAA,YACA;AAAA,YACU,eAAehd;AAAA,UACzB;AAAA,QACA;AAAA,MACA,CAAK;AAAA,IACL;AAAA,EACA;AACA,WACMi2B,KAAuB,GAC3BA,KAAuBrvB,GAAwB,QAC/CqvB,MACA;AACA,QAAIC,KACAtvB,GAAwBqvB,EAAoB,GAC9CE,KACED,GAA6B,YAAW,GAC1CE,KACEF,GAA6B,CAAC,EAAE,YAAW,IAC3CA,GAA6B,MAAM,CAAC;AACxC,IAAArvB;AAAA,MACEsvB;AAAA,MACA,OAAOC;AAAA;EAEX;AACA,EAAAvvB,GAAoBT,IAAe,gBAAgB,GACnDS,GAAoBR,IAAqB,sBAAsB,GAC/DQ,GAAoBP,IAAiB,kBAAkB,GACvDO,GAAoB,YAAY,eAAe,GAC/CA,GAAoB,WAAW,SAAS,GACxCA,GAAoB,YAAY,QAAQ,GACxCA,GAAoBN,IAAgB,iBAAiB,GACrDM,GAAoBL,IAAkB,mBAAmB,GACzDK,GAAoBJ,IAAmB,oBAAoB,GAC3DI,GAAoBH,IAAgB,iBAAiB,GACrD1L,GAAoB,gBAAgB,CAAC,YAAY,WAAW,CAAC,GAC7DA,GAAoB,gBAAgB,CAAC,YAAY,WAAW,CAAC,GAC7DA,GAAoB,kBAAkB,CAAC,cAAc,aAAa,CAAC,GACnEA,GAAoB,kBAAkB,CAAC,cAAc,aAAa,CAAC,GACnEH;AAAA,IACE;AAAA,IACA,oEAAoE,MAAM,GAAG;AAAA,KAE/EA;AAAA,IACE;AAAA,IACA,uFAAuF;AAAA,MACrF;AAAA,IACJ;AAAA,KAEAA,GAAsB,iBAAiB;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,GACDA;AAAA,IACE;AAAA,IACA,2DAA2D,MAAM,GAAG;AAAA,KAEtEA;AAAA,IACE;AAAA,IACA,6DAA6D,MAAM,GAAG;AAAA,KAExEA;AAAA,IACE;AAAA,IACA,8DAA8D,MAAM,GAAG;AAAA;AAEzE,MAAI4P,KACA,6NAA6N;AAAA,IAC3N;AAAA,KAEJ4rB,KAAqB,IAAI;AAAA,IACvB,iEACG,MAAM,GAAG,EACT,OAAO5rB,EAAe;AAAA;AAE7B,WAAS7G,GAAqBL,GAAe+yB,GAAkB;AAC7D,IAAAA,KAA0BA,IAAmB,OAA1B;AACnB,aAASjxJ,IAAI,GAAGA,IAAIk+H,EAAc,QAAQl+H,KAAK;AAC7C,UAAIkxJ,IAAmBhzB,EAAcl+H,CAAC,GACpCwR,IAAQ0/I,EAAiB;AAC3B,MAAAA,IAAmBA,EAAiB;AACpC,MAAArxJ,GAAG;AACD,YAAIsxJ,IAAmB;AACvB,YAAIF;AACF,mBACMG,IAAaF,EAAiB,SAAS,GAC3C,KAAKE,GACLA,KACA;AACA,gBAAIC,IAAuBH,EAAiBE,CAAU,GACpDvxG,IAAWwxG,EAAqB,UAChCpsF,KAAgBosF,EAAqB;AAEvC,gBADAA,IAAuBA,EAAqB,UACxCxxG,MAAasxG,KAAoB3/I,EAAM,qBAAoB;AAC7D,oBAAM3R;AACR,YAAAsxJ,IAAmBE,GACnB7/I,EAAM,gBAAgByzD;AACtB,gBAAI;AACF,cAAAksF,EAAiB3/I,CAAK;AAAA,YAClC,SAAmBxG,IAAO;AACd,cAAAuG,GAAkBvG,EAAK;AAAA,YACnC;AACU,YAAAwG,EAAM,gBAAgB,MACtB2/I,IAAmBtxG;AAAA,UAC7B;AAAA;AAEQ,eACEuxG,IAAa,GACbA,IAAaF,EAAiB,QAC9BE,KACA;AAKA,gBAJAC,IAAuBH,EAAiBE,CAAU,GAClDvxG,IAAWwxG,EAAqB,UAChCpsF,KAAgBosF,EAAqB,eACrCA,IAAuBA,EAAqB,UACxCxxG,MAAasxG,KAAoB3/I,EAAM,qBAAoB;AAC7D,oBAAM3R;AACR,YAAAsxJ,IAAmBE,GACnB7/I,EAAM,gBAAgByzD;AACtB,gBAAI;AACF,cAAAksF,EAAiB3/I,CAAK;AAAA,YAClC,SAAmBxG,IAAO;AACd,cAAAuG,GAAkBvG,EAAK;AAAA,YACnC;AACU,YAAAwG,EAAM,gBAAgB,MACtB2/I,IAAmBtxG;AAAA,UAC7B;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA,WAASslF,GAA0B1H,GAAc6zB,GAAe;AAC9D,QAAIjjC,IAA2BijC,EAAc98B,EAAwB;AACrE,IAAWnG,MAAX,WACGA,IAA2BijC,EAAc98B,EAAwB,IAChE,oBAAI,IAAG;AACX,QAAI+8B,IAAiB9zB,IAAe;AACpC,IAAApP,EAAyB,IAAIkjC,CAAc,MACxCC,GAAwBF,GAAe7zB,GAAc,GAAG,EAAE,GAC3DpP,EAAyB,IAAIkjC,CAAc;AAAA,EAC/C;AACA,WAASE,GAAoBh0B,GAAci0B,GAAwBnsJ,GAAQ;AACzE,QAAI0rJ,IAAmB;AACvB,IAAAS,MAA2BT,KAAoB,IAC/CO;AAAA,MACEjsJ;AAAA,MACAk4H;AAAA,MACAwzB;AAAA,MACAS;AAAA;EAEJ;AACA,MAAIC,KAAkB,oBAAoB,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,CAAC;AAC5E,WAASnR,GAA2BoR,GAAsB;AACxD,QAAI,CAACA,EAAqBD,EAAe,GAAG;AAC1C,MAAAC,EAAqBD,EAAe,IAAI,IACxCr8B,GAAgB,QAAQ,SAAUmI,GAAc;AAC9C,QAAsBA,MAAtB,sBACGuzB,GAAmB,IAAIvzB,CAAY,KAClCg0B,GAAoBh0B,GAAc,IAAIm0B,CAAoB,GAC5DH,GAAoBh0B,GAAc,IAAIm0B,CAAoB;AAAA,MAClE,CAAK;AACD,UAAIztF,IACIytF,EAAqB,aAA3B,IACIA,IACAA,EAAqB;AAC3B,MAASztF,MAAT,QACEA,EAAcwtF,EAAe,MAC3BxtF,EAAcwtF,EAAe,IAAI,IACnCF,GAAoB,mBAAmB,IAAIttF,CAAa;AAAA,IAC9D;AAAA,EACA;AACA,WAASqtF,GACPK,GACAp0B,GACAwzB,GACAS,GACA;AACA,YAAQz9B,GAAiBwJ,CAAY,GAAC;AAAA,MACpC,KAAK;AACH,YAAIq0B,IAAkBC;AACtB;AAAA,MACF,KAAK;AACH,QAAAD,IAAkBE;AAClB;AAAA,MACF;AACE,QAAAF,IAAkBG;AAAA,IACxB;AACE,IAAAhB,IAAmBa,EAAgB;AAAA,MACjC;AAAA,MACAr0B;AAAA,MACAwzB;AAAA,MACAY;AAAA,OAEFC,IAAkB,QAClB,CAACr4B,MACmBgE,MAAjB,gBACiBA,MAAhB,eACYA,MAAZ,YACDq0B,IAAkB,KACrBJ,IACeI,MAAX,SACED,EAAgB,iBAAiBp0B,GAAcwzB,GAAkB;AAAA,MAC/D,SAAS;AAAA,MACT,SAASa;AAAA,KACV,IACDD,EAAgB,iBAAiBp0B,GAAcwzB,GAAkB,EAAE,IAC1Da,MAAX,SACED,EAAgB,iBAAiBp0B,GAAcwzB,GAAkB;AAAA,MAC/D,SAASa;AAAA,KACV,IACDD,EAAgB,iBAAiBp0B,GAAcwzB,GAAkB,EAAE;AAAA,EAC3E;AACA,WAASiB,GACPz0B,GACAwzB,GACAzwF,GACA2xF,GACAN,GACA;AACA,QAAIO,IAAeD;AACnB,SACSlB,IAAmB,OAA1B,MACOA,IAAmB,OAA1B,KACSkB,MAAT;AAEA,MAAAtyJ,EAAG,YAAS;AACV,YAAasyJ,MAAT,KAA8B;AAClC,YAAIE,IAAUF,EAAoB;AAClC,YAAUE,MAAN,KAAuBA,MAAN,GAAe;AAClC,cAAIvyF,IAAYqyF,EAAoB,UAAU;AAC9C,cAAIryF,MAAc+xF,EAAiB;AACnC,cAAUQ,MAAN;AACF,iBAAKA,IAAUF,EAAoB,QAAiBE,MAAT,QAAoB;AAC7D,kBAAIC,IAAWD,EAAQ;AACvB,mBACSC,MAAN,KAAwBA,MAAN,MACnBD,EAAQ,UAAU,kBAAkBR;AAEpC;AACF,cAAAQ,IAAUA,EAAQ;AAAA,YAC9B;AACQ,iBAAgBvyF,MAAT,QAAsB;AAE3B,gBADAuyF,IAAUv9B,GAA2Bh1D,CAAS,GACjCuyF,MAAT,KAAkB;AAEtB,gBADAC,IAAWD,EAAQ,KAEXC,MAAN,KACMA,MAAN,KACOA,MAAP,MACOA,MAAP,IACA;AACA,cAAAH,IAAsBC,IAAeC;AACrC,uBAASxyJ;AAAA,YACrB;AACU,YAAAigE,IAAYA,EAAU;AAAA,UAChC;AAAA,QACA;AACM,QAAAqyF,IAAsBA,EAAoB;AAAA,MAChD;AACE,IAAA/4B,GAAiB,WAAY;AAC3B,UAAIrE,KAAaq9B,GACfz3B,KAAoB9B,GAAer4D,CAAW,GAC9C09D,KAAgB,CAAA;AAClB,MAAAr+H,GAAG;AACD,YAAI46H,KAAY6G,GAA2B,IAAI7D,CAAY;AAC3D,YAAehD,OAAX,QAAsB;AACxB,cAAI83B,KAAqB13B,IACvBH,KAAiB+C;AACnB,kBAAQA,GAAY;AAAA,YAClB,KAAK;AACH,kBAAUvD,GAAiB15D,CAAW,MAAlC,EAAqC,OAAM3gE;AAAA,YACjD,KAAK;AAAA,YACL,KAAK;AACH,cAAA0yJ,KAAqBj2B;AACrB;AAAA,YACF,KAAK;AACH,cAAA5B,KAAiB,SACjB63B,KAAqB92B;AACrB;AAAA,YACF,KAAK;AACH,cAAAf,KAAiB,QACjB63B,KAAqB92B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,cAAA82B,KAAqB92B;AACrB;AAAA,YACF,KAAK;AACH,kBAAUj7D,EAAY,WAAlB,EAA0B,OAAM3gE;AAAA,YACtC,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAA0yJ,KAAqBl3B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAAk3B,KAAqBh3B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAAg3B,KAAqB71B;AACrB;AAAA,YACF,KAAKqE;AAAA,YACL,KAAKC;AAAA,YACL,KAAKC;AACH,cAAAsxB,KAAqB52B;AACrB;AAAA,YACF,KAAK0F;AACH,cAAAkxB,KAAqB31B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,cAAA21B,KAAqBx3B;AACrB;AAAA,YACF,KAAK;AACH,cAAAw3B,KAAqBz1B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAAy1B,KAAqB12B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAA02B,KAAqB/1B;AACrB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,cAAA+1B,KAAqBv1B;AAAA,UACjC;AACQ,cAAIw1B,MAAwBvB,IAAmB,OAA1B,GACnBwB,KACE,CAACD,OACa/0B,MAAb,YAA6CA,MAAhB,cAChCi1B,IAAiBF,KACJ/3B,OAAT,OACEA,KAAY,YACZ,OACFA;AACN,UAAA+3B,KAAiB,CAAA;AACjB,mBACM3yG,IAAWk1E,IAAY49B,IAClB9yG,MAAT,QAEA;AACA,gBAAI+yG,KAAY/yG;AAWhB,gBAVA8yG,KAAoBC,GAAU,WAC9BA,KAAYA,GAAU,KACfA,OAAN,KAA0BA,OAAP,MAA2BA,OAAP,MAC7BD,OAAT,QACSD,MAAT,SACEE,KAAYt5B,GAAYz5E,GAAU6yG,CAAc,GAC1CE,MAAR,QACEJ,GAAe;AAAA,cACbK,GAAuBhzG,GAAU+yG,IAAWD,EAAiB;AAAA,YAC7E,IACcF,GAAsB;AAC1B,YAAA5yG,IAAWA,EAAS;AAAA,UAC9B;AACQ,cAAI2yG,GAAe,WACf/3B,KAAY,IAAI83B;AAAA,YAChB93B;AAAA,YACAC;AAAA,YACA;AAAA,YACAl6D;AAAA,YACAm6D;AAAA,aAEFuD,GAAc,KAAK,EAAE,OAAOzD,IAAW,WAAW+3B,GAAc,CAAE;AAAA,QAC5E;AAAA,MACA;AACI,WAAWvB,IAAmB,OAA1B,GAA8B;AAChC,QAAApxJ,GAAG;AAKD,cAJA46H,KACkBgD,MAAhB,eAAkDA,MAAlB,eAClC80B,KACiB90B,MAAf,cAAgDA,MAAjB,cAE/BhD,MACAj6D,MAAgBo4D,OACf8B,KACCl6D,EAAY,iBAAiBA,EAAY,iBAC1Cs0D,GAA2B4F,EAAc,KACxCA,GAAenG,EAA4B;AAE7C,kBAAM10H;AACR,eAAI0yJ,MAAsB93B,QACxBA,KACEE,GAAkB,WAAWA,KACzBA,MACCF,KAAYE,GAAkB,iBAC7BF,GAAU,eAAeA,GAAU,eACnC,QACJ83B,MAEE73B,KACAl6D,EAAY,iBAAiBA,EAAY,WAC1C+xF,KAAqBx9B,IACrB2F,KAAiBA,KACd5F,GAA2B4F,EAAc,IACzC,MACKA,OAAT,SACI+3B,KACAvmC,EAAuBwO,EAAc,GACtC83B,KAAiB93B,GAAe,KACjCA,OAAmB+3B,MACVD,OAAN,KACQA,OAAP,MACMA,OAAN,OAEN93B,KAAiB,UACb63B,KAAqB,MAAQ73B,KAAiB3F,KAClDw9B,OAAuB73B,KAAgB;AAwCzC,gBAvCA83B,KAAiBn3B,IACjBu3B,KAAY,gBACZF,IAAiB,gBACjB7yG,IAAW,UACU49E,MAAjB,gBAAmDA,MAAlB,mBAClC+0B,KAAiBh2B,IACfo2B,KAAY,kBACZF,IAAiB,kBACjB7yG,IAAW,YAChB4yG,KACUF,MAAR,OACI93B,KACAvF,GAAoBq9B,EAAkB,GAC5CI,KACUj4B,MAAR,OACID,KACAvF,GAAoBwF,EAAc,GACxCD,KAAY,IAAI+3B;AAAA,cACdI;AAAA,cACA/yG,IAAW;AAAA,cACX0yG;AAAA,cACA/xF;AAAA,cACAm6D;AAAA,eAEFF,GAAU,SAASg4B,IACnBh4B,GAAU,gBAAgBk4B,IAC1BC,KAAY,MACZ99B,GAA2B6F,EAAiB,MAAM5F,OAC9Cy9B,KAAiB,IAAIA;AAAA,cACrBE;AAAA,cACA7yG,IAAW;AAAA,cACX66E;AAAA,cACAl6D;AAAA,cACAm6D;AAAA,eAED63B,GAAe,SAASG,IACxBH,GAAe,gBAAgBC,IAC/BG,KAAYJ,KACfC,KAAuBG,IACnBL,MAAsB73B;AACxB,cAAA1iH,GAAG;AAKD,qBAJAw6I,KAAiBM,IACjBJ,IAAiBH,IACjB1yG,IAAW66E,IACXi4B,KAAoB,GAElBC,KAAYF,GACZE,IACAA,KAAYJ,GAAeI,EAAS;AAEpC,kBAAAD;AACF,gBAAAC,KAAY;AACZ,yBAASG,KAAQlzG,GAAUkzG,IAAOA,KAAQP,GAAeO,EAAK;AAC5D,kBAAAH;AACF,uBAAO,IAAID,KAAoBC;AAC7B,kBAACF,IAAiBF,GAAeE,CAAc,GAC7CC;AACJ,uBAAO,IAAIC,KAAYD;AACrB,kBAAC9yG,IAAW2yG,GAAe3yG,CAAQ,GAAI+yG;AACzC,uBAAOD,QAAuB;AAC5B,sBACED,MAAmB7yG,KACTA,MAAT,QAAqB6yG,MAAmB7yG,EAAS,WAClD;AACA,oBAAA2yG,KAAiBE;AACjB,0BAAM16I;AAAA,kBAC1B;AACkB,kBAAA06I,IAAiBF,GAAeE,CAAc,GAC9C7yG,IAAW2yG,GAAe3yG,CAAQ;AAAA,gBACpD;AACgB,gBAAA2yG,KAAiB;AAAA,cACjC;AAAA,gBACiB,CAAAA,KAAiB;AACtB,YAASD,OAAT,QACES;AAAA,cACE90B;AAAA,cACAzD;AAAA,cACA83B;AAAA,cACAC;AAAA,cACA;AAAA,eAEK93B,OAAT,QACW+3B,OAAT,QACAO;AAAA,cACE90B;AAAA,cACAu0B;AAAA,cACA/3B;AAAA,cACA83B;AAAA,cACA;AAAA;UAEhB;AAAA,QAEA;AACM,QAAA3yJ,GAAG;AAID,cAHA46H,KAAY1F,KAAaG,GAAoBH,EAAU,IAAI,QAC3Dw9B,KACE93B,GAAU,YAAYA,GAAU,SAAS,YAAW,GAEvC83B,OAAb,YACaA,OAAZ,WAA6C93B,GAAU,SAArB;AAEnC,gBAAIw4B,KAAoBx0B;AAAA,mBACjBV,GAAmBtD,EAAS;AACnC,gBAAIiE;AACF,cAAAu0B,KAAoB9zB;AAAA,iBACjB;AACH,cAAA8zB,KAAoBh0B;AACpB,kBAAIi0B,KAAkBl0B;AAAA,YAClC;AAAA;AAEU,YAACuzB,KAAqB93B,GAAU,UAC9B,CAAC83B,MACWA,GAAmB,YAAW,MAA1C,WACgB93B,GAAU,SAAzB,cAA6CA,GAAU,SAAtB,UAC9B1F,MACAyD,GAAgBzD,GAAW,WAAW,MACrCk+B,KAAoBx0B,MACpBw0B,KAAoB/zB;AAC7B,cACE+zB,OACCA,KAAoBA,GAAkBx1B,GAAc1I,EAAU,IAC/D;AACA,YAAAkJ;AAAA,cACEC;AAAA,cACA+0B;AAAA,cACAzyF;AAAA,cACAm6D;AAAA;AAEF,kBAAM96H;AAAA,UAChB;AACQ,UAAAqzJ,MAAmBA,GAAgBz1B,GAAchD,IAAW1F,EAAU,GACvD0I,MAAf,cACE1I,MACa0F,GAAU,SAAvB,YACQ1F,GAAW,cAAc,SAAjC,QACAuC,GAAgBmD,IAAW,UAAUA,GAAU,KAAK;AAAA,QAC9D;AAEM,gBADAy4B,KAAkBn+B,KAAaG,GAAoBH,EAAU,IAAI,QACzD0I,GAAY;AAAA,UAClB,KAAK;AACH,aACEM,GAAmBm1B,EAAe,KACvBA,GAAgB,oBAA3B,YAECj1F,KAAgBi1F,IACd/yB,KAAoBpL,IACpBqL,KAAgB;AACrB;AAAA,UACF,KAAK;AACH,YAAAA,KAAgBD,KAAoBliE,KAAgB;AACpD;AAAA,UACF,KAAK;AACH,YAAAoiE,KAAY;AACZ;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,YAAAA,KAAY,IACZC,GAAqBpC,IAAe19D,GAAam6D,EAAiB;AAClE;AAAA,UACF,KAAK;AACH,gBAAIuF,GAA0B;AAAA,UAChC,KAAK;AAAA,UACL,KAAK;AACH,YAAAI,GAAqBpC,IAAe19D,GAAam6D,EAAiB;AAAA,QAC5E;AACM,YAAIw4B;AACJ,YAAIj2B;AACF,UAAAllH,GAAG;AACD,oBAAQylH,GAAY;AAAA,cAClB,KAAK;AACH,oBAAI21B,KAAY;AAChB,sBAAMp7I;AAAA,cACR,KAAK;AACH,gBAAAo7I,KAAY;AACZ,sBAAMp7I;AAAA,cACR,KAAK;AACH,gBAAAo7I,KAAY;AACZ,sBAAMp7I;AAAA,YACpB;AACU,YAAAo7I,KAAY;AAAA,UACtB;AAAA;AAEQ,UAAAz1B,KACIH,GAAyBC,GAAcj9D,CAAW,MACjD4yF,KAAY,sBACC31B,MAAd,aACQj9D,EAAY,YAApB,QACC4yF,KAAY;AACnB,QAAAA,OACG/1B,MACU78D,EAAY,WAArB,SACCm9D,MAAwCy1B,OAAzB,uBACWA,OAAvB,sBACAz1B,OACCw1B,KAAev5B,GAAO,MACrBplC,KAAOmmC,IACRjB,KAAY,WAAWllC,KAAOA,GAAK,QAAQA,GAAK,aAChDmpC,KAAc,MACpBu1B,KAAkB/0B,GAA4BpJ,IAAYq+B,EAAS,GACpE,IAAIF,GAAgB,WAChBE,KAAY,IAAIr3B;AAAA,UAChBq3B;AAAA,UACA31B;AAAA,UACA;AAAA,UACAj9D;AAAA,UACAm6D;AAAA,WAEFuD,GAAc,KAAK,EAAE,OAAOk1B,IAAW,WAAWF,IAAiB,GACnEC,KACKC,GAAU,OAAOD,MAChBA,KAAez1B,GAAuBl9D,CAAW,GAC1C2yF,OAAT,SAA0BC,GAAU,OAAOD,SAEhDA,KAAe/1B,KACZQ,GAA0BH,GAAcj9D,CAAW,IACnDq9D,GAA4BJ,GAAcj9D,CAAW,OAExD4yF,KAAYj1B,GAA4BpJ,IAAY,eAAe,GAClE,IAAIq+B,GAAU,WACVF,KAAkB,IAAIn3B;AAAA,UACtB;AAAA,UACA;AAAA,UACA;AAAA,UACAv7D;AAAA,UACAm6D;AAAA,WAEFuD,GAAc,KAAK;AAAA,UACjB,OAAOg1B;AAAA,UACP,WAAWE;AAAA,QACzB,CAAa,GACAF,GAAgB,OAAOC,MAC9BzC;AAAA,UACExyB;AAAA,UACAT;AAAA,UACA1I;AAAA,UACAv0D;AAAA,UACAm6D;AAAA;MAER;AACI,MAAA4D,GAAqBL,IAAe+yB,CAAgB;AAAA,IACxD,CAAG;AAAA,EACH;AACA,WAAS4B,GAAuBhzG,GAAUnzC,GAAUu4D,GAAe;AACjE,WAAO;AAAA,MACL,UAAUplB;AAAA,MACV,UAAUnzC;AAAA,MACV,eAAeu4D;AAAA;EAEnB;AACA,WAASk5D,GAA4Bk1B,GAAa54B,GAAW;AAC3D,aACM64B,IAAc74B,IAAY,WAAW9tH,IAAY,CAAA,GAC5C0mJ,MAAT,QAEA;AACA,UAAIE,IAAaF,GACf95B,IAAYg6B,EAAW;AAczB,UAbAA,IAAaA,EAAW,KACjBA,MAAN,KAA2BA,MAAP,MAA4BA,MAAP,MAC/Bh6B,MAAT,SACEg6B,IAAaj6B,GAAY+5B,GAAaC,CAAW,GAC3CC,KAAR,QACE5mJ,EAAU;AAAA,QACRkmJ,GAAuBQ,GAAaE,GAAYh6B,CAAS;AAAA,SAE5Dg6B,IAAaj6B,GAAY+5B,GAAa54B,CAAS,GACxC84B,KAAR,QACE5mJ,EAAU;AAAA,QACRkmJ,GAAuBQ,GAAaE,GAAYh6B,CAAS;AAAA,MACnE,IACc85B,EAAY,QAAlB,EAAuB,QAAO1mJ;AAClC,MAAA0mJ,IAAcA,EAAY;AAAA,IAC9B;AACE,WAAO,CAAA;AAAA,EACT;AACA,WAASP,GAAU9oF,GAAM;AACvB,QAAaA,MAAT,KAAe,QAAO;AAC1B;AAAG,MAAAA,IAAOA,EAAK;AAAA,WACRA,KAAcA,EAAK,QAAX,KAAyBA,EAAK,QAAZ;AACjC,WAAOA,KAAc;AAAA,EACvB;AACA,WAASgpF,GACP90B,GACA1sH,GACAjM,GACAiuJ,GACAhB,GACA;AACA,aACM/8B,IAAmBjkH,EAAM,YAAY7E,IAAY,CAAA,GAC5CpH,MAAT,QAAmBA,MAAWiuJ,KAE9B;AACA,UAAIC,IAAaluJ,GACfonH,IAAY8mC,EAAW,WACvBl6B,KAAYk6B,EAAW;AAEzB,UADAA,IAAaA,EAAW,KACX9mC,MAAT,QAAsBA,MAAc6mC,EAAQ;AAChD,MAAOC,MAAN,KAA2BA,MAAP,MAA4BA,MAAP,MAC/Bl6B,OAAT,SACE5M,IAAY4M,IACdi5B,KACMj5B,KAAYD,GAAY/zH,GAAQkwH,CAAgB,GAC1C8D,MAAR,QACE5sH,EAAU;AAAA,QACRkmJ,GAAuBttJ,GAAQg0H,IAAW5M,CAAS;AAAA,WAEvD6lC,MACEj5B,KAAYD,GAAY/zH,GAAQkwH,CAAgB,GAC1C8D,MAAR,QACE5sH,EAAU;AAAA,QACRkmJ,GAAuBttJ,GAAQg0H,IAAW5M,CAAS;AAAA,MACjE,KACIpnH,IAASA,EAAO;AAAA,IACpB;AACE,IAAMoH,EAAU,WAAhB,KACEuxH,EAAc,KAAK,EAAE,OAAO1sH,GAAO,WAAW7E,GAAW;AAAA,EAC7D;AACA,MAAI+mJ,KAA2B,UAC7BC,KAAuC;AACzC,WAASC,GAAkCC,GAAQ;AACjD,YAAqB,OAAOA,KAApB,WAA6BA,IAAS,KAAKA,GAChD,QAAQH,IAA0B;AAAA,CAAI,EACtC,QAAQC,IAAsC,EAAE;AAAA,EACrD;AACA,WAAStuB,GAAsByuB,GAAYC,GAAY;AACrD,WAAAA,IAAaH,GAAkCG,CAAU,GAClDH,GAAkCE,CAAU,MAAMC;AAAA,EAC3D;AACA,WAASC,GAAQ9+E,GAAYlmC,GAAKtwC,GAAK6H,GAAOqI,GAAOtC,GAAW;AAC9D,YAAQ5N,GAAG;AAAA,MACT,KAAK;AACH,QAAa,OAAO6H,KAApB,WACeyoC,MAAX,UACgBA,MAAf,cAA6BzoC,MAAP,MACvBuxH,GAAe5iD,GAAY3uE,CAAK,KAClB,OAAOA,KAApB,YAA0C,OAAOA,KAApB,aACnByoC,MAAX,UACA8oF,GAAe5iD,GAAY,KAAK3uE,CAAK;AACzC;AAAA,MACF,KAAK;AACH,QAAA4vH,GAA0BjhD,GAAY,SAAS3uE,CAAK;AACpD;AAAA,MACF,KAAK;AACH,QAAA4vH,GAA0BjhD,GAAY,YAAY3uE,CAAK;AACvD;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAA4vH,GAA0BjhD,GAAYx2E,GAAK6H,CAAK;AAChD;AAAA,MACF,KAAK;AACH,QAAA6xH,GAAkBljD,GAAY3uE,GAAO+F,CAAS;AAC9C;AAAA,MACF,KAAK;AACH,YAAiB0iC,MAAb,UAAkB;AACpB,UAAAmnF,GAA0BjhD,GAAY,QAAQ3uE,CAAK;AACnD;AAAA,QACR;AAAA,MACI,KAAK;AAAA,MACL,KAAK;AACH,YAAWA,MAAP,OAAyByoC,MAAR,OAA0BtwC,MAAX,SAAiB;AACnD,UAAAw2E,EAAW,gBAAgBx2E,CAAG;AAC9B;AAAA,QACR;AACM,YACU6H,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACc,OAAOA,KAArB,WACA;AACA,UAAA2uE,EAAW,gBAAgBx2E,CAAG;AAC9B;AAAA,QACR;AACM,QAAA6H,IAAQmyH,GAAY,KAAKnyH,CAAK,GAC9B2uE,EAAW,aAAax2E,GAAK6H,CAAK;AAClC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAmB,OAAOA,KAAtB,YAA6B;AAC/B,UAAA2uE,EAAW;AAAA,YACTx2E;AAAA,YACA;AAAA;AAEF;AAAA,QACR;AACQ,UAAe,OAAO4N,KAAtB,eACoB5N,MAAjB,gBACgBswC,MAAZ,WACCglH,GAAQ9+E,GAAYlmC,GAAK,QAAQpgC,EAAM,MAAMA,GAAO,IAAI,GAC1DolJ;AAAA,YACE9+E;AAAA,YACAlmC;AAAA,YACA;AAAA,YACApgC,EAAM;AAAA,YACNA;AAAA,YACA;AAAA,aAEFolJ;AAAA,YACE9+E;AAAA,YACAlmC;AAAA,YACA;AAAA,YACApgC,EAAM;AAAA,YACNA;AAAA,YACA;AAAA,aAEFolJ;AAAA,YACE9+E;AAAA,YACAlmC;AAAA,YACA;AAAA,YACApgC,EAAM;AAAA,YACNA;AAAA,YACA;AAAA,gBAEDolJ,GAAQ9+E,GAAYlmC,GAAK,WAAWpgC,EAAM,SAASA,GAAO,IAAI,GAC/DolJ,GAAQ9+E,GAAYlmC,GAAK,UAAUpgC,EAAM,QAAQA,GAAO,IAAI,GAC5DolJ,GAAQ9+E,GAAYlmC,GAAK,UAAUpgC,EAAM,QAAQA,GAAO,IAAI;AACpE,YACUrI,KAAR,QACa,OAAOA,KAApB,YACc,OAAOA,KAArB,WACA;AACA,UAAA2uE,EAAW,gBAAgBx2E,CAAG;AAC9B;AAAA,QACR;AACM,QAAA6H,IAAQmyH,GAAY,KAAKnyH,CAAK,GAC9B2uE,EAAW,aAAax2E,GAAK6H,CAAK;AAClC;AAAA,MACF,KAAK;AACH,QAAQA,KAAR,SAAkB2uE,EAAW,UAAUyjD;AACvC;AAAA,MACF,KAAK;AACH,QAAQpyH,KAAR,QAAiB4+H,GAA0B,UAAUjwD,CAAU;AAC/D;AAAA,MACF,KAAK;AACH,QAAQ3uE,KAAR,QAAiB4+H,GAA0B,aAAajwD,CAAU;AAClE;AAAA,MACF,KAAK;AACH,YAAY3uE,KAAR,MAAe;AACjB,cAAiB,OAAOA,KAApB,YAA6B,EAAE,YAAYA;AAC7C,kBAAM,MAAM+4D,EAAuB,EAAE,CAAC;AAExC,cADA5gE,IAAM6H,EAAM,QACA7H,KAAR,MAAa;AACf,gBAAYkQ,EAAM,YAAd,KAAwB,OAAM,MAAM0wD,EAAuB,EAAE,CAAC;AAClE,YAAA4V,EAAW,YAAYx2E;AAAA,UACjC;AAAA,QACA;AACM;AAAA,MACF,KAAK;AACH,QAAAw2E,EAAW,WACT3uE,KAAwB,OAAOA,KAAtB,cAA4C,OAAOA,KAApB;AAC1C;AAAA,MACF,KAAK;AACH,QAAA2uE,EAAW,QACT3uE,KAAwB,OAAOA,KAAtB,cAA4C,OAAOA,KAApB;AAC1C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF,KAAK;AACH;AAAA,MACF,KAAK;AACH,YACUA,KAAR,QACe,OAAOA,KAAtB,cACc,OAAOA,KAArB,aACa,OAAOA,KAApB,UACA;AACA,UAAA2uE,EAAW,gBAAgB,YAAY;AACvC;AAAA,QACR;AACM,QAAAx2E,IAAMg6H,GAAY,KAAKnyH,CAAK,GAC5B2uE,EAAW;AAAA,UACT;AAAA,UACA;AAAA,UACAx2E;AAAA;AAEF;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAQ6H,KAAR,QAAgC,OAAOA,KAAtB,cAA4C,OAAOA,KAApB,WAC5C2uE,EAAW,aAAax2E,GAAK,KAAK6H,CAAK,IACvC2uE,EAAW,gBAAgBx2E,CAAG;AAClC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAA6H,KAAwB,OAAOA,KAAtB,cAA4C,OAAOA,KAApB,WACpC2uE,EAAW,aAAax2E,GAAK,EAAE,IAC/Bw2E,EAAW,gBAAgBx2E,CAAG;AAClC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAO6H,MAAP,KACI2uE,EAAW,aAAax2E,GAAK,EAAE,IACxB6H,MAAP,MACUA,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,WACA2uE,EAAW,aAAax2E,GAAK6H,CAAK,IAClC2uE,EAAW,gBAAgBx2E,CAAG;AACpC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAQ6H,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACA,CAAC,MAAMA,CAAK,KACZ,KAAKA,IACD2uE,EAAW,aAAax2E,GAAK6H,CAAK,IAClC2uE,EAAW,gBAAgBx2E,CAAG;AAClC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAQ6H,KAAR,QACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACA,MAAMA,CAAK,IACP2uE,EAAW,gBAAgBx2E,CAAG,IAC9Bw2E,EAAW,aAAax2E,GAAK6H,CAAK;AACtC;AAAA,MACF,KAAK;AACH,QAAA4+H,GAA0B,gBAAgBjwD,CAAU,GACpDiwD,GAA0B,UAAUjwD,CAAU,GAC9C+gD,GAAqB/gD,GAAY,WAAW3uE,CAAK;AACjD;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA6vH;AAAA,UACElhD;AAAA,UACA;AAAA,UACA;AAAA,UACA3uE;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAA0vH,GAAqB/gD,GAAY,MAAM3uE,CAAK;AAC5C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF;AACE,SACE,EAAE,IAAI7H,EAAI,WACDA,EAAI,CAAC,MAAb,OAA0BA,EAAI,CAAC,MAAb,OACVA,EAAI,CAAC,MAAb,OAA0BA,EAAI,CAAC,MAAb,SAElBA,IAAMukG,GAAQ,IAAIvkG,CAAG,KAAKA,GACzBu3H,GAAqB/gD,GAAYx2E,GAAK6H,CAAK;AAAA,IACrD;AAAA,EACA;AACA,WAAS0tJ,GAAuB/+E,GAAYlmC,GAAKtwC,GAAK6H,GAAOqI,GAAOtC,GAAW;AAC7E,YAAQ5N,GAAG;AAAA,MACT,KAAK;AACH,QAAA05H,GAAkBljD,GAAY3uE,GAAO+F,CAAS;AAC9C;AAAA,MACF,KAAK;AACH,YAAY/F,KAAR,MAAe;AACjB,cAAiB,OAAOA,KAApB,YAA6B,EAAE,YAAYA;AAC7C,kBAAM,MAAM+4D,EAAuB,EAAE,CAAC;AAExC,cADA5gE,IAAM6H,EAAM,QACA7H,KAAR,MAAa;AACf,gBAAYkQ,EAAM,YAAd,KAAwB,OAAM,MAAM0wD,EAAuB,EAAE,CAAC;AAClE,YAAA4V,EAAW,YAAYx2E;AAAA,UACjC;AAAA,QACA;AACM;AAAA,MACF,KAAK;AACH,QAAa,OAAO6H,KAApB,WACIuxH,GAAe5iD,GAAY3uE,CAAK,KAClB,OAAOA,KAApB,YAA0C,OAAOA,KAApB,aAC9BuxH,GAAe5iD,GAAY,KAAK3uE,CAAK;AACzC;AAAA,MACF,KAAK;AACH,QAAQA,KAAR,QAAiB4+H,GAA0B,UAAUjwD,CAAU;AAC/D;AAAA,MACF,KAAK;AACH,QAAQ3uE,KAAR,QAAiB4+H,GAA0B,aAAajwD,CAAU;AAClE;AAAA,MACF,KAAK;AACH,QAAQ3uE,KAAR,SAAkB2uE,EAAW,UAAUyjD;AACvC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF;AACE,YAAI,CAACpD,GAA6B,eAAe72H,CAAG;AAClD,UAAAmB,GAAG;AACD,gBACUnB,EAAI,CAAC,MAAb,OACQA,EAAI,CAAC,MAAb,QACEkQ,IAAQlQ,EAAI,SAAS,SAAS,GAC/BswC,IAAMtwC,EAAI,MAAM,GAAGkQ,IAAQlQ,EAAI,SAAS,IAAI,MAAM,GAClD4N,IAAY4oE,EAAWo/C,EAAgB,KAAK,MAC5ChoH,IAAoBA,KAAR,OAAoBA,EAAU5N,CAAG,IAAI,MACnC,OAAO4N,KAAtB,cACE4oE,EAAW,oBAAoBlmC,GAAK1iC,GAAWsC,CAAK,GACvC,OAAOrI,KAAtB,aACA;AACA,cAAe,OAAO+F,KAAtB,cACWA,MAAT,SACC5N,KAAOw2E,IACHA,EAAWx2E,CAAG,IAAI,OACnBw2E,EAAW,aAAax2E,CAAG,KAC3Bw2E,EAAW,gBAAgBx2E,CAAG,IACpCw2E,EAAW,iBAAiBlmC,GAAKzoC,GAAOqI,CAAK;AAC7C,oBAAM/O;AAAA,YAClB;AACU,YAAAnB,KAAOw2E,IACFA,EAAWx2E,CAAG,IAAI6H,IACZA,MAAP,KACE2uE,EAAW,aAAax2E,GAAK,EAAE,IAC/Bu3H,GAAqB/gD,GAAYx2E,GAAK6H,CAAK;AAAA,UAC3D;AAAA,IACA;AAAA,EACA;AACA,WAASw4I,GAAqB7pE,GAAYlmC,GAAKpgC,GAAO;AACpD,YAAQogC,GAAG;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF,KAAK;AACH,QAAAm2F,GAA0B,SAASjwD,CAAU,GAC7CiwD,GAA0B,QAAQjwD,CAAU;AAC5C,YAAIg/E,IAAS,IACXC,IAAY,IACZC;AACF,aAAKA,KAAWxlJ;AACd,cAAIA,EAAM,eAAewlJ,CAAO,GAAG;AACjC,gBAAIpvG,IAAYp2C,EAAMwlJ,CAAO;AAC7B,gBAAYpvG,KAAR;AACF,sBAAQovG,GAAO;AAAA,gBACb,KAAK;AACH,kBAAAF,IAAS;AACT;AAAA,gBACF,KAAK;AACH,kBAAAC,IAAY;AACZ;AAAA,gBACF,KAAK;AAAA,gBACL,KAAK;AACH,wBAAM,MAAM70F,EAAuB,KAAKtwB,CAAG,CAAC;AAAA,gBAC9C;AACE,kBAAAglH,GAAQ9+E,GAAYlmC,GAAKolH,GAASpvG,GAAWp2C,GAAO,IAAI;AAAA,cACxE;AAAA,UACA;AACM,QAAAulJ,KACEH,GAAQ9+E,GAAYlmC,GAAK,UAAUpgC,EAAM,QAAQA,GAAO,IAAI,GAC9DslJ,KAAUF,GAAQ9+E,GAAYlmC,GAAK,OAAOpgC,EAAM,KAAKA,GAAO,IAAI;AAChE;AAAA,MACF,KAAK;AACH,QAAAu2H,GAA0B,WAAWjwD,CAAU;AAC/C,YAAInjE,IAAgBqiJ,IAAUpvG,IAAYmvG,IAAY,MACpDviH,IAAU,MACVylF,KAAiB;AACnB,aAAK68B,KAAUtlJ;AACb,cAAIA,EAAM,eAAeslJ,CAAM,GAAG;AAChC,gBAAIG,KAAgBzlJ,EAAMslJ,CAAM;AAChC,gBAAYG,MAAR;AACF,sBAAQH,GAAM;AAAA,gBACZ,KAAK;AACH,kBAAAC,IAAYE;AACZ;AAAA,gBACF,KAAK;AACH,kBAAArvG,IAAYqvG;AACZ;AAAA,gBACF,KAAK;AACH,kBAAAziH,IAAUyiH;AACV;AAAA,gBACF,KAAK;AACH,kBAAAh9B,KAAiBg9B;AACjB;AAAA,gBACF,KAAK;AACH,kBAAAD,IAAUC;AACV;AAAA,gBACF,KAAK;AACH,kBAAAtiJ,IAAesiJ;AACf;AAAA,gBACF,KAAK;AAAA,gBACL,KAAK;AACH,sBAAYA,MAAR;AACF,0BAAM,MAAM/0F,EAAuB,KAAKtwB,CAAG,CAAC;AAC9C;AAAA,gBACF;AACE,kBAAAglH,GAAQ9+E,GAAYlmC,GAAKklH,GAAQG,IAAezlJ,GAAO,IAAI;AAAA,cAC3E;AAAA,UACA;AACM,QAAA2oH;AAAA,UACEriD;AAAA,UACAk/E;AAAA,UACAriJ;AAAA,UACA6/B;AAAA,UACAylF;AAAA,UACAryE;AAAA,UACAmvG;AAAA,UACA;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAhvB,GAA0B,WAAWjwD,CAAU,GAC/Cg/E,IAASlvG,IAAYovG,IAAU;AAC/B,aAAKD,KAAavlJ;AAChB,cACEA,EAAM,eAAeulJ,CAAS,MAC5BpiJ,IAAenD,EAAMulJ,CAAS,GAAYpiJ,KAAR;AAEpC,oBAAQoiJ,GAAS;AAAA,cACf,KAAK;AACH,gBAAAC,IAAUriJ;AACV;AAAA,cACF,KAAK;AACH,gBAAAizC,IAAYjzC;AACZ;AAAA,cACF,KAAK;AACH,gBAAAmiJ,IAASniJ;AAAA,cACX;AACE,gBAAAiiJ,GAAQ9+E,GAAYlmC,GAAKmlH,GAAWpiJ,GAAcnD,GAAO,IAAI;AAAA,YAC3E;AACM,QAAAogC,IAAMolH,GACNxlJ,IAAQo2C,GACRkwB,EAAW,WAAW,CAAC,CAACg/E,GAChBllH,KAAR,OACIyoF,GAAcviD,GAAY,CAAC,CAACg/E,GAAQllH,GAAK,EAAE,IACnCpgC,KAAR,QAAiB6oH,GAAcviD,GAAY,CAAC,CAACg/E,GAAQtlJ,GAAO,EAAE;AAClE;AAAA,MACF,KAAK;AACH,QAAAu2H,GAA0B,WAAWjwD,CAAU,GAC/Ck/E,IAAUD,IAAYD,IAAS;AAC/B,aAAKlvG,KAAap2C;AAChB,cACEA,EAAM,eAAeo2C,CAAS,MAC5BjzC,IAAenD,EAAMo2C,CAAS,GAAYjzC,KAAR;AAEpC,oBAAQizC,GAAS;AAAA,cACf,KAAK;AACH,gBAAAkvG,IAASniJ;AACT;AAAA,cACF,KAAK;AACH,gBAAAoiJ,IAAYpiJ;AACZ;AAAA,cACF,KAAK;AACH,gBAAAqiJ,IAAUriJ;AACV;AAAA,cACF,KAAK;AACH,oBAAYA,KAAR,KAAsB,OAAM,MAAMutD,EAAuB,EAAE,CAAC;AAChE;AAAA,cACF;AACE,gBAAA00F,GAAQ9+E,GAAYlmC,GAAKgW,GAAWjzC,GAAcnD,GAAO,IAAI;AAAA,YAC3E;AACM,QAAAipH,GAAa3iD,GAAYg/E,GAAQC,GAAWC,CAAO;AACnD;AAAA,MACF,KAAK;AACH,aAAKxiH,KAAWhjC;AACd,cACEA,EAAM,eAAegjC,CAAO,MAC1BsiH,IAAStlJ,EAAMgjC,CAAO,GAAYsiH,KAAR;AAE5B,oBAAQtiH,GAAO;AAAA,cACb,KAAK;AACH,gBAAAsjC,EAAW,WACTg/E,KACe,OAAOA,KAAtB,cACa,OAAOA,KAApB;AACF;AAAA,cACF;AACE,gBAAAF,GAAQ9+E,GAAYlmC,GAAK4C,GAASsiH,GAAQtlJ,GAAO,IAAI;AAAA,YACnE;AACM;AAAA,MACF,KAAK;AACH,QAAAu2H,GAA0B,gBAAgBjwD,CAAU,GACpDiwD,GAA0B,UAAUjwD,CAAU,GAC9CiwD,GAA0B,UAAUjwD,CAAU,GAC9CiwD,GAA0B,SAASjwD,CAAU;AAC7C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAiwD,GAA0B,QAAQjwD,CAAU;AAC5C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,aAAKg/E,IAAS,GAAGA,IAAS9uB,GAAgB,QAAQ8uB;AAChD,UAAA/uB,GAA0BC,GAAgB8uB,CAAM,GAAGh/E,CAAU;AAC/D;AAAA,MACF,KAAK;AACH,QAAAiwD,GAA0B,SAASjwD,CAAU,GAC7CiwD,GAA0B,QAAQjwD,CAAU;AAC5C;AAAA,MACF,KAAK;AACH,QAAAiwD,GAA0B,UAAUjwD,CAAU;AAC9C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAiwD,GAA0B,SAASjwD,CAAU,GAC3CiwD,GAA0B,QAAQjwD,CAAU;AAAA,MAChD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,aAAKmiD,MAAkBzoH;AACrB,cACEA,EAAM,eAAeyoH,EAAc,MACjC68B,IAAStlJ,EAAMyoH,EAAc,GAAY68B,KAAR;AAEnC,oBAAQ78B,IAAc;AAAA,cACpB,KAAK;AAAA,cACL,KAAK;AACH,sBAAM,MAAM/3D,EAAuB,KAAKtwB,CAAG,CAAC;AAAA,cAC9C;AACE,gBAAAglH,GAAQ9+E,GAAYlmC,GAAKqoF,IAAgB68B,GAAQtlJ,GAAO,IAAI;AAAA,YAC1E;AACM;AAAA,MACF;AACE,YAAI4pH,GAAgBxpF,CAAG,GAAG;AACxB,eAAKqlH,MAAiBzlJ;AACpB,YAAAA,EAAM,eAAeylJ,EAAa,MAC9BH,IAAStlJ,EAAMylJ,EAAa,GACnBH,MAAX,UACED;AAAA,cACE/+E;AAAA,cACAlmC;AAAA,cACAqlH;AAAA,cACAH;AAAA,cACAtlJ;AAAA,cACA;AAAA,YAChB;AACQ;AAAA,QACR;AAAA,IACA;AACE,SAAKmD,KAAgBnD;AACnB,MAAAA,EAAM,eAAemD,CAAY,MAC7BmiJ,IAAStlJ,EAAMmD,CAAY,GACrBmiJ,KAAR,QACEF,GAAQ9+E,GAAYlmC,GAAKj9B,GAAcmiJ,GAAQtlJ,GAAO,IAAI;AAAA,EAClE;AACA,WAASmzI,GAAiB7sE,GAAYlmC,GAAKslH,GAAWrb,GAAW;AAC/D,YAAQjqG,GAAG;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF,KAAK;AACH,YAAIlQ,IAAO,MACTvgC,IAAO,MACPgI,IAAQ,MACRwL,IAAe,MACfqlH,IAAmB,MACnBxlF,KAAU,MACVylF,KAAiB;AACnB,aAAK+8B,MAAWE,GAAW;AACzB,cAAIC,KAAWD,EAAUF,EAAO;AAChC,cAAIE,EAAU,eAAeF,EAAO,KAAaG,MAAR;AACvC,oBAAQH,IAAO;AAAA,cACb,KAAK;AACH;AAAA,cACF,KAAK;AACH;AAAA,cACF,KAAK;AACH,gBAAAh9B,IAAmBm9B;AAAA,cACrB;AACE,gBAAAtb,EAAU,eAAemb,EAAO,KAC9BJ,GAAQ9+E,GAAYlmC,GAAKolH,IAAS,MAAMnb,GAAWsb,EAAQ;AAAA,YAC3E;AAAA,QACA;AACM,iBAASC,MAAevb,GAAW;AACjC,cAAImb,KAAUnb,EAAUub,EAAW;AAEnC,cADAD,KAAWD,EAAUE,EAAW,GAE9Bvb,EAAU,eAAeub,EAAW,MAC3BJ,MAAR,QAA2BG,MAAR;AAEpB,oBAAQC,IAAW;AAAA,cACjB,KAAK;AACH,gBAAAj2J,IAAO61J;AACP;AAAA,cACF,KAAK;AACH,gBAAAt1H,IAAOs1H;AACP;AAAA,cACF,KAAK;AACH,gBAAAxiH,KAAUwiH;AACV;AAAA,cACF,KAAK;AACH,gBAAA/8B,KAAiB+8B;AACjB;AAAA,cACF,KAAK;AACH,gBAAA7tJ,IAAQ6tJ;AACR;AAAA,cACF,KAAK;AACH,gBAAAriJ,IAAeqiJ;AACf;AAAA,cACF,KAAK;AAAA,cACL,KAAK;AACH,oBAAYA,MAAR;AACF,wBAAM,MAAM90F,EAAuB,KAAKtwB,CAAG,CAAC;AAC9C;AAAA,cACF;AACE,gBAAAolH,OAAYG,MACVP;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACAwlH;AAAA,kBACAJ;AAAA,kBACAnb;AAAA,kBACAsb;AAAA;YAElB;AAAA,QACA;AACM,QAAAp9B;AAAA,UACEjiD;AAAA,UACA3uE;AAAA,UACAwL;AAAA,UACAqlH;AAAA,UACAxlF;AAAA,UACAylF;AAAA,UACA94H;AAAA,UACAugC;AAAA;AAEF;AAAA,MACF,KAAK;AACH,QAAAs1H,KAAU7tJ,IAAQwL,IAAeyiJ,KAAc;AAC/C,aAAKj2J,KAAQ+1J;AACX,cACIl9B,IAAmBk9B,EAAU/1J,CAAI,GACnC+1J,EAAU,eAAe/1J,CAAI,KAAa64H,KAAR;AAElC,oBAAQ74H,GAAI;AAAA,cACV,KAAK;AACH;AAAA,cACF,KAAK;AACH,gBAAA61J,KAAUh9B;AAAA,cACZ;AACE,gBAAA6hB,EAAU,eAAe16I,CAAI,KAC3By1J;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACAzwC;AAAA,kBACA;AAAA,kBACA06I;AAAA,kBACA7hB;AAAA;YAElB;AACM,aAAKt4F,KAAQm6G;AACX,cACI16I,IAAO06I,EAAUn6G,CAAI,GACtBs4F,IAAmBk9B,EAAUx1H,CAAI,GAClCm6G,EAAU,eAAen6G,CAAI,MAClBvgC,KAAR,QAAwB64H,KAAR;AAEnB,oBAAQt4F,GAAI;AAAA,cACV,KAAK;AACH,gBAAA01H,KAAcj2J;AACd;AAAA,cACF,KAAK;AACH,gBAAAwT,IAAexT;AACf;AAAA,cACF,KAAK;AACH,gBAAAgI,IAAQhI;AAAA,cACV;AACE,gBAAAA,MAAS64H,KACP48B;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACAlQ;AAAA,kBACAvgC;AAAA,kBACA06I;AAAA,kBACA7hB;AAAA;YAElB;AACM,QAAApoF,IAAMj9B,GACNuiJ,IAAY/tJ,GACZ0yI,IAAYmb,IACJI,MAAR,OACI/8B,GAAcviD,GAAY,CAAC,CAACo/E,GAAWE,IAAa,EAAE,IACtD,CAAC,CAACvb,KAAc,CAAC,CAACqb,MACTtlH,KAAR,OACGyoF,GAAcviD,GAAY,CAAC,CAACo/E,GAAWtlH,GAAK,EAAE,IAC9CyoF,GAAcviD,GAAY,CAAC,CAACo/E,GAAWA,IAAY,KAAK,IAAI,EAAE;AACtE;AAAA,MACF,KAAK;AACH,QAAAF,KAAUI,KAAc;AACxB,aAAKziJ,KAAgBuiJ;AACnB,cACIx1H,IAAOw1H,EAAUviJ,CAAY,GAC/BuiJ,EAAU,eAAeviJ,CAAY,KAC3B+sB,KAAR,QACA,CAACm6G,EAAU,eAAelnI,CAAY;AAExC,oBAAQA,GAAY;AAAA,cAClB,KAAK;AACH;AAAA,cACF,KAAK;AACH;AAAA,cACF;AACE,gBAAAiiJ,GAAQ9+E,GAAYlmC,GAAKj9B,GAAc,MAAMknI,GAAWn6G,CAAI;AAAA,YAC1E;AACM,aAAKv4B,KAAS0yI;AACZ,cACIn6G,IAAOm6G,EAAU1yI,CAAK,GACvBhI,IAAO+1J,EAAU/tJ,CAAK,GACvB0yI,EAAU,eAAe1yI,CAAK,MAAcu4B,KAAR,QAAwBvgC,KAAR;AAEpD,oBAAQgI,GAAK;AAAA,cACX,KAAK;AACH,gBAAAiuJ,KAAc11H;AACd;AAAA,cACF,KAAK;AACH,gBAAAs1H,KAAUt1H;AACV;AAAA,cACF,KAAK;AACH;AAAA,cACF,KAAK;AACH,oBAAYA,KAAR,KAAc,OAAM,MAAMwgC,EAAuB,EAAE,CAAC;AACxD;AAAA,cACF;AACE,gBAAAxgC,MAASvgC,KACPy1J,GAAQ9+E,GAAYlmC,GAAKzoC,GAAOu4B,GAAMm6G,GAAW16I,CAAI;AAAA,YACrE;AACM,QAAAq5H,GAAe1iD,GAAYs/E,IAAaJ,EAAO;AAC/C;AAAA,MACF,KAAK;AACH,iBAASK,MAAeH;AACtB,cACIE,KAAcF,EAAUG,EAAW,GACrCH,EAAU,eAAeG,EAAW,KAC1BD,MAAR,QACA,CAACvb,EAAU,eAAewb,EAAW;AAEvC,oBAAQA,IAAW;AAAA,cACjB,KAAK;AACH,gBAAAv/E,EAAW,WAAW;AACtB;AAAA,cACF;AACE,gBAAA8+E;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACAylH;AAAA,kBACA;AAAA,kBACAxb;AAAA,kBACAub;AAAA;YAEhB;AACM,aAAKp9B,KAAoB6hB;AACvB,cACIub,KAAcvb,EAAU7hB,CAAgB,GACzCg9B,KAAUE,EAAUl9B,CAAgB,GACrC6hB,EAAU,eAAe7hB,CAAgB,KACvCo9B,OAAgBJ,OACPI,MAAR,QAA+BJ,MAAR;AAE1B,oBAAQh9B,GAAgB;AAAA,cACtB,KAAK;AACH,gBAAAliD,EAAW,WACTs/E,MACe,OAAOA,MAAtB,cACa,OAAOA,MAApB;AACF;AAAA,cACF;AACE,gBAAAR;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACAooF;AAAA,kBACAo9B;AAAA,kBACAvb;AAAA,kBACAmb;AAAA;YAEhB;AACM;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,iBAASM,MAAeJ;AACtB,UAACE,KAAcF,EAAUI,EAAW,GAClCJ,EAAU,eAAeI,EAAW,KAC1BF,MAAR,QACA,CAACvb,EAAU,eAAeyb,EAAW,KACrCV,GAAQ9+E,GAAYlmC,GAAK0lH,IAAa,MAAMzb,GAAWub,EAAW;AACxE,aAAK5iH,MAAWqnG;AACd,cACIub,KAAcvb,EAAUrnG,EAAO,GAChCwiH,KAAUE,EAAU1iH,EAAO,GAC5BqnG,EAAU,eAAernG,EAAO,KAC9B4iH,OAAgBJ,OACPI,MAAR,QAA+BJ,MAAR;AAE1B,oBAAQxiH,IAAO;AAAA,cACb,KAAK;AAAA,cACL,KAAK;AACH,oBAAY4iH,MAAR;AACF,wBAAM,MAAMl1F,EAAuB,KAAKtwB,CAAG,CAAC;AAC9C;AAAA,cACF;AACE,gBAAAglH;AAAA,kBACE9+E;AAAA,kBACAlmC;AAAA,kBACA4C;AAAA,kBACA4iH;AAAA,kBACAvb;AAAA,kBACAmb;AAAA;YAEhB;AACM;AAAA,MACF;AACE,YAAI57B,GAAgBxpF,CAAG,GAAG;AACxB,mBAAS2lH,MAAeL;AACtB,YAACE,KAAcF,EAAUK,EAAW,GAClCL,EAAU,eAAeK,EAAW,KACvBH,OAAX,UACA,CAACvb,EAAU,eAAe0b,EAAW,KACrCV;AAAA,cACE/+E;AAAA,cACAlmC;AAAA,cACA2lH;AAAA,cACA;AAAA,cACA1b;AAAA,cACAub;AAAA;AAER,eAAKn9B,MAAkB4hB;AACrB,YAACub,KAAcvb,EAAU5hB,EAAc,GACpC+8B,KAAUE,EAAUj9B,EAAc,GACnC,CAAC4hB,EAAU,eAAe5hB,EAAc,KACtCm9B,OAAgBJ,MACJI,OAAX,UAAqCJ,OAAX,UAC3BH;AAAA,cACE/+E;AAAA,cACAlmC;AAAA,cACAqoF;AAAA,cACAm9B;AAAA,cACAvb;AAAA,cACAmb;AAAA;AAER;AAAA,QACR;AAAA,IACA;AACE,aAASQ,KAAeN;AACtB,MAACE,KAAcF,EAAUM,CAAW,GAClCN,EAAU,eAAeM,CAAW,KAC1BJ,MAAR,QACA,CAACvb,EAAU,eAAe2b,CAAW,KACrCZ,GAAQ9+E,GAAYlmC,GAAK4lH,GAAa,MAAM3b,GAAWub,EAAW;AACxE,SAAKD,MAAYtb;AACf,MAACub,KAAcvb,EAAUsb,EAAQ,GAC9BH,KAAUE,EAAUC,EAAQ,GAC7B,CAACtb,EAAU,eAAesb,EAAQ,KAChCC,OAAgBJ,MACPI,MAAR,QAA+BJ,MAAR,QACxBJ,GAAQ9+E,GAAYlmC,GAAKulH,IAAUC,IAAavb,GAAWmb,EAAO;AAAA,EAC1E;AACA,WAASS,GAAuBC,GAAe;AAC7C,YAAQA,GAAa;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASC,KAAoB;AAC3B,QAAmB,OAAO,YAAY,oBAAlC,YAAoD;AACtD,eACM7jJ,IAAQ,GACV8jJ,IAAO,GACPC,IAAkB,YAAY,iBAAiB,UAAU,GACzDj1J,IAAI,GACNA,IAAIi1J,EAAgB,QACpBj1J,KACA;AACA,YAAIue,IAAQ02I,EAAgBj1J,CAAC,GAC3Bk1J,IAAe32I,EAAM,cACrBu2I,IAAgBv2I,EAAM,eACtB42I,IAAW52I,EAAM;AACnB,YAAI22I,KAAgBC,KAAYN,GAAuBC,CAAa,GAAG;AAGrE,eAFAA,IAAgB,GAChBK,IAAW52I,EAAM,aACZve,KAAK,GAAGA,IAAIi1J,EAAgB,QAAQj1J,KAAK;AAC5C,gBAAIo1J,IAAeH,EAAgBj1J,CAAC,GAClCq1J,KAAmBD,EAAa;AAClC,gBAAIC,KAAmBF,EAAU;AACjC,gBAAIG,KAAsBF,EAAa,cACrCG,KAAuBH,EAAa;AACtC,YAAAE,MACET,GAAuBU,EAAoB,MACzCH,IAAeA,EAAa,aAC7BN,KACCQ,MACCF,IAAeD,IACZ,KACCA,IAAWE,OACXD,IAAeC;AAAA,UAClC;AAIQ,cAHA,EAAEr1J,GACFg1J,KAAS,KAAKE,IAAeJ,MAAmBv2I,EAAM,WAAW,MACjErN,KACI,KAAKA,EAAO;AAAA,QACxB;AAAA,MACA;AACI,UAAI,IAAIA,EAAO,QAAO8jJ,IAAO9jJ,IAAQ;AAAA,IACzC;AACE,WAAO,UAAU,eACbA,IAAQ,UAAU,WAAW,UAAwB,OAAOA,KAApB,YACxCA,IACA;AAAA,EACN;AACA,MAAI2xI,KAAgB,MAClBM,KAAuB;AACzB,WAASrE,GAAkC8S,GAAsB;AAC/D,WAAaA,EAAqB,aAA3B,IACHA,IACAA,EAAqB;AAAA,EAC3B;AACA,WAAS3jC,GAAkBrzB,GAAc;AACvC,YAAQA,GAAY;AAAA,MAClB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,WAASszB,GAAwBsnC,GAAiBj3J,GAAM;AACtD,QAAUi3J,MAAN;AACF,cAAQj3J,GAAI;AAAA,QACV,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACf;AACE,WAAai3J,MAAN,KAA6Cj3J,MAApB,kBAC5B,IACAi3J;AAAA,EACN;AACA,WAAS/vB,GAAqBlnI,GAAMqQ,GAAO;AACzC,WACiBrQ,MAAf,cACeA,MAAf,cACa,OAAOqQ,EAAM,YAA1B,YACa,OAAOA,EAAM,YAA1B,YACa,OAAOA,EAAM,YAA1B,YACc,OAAOA,EAAM,2BAA1B,YACUA,EAAM,4BAAf,QACQA,EAAM,wBAAwB,UAAtC;AAAA,EAEN;AACA,MAAI6mJ,KAAiC;AACrC,WAAS7F,KAA+B;AACtC,QAAIp+I,IAAQ,OAAO;AACnB,WAAIA,KAAwBA,EAAM,SAArB,aACPA,MAAUikJ,KAAuC,MACrDA,KAAiCjkJ,GAC1B,OAETikJ,KAAiC,MAC1B;AAAA,EACT;AACA,MAAIjL,KAAiC,OAAO,cAAtB,aAAmC,aAAa,QACpEkB,KAA+B,OAAO,gBAAtB,aAAqC,eAAe,QACpEgK,KAA8B,OAAO,WAAtB,aAAgC,UAAU,QACzDtF,KACiB,OAAO,kBAAtB,aACI,iBACgB,OAAOsF,KAAvB,MACE,SAAU1mJ,GAAU;AAClB,WAAO0mJ,GACJ,QAAQ,IAAI,EACZ,KAAK1mJ,CAAQ,EACb,MAAM2mJ,EAAqB;AAAA,EAC1C,IACUnL;AACV,WAASmL,GAAsB3qJ,GAAO;AACpC,eAAW,WAAY;AACrB,YAAMA;AAAA,IACV,CAAG;AAAA,EACH;AACA,WAAS26H,GAAiBpnI,GAAM;AAC9B,WAAkBA,MAAX;AAAA,EACT;AACA,WAASkmJ,GAAuBmR,GAAgBC,GAAmB;AACjE,QAAItjI,IAAOsjI,GACThlI,IAAQ;AACV,OAAG;AACD,UAAIilI,IAAWvjI,EAAK;AAEpB,UADAqjI,EAAe,YAAYrjI,CAAI,GAC3BujI,KAAkBA,EAAS,aAAf;AACd,YAAMvjI,IAAOujI,EAAS,MAAgBvjI,MAAT,QAA0BA,MAAT,MAAgB;AAC5D,cAAU1B,MAAN,GAAa;AACf,YAAA+kI,EAAe,YAAYE,CAAQ,GACnCpR,GAAiBmR,CAAiB;AAClC;AAAA,UACV;AACQ,UAAAhlI;AAAA,QACR,WACgB0B,MAAR,OACSA,MAAT,QACSA,MAAT,QACSA,MAAT,QACQA,MAAR;AAEA,UAAA1B;AAAA,iBACkB0B,MAAX;AACP,UAAAiyH,GAAyBoR,EAAe,cAAc,eAAe;AAAA,iBACnDrjI,MAAX,QAAiB;AACxB,UAAAA,IAAOqjI,EAAe,cAAc,MACpCpR,GAAyBjyH,CAAI;AAC7B,mBAASwjI,IAAgBxjI,EAAK,YAAYwjI,KAAiB;AACzD,gBAAIC,IAAoBD,EAAc,aACpC/3B,IAAW+3B,EAAc;AAC3B,YAAAA,EAAcnhC,EAAuB,KACtBoJ,MAAb,YACYA,MAAZ,WACYA,MAAX,UACkB+3B,EAAc,IAAI,kBAAnC,gBACFxjI,EAAK,YAAYwjI,CAAa,GAChCA,IAAgBC;AAAA,UAC1B;AAAA,QACA;AACQ,UAAWzjI,MAAX,UACEiyH,GAAyBoR,EAAe,cAAc,IAAI;AAChE,MAAArjI,IAAOujI;AAAA,IACX,SAAWvjI;AACT,IAAAmyH,GAAiBmR,CAAiB;AAAA,EACpC;AACA,WAASxP,GAA+B4P,GAAkBnkF,GAAU;AAClE,QAAIv/C,IAAO0jI;AACX,IAAAA,IAAmB;AACnB,OAAG;AACD,UAAIH,IAAWvjI,EAAK;AAWpB,UAVMA,EAAK,aAAX,IACIu/C,KACIv/C,EAAK,kBAAkBA,EAAK,MAAM,SACnCA,EAAK,MAAM,UAAU,WACpBA,EAAK,MAAM,UAAUA,EAAK,mBAAmB,IACxCA,EAAK,aAAa,OAAO,MAAhC,MAAqCA,EAAK,gBAAgB,OAAO,KAC7DA,EAAK,aAAX,MACCu/C,KACKv/C,EAAK,eAAeA,EAAK,WAAaA,EAAK,YAAY,MACxDA,EAAK,YAAYA,EAAK,gBAAgB,KAC3CujI,KAAkBA,EAAS,aAAf;AACd,YAAMvjI,IAAOujI,EAAS,MAAgBvjI,MAAT,MAC3B;AAAA,cAAU0jI,MAAN,EAAwB;AACvB,UAAAA;AAAA;AAEL,UAAS1jI,MAAR,OAAyBA,MAAT,QAA0BA,MAAT,QAA0BA,MAAT,QACjD0jI;AACN,MAAA1jI,IAAOujI;AAAA,IACX,SAAWvjI;AAAA,EACX;AACA,WAAS8wH,GAAwBvjF,GAAW;AAC1C,QAAIg2F,IAAWh2F,EAAU;AAEzB,SADAg2F,KAAmBA,EAAS,aAAhB,OAA6BA,IAAWA,EAAS,cACtDA,KAAY;AACjB,UAAIvjI,IAAOujI;AAEX,cADAA,IAAWA,EAAS,aACZvjI,EAAK,UAAQ;AAAA,QACnB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAA8wH,GAAwB9wH,CAAI,GAC5BsiG,EAAsBtiG,CAAI;AAC1B;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QACF,KAAK;AACH,cAAqBA,EAAK,IAAI,YAAW,MAArC,aAAyC;AAAA,MACrD;AACI,MAAAutC,EAAU,YAAYvtC,CAAI;AAAA,IAC9B;AAAA,EACA;AACA,WAAS0sH,GAAmBp/F,GAAUthD,GAAMqQ,GAAOymI,GAAmB;AACpE,WAAax1F,EAAS,aAAf,KAA2B;AAChC,UAAIq2G,IAAWtnJ;AACf,UAAIixC,EAAS,SAAS,YAAW,MAAOthD,EAAK,YAAW;AACtD,YACE,CAAC82I,MACYx1F,EAAS,aAArB,WAA8CA,EAAS,SAAtB;AAElC;AAAA,iBACQw1F;AASP,YAAI,CAACx1F,EAAS+0E,EAAuB;AACxC,kBAAQr2H,GAAI;AAAA,YACV,KAAK;AACH,kBAAI,CAACshD,EAAS,aAAa,UAAU,EAAG;AACxC,qBAAOA;AAAA,YACT,KAAK;AAEH,kBADA/gB,IAAO+gB,EAAS,aAAa,KAAK,GACb/gB,MAAjB,gBAAyB+gB,EAAS,aAAa,iBAAiB;AAClE;AACG,kBACH/gB,MAASo3H,EAAS,OAClBr2G,EAAS,aAAa,MAAM,OACjBq2G,EAAS,QAAjB,QAAgCA,EAAS,SAAhB,KACtB,OACAA,EAAS,SACfr2G,EAAS,aAAa,aAAa,OACxBq2G,EAAS,eAAjB,OAA+B,OAAOA,EAAS,gBAClDr2G,EAAS,aAAa,OAAO,OAClBq2G,EAAS,SAAjB,OAAyB,OAAOA,EAAS;AAE5C;AACF,qBAAOr2G;AAAA,YACT,KAAK;AACH,kBAAIA,EAAS,aAAa,iBAAiB,EAAG;AAC9C,qBAAOA;AAAA,YACT,KAAK;AAEH,kBADA/gB,IAAO+gB,EAAS,aAAa,KAAK,IAE/B/gB,OAAkBo3H,EAAS,OAAjB,OAAuB,OAAOA,EAAS,QAChDr2G,EAAS,aAAa,MAAM,OACjBq2G,EAAS,QAAjB,OAAwB,OAAOA,EAAS,SAC3Cr2G,EAAS,aAAa,aAAa,OACxBq2G,EAAS,eAAjB,OAA+B,OAAOA,EAAS,iBACpDp3H,KACA+gB,EAAS,aAAa,OAAO,KAC7B,CAACA,EAAS,aAAa,UAAU;AAEjC;AACF,qBAAOA;AAAA,YACT;AACE,qBAAOA;AAAA,UACjB;AAAA,iBAjDsBthD,MAAZ,WAAiCshD,EAAS,SAAtB,UAA4B;AAClD,YAAI/gB,IAAeo3H,EAAS,QAAjB,OAAwB,OAAO,KAAKA,EAAS;AACxD,YACeA,EAAS,SAAtB,YACAr2G,EAAS,aAAa,MAAM,MAAM/gB;AAElC,iBAAO+gB;AAAA,MACjB,MAAa,QAAOA;AA4ChB,UADAA,IAAWgmF,GAAkBhmF,EAAS,WAAW,GACpCA,MAAT,KAAmB;AAAA,IAC3B;AACE,WAAO;AAAA,EACT;AACA,WAASq/F,GAAuBr/F,GAAU/nC,GAAMu9H,GAAmB;AACjE,QAAWv9H,MAAP,GAAa,QAAO;AACxB,WAAa+nC,EAAS,aAAf;AASL,WAPSA,EAAS,aAAf,KACaA,EAAS,aAArB,WACaA,EAAS,SAAtB,aACF,CAACw1F,MAGHx1F,IAAWgmF,GAAkBhmF,EAAS,WAAW,GACpCA,MAAT,MAAmB,QAAO;AAEhC,WAAOA;AAAA,EACT;AACA,WAASy8F,GAA4Bz8F,GAAUw1F,GAAmB;AAChE,WAAax1F,EAAS,aAAf;AASL,WAPSA,EAAS,aAAf,KACaA,EAAS,aAArB,WACaA,EAAS,SAAtB,aACF,CAACw1F,MAGHx1F,IAAWgmF,GAAkBhmF,EAAS,WAAW,GACpCA,MAAT,MAAmB,QAAO;AAEhC,WAAOA;AAAA,EACT;AACA,WAAS8vF,GAA0B9vF,GAAU;AAC3C,WAAgBA,EAAS,SAAlB,QAAmCA,EAAS,SAAlB;AAAA,EACnC;AACA,WAAS+vF,GAA2B/vF,GAAU;AAC5C,WACWA,EAAS,SAAlB,QACUA,EAAS,SAAlB,QAAwCA,EAAS,cAAc,eAArC;AAAA,EAE/B;AACA,WAASgkG,GAA8BhkG,GAAU7wC,GAAU;AACzD,QAAIm1D,IAAgBtkB,EAAS;AAC7B,QAAaA,EAAS,SAAlB,KAAwB,CAAAA,EAAS,cAAc7wC;AAAA,aACjC6wC,EAAS,SAAlB,QAAwCskB,EAAc,eAA5B;AACjC,MAAAn1D,EAAQ;AAAA,SACL;AACH,UAAItC,IAAW,WAAY;AACzB,QAAAsC,EAAQ,GACRm1D,EAAc,oBAAoB,oBAAoBz3D,CAAQ;AAAA,MACpE;AACI,MAAAy3D,EAAc,iBAAiB,oBAAoBz3D,CAAQ,GAC3DmzC,EAAS,cAAcnzC;AAAA,IAC3B;AAAA,EACA;AACA,WAASm5H,GAAkBtzG,GAAM;AAC/B,WAAeA,KAAR,MAAcA,IAAOA,EAAK,aAAa;AAC5C,UAAI4jI,IAAW5jI,EAAK;AACpB,UAAU4jI,MAAN,KAAwBA,MAAN,EAAgB;AACtC,UAAUA,MAAN,GAAgB;AAElB,YADAA,IAAW5jI,EAAK,MAEN4jI,MAAR,OACSA,MAAT,QACSA,MAAT,QACSA,MAAT,QACQA,MAAR,OACSA,MAAT,QACQA,MAAR;AAEA;AACF,YAAaA,MAAT,QAA8BA,MAAT,KAAmB,QAAO;AAAA,MACzD;AAAA,IACA;AACE,WAAO5jI;AAAA,EACT;AACA,MAAIqzG,KAA8C;AAClD,WAASF,GAAgDmwB,GAAmB;AAC1E,IAAAA,IAAoBA,EAAkB;AACtC,aAAShlI,IAAQ,GAAGglI,KAAqB;AACvC,UAAUA,EAAkB,aAAxB,GAAkC;AACpC,YAAIlxI,IAAOkxI,EAAkB;AAC7B,YAAalxI,MAAT,QAA0BA,MAAT,MAAe;AAClC,cAAUkM,MAAN;AACF,mBAAOg1G,GAAkBgwB,EAAkB,WAAW;AACxD,UAAAhlI;AAAA,QACR;AACQ,UAASlM,MAAR,OACUA,MAAT,QACSA,MAAT,QACSA,MAAT,QACQA,MAAR,OACAkM;AAAA,MACV;AACI,MAAAglI,IAAoBA,EAAkB;AAAA,IAC1C;AACE,WAAO;AAAA,EACT;AACA,WAAS7gC,GAA2BohC,GAAgB;AAClD,IAAAA,IAAiBA,EAAe;AAChC,aAASvlI,IAAQ,GAAGulI,KAAkB;AACpC,UAAUA,EAAe,aAArB,GAA+B;AACjC,YAAIzxI,IAAOyxI,EAAe;AAC1B,YACUzxI,MAAR,OACSA,MAAT,QACSA,MAAT,QACSA,MAAT,QACQA,MAAR,KACA;AACA,cAAUkM,MAAN,EAAa,QAAOulI;AACxB,UAAAvlI;AAAA,QACR,MAAa,CAAUlM,MAAT,QAA0BA,MAAT,QAAkBkM;AAAA,MACjD;AACI,MAAAulI,IAAiBA,EAAe;AAAA,IACpC;AACE,WAAO;AAAA,EACT;AACA,WAASpX,GAAyBzgJ,GAAMqQ,GAAOynJ,GAAuB;AAEpE,YADAznJ,IAAQkwI,GAAkCuX,CAAqB,GACvD93J,GAAI;AAAA,MACV,KAAK;AAEH,YADAA,IAAOqQ,EAAM,iBACT,CAACrQ,EAAM,OAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAClD,eAAO/gE;AAAA,MACT,KAAK;AAEH,YADAA,IAAOqQ,EAAM,MACT,CAACrQ,EAAM,OAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAClD,eAAO/gE;AAAA,MACT,KAAK;AAEH,YADAA,IAAOqQ,EAAM,MACT,CAACrQ,EAAM,OAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAClD,eAAO/gE;AAAA,MACT;AACE,cAAM,MAAM+gE,EAAuB,GAAG,CAAC;AAAA,IAC7C;AAAA,EACA;AACA,WAASklF,GAAyB3kG,GAAU;AAC1C,aAASwF,IAAaxF,EAAS,YAAYwF,EAAW;AACpD,MAAAxF,EAAS,oBAAoBwF,EAAW,CAAC,CAAC;AAC5C,IAAAwvE,EAAsBh1E,CAAQ;AAAA,EAChC;AACA,MAAIy2G,KAAkB,oBAAI,IAAG,GAC3BC,KAAiB,oBAAI,IAAG;AAC1B,WAASxQ,GAAiBjmF,GAAW;AACnC,WAAsB,OAAOA,EAAU,eAAhC,aACHA,EAAU,YAAW,IACfA,EAAU,aAAhB,IACEA,IACAA,EAAU;AAAA,EAClB;AACA,MAAI02F,KAAqBjpC,EAAwB;AACjD,EAAAA,EAAwB,IAAI;AAAA,IAC1B,GAAGkpC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA,IACH,GAAGC;AAAA;AAEL,WAASR,KAAgB;AACvB,QAAIS,IAAuBV,GAAmB,EAAC,GAC7CW,IAAe99B,GAAe;AAChC,WAAO69B,KAAwBC;AAAA,EACjC;AACA,WAAST,GAAiBt2F,GAAM;AAC9B,QAAIg3F,IAAWniC,GAAoB70D,CAAI;AACvC,IAASg3F,MAAT,QAA2BA,EAAS,QAAf,KAAiCA,EAAS,SAApB,SACvCvf,GAAmBuf,CAAQ,IAC3BZ,GAAmB,EAAEp2F,CAAI;AAAA,EAC/B;AACA,MAAIi3F,KAAiC,OAAO,WAAvB,MAAkC,OAAO;AAC9D,WAASC,GAAaC,GAAK5rH,GAAMs0B,GAAa;AAC5C,QAAIkE,IAAgBkzF;AACpB,QAAIlzF,KAA8B,OAAOx4B,KAApB,YAA4BA,GAAM;AACrD,UAAI6rH,IACFtgC,GAA+CvrF,CAAI;AACrD,MAAA6rH,IACE,eAAeD,IAAM,cAAcC,IAAqB,MAC7C,OAAOv3F,KAApB,aACGu3F,KAAsB,mBAAmBv3F,IAAc,OAC1Ds2F,GAAe,IAAIiB,CAAkB,MAClCjB,GAAe,IAAIiB,CAAkB,GACrCD,IAAM,EAAE,KAAKA,GAAK,aAAat3F,GAAa,MAAMt0B,EAAI,GAC9Cw4B,EAAc,cAAcqzF,CAAkB,MAAvD,SACI7rH,IAAOw4B,EAAc,cAAc,MAAM,GAC3C46E,GAAqBpzG,GAAM,QAAQ4rH,CAAG,GACtCliC,GAAoB1pF,CAAI,GACxBw4B,EAAc,KAAK,YAAYx4B,CAAI;AAAA,IAC3C;AAAA,EACA;AACA,WAASgrH,GAAYhrH,GAAM;AACzB,IAAA6qH,GAAmB,EAAE7qH,CAAI,GACzB2rH,GAAa,gBAAgB3rH,GAAM,IAAI;AAAA,EACzC;AACA,WAASirH,GAAWjrH,GAAMs0B,GAAa;AACrC,IAAAu2F,GAAmB,EAAE7qH,GAAMs0B,CAAW,GACtCq3F,GAAa,cAAc3rH,GAAMs0B,CAAW;AAAA,EAC9C;AACA,WAAS42F,GAAQlrH,GAAMi0B,GAAI/0D,GAAS;AAClC,IAAA2rJ,GAAmB,EAAE7qH,GAAMi0B,GAAI/0D,CAAO;AACtC,QAAIs5D,IAAgBkzF;AACpB,QAAIlzF,KAAiBx4B,KAAQi0B,GAAI;AAC/B,UAAI63F,IACF,6BACAvgC,GAA+Ct3D,CAAE,IACjD;AACF,MAAYA,MAAZ,WACI/0D,KAAWA,EAAQ,eACf4sJ,KACA,mBACAvgC;AAAA,QACErsH,EAAQ;AAAA,UAEV,MACW,OAAOA,EAAQ,cAA5B,aACG4sJ,KACC,kBACAvgC;AAAA,QACErsH,EAAQ;AAAA,UAEV,SAKL4sJ,KACC,YACAvgC,GAA+CvrF,CAAI,IACnD;AACN,UAAIjtC,IAAM+4J;AACV,cAAQ73F,GAAE;AAAA,QACR,KAAK;AACH,UAAAlhE,IAAMg5J,GAAY/rH,CAAI;AACtB;AAAA,QACF,KAAK;AACH,UAAAjtC,IAAMi5J,GAAahsH,CAAI;AAAA,MAC/B;AACI,MAAA2qH,GAAgB,IAAI53J,CAAG,MACnBitC,IAAOl9B;AAAA,QACP;AAAA,UACE,KAAK;AAAA,UACL,MACcmxD,MAAZ,WAAkB/0D,KAAWA,EAAQ,cAAc,SAAS8gC;AAAA,UAC9D,IAAIi0B;AAAA;QAEN/0D;AAAA,SAEFyrJ,GAAgB,IAAI53J,GAAKitC,CAAI,GACpBw4B,EAAc,cAAcszF,CAAe,MAApD,QACe73F,MAAZ,WACCuE,EAAc,cAAcyzF,GAA6Bl5J,CAAG,CAAC,KACjDkhE,MAAb,YACCuE,EAAc,cAAc0zF,GAAyBn5J,CAAG,CAAC,MACzDkhE,IAAKuE,EAAc,cAAc,MAAM,GACzC46E,GAAqBn/E,GAAI,QAAQj0B,CAAI,GACrC0pF,GAAoBz1D,CAAE,GACtBuE,EAAc,KAAK,YAAYvE,CAAE;AAAA,IACzC;AAAA,EACA;AACA,WAASk3F,GAAcnrH,GAAM9gC,GAAS;AACpC,IAAA2rJ,GAAmB,EAAE7qH,GAAM9gC,CAAO;AAClC,QAAIs5D,IAAgBkzF;AACpB,QAAIlzF,KAAiBx4B,GAAM;AACzB,UAAIi0B,IAAK/0D,KAAwB,OAAOA,EAAQ,MAA5B,WAAiCA,EAAQ,KAAK,UAChE4sJ,IACE,mCACAvgC,GAA+Ct3D,CAAE,IACjD,cACAs3D,GAA+CvrF,CAAI,IACnD,MACFjtC,IAAM+4J;AACR,cAAQ73F,GAAE;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAlhE,IAAMi5J,GAAahsH,CAAI;AAAA,MAC/B;AACI,UACE,CAAC2qH,GAAgB,IAAI53J,CAAG,MACtBitC,IAAOl9B,EAAO,EAAE,KAAK,iBAAiB,MAAMk9B,EAAI,GAAI9gC,CAAO,GAC7DyrJ,GAAgB,IAAI53J,GAAKitC,CAAI,GACpBw4B,EAAc,cAAcszF,CAAe,MAApD,OACA;AACA,gBAAQ73F,GAAE;AAAA,UACR,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,gBAAIuE,EAAc,cAAc0zF,GAAyBn5J,CAAG,CAAC;AAC3D;AAAA,QACZ;AACM,QAAAkhE,IAAKuE,EAAc,cAAc,MAAM,GACvC46E,GAAqBn/E,GAAI,QAAQj0B,CAAI,GACrC0pF,GAAoBz1D,CAAE,GACtBuE,EAAc,KAAK,YAAYvE,CAAE;AAAA,MACvC;AAAA,IACA;AAAA,EACA;AACA,WAASo3F,GAAarrH,GAAMnwB,GAAY3Q,GAAS;AAC/C,IAAA2rJ,GAAmB,EAAE7qH,GAAMnwB,GAAY3Q,CAAO;AAC9C,QAAIs5D,IAAgBkzF;AACpB,QAAIlzF,KAAiBx4B,GAAM;AACzB,UAAI+I,IAASygF,GAAqBhxD,CAAa,EAAE,iBAC/CzlE,IAAMg5J,GAAY/rH,CAAI;AACxB,MAAAnwB,IAAaA,KAAc;AAC3B,UAAI+jI,IAAW7qG,EAAO,IAAIh2C,CAAG;AAC7B,UAAI,CAAC6gJ,GAAU;AACb,YAAIj+H,IAAQ,EAAE,SAAS,GAAG,SAAS,KAAI;AACvC,YACGi+H,IAAWp7E,EAAc;AAAA,UACxByzF,GAA6Bl5J,CAAG;AAAA;AAGlC,UAAA4iB,EAAM,UAAU;AAAA,aACb;AACH,UAAAqqB,IAAOl9B;AAAA,YACL,EAAE,KAAK,cAAc,MAAMk9B,GAAM,mBAAmBnwB,EAAU;AAAA,YAC9D3Q;AAAA,cAEDA,IAAUyrJ,GAAgB,IAAI53J,CAAG,MAChCo5J,GAA+BnsH,GAAM9gC,CAAO;AAC9C,cAAIsiC,IAAQoyG,IAAWp7E,EAAc,cAAc,MAAM;AACzD,UAAAkxD,GAAoBloF,CAAI,GACxB4xG,GAAqB5xG,GAAM,QAAQxB,CAAI,GACvCwB,EAAK,KAAK,IAAI,QAAQ,SAAU34B,IAASC,IAAQ;AAC/C,YAAA04B,EAAK,SAAS34B,IACd24B,EAAK,UAAU14B;AAAA,UACzB,CAAS,GACD04B,EAAK,iBAAiB,QAAQ,WAAY;AACxC,YAAA7rB,EAAM,WAAW;AAAA,UAC3B,CAAS,GACD6rB,EAAK,iBAAiB,SAAS,WAAY;AACzC,YAAA7rB,EAAM,WAAW;AAAA,UAC3B,CAAS,GACDA,EAAM,WAAW,GACjBy2I,GAAiBxY,GAAU/jI,GAAY2oD,CAAa;AAAA,QAC5D;AACM,QAAAo7E,IAAW;AAAA,UACT,MAAM;AAAA,UACN,UAAUA;AAAA,UACV,OAAO;AAAA,UACP,OAAOj+H;AAAA,WAETozB,EAAO,IAAIh2C,GAAK6gJ,CAAQ;AAAA,MAC9B;AAAA,IACA;AAAA,EACA;AACA,WAASwX,GAAc5wI,GAAKtb,GAAS;AACnC,IAAA2rJ,GAAmB,EAAErwI,GAAKtb,CAAO;AACjC,QAAIs5D,IAAgBkzF;AACpB,QAAIlzF,KAAiBh+C,GAAK;AACxB,UAAI6xI,IAAU7iC,GAAqBhxD,CAAa,EAAE,kBAChDzlE,IAAMi5J,GAAaxxI,CAAG,GACtBo5H,IAAWyY,EAAQ,IAAIt5J,CAAG;AAC5B,MAAA6gJ,MACIA,IAAWp7E,EAAc,cAAc0zF,GAAyBn5J,CAAG,CAAC,GACtE6gJ,MACIp5H,IAAM1X,EAAO,EAAE,KAAK0X,GAAK,OAAO,GAAE,GAAItb,CAAO,IAC9CA,IAAUyrJ,GAAgB,IAAI53J,CAAG,MAChCu5J,GAA2B9xI,GAAKtb,CAAO,GACxC00I,IAAWp7E,EAAc,cAAc,QAAQ,GAChDkxD,GAAoBkqB,CAAQ,GAC5BR,GAAqBQ,GAAU,QAAQp5H,CAAG,GAC1Cg+C,EAAc,KAAK,YAAYo7E,CAAQ,IACxCA,IAAW;AAAA,QACV,MAAM;AAAA,QACN,UAAUA;AAAA,QACV,OAAO;AAAA,QACP,OAAO;AAAA,SAETyY,EAAQ,IAAIt5J,GAAK6gJ,CAAQ;AAAA,IAC/B;AAAA,EACA;AACA,WAAS0X,GAAoB9wI,GAAKtb,GAAS;AACzC,IAAA2rJ,GAAmB,EAAErwI,GAAKtb,CAAO;AACjC,QAAIs5D,IAAgBkzF;AACpB,QAAIlzF,KAAiBh+C,GAAK;AACxB,UAAI6xI,IAAU7iC,GAAqBhxD,CAAa,EAAE,kBAChDzlE,IAAMi5J,GAAaxxI,CAAG,GACtBo5H,IAAWyY,EAAQ,IAAIt5J,CAAG;AAC5B,MAAA6gJ,MACIA,IAAWp7E,EAAc,cAAc0zF,GAAyBn5J,CAAG,CAAC,GACtE6gJ,MACIp5H,IAAM1X,EAAO,EAAE,KAAK0X,GAAK,OAAO,IAAI,MAAM,SAAQ,GAAItb,CAAO,IAC9DA,IAAUyrJ,GAAgB,IAAI53J,CAAG,MAChCu5J,GAA2B9xI,GAAKtb,CAAO,GACxC00I,IAAWp7E,EAAc,cAAc,QAAQ,GAChDkxD,GAAoBkqB,CAAQ,GAC5BR,GAAqBQ,GAAU,QAAQp5H,CAAG,GAC1Cg+C,EAAc,KAAK,YAAYo7E,CAAQ,IACxCA,IAAW;AAAA,QACV,MAAM;AAAA,QACN,UAAUA;AAAA,QACV,OAAO;AAAA,QACP,OAAO;AAAA,SAETyY,EAAQ,IAAIt5J,GAAK6gJ,CAAQ;AAAA,IAC/B;AAAA,EACA;AACA,WAASV,GAAYtgJ,GAAM25J,GAAc11B,GAAcijB,GAAiB;AACtE,QAAIp3B,KAA4BA,IAC9BR,GAAwB,WACtBk4B,GAAiB13B,CAAwB,IACzC;AACJ,QAAI,CAACA,EAA0B,OAAM,MAAM/uD,EAAuB,GAAG,CAAC;AACtE,YAAQ/gE,GAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAoB,OAAOikI,EAAa,cAAjC,YACQ,OAAOA,EAAa,QAAjC,YACI01B,IAAeR,GAAYl1B,EAAa,IAAI,GAC7CA,IAAerN;AAAA,UACd9G;AAAA,QACZ,EAAY,iBACDo3B,IAAkBjjB,EAAa,IAAI01B,CAAY,GAChDzS,MACIA,IAAkB;AAAA,UAClB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,OAAO;AAAA,UACP,OAAO;AAAA,WAETjjB,EAAa,IAAI01B,GAAczS,CAAe,IAChDA,KACA,EAAE,MAAM,QAAQ,UAAU,MAAM,OAAO,GAAG,OAAO,KAAI;AAAA,MAC3D,KAAK;AACH,YACmBjjB,EAAa,QAA9B,gBACa,OAAOA,EAAa,QAAjC,YACa,OAAOA,EAAa,cAAjC,UACA;AACA,UAAAjkI,IAAOm5J,GAAYl1B,EAAa,IAAI;AACpC,cAAI21B,IAAahjC;AAAA,YACb9G;AAAA,UACZ,EAAY,iBACF+pC,IAAeD,EAAW,IAAI55J,CAAI;AAoCpC,cAnCA65J,MACI/pC,IACAA,EAAyB,iBAAiBA,GAC3C+pC,IAAe;AAAA,YACd,MAAM;AAAA,YACN,UAAU;AAAA,YACV,OAAO;AAAA,YACP,OAAO,EAAE,SAAS,GAAG,SAAS,KAAI;AAAA,aAEpCD,EAAW,IAAI55J,GAAM65J,CAAY,IAChCD,IAAa9pC,EAAyB;AAAA,YACrCupC,GAA6Br5J,CAAI;AAAA,gBAEjC,CAAC45J,EAAW,OACVC,EAAa,WAAWD,GACzBC,EAAa,MAAM,UAAU,IAChC9B,GAAgB,IAAI/3J,CAAI,MACpBikI,IAAe;AAAA,YACf,KAAK;AAAA,YACL,IAAI;AAAA,YACJ,MAAMA,EAAa;AAAA,YACnB,aAAaA,EAAa;AAAA,YAC1B,WAAWA,EAAa;AAAA,YACxB,OAAOA,EAAa;AAAA,YACpB,UAAUA,EAAa;AAAA,YACvB,gBAAgBA,EAAa;AAAA,aAE/B8zB,GAAgB,IAAI/3J,GAAMikI,CAAY,GACtC21B,KACEE;AAAA,YACEhqC;AAAA,YACA9vH;AAAA,YACAikI;AAAA,YACA41B,EAAa;AAAA,UAC7B,KACYF,KAAyBzS,MAAT;AAClB,kBAAM,MAAMnmF,EAAuB,KAAK,EAAE,CAAC;AAC7C,iBAAO84F;AAAA,QACf;AACM,YAAIF,KAAyBzS,MAAT;AAClB,gBAAM,MAAMnmF,EAAuB,KAAK,EAAE,CAAC;AAC7C,eAAO;AAAA,MACT,KAAK;AACH,eACG44F,IAAe11B,EAAa,OAC5BA,IAAeA,EAAa,KAChB,OAAOA,KAApB,YACA01B,KACe,OAAOA,KAAtB,cACa,OAAOA,KAApB,YACMA,IAAeP,GAAan1B,CAAY,GACzCA,IAAerN;AAAA,UACd9G;AAAA,QACd,EAAc,kBACDo3B,IAAkBjjB,EAAa,IAAI01B,CAAY,GAChDzS,MACIA,IAAkB;AAAA,UAClB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,OAAO;AAAA,UACP,OAAO;AAAA,WAETjjB,EAAa,IAAI01B,GAAczS,CAAe,IAChDA,KACA,EAAE,MAAM,QAAQ,UAAU,MAAM,OAAO,GAAG,OAAO,KAAI;AAAA,MAE7D;AACE,cAAM,MAAMnmF,EAAuB,KAAK/gE,CAAI,CAAC;AAAA,IACnD;AAAA,EACA;AACA,WAASm5J,GAAY/rH,GAAM;AACzB,WAAO,WAAWurF,GAA+CvrF,CAAI,IAAI;AAAA,EAC3E;AACA,WAASisH,GAA6Bl5J,GAAK;AACzC,WAAO,4BAA4BA,IAAM;AAAA,EAC3C;AACA,WAAS45J,GAA4BC,GAAU;AAC7C,WAAO9pJ,EAAO,CAAA,GAAI8pJ,GAAU;AAAA,MAC1B,mBAAmBA,EAAS;AAAA,MAC5B,YAAY;AAAA,IAChB,CAAG;AAAA,EACH;AACA,WAASF,GAAkBl0F,GAAezlE,GAAK85J,GAAcl3I,GAAO;AAClE,IAAA6iD,EAAc,cAAc,qCAAqCzlE,IAAM,GAAG,IACrE4iB,EAAM,UAAU,KACf5iB,IAAMylE,EAAc,cAAc,MAAM,GACzC7iD,EAAM,UAAU5iB,GACjBA,EAAI,iBAAiB,QAAQ,WAAY;AACvC,aAAQ4iB,EAAM,WAAW;AAAA,IACjC,CAAO,GACD5iB,EAAI,iBAAiB,SAAS,WAAY;AACxC,aAAQ4iB,EAAM,WAAW;AAAA,IACjC,CAAO,GACDy9H,GAAqBrgJ,GAAK,QAAQ85J,CAAY,GAC9CnjC,GAAoB32H,CAAG,GACvBylE,EAAc,KAAK,YAAYzlE,CAAG;AAAA,EACxC;AACA,WAASi5J,GAAaxxI,GAAK;AACzB,WAAO,WAAW+wG,GAA+C/wG,CAAG,IAAI;AAAA,EAC1E;AACA,WAAS0xI,GAAyBn5J,GAAK;AACrC,WAAO,kBAAkBA;AAAA,EAC3B;AACA,WAASmnJ,GAAgBL,GAAejG,GAAU3wI,GAAO;AAEvD,QADA2wI,EAAS,SACIA,EAAS,aAAlB;AACF,cAAQA,EAAS,MAAI;AAAA,QACnB,KAAK;AACH,cAAI1/F,IAAW2lG,EAAc;AAAA,YAC3B,uBACEtuB,GAA+CtoH,EAAM,IAAI,IACzD;AAAA;AAEJ,cAAIixC;AACF,mBACG0/F,EAAS,WAAW1/F,GACrBw1E,GAAoBx1E,CAAQ,GAC5BA;AAEJ,cAAI3B,IAAazvC,EAAO,CAAA,GAAIG,GAAO;AAAA,YACjC,aAAaA,EAAM;AAAA,YACnB,mBAAmBA,EAAM;AAAA,YACzB,MAAM;AAAA,YACN,YAAY;AAAA,UACtB,CAAS;AACD,iBAAAixC,KAAY2lG,EAAc,iBAAiBA,GAAe;AAAA,YACxD;AAAA,aAEFnwB,GAAoBx1E,CAAQ,GAC5Bk/F,GAAqBl/F,GAAU,SAAS3B,CAAU,GAClD65G,GAAiBl4G,GAAUjxC,EAAM,YAAY42I,CAAa,GAClDjG,EAAS,WAAW1/F;AAAA,QAC9B,KAAK;AACH,UAAA3B,IAAaw5G,GAAY9oJ,EAAM,IAAI;AACnC,cAAI6pJ,IAAejT,EAAc;AAAA,YAC/BoS,GAA6B15G,CAAU;AAAA;AAEzC,cAAIu6G;AACF,mBACGlZ,EAAS,MAAM,WAAW,GAC1BA,EAAS,WAAWkZ,GACrBpjC,GAAoBojC,CAAY,GAChCA;AAEJ,UAAA54G,IAAWy4G,GAA4B1pJ,CAAK,IAC3CsvC,IAAao4G,GAAgB,IAAIp4G,CAAU,MAC1C45G,GAA+Bj4G,GAAU3B,CAAU,GACrDu6G,KACEjT,EAAc,iBAAiBA,GAC/B,cAAc,MAAM,GACtBnwB,GAAoBojC,CAAY;AAChC,cAAIC,IAAeD;AACnB,iBAAAC,EAAa,KAAK,IAAI,QAAQ,SAAUlkJ,GAASC,GAAQ;AACvD,YAAAikJ,EAAa,SAASlkJ,GACtBkkJ,EAAa,UAAUjkJ;AAAA,UACjC,CAAS,GACDsqI,GAAqB0Z,GAAc,QAAQ54G,CAAQ,GACnD0/F,EAAS,MAAM,WAAW,GAC1BwY,GAAiBU,GAAc7pJ,EAAM,YAAY42I,CAAa,GACtDjG,EAAS,WAAWkZ;AAAA,QAC9B,KAAK;AAEH,iBADAA,IAAed,GAAa/oJ,EAAM,GAAG,IAElCsvC,IAAasnG,EAAc;AAAA,YAC1BqS,GAAyBY,CAAY;AAAA,gBAIpClZ,EAAS,WAAWrhG,GACrBm3E,GAAoBn3E,CAAU,GAC9BA,MAEJ2B,IAAWjxC,IACNsvC,IAAao4G,GAAgB,IAAImC,CAAY,OAC/C54G,IAAWpxC,EAAO,CAAA,GAAIG,CAAK,GAC1BqpJ,GAA2Bp4G,GAAU3B,CAAU,IACnDsnG,IAAgBA,EAAc,iBAAiBA,GAC/CtnG,IAAasnG,EAAc,cAAc,QAAQ,GACjDnwB,GAAoBn3E,CAAU,GAC9B6gG,GAAqB7gG,GAAY,QAAQ2B,CAAQ,GACjD2lG,EAAc,KAAK,YAAYtnG,CAAU,GACjCqhG,EAAS,WAAWrhG;AAAA,QAC9B,KAAK;AACH,iBAAO;AAAA,QACT;AACE,gBAAM,MAAMohB,EAAuB,KAAKigF,EAAS,IAAI,CAAC;AAAA,MAC9D;AAAA;AAEI,MAAiBA,EAAS,SAA1B,iBACSA,EAAS,MAAM,UAAU,OAAhC,MACE1/F,IAAW0/F,EAAS,UACrBA,EAAS,MAAM,WAAW,GAC3BwY,GAAiBl4G,GAAUjxC,EAAM,YAAY42I,CAAa;AAC9D,WAAOjG,EAAS;AAAA,EAClB;AACA,WAASwY,GAAiBl4G,GAAUrkC,GAAYg5E,GAAM;AACpD,aACMp3E,IAAQo3E,EAAK;AAAA,MACb;AAAA,OAEFyuB,IAAO7lG,EAAM,SAASA,EAAMA,EAAM,SAAS,CAAC,IAAI,MAChDu7I,IAAQ11C,GACRjjH,IAAI,GACNA,IAAIod,EAAM,QACVpd,KACA;AACA,UAAIuyB,IAAOnV,EAAMpd,CAAC;AAClB,UAAIuyB,EAAK,QAAQ,eAAe/W,EAAY,CAAAm9I,IAAQpmI;AAAA,eAC3ComI,MAAU11C,EAAM;AAAA,IAC7B;AACE,IAAA01C,IACIA,EAAM,WAAW,aAAa94G,GAAU84G,EAAM,WAAW,KACvDn9I,IAAmBg5E,EAAK,aAAX,IAAsBA,EAAK,OAAOA,GACjDh5E,EAAW,aAAaqkC,GAAUrkC,EAAW,UAAU;AAAA,EAC7D;AACA,WAASs8I,GAA+Bc,GAAiBJ,GAAc;AACrE,IAAQI,EAAgB,eAAxB,SACGA,EAAgB,cAAcJ,EAAa,cACtCI,EAAgB,kBAAxB,SACGA,EAAgB,iBAAiBJ,EAAa,iBACzCI,EAAgB,SAAxB,SAAkCA,EAAgB,QAAQJ,EAAa;AAAA,EACzE;AACA,WAASP,GAA2BY,GAAaL,GAAc;AAC7D,IAAQK,EAAY,eAApB,SACGA,EAAY,cAAcL,EAAa,cAClCK,EAAY,kBAApB,SACGA,EAAY,iBAAiBL,EAAa,iBACrCK,EAAY,aAApB,SACGA,EAAY,YAAYL,EAAa;AAAA,EAC1C;AACA,MAAI1S,KAAY;AAChB,WAASH,GAA4BpnJ,GAAMu6J,GAAc30F,GAAe;AACtE,QAAa2hF,OAAT,MAAoB;AACtB,UAAIxwG,IAAQ,oBAAI,IAAG,GACfyjH,IAAUjT,KAAY,oBAAI;AAC9B,MAAAiT,EAAO,IAAI50F,GAAe7uB,CAAK;AAAA,IACnC;AACI,MAACyjH,IAASjT,IACPxwG,IAAQyjH,EAAO,IAAI50F,CAAa,GACjC7uB,MAAWA,IAAQ,oBAAI,IAAG,GAAKyjH,EAAO,IAAI50F,GAAe7uB,CAAK;AAClE,QAAIA,EAAM,IAAI/2C,CAAI,EAAG,QAAO+2C;AAG5B,SAFAA,EAAM,IAAI/2C,GAAM,IAAI,GACpB4lE,IAAgBA,EAAc,qBAAqB5lE,CAAI,GAClDw6J,IAAS,GAAGA,IAAS50F,EAAc,QAAQ40F,KAAU;AACxD,UAAIxmI,IAAO4xC,EAAc40F,CAAM;AAC/B,UACE,EACExmI,EAAKqiG,EAAuB,KAC5BriG,EAAK8hG,EAAmB,KACZ91H,MAAX,UAAoCg0B,EAAK,aAAa,KAAK,MAAxC,iBAEWA,EAAK,iBAAtC,8BACA;AACA,YAAIymI,IAAUzmI,EAAK,aAAaumI,CAAY,KAAK;AACjD,QAAAE,IAAUz6J,IAAOy6J;AACjB,YAAI5+I,IAAWk7B,EAAM,IAAI0jH,CAAO;AAChC,QAAA5+I,IAAWA,EAAS,KAAKmY,CAAI,IAAI+iB,EAAM,IAAI0jH,GAAS,CAACzmI,CAAI,CAAC;AAAA,MAChE;AAAA,IACA;AACE,WAAO+iB;AAAA,EACT;AACA,WAASswG,GAAeJ,GAAejnJ,GAAMshD,GAAU;AACrD,IAAA2lG,IAAgBA,EAAc,iBAAiBA,GAC/CA,EAAc,KAAK;AAAA,MACjB3lG;AAAA,MACYthD,MAAZ,UAAmBinJ,EAAc,cAAc,cAAc,IAAI;AAAA;EAErE;AACA,WAASziB,GAAoBxkI,GAAMqQ,GAAO08E,GAAa;AACrD,QAAUA,MAAN,KAA6B18E,EAAM,YAAd,KAAwB,QAAO;AACxD,YAAQrQ,GAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,YACe,OAAOqQ,EAAM,cAA1B,YACa,OAAOA,EAAM,QAA1B,YACOA,EAAM,SAAb;AAEA;AACF,eAAO;AAAA,MACT,KAAK;AACH,YACe,OAAOA,EAAM,OAA1B,YACa,OAAOA,EAAM,QAA1B,YACOA,EAAM,SAAb,MACAA,EAAM,UACNA,EAAM;AAEN;AACF,gBAAQA,EAAM,KAAG;AAAA,UACf,KAAK;AACH,mBACGrQ,IAAOqQ,EAAM,UACD,OAAOA,EAAM,cAA1B,YAAgDrQ,KAAR;AAAA,UAE5C;AACE,mBAAO;AAAA,QACjB;AAAA,MACI,KAAK;AACH,YACEqQ,EAAM,SACS,OAAOA,EAAM,SAA5B,cACa,OAAOA,EAAM,SAA1B,YACA,CAACA,EAAM,UACP,CAACA,EAAM,WACPA,EAAM,OACO,OAAOA,EAAM,OAA1B;AAEA,iBAAO;AAAA,IACf;AACE,WAAO;AAAA,EACT;AACA,WAAS4wI,GAAgBD,GAAU;AACjC,WAAO,EAAiBA,EAAS,SAA1B,iBAAyCA,EAAS,MAAM,UAAU,OAAhC;AAAA,EAG3C;AACA,WAASuI,GAAgBxmI,GAAOkkI,GAAejG,GAAU3wI,GAAO;AAC9D,QACmB2wI,EAAS,SAA1B,iBACc,OAAO3wI,EAAM,SAA1B,YACQ,WAAWA,EAAM,KAAK,EAAE,YAA/B,QACK2wI,EAAS,MAAM,UAAU,OAAhC,GACA;AACA,UAAaA,EAAS,aAAlB,MAA4B;AAC9B,YAAI7gJ,IAAMg5J,GAAY9oJ,EAAM,IAAI,GAC9BixC,IAAW2lG,EAAc;AAAA,UACvBoS,GAA6Bl5J,CAAG;AAAA;AAEpC,YAAImhD,GAAU;AACZ,UAAA2lG,IAAgB3lG,EAAS,IAChB2lG,MAAT,QACe,OAAOA,KAApB,YACe,OAAOA,EAAc,QAApC,eACClkI,EAAM,SACNA,IAAQ23I,GAAY,KAAK33I,CAAK,GAC/BkkI,EAAc,KAAKlkI,GAAOA,CAAK,IACjCi+H,EAAS,MAAM,WAAW,GAC1BA,EAAS,WAAW1/F,GACpBw1E,GAAoBx1E,CAAQ;AAC5B;AAAA,QACR;AACM,QAAAA,IAAW2lG,EAAc,iBAAiBA,GAC1C52I,IAAQ0pJ,GAA4B1pJ,CAAK,IACxClQ,IAAM43J,GAAgB,IAAI53J,CAAG,MAC5Bo5J,GAA+BlpJ,GAAOlQ,CAAG,GAC3CmhD,IAAWA,EAAS,cAAc,MAAM,GACxCw1E,GAAoBx1E,CAAQ;AAC5B,YAAI64G,IAAe74G;AACnB,QAAA64G,EAAa,KAAK,IAAI,QAAQ,SAAUlkJ,GAASC,GAAQ;AACvD,UAAAikJ,EAAa,SAASlkJ,GACtBkkJ,EAAa,UAAUjkJ;AAAA,QAC/B,CAAO,GACDsqI,GAAqBl/F,GAAU,QAAQjxC,CAAK,GAC5C2wI,EAAS,WAAW1/F;AAAA,MAC1B;AACI,MAASv+B,EAAM,gBAAf,SAA+BA,EAAM,cAAc,oBAAI,QACvDA,EAAM,YAAY,IAAIi+H,GAAUiG,CAAa,IAC5CA,IAAgBjG,EAAS,MAAM,aACvBA,EAAS,MAAM,UAAU,OAAhC,MACCj+H,EAAM,SACNi+H,IAAW0Z,GAAY,KAAK33I,CAAK,GAClCkkI,EAAc,iBAAiB,QAAQjG,CAAQ,GAC/CiG,EAAc,iBAAiB,SAASjG,CAAQ;AAAA,IACtD;AAAA,EACA;AACA,MAAI2Z,KAA4B;AAChC,WAAShO,GAAuB5pI,GAAO2pI,GAAe;AACpD,WAAA3pI,EAAM,eACEA,EAAM,UAAZ,KACA63I,GAA2B73I,GAAOA,EAAM,WAAW,GAC9C,IAAIA,EAAM,SAAS,IAAIA,EAAM,WAChC,SAAU83I,GAAQ;AAChB,UAAIC,IAAkB,WAAW,WAAY;AAG3C,YAFA/3I,EAAM,eACJ63I,GAA2B73I,GAAOA,EAAM,WAAW,GACjDA,EAAM,WAAW;AACnB,cAAIg4I,IAAYh4I,EAAM;AACtB,UAAAA,EAAM,YAAY,MAClBg4I,EAAS;AAAA,QACrB;AAAA,MACA,GAAW,MAAMrO,CAAa;AACtB,UAAI3pI,EAAM,YACF43I,OAAN,MACCA,KAA4B,QAAQnE;AACvC,UAAIwE,IAAW;AAAA,QACb,WAAY;AAEV,cADAj4I,EAAM,mBAAmB,IAEjBA,EAAM,UAAZ,MACCA,EAAM,eACL63I,GAA2B73I,GAAOA,EAAM,WAAW,GACrDA,EAAM,YACN;AACA,gBAAIg4I,IAAYh4I,EAAM;AACtB,YAAAA,EAAM,YAAY,MAClBg4I,EAAS;AAAA,UACvB;AAAA,QACA;AAAA,SACWh4I,EAAM,WAAW43I,KAA4B,KAAK,OACjDjO;AAAA;AAEJ,aAAA3pI,EAAM,YAAY83I,GACX,WAAY;AACjB,QAAA93I,EAAM,YAAY,MAClB,aAAa+3I,CAAe,GAC5B,aAAaE,CAAQ;AAAA,MAC/B;AAAA,IACA,IACM;AAAA,EACN;AACA,WAASN,KAAc;AAErB,QADA,KAAK,SACK,KAAK,UAAX,MAA2B,KAAK,aAAX,KAAuB,CAAC,KAAK;AACpD,UAAI,KAAK,YAAa,CAAAE,GAA2B,MAAM,KAAK,WAAW;AAAA,eAC9D,KAAK,WAAW;AACvB,YAAIG,IAAY,KAAK;AACrB,aAAK,YAAY,MACjBA,EAAS;AAAA,MACf;AAAA;AAAA,EACA;AACA,MAAIE,KAAoB;AACxB,WAASL,GAA2B73I,GAAO8zG,GAAW;AACpD,IAAA9zG,EAAM,cAAc,MACXA,EAAM,cAAf,SACGA,EAAM,SACNk4I,KAAoB,oBAAI,IAAG,GAC5BpkC,EAAU,QAAQqkC,IAA0Bn4I,CAAK,GAChDk4I,KAAoB,MACrBP,GAAY,KAAK33I,CAAK;AAAA,EAC1B;AACA,WAASm4I,GAAyBjlE,GAAM+qD,GAAU;AAChD,QAAI,EAAEA,EAAS,MAAM,UAAU,IAAI;AACjC,UAAIma,IAAcF,GAAkB,IAAIhlE,CAAI;AAC5C,UAAIklE,EAAa,KAAIz2C,IAAOy2C,EAAY,IAAI,IAAI;AAAA,WAC3C;AACH,QAAAA,IAAc,oBAAI,IAAG,GACrBF,GAAkB,IAAIhlE,GAAMklE,CAAW;AACvC,iBACMt8I,IAAQo3E,EAAK;AAAA,UACb;AAAA,WAEFx0F,IAAI,GACNA,IAAIod,EAAM,QACVpd,KACA;AACA,cAAIuyB,IAAOnV,EAAMpd,CAAC;AAClB,WACauyB,EAAK,aAAhB,UACcA,EAAK,aAAa,OAAO,MAAvC,eAEAmnI,EAAY,IAAInnI,EAAK,QAAQ,YAAYA,CAAI,GAAI0wF,IAAO1wF;AAAA,QAClE;AACM,QAAA0wF,KAAQy2C,EAAY,IAAI,MAAMz2C,CAAI;AAAA,MACxC;AACI,MAAA7lG,IAAQmiI,EAAS,UACjBhtH,IAAOnV,EAAM,aAAa,iBAAiB,GAC3Cpd,IAAI05J,EAAY,IAAInnI,CAAI,KAAK0wF,GAC7BjjH,MAAMijH,KAAQy2C,EAAY,IAAI,MAAMt8I,CAAK,GACzCs8I,EAAY,IAAInnI,GAAMnV,CAAK,GAC3B,KAAK,SACL6lG,IAAOg2C,GAAY,KAAK,IAAI,GAC5B77I,EAAM,iBAAiB,QAAQ6lG,CAAI,GACnC7lG,EAAM,iBAAiB,SAAS6lG,CAAI,GACpCjjH,IACIA,EAAE,WAAW,aAAaod,GAAOpd,EAAE,WAAW,KAC5Cw0F,IAAaA,EAAK,aAAX,IAAsBA,EAAK,OAAOA,GAC3CA,EAAK,aAAap3E,GAAOo3E,EAAK,UAAU,IAC5C+qD,EAAS,MAAM,WAAW;AAAA,IAC9B;AAAA,EACA;AACA,MAAIhxB,KAAwB;AAAA,IAC1B,UAAUxgH;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,eAAey/G;AAAA,IACf,gBAAgBA;AAAA,IAChB,cAAc;AAAA;AAEhB,WAASmsC,GACPl6F,GACAzwB,GACA4qH,GACAhhB,GACAoB,GACAG,GACAgU,GACA0L,GACAC,GACA;AACA,SAAK,MAAM,GACX,KAAK,gBAAgBr6F,GACrB,KAAK,YAAY,KAAK,UAAU,KAAK,kBAAkB,MACvD,KAAK,gBAAgB,IACrB,KAAK,eACH,KAAK,OACL,KAAK,iBACL,KAAK,UACL,KAAK,sBACH,MACJ,KAAK,mBAAmB,GACxB,KAAK,kBAAkB2yD,GAAc,EAAE,GACvC,KAAK,iBACH,KAAK,sBACL,KAAK,6BACL,KAAK,eACL,KAAK,YACL,KAAK,cACL,KAAK,iBACL,KAAK,eACH,GACJ,KAAK,gBAAgBA,GAAc,CAAC,GACpC,KAAK,gBAAgBA,GAAc,IAAI,GACvC,KAAK,mBAAmBwmB,GACxB,KAAK,kBAAkBoB,GACvB,KAAK,gBAAgBG,GACrB,KAAK,qBAAqBgU,GAC1B,KAAK,cAAc,MACnB,KAAK,mBAAmB,GACxB,KAAK,YAAY2L,GACjB,KAAK,wBAAwB,oBAAI,IAAG;AAAA,EACtC;AACA,WAASC,GACPt6F,GACAzwB,GACA4qH,GACAI,GACAC,GACAC,GACAthB,GACAkhB,GACA9f,GACAG,IACAgU,IACA0L,IACA;AACA,WAAAp6F,IAAgB,IAAIk6F;AAAA,MAClBl6F;AAAA,MACAzwB;AAAA,MACA4qH;AAAA,MACAhhB;AAAA,MACAoB;AAAA,MACAG;AAAA,MACAgU;AAAA,MACA0L;AAAA,MACAC;AAAA,OAEF9qH,IAAM,GACCkrH,MAAP,OAAwBlrH,KAAO,KAC/BkrH,IAAez3B,GAAqB,GAAG,MAAM,MAAMzzF,CAAG,GACtDywB,EAAc,UAAUy6F,GACxBA,EAAa,YAAYz6F,GACzBzwB,IAAM64F,GAAW,GACjB74F,EAAI,YACJywB,EAAc,cAAczwB,GAC5BA,EAAI,YACJkrH,EAAa,gBAAgB;AAAA,MAC3B,SAASF;AAAA,MACT,cAAcJ;AAAA,MACd,OAAO5qH;AAAA,OAETg+F,GAAsBktB,CAAY,GAC3Bz6F;AAAA,EACT;AACA,WAAS06F,GAAqBC,GAAiB;AAC7C,WAAKA,KACLA,IAAkB93B,IACX83B,KAFsB93B;AAAA,EAG/B;AACA,WAAS+3B,GACP9L,GACAr8B,GACA/hH,GACA2vD,GACAs6F,GACAprJ,GACA;AACA,IAAAorJ,IAAkBD,GAAqBC,CAAe,GAC7Ct6F,EAAU,YAAnB,OACKA,EAAU,UAAUs6F,IACpBt6F,EAAU,iBAAiBs6F,GAChCt6F,IAAYotE,GAAahb,CAAI,GAC7BpyD,EAAU,UAAU,EAAE,SAAS3vD,EAAO,GACtCnB,IAAsBA,MAAX,SAAsB,OAAOA,GAC/BA,MAAT,SAAsB8wD,EAAU,WAAW9wD,IAC3CmB,IAAUg9H,GAAcohB,GAAWzuF,GAAWoyD,CAAI,GACzC/hH,MAAT,SACG0jI,GAAsB1jI,GAASo+I,GAAWr8B,CAAI,GAC/Cob,GAAoBn9H,GAASo+I,GAAWr8B,CAAI;AAAA,EAChD;AACA,WAASooC,GAAkBnuC,GAAO0iC,GAAW;AAE3C,QADA1iC,IAAQA,EAAM,eACDA,MAAT,QAA2BA,EAAM,eAAf,MAA2B;AAC/C,UAAItsH,IAAIssH,EAAM;AACd,MAAAA,EAAM,YAAkBtsH,MAAN,KAAWA,IAAIgvJ,IAAYhvJ,IAAIgvJ;AAAA,IACrD;AAAA,EACA;AACA,WAAS0L,GAA2BpuC,GAAO0iC,GAAW;AACpD,IAAAyL,GAAkBnuC,GAAO0iC,CAAS,IACjC1iC,IAAQA,EAAM,cAAcmuC,GAAkBnuC,GAAO0iC,CAAS;AAAA,EACjE;AACA,WAAS2L,GAA2BruC,GAAO;AACzC,QAAWA,EAAM,QAAb,MAA2BA,EAAM,QAAb,IAAkB;AACxC,UAAI33B,IAAO0tC,GAA+B/V,GAAO,QAAQ;AACzD,MAAS33B,MAAT,QAAiBq/C,GAAsBr/C,GAAM23B,GAAO,QAAQ,GAC5DouC,GAA2BpuC,GAAO,QAAQ;AAAA,IAC9C;AAAA,EACA;AACA,WAASsuC,GAAkCtuC,GAAO;AAChD,QAAWA,EAAM,QAAb,MAA2BA,EAAM,QAAb,IAAkB;AACxC,UAAI+F,IAAOslB,GAAiB;AAC5B,MAAAtlB,IAAO2B,GAAgC3B,CAAI;AAC3C,UAAI19B,IAAO0tC,GAA+B/V,GAAO+F,CAAI;AACrD,MAAS19B,MAAT,QAAiBq/C,GAAsBr/C,GAAM23B,GAAO+F,CAAI,GACxDqoC,GAA2BpuC,GAAO+F,CAAI;AAAA,IAC1C;AAAA,EACA;AACA,MAAI4wB,KAAW;AACf,WAASiP,GACPt0B,GACAwzB,GACAnxF,GACAU,GACA;AACA,QAAIpuD,IAAiB/C,EAAqB;AAC1C,IAAAA,EAAqB,IAAI;AACzB,QAAI8kH,IAAmB5G,EAAwB;AAC/C,QAAI;AACF,MAACA,EAAwB,IAAI,GAC3B0kC,GAAcx0B,GAAcwzB,GAAkBnxF,GAAWU,CAAW;AAAA,IAC1E,UAAG;AACC,MAAC+sD,EAAwB,IAAI4G,GAC1B9kH,EAAqB,IAAI+C;AAAA,IAChC;AAAA,EACA;AACA,WAAS4/I,GACPv0B,GACAwzB,GACAnxF,GACAU,GACA;AACA,QAAIpuD,IAAiB/C,EAAqB;AAC1C,IAAAA,EAAqB,IAAI;AACzB,QAAI8kH,IAAmB5G,EAAwB;AAC/C,QAAI;AACF,MAACA,EAAwB,IAAI,GAC3B0kC,GAAcx0B,GAAcwzB,GAAkBnxF,GAAWU,CAAW;AAAA,IAC1E,UAAG;AACC,MAAC+sD,EAAwB,IAAI4G,GAC1B9kH,EAAqB,IAAI+C;AAAA,IAChC;AAAA,EACA;AACA,WAAS6/I,GACPx0B,GACAwzB,GACAY,GACArxF,GACA;AACA,QAAIsiF,IAAU;AACZ,UAAI4X,IAAYC,GAA0Bn6F,CAAW;AACrD,UAAak6F,MAAT;AACF,QAAAxI;AAAA,UACEz0B;AAAA,UACAwzB;AAAA,UACAzwF;AAAA,UACAo6F;AAAA,UACA/I;AAAA,WAEAgJ,GAAuBp9B,GAAcj9D,CAAW;AAAA,eAElDs6F;AAAA,QACEJ;AAAA,QACAj9B;AAAA,QACAwzB;AAAA,QACAY;AAAA,QACArxF;AAAA,MACR;AAEM,QAAAA,EAAY,gBAAe;AAAA,eAE1Bq6F,GAAuBp9B,GAAcj9D,CAAW,GACjDywF,IAAmB,KACjB,KAAK8J,GAAyB,QAAQt9B,CAAY,GACpD;AACA,eAAgBi9B,MAAT,QAAsB;AAC3B,cAAIvuC,IAAQ8I,GAAoBylC,CAAS;AACzC,cAAavuC,MAAT;AACF,oBAAQA,EAAM,KAAG;AAAA,cACf,KAAK;AAEH,oBADAA,IAAQA,EAAM,WACVA,EAAM,QAAQ,cAAc,cAAc;AAC5C,sBAAIkF,IAAQD,GAAwBjF,EAAM,YAAY;AACtD,sBAAUkF,MAAN,GAAa;AACf,wBAAI78B,IAAO23B;AAEX,yBADA33B,EAAK,gBAAgB,GAChBA,EAAK,kBAAkB,GAAG68B,KAAS;AACtC,0BAAIa,IAAO,KAAM,KAAKrB,GAAMQ,CAAK;AACjC,sBAAA78B,EAAK,cAAc,CAAC,KAAK09B,GACzBb,KAAS,CAACa;AAAA,oBAC9B;AACkB,oBAAA43B,GAAsB39B,CAAK,IACpBkhB,KAAmB,OAA1B,MACIoT,KAAqCzwB,GAAG,IAAK,KAC/Cu7B,GAA8B,CAAK;AAAA,kBACvD;AAAA,gBACA;AACc;AAAA,cACF,KAAK;AAAA,cACL,KAAK;AACH,gBAAC/2D,IAAO0tC,GAA+B/V,GAAO,CAAC,GACpC33B,MAAT,QAAiBq/C,GAAsBr/C,GAAM23B,GAAO,CAAC,GACrDkN,GAAe,GACfkhC,GAA2BpuC,GAAO,CAAC;AAAA,YACnD;AAUQ,cATAA,IAAQwuC,GAA0Bn6F,CAAW,GACpC2rD,MAAT,QACE+lC;AAAA,YACEz0B;AAAA,YACAwzB;AAAA,YACAzwF;AAAA,YACAo6F;AAAA,YACA/I;AAAA,aAEA1lC,MAAUuuC,EAAW;AACzB,UAAAA,IAAYvuC;AAAA,QACpB;AACM,QAASuuC,MAAT,QAAsBl6F,EAAY,gBAAe;AAAA,MACvD;AACM,QAAA0xF;AAAA,UACEz0B;AAAA,UACAwzB;AAAA,UACAzwF;AAAA,UACA;AAAA,UACAqxF;AAAA;IAER;AAAA,EACA;AACA,WAAS8I,GAA0Bn6F,GAAa;AAC9C,WAAAA,IAAcq4D,GAAer4D,CAAW,GACjCw6F,GAA2Bx6F,CAAW;AAAA,EAC/C;AACA,MAAIo6F,KAAoB;AACxB,WAASI,GAA2Bp8G,GAAY;AAG9C,QAFAg8G,KAAoB,MACpBh8G,IAAak2E,GAA2Bl2E,CAAU,GACrCA,MAAT,MAAqB;AACvB,UAAIwtE,IAAiBF,EAAuBttE,CAAU;AACtD,UAAawtE,MAAT,KAAyB,CAAAxtE,IAAa;AAAA,WACrC;AACH,YAAI5P,IAAMo9E,EAAe;AACzB,YAAWp9E,MAAP,IAAY;AAEd,cADA4P,IAAaytE,EAA6BD,CAAc,GAC3CxtE,MAAT,KAAqB,QAAOA;AAChC,UAAAA,IAAa;AAAA,QACrB,WAAwB5P,MAAP,IAAY;AAErB,cADA4P,IAAa2tE,EAA6BH,CAAc,GAC3CxtE,MAAT,KAAqB,QAAOA;AAChC,UAAAA,IAAa;AAAA,QACrB,WAAuB5P,MAAN,GAAW;AACpB,cAAIo9E,EAAe,UAAU,QAAQ,cAAc;AACjD,mBAAaA,EAAe,QAArB,IACHA,EAAe,UAAU,gBACzB;AACN,UAAAxtE,IAAa;AAAA,QACrB,MAAa,CAAAwtE,MAAmBxtE,MAAeA,IAAa;AAAA,MAC5D;AAAA,IACA;AACE,WAAAg8G,KAAoBh8G,GACb;AAAA,EACT;AACA,WAASq1E,GAAiBwJ,GAAc;AACtC,YAAQA,GAAY;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,gBAAQxN,GAAuB,GAAE;AAAA,UAC/B,KAAKC;AACH,mBAAO;AAAA,UACT,KAAKC;AACH,mBAAO;AAAA,UACT,KAAKC;AAAA,UACL,KAAKC;AACH,mBAAO;AAAA,UACT,KAAKC;AACH,mBAAO;AAAA,UACT;AACE,mBAAO;AAAA,QACjB;AAAA,MACI;AACE,eAAO;AAAA,IACb;AAAA,EACA;AACA,MAAI2qC,KAA4B,IAC9BC,KAAc,MACdC,KAAa,MACbC,KAAc,MACdC,KAAiB,oBAAI,IAAG,GACxBC,KAAwB,oBAAI,IAAG,GAC/BC,KAAiC,CAAA,GACjCR,KACE,sPAAsP;AAAA,IACpP;AAAA;AAEN,WAASF,GAAuBp9B,GAAcj9D,GAAa;AACzD,YAAQi9D,GAAY;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AACH,QAAAy9B,KAAc;AACd;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAC,KAAa;AACb;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAC,KAAc;AACd;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAC,GAAe,OAAO76F,EAAY,SAAS;AAC3C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA86F,GAAsB,OAAO96F,EAAY,SAAS;AAAA,IACxD;AAAA,EACA;AACA,WAASg7F,GACPC,GACAf,GACAj9B,GACAwzB,GACAY,GACArxF,GACA;AACA,WACWi7F,MAAT,QACAA,EAAoB,gBAAgBj7F,KAGjCi7F,IAAsB;AAAA,MACrB,WAAWf;AAAA,MACX,cAAcj9B;AAAA,MACd,kBAAkBwzB;AAAA,MAClB,aAAazwF;AAAA,MACb,kBAAkB,CAACqxF,CAAe;AAAA,OAE3B6I,MAAT,SACIA,IAAYzlC,GAAoBylC,CAAS,GAClCA,MAAT,QAAsBF,GAA2BE,CAAS,IAC5De,MAEJA,EAAoB,oBAAoBxK,GACxCyJ,IAAYe,EAAoB,kBACvB5J,MAAT,QACS6I,EAAU,QAAQ7I,CAAe,MAAxC,MACA6I,EAAU,KAAK7I,CAAe,GACzB4J;AAAA,EACT;AACA,WAASX,GACPJ,GACAj9B,GACAwzB,GACAY,GACArxF,GACA;AACA,YAAQi9D,GAAY;AAAA,MAClB,KAAK;AACH,eACGy9B,KAAcM;AAAA,UACbN;AAAA,UACAR;AAAA,UACAj9B;AAAA,UACAwzB;AAAA,UACAY;AAAA,UACArxF;AAAA,WAEF;AAAA,MAEJ,KAAK;AACH,eACG26F,KAAaK;AAAA,UACZL;AAAA,UACAT;AAAA,UACAj9B;AAAA,UACAwzB;AAAA,UACAY;AAAA,UACArxF;AAAA,WAEF;AAAA,MAEJ,KAAK;AACH,eACG46F,KAAcI;AAAA,UACbJ;AAAA,UACAV;AAAA,UACAj9B;AAAA,UACAwzB;AAAA,UACAY;AAAA,UACArxF;AAAA,WAEF;AAAA,MAEJ,KAAK;AACH,YAAIk7F,IAAYl7F,EAAY;AAC5B,eAAA66F,GAAe;AAAA,UACbK;AAAA,UACAF;AAAA,YACEH,GAAe,IAAIK,CAAS,KAAK;AAAA,YACjChB;AAAA,YACAj9B;AAAA,YACAwzB;AAAA,YACAY;AAAA,YACArxF;AAAA,UACV;AAAA,WAEa;AAAA,MACT,KAAK;AACH,eACGk7F,IAAYl7F,EAAY,WACzB86F,GAAsB;AAAA,UACpBI;AAAA,UACAF;AAAA,YACEF,GAAsB,IAAII,CAAS,KAAK;AAAA,YACxChB;AAAA,YACAj9B;AAAA,YACAwzB;AAAA,YACAY;AAAA,YACArxF;AAAA,UACZ;AAAA,WAEQ;AAAA,IAER;AACE,WAAO;AAAA,EACT;AACA,WAASm7F,GAA+BC,GAAc;AACpD,QAAI7mC,IAAaD,GAA2B8mC,EAAa,MAAM;AAC/D,QAAa7mC,MAAT,MAAqB;AACvB,UAAI3I,IAAiBF,EAAuB6I,CAAU;AACtD,UAAa3I,MAAT;AACF,YAAM2I,IAAa3I,EAAe,KAAa2I,MAAP;AACtC,cACIA,IAAa1I,EAA6BD,CAAc,GACjD2I,MAAT,MACA;AACA,YAAA6mC,EAAa,YAAY7mC,GACzBb,GAAgB0nC,EAAa,UAAU,WAAY;AACjD,cAAAnB,GAAkCruC,CAAc;AAAA,YAC5D,CAAW;AACD;AAAA,UACV;AAAA,mBACwB2I,MAAP;AACT,cACIA,IAAaxI,EAA6BH,CAAc,GACjD2I,MAAT,MACA;AACA,YAAA6mC,EAAa,YAAY7mC,GACzBb,GAAgB0nC,EAAa,UAAU,WAAY;AACjD,cAAAnB,GAAkCruC,CAAc;AAAA,YAC5D,CAAW;AACD;AAAA,UACV;AAAA,mBAEc2I,MAAN,KACA3I,EAAe,UAAU,QAAQ,cAAc,cAC/C;AACA,UAAAwvC,EAAa,YACLxvC,EAAe,QAArB,IACIA,EAAe,UAAU,gBACzB;AACN;AAAA,QACR;AAAA;AAAA,IACA;AACE,IAAAwvC,EAAa,YAAY;AAAA,EAC3B;AACA,WAASC,GAAmCC,GAAa;AACvD,QAAaA,EAAY,cAArB,KAAgC,QAAO;AAC3C,aACMC,IAAmBD,EAAY,kBACnC,IAAIC,EAAiB,UAErB;AACA,UAAIC,IAAgBrB,GAA0BmB,EAAY,WAAW;AACrE,UAAaE,MAAT,MAAwB;AAC1B,QAAAA,IAAgBF,EAAY;AAC5B,YAAIG,IAAmB,IAAID,EAAc;AAAA,UACvCA,EAAc;AAAA,UACdA;AAAA;AAEF,QAAApjC,KAAwBqjC,GACxBD,EAAc,OAAO,cAAcC,CAAgB,GACnDrjC,KAAwB;AAAA,MAC9B;AACM,eACGmjC,IAAmB9mC,GAAoB+mC,CAAa,GAC5CD,MAAT,QACEvB,GAA2BuB,CAAgB,GAC5CD,EAAY,YAAYE,GACzB;AAEJ,MAAAD,EAAiB,MAAK;AAAA,IAC1B;AACE,WAAO;AAAA,EACT;AACA,WAASG,GAAwCJ,GAAap9J,GAAK0uF,GAAK;AACtE,IAAAyuE,GAAmCC,CAAW,KAAK1uE,EAAI,OAAO1uF,CAAG;AAAA,EACnE;AACA,WAASy9J,KAAwB;AAC/B,IAAAlB,KAA4B,IACnBC,OAAT,QACEW,GAAmCX,EAAW,MAC7CA,KAAc,OACRC,OAAT,QACEU,GAAmCV,EAAU,MAC5CA,KAAa,OACPC,OAAT,QACES,GAAmCT,EAAW,MAC7CA,KAAc,OACjBC,GAAe,QAAQa,EAAuC,GAC9DZ,GAAsB,QAAQY,EAAuC;AAAA,EACvE;AACA,WAASE,GAA4BN,GAAaO,GAAW;AAC3D,IAAAP,EAAY,cAAcO,MACtBP,EAAY,YAAY,MAC1Bb,OACIA,KAA4B,IAC9BpvC,EAAU;AAAA,MACRA,EAAU;AAAA,MACVswC;AAAA,IACR;AAAA,EACA;AACA,MAAIG,KAA2B;AAC/B,WAASC,GAA4BC,GAAoB;AACvD,IAAAF,OAA6BE,MACzBF,KAA2BE,GAC7B3wC,EAAU;AAAA,MACRA,EAAU;AAAA,MACV,WAAY;AACV,QAAAywC,OAA6BE,MAC1BF,KAA2B;AAC9B,iBAASt8J,IAAI,GAAGA,IAAIw8J,EAAmB,QAAQx8J,KAAK,GAAG;AACrD,cAAIogE,IAAOo8F,EAAmBx8J,CAAC,GAC7By8J,IAAoBD,EAAmBx8J,IAAI,CAAC,GAC5C23I,IAAW6kB,EAAmBx8J,IAAI,CAAC;AACrC,cAAmB,OAAOy8J,KAAtB,YACF;AAAA,gBAAazB,GAA2ByB,KAAqBr8F,CAAI,MAA7D;AACF;AACG;AAAA;AACP,cAAIg3F,IAAWniC,GAAoB70D,CAAI;AACvC,UAASg3F,MAAT,SACGoF,EAAmB,OAAOx8J,GAAG,CAAC,GAC9BA,KAAK,GACNy3I;AAAA,YACE2f;AAAA,YACA;AAAA,cACE,SAAS;AAAA,cACT,MAAMzf;AAAA,cACN,QAAQv3E,EAAK;AAAA,cACb,QAAQq8F;AAAA;YAEVA;AAAA,YACA9kB;AAAA,UACd;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA,WAAS+M,GAAiB2X,GAAW;AACnC,aAASK,EAAQZ,GAAa;AAC5B,aAAOM,GAA4BN,GAAaO,CAAS;AAAA,IAC7D;AACE,IAASnB,OAAT,QAAwBkB,GAA4BlB,IAAamB,CAAS,GACjElB,OAAT,QAAuBiB,GAA4BjB,IAAYkB,CAAS,GAC/DjB,OAAT,QAAwBgB,GAA4BhB,IAAaiB,CAAS,GAC1EhB,GAAe,QAAQqB,CAAO,GAC9BpB,GAAsB,QAAQoB,CAAO;AACrC,aAAS18J,IAAI,GAAGA,IAAIu7J,GAA+B,QAAQv7J,KAAK;AAC9D,UAAI47J,IAAeL,GAA+Bv7J,CAAC;AACnD,MAAA47J,EAAa,cAAcS,MAAcT,EAAa,YAAY;AAAA,IACtE;AACE,WAEE,IAAIL,GAA+B,WACjCv7J,IAAIu7J,GAA+B,CAAC,GAAav7J,EAAE,cAAX;AAG1C,MAAA27J,GAA+B37J,CAAC,GACrBA,EAAE,cAAX,QAAwBu7J,GAA+B,MAAK;AAEhE,QADAv7J,KAAKq8J,EAAU,iBAAiBA,GAAW,mBAC/Br8J,KAAR;AACF,WAAK47J,IAAe,GAAGA,IAAe57J,EAAE,QAAQ47J,KAAgB,GAAG;AACjE,YAAIx7F,IAAOpgE,EAAE47J,CAAY,GACvBa,IAAoBz8J,EAAE47J,IAAe,CAAC,GACtCe,IAAYv8F,EAAKk0D,EAAgB,KAAK;AACxC,YAAmB,OAAOmoC,KAAtB;AACF,UAAAE,KAAaJ,GAA4Bv8J,CAAC;AAAA,iBACnC28J,GAAW;AAClB,cAAIlqJ,IAAS;AACb,cAAIgqJ,KAAqBA,EAAkB,aAAa,YAAY;AAClE,gBACIr8F,IAAOq8F,GACRE,IAAYF,EAAkBnoC,EAAgB,KAAK;AAEpD,cAAA7hH,IAASkqJ,EAAU;AAAA,qBAEN3B,GAA2B56F,CAAI,MAAxC,KAA2C;AAAA,gBAE9C,CAAA3tD,IAASkqJ,EAAU;AACxB,UAAe,OAAOlqJ,KAAtB,aACKzS,EAAE47J,IAAe,CAAC,IAAInpJ,KACtBzS,EAAE,OAAO47J,GAAc,CAAC,GAAIA,KAAgB,IACjDW,GAA4Bv8J,CAAC;AAAA,QACrC;AAAA,MACA;AAAA,EACA;AACA,WAAS48J,KAAsC;AAC7C,aAASC,EAAerrJ,GAAO;AAC7B,MAAAA,EAAM,gBACmBA,EAAM,SAA7B,sBACAA,EAAM,UAAU;AAAA,QACd,SAAS,WAAY;AACnB,iBAAO,IAAI,QAAQ,SAAUgD,GAAS;AACpC,mBAAQsoJ,IAAiBtoJ;AAAA,UACrC,CAAW;AAAA,QACX;AAAA,QACQ,YAAY;AAAA,QACZ,QAAQ;AAAA,MAChB,CAAO;AAAA,IACP;AACE,aAASuoJ,IAAyB;AAChC,MAASD,MAAT,SAA4BA,EAAc,GAAKA,IAAiB,OAChEE,KAAe,WAAWC,GAAqB,EAAE;AAAA,IACrD;AACE,aAASA,IAAsB;AAC7B,UAAI,CAACD,KAAe,CAAC,WAAW,YAAY;AAC1C,YAAIE,IAAe,WAAW;AAC9B,QAAAA,KACUA,EAAa,OAArB,QACA,WAAW,SAASA,EAAa,KAAK;AAAA,UACpC,OAAOA,EAAa,SAAQ;AAAA,UAC5B,MAAM;AAAA,UACN,SAAS;AAAA,QACnB,CAAS;AAAA,MACT;AAAA,IACA;AACE,QAAiB,OAAO,cAApB,UAAgC;AAClC,UAAIF,IAAc,IAChBF,IAAiB;AACnB,wBAAW,iBAAiB,YAAYD,CAAc,GACtD,WAAW,iBAAiB,mBAAmBE,CAAsB,GACrE,WAAW,iBAAiB,iBAAiBA,CAAsB,GACnE,WAAWE,GAAqB,GAAG,GAC5B,WAAY;AACjB,QAAAD,IAAc,IACd,WAAW,oBAAoB,YAAYH,CAAc,GACzD,WAAW,oBAAoB,mBAAmBE,CAAsB,GACxE,WAAW,oBAAoB,iBAAiBA,CAAsB,GAC7DD,MAAT,SAA4BA,EAAc,GAAKA,IAAiB;AAAA,MACtE;AAAA,IACA;AAAA,EACA;AACA,WAASK,GAAaC,GAAc;AAClC,SAAK,gBAAgBA;AAAA,EACvB;AACA,EAAAC,GAAsB,UAAU,SAASF,GAAa,UAAU,SAC9D,SAAU3sJ,GAAU;AAClB,QAAIgkF,IAAO,KAAK;AAChB,QAAaA,MAAT,KAAe,OAAM,MAAMl1B,EAAuB,GAAG,CAAC;AAC1D,QAAIjlD,IAAUm6E,EAAK,SACjB09B,IAAOslB,GAAiB;AAC1B,IAAA6iB,GAAoBhgJ,GAAS63G,GAAM1hH,GAAUgkF,GAAM,MAAM,IAAI;AAAA,EACjE,GACA6oE,GAAsB,UAAU,UAAUF,GAAa,UAAU,UAC/D,WAAY;AACV,QAAI3oE,IAAO,KAAK;AAChB,QAAaA,MAAT,MAAe;AACjB,WAAK,gBAAgB;AACrB,UAAI10B,IAAY00B,EAAK;AACrB,MAAA6lE,GAAoB7lE,EAAK,SAAS,GAAG,MAAMA,GAAM,MAAM,IAAI,GAC3D6kC,GAAe,GACfv5D,EAAUy0D,EAA4B,IAAI;AAAA,IAChD;AAAA,EACA;AACA,WAAS8oC,GAAsBD,GAAc;AAC3C,SAAK,gBAAgBA;AAAA,EACvB;AACA,EAAAC,GAAsB,UAAU,6BAA6B,SAAU93J,GAAQ;AAC7E,QAAIA,GAAQ;AACV,UAAIyuH,IAAiBD,GAAqB;AAC1C,MAAAxuH,IAAS,EAAE,WAAW,MAAM,QAAQA,GAAQ,UAAUyuH,EAAc;AACpE,eACMh0H,IAAI,GACRA,IAAIu7J,GAA+B,UAC7BvnC,MAAN,KACAA,IAAiBunC,GAA+Bv7J,CAAC,EAAE,UACnDA,IACD;AACD,MAAAu7J,GAA+B,OAAOv7J,GAAG,GAAGuF,CAAM,GAC5CvF,MAAN,KAAW27J,GAA+Bp2J,CAAM;AAAA,IACpD;AAAA,EACA;AACA,MAAI+3J,KAAmDnpJ,EAAM;AAC7D,MAEEmpJ,OADA;AAGA,UAAM;AAAA,MACJh+F;AAAA,QACE;AAAA,QACAg+F;AAAA,QACA;AAAA,MACN;AAAA;AAEA,EAAA/vC,EAAwB,cAAc,SAAUgwC,GAAoB;AAClE,QAAIpxC,IAAQoxC,EAAmB;AAC/B,QAAepxC,MAAX;AACF,YAAmB,OAAOoxC,EAAmB,UAAzC,aACI,MAAMj+F,EAAuB,GAAG,CAAC,KACzCi+F,IAAqB,OAAO,KAAKA,CAAkB,EAAE,KAAK,GAAG,GACvD,MAAMj+F,EAAuB,KAAKi+F,CAAkB,CAAC;AAE7D,WAAAA,IAAqB7wC,EAA8BP,CAAK,GACxDoxC,IACWA,MAAT,OACIvwC,EAAyBuwC,CAAkB,IAC3C,MACNA,IACWA,MAAT,OAA8B,OAAOA,EAAmB,WACnDA;AAAA,EACT;AACA,MAAIC,KAA+B;AAAA,IACjC,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,qBAAqB;AAAA,IACrB,sBAAsBnuJ;AAAA,IACtB,mBAAmB;AAAA;AAErB,MAAoB,OAAO,iCAAvB,KAAuD;AACzD,QAAIouJ,KAA0B;AAC9B,QACE,CAACA,GAAwB,cACzBA,GAAwB;AAExB,UAAI;AACF,QAAChtC,KAAagtC,GAAwB;AAAA,UACpCD;AAAA,WAEC9sC,KAAe+sC;AAAA,MACxB,QAAkB;AAAA,MAAA;AAAA,EAClB;AACA,SAAAC,GAAA,aAAqB,SAAU59F,GAAWj1D,GAAS;AACjD,QAAI,CAACohH,EAAiBnsD,CAAS,EAAG,OAAM,MAAMR,EAAuB,GAAG,CAAC;AACzE,QAAI46F,IAAe,IACjBthB,IAAmB,IACnBoB,IAAkBL,IAClBQ,IAAgBP,IAChBuU,IAAqBtU;AACvB,WAAShvI,KAAT,SAEUA,EAAQ,wBAAf,OAAuCqvJ,IAAe,KAC5CrvJ,EAAQ,qBAAnB,WACG+tI,IAAmB/tI,EAAQ,mBACnBA,EAAQ,oBAAnB,WACGmvI,IAAkBnvI,EAAQ,kBAClBA,EAAQ,kBAAnB,WAAqCsvI,IAAgBtvI,EAAQ,gBAClDA,EAAQ,uBAAnB,WACGsjJ,IAAqBtjJ,EAAQ,sBAClCA,IAAUkvJ;AAAA,MACRj6F;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAo6F;AAAA,MACAthB;AAAA,MACA;AAAA,MACAoB;AAAA,MACAG;AAAA,MACAgU;AAAA,MACAyO;AAAA,OAEF98F,EAAUy0D,EAA4B,IAAI1pH,EAAQ,SAClD21I,GAA2B1gF,CAAS,GAC7B,IAAIq9F,GAAatyJ,CAAO;AAAA,EACjC,GACA6yJ,GAAA,cAAsB,SAAU59F,GAAWk6F,GAAiBnvJ,GAAS;AACnE,QAAI,CAACohH,EAAiBnsD,CAAS,EAAG,OAAM,MAAMR,EAAuB,GAAG,CAAC;AACzE,QAAI46F,IAAe,IACjBthB,IAAmB,IACnBoB,IAAkBL,IAClBQ,IAAgBP,IAChBuU,IAAqBtU,IACrBigB,IAAY;AACd,WAASjvJ,KAAT,SAEUA,EAAQ,wBAAf,OAAuCqvJ,IAAe,KAC5CrvJ,EAAQ,qBAAnB,WACG+tI,IAAmB/tI,EAAQ,mBACnBA,EAAQ,oBAAnB,WACGmvI,IAAkBnvI,EAAQ,kBAClBA,EAAQ,kBAAnB,WAAqCsvI,IAAgBtvI,EAAQ,gBAClDA,EAAQ,uBAAnB,WACGsjJ,IAAqBtjJ,EAAQ,qBACrBA,EAAQ,cAAnB,WAAiCivJ,IAAYjvJ,EAAQ,aACvDmvJ,IAAkBD;AAAA,MAChBj6F;AAAA,MACA;AAAA,MACA;AAAA,MACAk6F;AAAA,MACQnvJ,KAAoB;AAAA,MAC5BqvJ;AAAA,MACAthB;AAAA,MACAkhB;AAAA,MACA9f;AAAA,MACAG;AAAA,MACAgU;AAAA,MACAyO;AAAA,OAEF5C,EAAgB,UAAUG,GAAqB,IAAI,GACnDtvJ,IAAUmvJ,EAAgB,SAC1BE,IAAe1iB,GAAiB,GAChC0iB,IAAermC,GAAgCqmC,CAAY,GAC3DthB,IAAmB1L,GAAagtB,CAAY,GAC5CthB,EAAiB,WAAW,MAC5BzL,GAActiI,GAAS+tI,GAAkBshB,CAAY,GACrDrvJ,IAAUqvJ,GACVF,EAAgB,QAAQ,QAAQnvJ,GAChC0nH,GAAkBynC,GAAiBnvJ,CAAO,GAC1Ci/I,GAAsBkQ,CAAe,GACrCl6F,EAAUy0D,EAA4B,IAAIylC,EAAgB,SAC1DxZ,GAA2B1gF,CAAS,GAC7B,IAAIu9F,GAAsBrD,CAAe;AAAA,EAClD,GACA0D,GAAA,UAAkB;;;;;;AC9qflB,WAASr9F,IAAW;AAElB,QACE,SAAO,iCAAmC,OAC1C,OAAO,+BAA+B,YAAa;AAcrD,UAAI;AAEF,uCAA+B,SAASA,CAAQ;AAAA,MAAA,SACzCn7D,GAAK;AAGZ,gBAAQ,MAAMA,CAAG;AAAA,MAAA;AAAA,EAErB;AAKE,SAAAm7D,EAAA,GACAs9F,GAAA,UAAiB7+J,GAAA;;;ACpBZ,MAAM8+J,KAAwBC,KAAwB,GAWhDC,KAA0B,IAI1BC,KAAmC,IACnCC,KAA6B,IAO7BC,KAA0B,IAG1BC,KAA4B,IAE5BC,KAAwB;AAe9B,SAASC,GAAct5G,GAAwE;AACpG,QAAM7zC,IAAiC,CAAA;AACvC,MAAIotJ,IAAU;AACd,aAAW,CAAC3/J,GAAK6H,CAAK,KAAK,OAAO,QAAQu+C,CAAG;AAC3C,QAAIv+C,KAAS;AAGb,UAFA83J,IAAU,IAEN3/J,MAAQ;AACV,QAAAuS,EAAO,OAAU,OAAO1K,CAAK;AAAA,WACxB;AAEL,cAAM+3J,IAAS5/J,EAAI,QAAQ,YAAY,KAAK,EAAE,YAAA;AAC9C,QAAAuS,EAAOqtJ,CAAM,IAAI,OAAO/3J,CAAK;AAAA,MAC/B;AAEF,SAAO83J,IAAUptJ,IAAS;AAC5B;AC7CO,SAASstJ,GACdC,GACAz7E,GACA8F,GACA41E,GACuB;AACvB,SAAOD,EACJ,IAAI,CAAC14I,MAAM;AACV,UAAM44I,IAAgB37E,EAAY,YAAYj9D,EAAE,IAAI,GAC9C64I,IAAY57E,EAAY,KAAKj9D,EAAE,IAAI,GAOnC84I,IAAa94I,EAAE,KAAK,SAAS,GAAG,KAAKA,EAAE,qBAAqBA,EAAE;AACpE,QAAIkZ,GACA6/H,GACAC;AACJ,QAAIL,KAAe34I,EAAE,SAASwgB,IAAW;AACvC,YAAMy4H,IAAYj6H,GAAgChf,EAAE,eAAA,CAAgB;AACpE,MAAA+4I,IAAoBE;AACpB,YAAMC,IAAUJ,IAAab,KAAmCD,IAC1Dz0H,IAAYvjB,EAAE,QAAA,IAAYk4I,KAA6B,GACvD10H,IAAaxjB,EAAE,QAAQm4I,KAA0B,GAIjDgB,IAA0B;AAChC,MAAIn5I,EAAE,eACJg5I,IAA0Bh6H,GAAgC,IAAIhf,EAAE,UAAU,GAAG;AAE/E,YAAMo5I,IAAqBJ,KAA2B,OAClDA,IAA0BG,IAC1B;AACJ,MAAAjgI,IAAQ,KAAK,IAAI,KAAK,IAAI+/H,IAAYC,IAAU31H,IAAYC,GAAY41H,GAAoBz5H,EAAqB,GAAG04H,EAAqB;AAAA,IAC3I;AACE,MAAAn/H,IAAQ,KAAK,IAAI2/H,IAAY,IAAIt5H,IAAQ84H,EAAqB;AAEhE,IAAIr4I,EAAE,SAASwgB,WAAmB,KAAK,IAAItH,GAAO,EAAE;AACpD,UAAMuqD,IAAcV,EAAoB,eAAe/iE,EAAE,IAAI,GACvDqZ,IAAYrZ,EAAE,SAASwgB,IAIvBU,IACJuiD,KAAe,OACX,KAAK,IAAIq0E,IAAuBr0E,IAAc,CAAC,IAC/Cq0E;AAEN,WAAO;AAAA,MACL,MAAM93I,EAAE;AAAA,MACR,OAAOA,EAAE,eAAA;AAAA,MACT,GAAG44I;AAAA,MACH,GAAA13H;AAAA,MACA,OAAAhI;AAAA,MACA,QAAQk/H;AAAA,MACR,WAAA/+H;AAAA,MACA,YAAYoqD,KAAe,QAAQ,CAACpqD;AAAA,MACpC,YAAY0/H;AAAA,MACZ,MAAM/4I,EAAE;AAAA,MACR,YAAYA,EAAE;AAAA,MACd,iBAAiBg5I;AAAA,MACjB,OAAOh5I,EAAE;AAAA,MACT,OAAOA,EAAE;AAAA,MACT,SAASA,EAAE;AAAA,IAAA;AAAA,EAEf,CAAC;AACL;AAEO,SAASq5I,GACdv/H,GACAwoD,GACoB;AACpB,SAAOxoD,EAAa,IAAI,CAAC34B,OAAO;AAAA,IAC9B,iBAAiBA,EAAE;AAAA,IACnB,GAAGA,EAAE;AAAA;AAAA,IACL,MAAMA,EAAE,IAAIA,EAAE;AAAA;AAAA,IACd,SAASmhF;AAAA,IACT,QAAQ;AAAA,EAAA,EACR;AACJ;AAOO,SAASg3E,GACdx/H,GACAwoD,GACiB;AAKjB,QAAMi3E,wBAAe,IAAA;AACrB,aAAWp4J,KAAK24B;AACd,QAAI34B,EAAE,WAAW,MAAM;AACrB,YAAMmT,IAAWilJ,EAAS,IAAIp4J,EAAE,OAAO;AACvC,MAAImT,IACFA,EAAS,KAAKnT,CAAC,IAEfo4J,EAAS,IAAIp4J,EAAE,SAAS,CAACA,CAAC,CAAC;AAAA,IAE/B;AAGF,QAAMq4J,IAA0B,CAAA;AAChC,aAAW,CAACrgI,GAASsgI,CAAO,KAAKF,GAAU;AACzC,QAAIE,EAAQ,WAAW,EAAG;AAG1B,QAAI/0E,IAAU,OACVC,IAAW,QACX+0E,IAAO;AACX,eAAW15I,KAAKy5I,GAAS;AACvB,YAAM5pI,IAAO7P,EAAE,IAAIA,EAAE,QAAQ,GACvB8P,IAAQ9P,EAAE,IAAIA,EAAE,QAAQ;AAC9B,MAAI6P,IAAO60D,MAASA,IAAU70D,IAC1BC,IAAQ60D,MAAUA,IAAW70D,IAC7B9P,EAAE,IAAI05I,MAAMA,IAAO15I,EAAE;AAAA,IAC3B;AAIA,UAAM9R,IAAIw2E,IAAU,IACdxrD,IAAQyrD,IAAWD,IAAU,IAM7BxjD,IAAIw4H,IAAO,KAAK,KAQhBnoH,IAAS,KAAK,IAAI,GAAG+wC,IAAgBphD,IAAI,EAAE;AAGjD,IAAAs4H,EAAO,KAAK;AAAA,MACV,MAAM,OAAOrgI,CAAO;AAAA,MACpB,GAAAjrB;AAAA,MACA,GAAAgzB;AAAA,MACA,OAAAhI;AAAA,MACA,QAAAqY;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOioH;AACT;ACxJA,MAAMG,KAAsB;AAErB,SAASC,GACdt3C,GACAu3C,GACA58E,GACA8F,GACA7F,GACAy7E,GACA3mH,IAAwB,GACxB8nH,GACA1pH,GACA2pH,GAC4B;AAE5B,QAAMC,IAAW13C,EAAK;AACtB,MAAI,CAAC03C,EAAU,QAAO;AAGtB,QAAMC,IAAcC,GAAoBF,CAAQ;AAChD,MAAI,CAACC;AAEH,WAAO;AAAA,MACL,UAAU;AAAA,QACR,MAAM33C,EAAK;AAAA,QACX,OAAOA,EAAK,iBAAiB;AAAA,QAC7B,YAAYA,EAAK,gBAAgBvjF,GAA6BqQ,GAAmBkzE,EAAK,aAAa,CAAC,IAAI;AAAA,QACxG,GAAG;AAAA,QACH,GAAGu3C,EAAM;AAAA,QACT,OAAO58E,EAAY,SAAA;AAAA,QACnB,QAAQ48E,EAAM;AAAA,QACd,SAASA,EAAM,MAAM,IAAI7nH;AAAA,QACzB,UAAU,CAAA;AAAA,QACV,QAAQswE,EAAK;AAAA,QACb,OAAOA,EAAK;AAAA,MAAA;AAAA,MAEd,SAASw3C,KAAeC,KAAgB,OAAO;AAAA,QAC7C,GAAG;AAAA,QACH,GAAGA,IAAe,IAAIJ;AAAA,QACtB,MAAMG;AAAA,QACN,OAAO1pH;AAAA,QACP,iBAAiB;AAAA,MAAA,IACf;AAAA,IAAA;AAOR,QAAM+pH,IAAaC,GAAwBH,GAAa33C,EAAK,gBAAgB,GACvE3vE,IAAkBuqC,EAAgB,KAAK,CAAC/7E,MAAMg5J,EAAW,SAASh5J,CAAC,CAAC,KAAK,IACzEg8E,IAAmBD,EAAgB,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAC/7E,MAAMg5J,EAAW,SAASh5J,CAAC,CAAC,KAAK,IAK5Fw7E,IADe,IAAIH,GAAaU,CAA2B,EACtC,SAAS88E,CAAQ,GACtCK,IAAat9E,GAAYJ,CAAK;AAEpC,MAAI29E,GACAC;AAEJ,MAAI5nH,KAAmBwqC,GAAkB;AACvC,UAAMz5C,IACJu5C,EAAY,SAAStqC,GAAiBwqC,CAAgB,IACtDF,EAAY,KAAKtqC,CAAe,IAChCsqC,EAAY,KAAKE,CAAgB,GAG7Bq9E,IADej6H,GAAYy5H,CAAQ,EAAE,OAAO,CAACh6I,OAAWA,GAAE,SAASA,GAAE,EAAE,EAC5C;AAAA,MAC/B,CAACA,OACCi9D,EAAY,gBAAgBj9D,EAAC,IAC7Bi9D,EAAY,SAASj9D,GAAE,QAAQwgB,IAAW28C,CAAgB,IAC1DF,EAAY,KAAKE,CAAgB;AAAA,IAAA,GAE/BE,IAAa,KAAK,IAAI,GAAG,GAAGm9E,CAAW;AAC7C,IAAAF,IAAY,KAAK,IAAI52H,GAAkBpE,EAAkB,IAAI+6H,EAAW,OAAOA,EAAW,QAAQh9E,GAClGk9E,IAAct9E,EAAY,YAAYtqC,CAAe,IAAKsqC,EAAY,KAAKtqC,CAAe;AAAA,EAC5F;AACE,IAAA2nH,IAAY,KAAK,IAAIh7H,IAAoB29C,EAAY,UAAU,GAC/Ds9E,IAAQ;AAOV,QAAME,IAAsC,CAAA;AAC5C,MAAIn4C,EAAK,oBAAoBA,EAAK,iBAAiB,SAAS,GAAG;AAE7D,QAAIo4C,IAAWb,EAAM;AACrB,aAAS3/J,IAAI,GAAGA,IAAIooH,EAAK,iBAAiB,QAAQpoH,KAAK;AACrD,YAAMk6C,IAAUkuE,EAAK,iBAAiBpoH,CAAC;AAGvC,UAAIA,IAAI,GAAG;AAET,cAAMygK,KAAevmH,EAAQ;AAC7B,YAAIumH,IAAc;AAChB,gBAAMC,IAAaD,GAAa,OAAA,KAAY,CAAA;AAC5C,cAAIC,EAAW,SAAS,GAAG;AACzB,kBAAMC,IAAeC,GAA2BF,EAAW,CAAC,CAAC;AAC7D,gBAAIC,GAAc;AAChB,oBAAME,KAAah4E,EAAoB,uBAAuB83E,CAAY;AAC1E,cAAIE,OAGFL,IAAWK,GAAW,MAAM,KAAK,IAAI,IAAI;AAAA,YAE7C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,YAAMC,IAAgB9gK,IAAIooH,EAAK,iBAAiB,SAAS,IACrD,IACAu3C,EAAM,MAAMA,EAAM,SAASa;AAE/B,MAAAD,EAAS,KAAK;AAAA,QACZ,OAAOrmH,EAAQ;AAAA,QACf,GAAGsmH;AAAA,QACH,QAAQM;AAAA,QACR,YAAY5mH,EAAQ,QAAQrV,GAA6BqQ,GAAmBgF,EAAQ,KAAK,CAAC,IAAI;AAAA,QAC9F,YAAY,iBAAiB,KAAKA,EAAQ,KAAK,IAAIA,EAAQ,MAAM,MAAM,GAAG,EAAE,EAAE,SAAS;AAAA,QACvF,iBAAiB,iBAAiB,KAAKA,EAAQ,KAAK,IAChDrV,GAA6BqQ,GAAmBgF,EAAQ,MAAM,MAAM,GAAG,EAAE,EAAE,KAAA,CAAM,CAAC,IAClF;AAAA,QACJ,UAAU,MAAM;AACd,gBAAM6mH,KAAW7mH,EAAQ,MAAM,QAAQ,GAAG;AAC1C,cAAI6mH,KAAW,KAAK,CAAC7mH,EAAQ,MAAM,WAAW,SAAS,KAAK,CAACA,EAAQ,MAAM,WAAW,GAAG;AACvF,mBAAOA,EAAQ,MAAM,UAAU,GAAG6mH,EAAQ;AAAA,QAG9C,GAAA;AAAA,QACA,eAAe,MAAM;AACnB,gBAAMA,KAAW7mH,EAAQ,MAAM,QAAQ,GAAG;AAC1C,cAAI6mH,KAAW,KAAK,CAAC7mH,EAAQ,MAAM,WAAW,SAAS,KAAK,CAACA,EAAQ,MAAM,WAAW,GAAG;AACvF,mBAAOrV,GAA6BqV,EAAQ,MAAM,UAAU,GAAG6mH,EAAQ,CAAC;AAAA,QAG5E,GAAA;AAAA,QACA,SAAS,MAAM;AACb,gBAAMA,KAAW7mH,EAAQ,MAAM,QAAQ,GAAG;AAC1C,cAAI6mH,KAAW,KAAK,CAAC7mH,EAAQ,MAAM,WAAW,SAAS,KAAK,CAACA,EAAQ,MAAM,WAAW,GAAG;AACvF,mBAAOA,EAAQ,MAAM,UAAU6mH,KAAW,CAAC;AAAA,QAG/C,GAAA;AAAA,QACA,cAAc,MAAM;AAClB,gBAAMA,KAAW7mH,EAAQ,MAAM,QAAQ,GAAG;AAC1C,cAAI6mH,KAAW,KAAK,CAAC7mH,EAAQ,MAAM,WAAW,SAAS,KAAK,CAACA,EAAQ,MAAM,WAAW,GAAG;AACvF,mBAAOrV,GAA6BqV,EAAQ,MAAM,UAAU6mH,KAAW,CAAC,CAAC;AAAA,QAG7E,GAAA;AAAA,MAAG,CACJ;AAAA,IACH;AAAA,EACF;AAMA,MAAI34C,EAAK,iBAAiB,SAASm4C,EAAS,WAAW,GAAG;AAExD,UAAMG,IADWt4C,EAAK,mBAAmB,CAAC,GAAG,WAChB,OAAA,KAAY,CAAA;AACzC,QAAIs4C,EAAW,SAAS,GAAG;AAEzB,MAAAH,EAAS,KAAK,EAAE,OAAO,IAAI,GAAGZ,EAAM,KAAK,QAAQ,GAAG;AACpD,eAAS3/J,IAAI,GAAGA,IAAI0gK,EAAW,QAAQ1gK,KAAK;AAC1C,cAAMghK,IAAUJ,GAA2BF,EAAW1gK,CAAC,CAAC;AACxD,YAAI,CAACghK,EAAS;AACd,cAAMH,KAAah4E,EAAoB,uBAAuBm4E,CAAO;AACrE,YAAI,CAACH,GAAY;AAQjB,cAAMI,IAAWJ,GAAW,MAAM;AAClC,QAAAN,EAAS,KAAK;AAAA,UACZ,OAAO;AAAA,UACP,GAAGU;AAAA,UACH,QAAQ;AAAA,UACR,kBAAkBd,EAAW,OAAOp9E,EAAY,KAAKtqC,CAAe;AAAA,QAAA,CACrE;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAKA,MAAIyoH;AACJ,SAAItB,KAAeC,KAAgB,SACjCqB,IAAkB;AAAA,IAChB,GAAGb,IAAQ;AAAA,IACX,GAAGR,IAAe,IAAIJ;AAAA,IACtB,MAAMG;AAAA,IACN,OAAO1pH;AAAA,IACP,iBAAiB;AAAA,EAAA,IAId;AAAA,IACL,UAAU;AAAA,MACR,MAAMkyE,EAAK;AAAA,MACX,OAAOA,EAAK,iBAAiB;AAAA,MAC7B,YAAYA,EAAK,gBAAgBvjF,GAA6BqQ,GAAmBkzE,EAAK,aAAa,CAAC,IAAI;AAAA,MACxG,GAAGi4C;AAAA,MACH,GAAGV,EAAM;AAAA,MACT,OAAOS;AAAA,MACP,QAAQT,EAAM;AAAA,MACd,SAASA,EAAM,MAAM,IAAI7nH;AAAA,MACzB,UAAAyoH;AAAA,MACA,QAAQn4C,EAAK;AAAA,MACb,OAAOA,EAAK;AAAA,IAAA;AAAA,IAEd,SAAS84C;AAAA,EAAA;AAEb;AAEA,SAASlB,GAAoBznD,GAAgB;AAC3C,aAAW9T,KAAQ,CAAC,QAAQ,OAAO,OAAO,YAAY,SAAS,GAAY;AACzE,UAAM08D,IAAO5oD,EAAK9T,CAAI,IAAA;AACtB,QAAI08D,EAAM,QAAOA;AAAA,EACnB;AACA,QAAM7gJ,IAAMi4F,EAAK,MAAA;AACjB,MAAIj4F,EAAK,QAAOA;AAChB,QAAM+4B,IAAMk/D,EAAK,MAAA;AACjB,MAAIl/D,EAAK,QAAOA;AAChB,QAAMrmC,IAAMulG,EAAK,MAAA;AACjB,SAAIvlG,KACG;AACT;AAGA,SAAS4tJ,GAA2Bl3H,GAAwB;AAC1D,SAAI,CAACA,GAAW,SAAS,CAACA,GAAW,OAAa,KAC3C,GAAGA,EAAU,MAAM,KAAK,IAAIA,EAAU,KAAK,IAAI;AACxD;AAOA,SAASw2H,GACPH,GACAQ,GACU;AACV,QAAM3lJ,IAAQ,IAAI,IAAIsvB,GAAyB61H,CAAW,CAAC;AAG3D,MAAIQ;AACF,eAAWrmH,KAAWqmH,GAAU;AAC9B,UAAI,CAACrmH,EAAQ,UAAW;AACxB,YAAMknH,IAAa3gI,GAAayZ,EAAQ,SAAS,EAAE,MAAA;AACnD,iBAAW7vC,KAAK+2J,EAAY,CAAAxmJ,EAAM,IAAIvQ,CAAC;AAAA,IACzC;AAGF,SAAO,CAAC,GAAGuQ,CAAK;AAClB;AClPO,SAASymJ,GAAex+H,GAA+C;AAC5E,QAAMuN,IAAQvN,GAAa,QAAA;AAC3B,SAAKuN,IACEkxH,GAAUlxH,GAAO9J,IAAW,oBAAI,OAAO,IAAI,GAAG,MAAM,CAAC,IADzC,CAAA;AAErB;AAEA,SAASi7H,GAAe5+I,GAAuB;AAC7C,SAAOA,EAAM,KAAA;AACf;AAEA,SAAS2+I,GACPlxH,GACAoxH,GACAC,GACAC,GACA7wI,GACA8wI,GACAC,GACiB;AACjB,QAAMrqH,IAAanH,GAAO,OAAA,KAAY,CAAA,GAChCw2D,IAA2B,CAAA;AACjC,MAAIlnG,IAAQ;AAEZ,aAAW64G,KAAQhhE,GAAY;AAC7B,UAAM74C,IAAM+qC,GAAmB8uE,CAAI;AACnC,QAAI,CAAC75G,EAAK;AAEV,IAAAgB;AACA,UAAMmiK,IAAUD,IAAcliK,GACxB+uF,IAASizE,IAAe,GAAGA,CAAY,IAAIG,CAAO,KAAK,OAAOA,CAAO,GACrExiI,IAAUk5E,EAAK,aAAA,KAAkB,IAEjCjxF,IAAUixF,EAAK,UAAA;AACrB,QAAIjxF,GAAS;AACX,YAAM2e,IAAO3e,EAAQ,OAAA,KAAYk6I,GAC3Bh0I,IAAKlG,EAAQ,QAAA,KAAagf,IAC1B3jB,IAAQ4+I,GAAej6I,EAAQ,gBAAA,KAAqB,EAAE,GACtDw6I,IAAcx6I,EAAQ,aAAA,GAAgB,QAAA;AAG5C,UAFAs/E,EAAQ,KAAK,EAAE,KAAAloG,GAAK,MAAM,QAAQ,MAAAunC,GAAM,IAAAzY,GAAI,OAAA7K,GAAO,QAAQsjB,MAASzY,GAAI,UAAU,CAAC,CAACs0I,GAAa,SAAAziI,GAAS,UAAUk5E,GAAM,uBAAuBkpD,EAAkB,IAAIx7H,CAAI,KAAK,GAAG,qBAAqBw7H,EAAkB,IAAIj0I,CAAE,GAAG,uBAAuBi0I,EAAkB,IAAIj0I,CAAE,KAAK,GAAG,QAAAihE,GAAQ,OAAA59D,GAAO,iBAAA8wI,GAAiB,GAEtTG,GAAa;AACf,cAAMC,IAAY,IAAI,IAAIN,CAAiB;AAC3C,QAAAM,EAAU,IAAIv0I,IAAKu0I,EAAU,IAAIv0I,CAAE,KAAK,KAAK,CAAC,GAC9Co5E,EAAQ,KAAK,GAAG06D,GAAUQ,GAAat0I,GAAIu0I,GAAWtzE,GAAQ59D,IAAQ,GAAG,QAAQ,CAAC,CAAC;AAAA,MACrF;AACA;AAAA,IACF;AAEA,UAAMmxI,IAAWzpD,EAAK,eAAA;AACtB,QAAIypD,GAAU;AACZ,YAAM/7H,IAAO+7H,EAAS,YAAYA,EAAS,oBAAoBA,EAAS,SAAA,KAAcR,GAChFh0I,IAAKw0I,EAAS,QAAA,KAAaA,EAAS,KAAA,GAAQ,wBAAwB/7H,GACpEtjB,IAAQ4+I,GAAeS,EAAS,UAAA,GAAa,eAAeA,EAAS,gBAAA,KAAqB,EAAE;AAClG,MAAAp7D,EAAQ,KAAK,EAAE,KAAAloG,GAAK,MAAM,SAAS,MAAAunC,GAAM,IAAAzY,GAAI,OAAA7K,GAAO,QAAQsjB,MAASzY,GAAI,UAAU,IAAO,SAAA6R,GAAS,uBAAuBoiI,EAAkB,IAAIx7H,CAAI,KAAK,GAAG,qBAAqBw7H,EAAkB,IAAIj0I,CAAE,GAAG,QAAAihE,GAAQ,OAAA59D,EAAA,CAAO;AAC3N;AAAA,IACF;AAEA,UAAMonB,IAAWsgE,EAAK,WAAA;AACtB,QAAItgE,GAAU;AACZ,YAAMhS,IAAOgS,EAAS,OAAA,KAAYupH,GAC5Bh0I,IAAKyqB,EAAS,QAAA,KAAa,IAC3Bt1B,IAAQ4+I,GAAetpH,EAAS,gBAAA,KAAqB,UAAU,GAC/DgqH,IAAgBhqH,EAAS,aAAA,GAAgB,QAAA;AAG/C,UAFA2uD,EAAQ,KAAK,EAAE,KAAAloG,GAAK,MAAM,YAAY,MAAAunC,GAAM,IAAAzY,GAAI,OAAA7K,GAAO,QAAQ,IAAO,UAAU,CAAC,CAACs/I,GAAe,SAAA5iI,GAAS,UAAUk5E,GAAM,uBAAuBkpD,EAAkB,IAAIx7H,CAAI,KAAK,GAAG,qBAAqBw7H,EAAkB,IAAIj0I,CAAE,GAAG,QAAAihE,GAAQ,OAAA59D,GAAO,iBAAA8wI,GAAiB,GAE/PM,GAAe;AACjB,cAAMF,IAAY,IAAI,IAAIN,CAAiB;AAC3C,QAAAM,EAAU,IAAIv0I,IAAKu0I,EAAU,IAAIv0I,CAAE,KAAK,KAAK,CAAC,GAC9Co5E,EAAQ,KAAK,GAAG06D,GAAUW,GAAez0I,KAAMg0I,GAAeO,GAAWtzE,GAAQ59D,IAAQ,GAAG,YAAY,CAAC,CAAC;AAAA,MAC5G;AACA;AAAA,IACF;AAEA,UAAMgiB,IAAM0lE,EAAK,MAAA;AACjB,QAAI1lE,GAAK;AACP,YAAMlwB,IAAQ4+I,GAAe1uH,EAAI,gBAAA,KAAqB,EAAE,GAClD+E,IAAe/E,GAAK,eAAA,GACpB5M,IAAO2R,GAAc,OAAA,KAAY/E,GAAK,YAAY2uH,GAClDh0I,IAAKoqB,GAAc,KAAA,GAAQ,wBAAwB/E,GAAK,gBAAgBvM;AAC9E,MAAAsgE,EAAQ,KAAK,EAAE,KAAAloG,GAAK,MAAM,UAAU,MAAAunC,GAAM,IAAAzY,GAAI,OAAA7K,GAAO,QAAQsjB,MAASzY,GAAI,UAAU,IAAO,SAAA6R,GAAS,uBAAuBoiI,EAAkB,IAAIx7H,CAAI,KAAK,GAAG,uBAAuBw7H,EAAkB,IAAIj0I,CAAE,KAAK,GAAG,QAAAihE,GAAQ,OAAA59D,GAAO,iBAAA8wI,GAAiB;AACpP;AAAA,IACF;AAEA,UAAMO,IAAU3pD,EAAK,UAAA;AACrB,QAAI2pD,GAAS;AACX,YAAMv/I,IAAQ4+I,GAAeW,EAAQ,mBAAA,KAAwBA,EAAQ,UAAA,KAAe,EAAE;AACtF,MAAAt7D,EAAQ,KAAK,EAAE,KAAAloG,GAAK,MAAM,WAAW,MAAM,IAAI,IAAI,IAAI,OAAAikB,GAAO,QAAQ,IAAO,UAAU,IAAO,uBAAuB,GAAG,QAAA8rE,GAAQ,OAAA59D,GAAO;AACvI;AAAA,IACF;AAGA,UAAMsxI,IAAeC,GAAoB7pD,CAAI;AAC7C,IAAA3R,EAAQ,KAAK;AAAA,MACX,KAAAloG;AAAA,MACA,MAAM;AAAA,MACN,MAAM8iK;AAAA,MACN,IAAI;AAAA,MACJ,OAAOW,EAAa;AAAA,MACpB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAcA,EAAa;AAAA,MAC3B,eAAeA,EAAa;AAAA,MAC5B,kBAAkBA,EAAa;AAAA,MAC/B,SAAA9iI;AAAA,MACA,UAAUk5E;AAAA,MACV,uBAAuBkpD,EAAkB,IAAID,CAAa,KAAK;AAAA,MAC/D,QAAA/yE;AAAA,MACA,OAAA59D;AAAA,IAAA,CACD,GACDwxI,GAAmB9pD,GAAMipD,GAAe56D,GAAS66D,GAAmBhzE,GAAQ59D,CAAK;AAAA,EACnF;AAEA,SAAO+1E;AACT;AAQA,SAASw7D,GAAoB7pD,GAAiC;AAE5D,aAAW9T,KAAQ,CAAC,QAAQ,OAAO,OAAO,YAAY,SAAS,GAAY;AACzE,UAAM08D,IAAO5oD,EAAK9T,CAAI,IAAA;AACtB,QAAI08D,GAAM;AAER,YAAMx+I,IADYw+I,EAAK,UAAA,GAAa,YAAA,GACX,mBAAA,KAAwB;AACjD,aAAO;AAAA,QACL,cAAc18D;AAAA,QACd,OAAA9hF;AAAA,QACA,UAAU,CAAC,EAAE,OAAAA,GAAO,WAAWw+I,EAAK,aAAA,GAAgB,UAAQ,CAAG;AAAA,MAAA;AAAA,IAEnE;AAAA,EACF;AAIA,QAAM7gJ,IAAMi4F,EAAK,MAAA;AACjB,MAAIj4F,GAAK;AACP,UAAMigJ,IAAkC,CAAA,GAClC7nH,IAAUp4B,EAAI,UAAA;AACpB,IAAIo4B,KAEF6nH,EAAS,KAAK,EAAE,OAAO,OAAO,WAAW7nH,EAAQ,aAAA,GAAgB,QAAA,GAAW;AAE9E,eAAW4pH,KAAUhiJ,EAAI,cAAA,KAAmB,CAAA,GAAI;AAE9C,YAAMqC,IADY2/I,EAAO,UAAA,GAAa,YAAA,GACb,mBAAA,KAAwB;AAEjD,MAAA/B,EAAS,KAAK,EAAE,OAAO,KAAK59I,CAAK,MAAM,WAAW2/I,EAAO,aAAA,GAAgB,QAAA,EAAQ,CAAG;AAAA,IACtF;AACA,UAAM3pH,IAAYr4B,EAAI,YAAA;AACtB,WAAIq4B,KACF4nH,EAAS,KAAK,EAAE,OAAO,UAAU,WAAW5nH,EAAU,aAAA,GAAgB,QAAA,GAAW,GAK5E,EAAE,cAAc,OAAO,OAFVr4B,EAAI,UAAA,GAAa,UAAA,GAAa,YAAA,GAClB,mBAAA,KAAwB,IACP,UAAAigJ,EAAA;AAAA,EACnD;AAIA,QAAMlnH,IAAMk/D,EAAK,MAAA;AACjB,MAAIl/D,GAAK;AACP,UAAMknH,IAAkC,CAAA,GAClCjnH,IAAWD,EAAI,WAAA;AACrB,IAAIC,KAEFinH,EAAS,KAAK,EAAE,OAAO,OAAO,WAAWjnH,EAAS,aAAA,GAAgB,QAAA,GAAW;AAE/E,eAAWC,KAAcF,EAAI,aAAA,KAAkB,CAAA,GAAI;AACjD,YAAMw1D,IAAYt1D,EAAW,aAAA,GAAgB,aAAA,GAAgB,wBAAwB;AACrF,MAAAgnH,EAAS,KAAK,EAAE,OAAO,SAAS1xD,CAAS,IAAI,WAAWt1D,EAAW,gBAAgB,QAAA,EAAQ,CAAG;AAAA,IAChG;AACA,UAAMC,IAAeH,EAAI,eAAA;AACzB,WAAIG,KACF+mH,EAAS,KAAK,EAAE,OAAO,WAAW,WAAW/mH,EAAa,aAAA,GAAgB,QAAA,GAAW,GAGhF,EAAE,cAAc,OAAO,OAAO,IAAI,UAAA+mH,EAAA;AAAA,EAC3C;AAGA,QAAMvtJ,IAAMulG,EAAK,MAAA;AACjB,SAAIvlG,IAEK,EAAE,cAAc,OAAO,OADhBA,EAAI,mBAAA,KAAwB,IACL,UAAU,CAAA,EAAC,IAG3C,EAAE,cAAc,QAAQ,OAAO,IAAI,UAAU,GAAC;AACvD;AAEA,SAASu7E,GAAYn+C,GAA0B;AAC7C,UAAQA,GAAO,OAAA,KAAY,CAAA,GAAI,OAAO,CAACmoE,MAAmB,CAAC,CAAC9uE,GAAmB8uE,CAAI,CAAC,EAAE;AACxF;AAGA,SAAS8pD,GAAmB9pD,GAAgBzuE,GAAgB88D,GAA0B66D,GAAwCC,GAAsB7wI,GAAqB;AAEvK,aAAW4zE,KAAQ,CAAC,QAAQ,OAAO,OAAO,YAAY,SAAS,GAAY;AACzE,UAAM08D,IAAO5oD,EAAK9T,CAAI,IAAA;AACtB,QAAI08D,GAAM;AACR,YAAM/wH,IAAQ+wH,EAAK,aAAA,GAAgB,QAAA;AACnC,MAAI/wH,KAAOw2D,EAAQ,KAAK,GAAG06D,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM,CAAC,CAAC;AACxG;AAAA,IACF;AAAA,EACF;AAGA,QAAMvQ,IAAMi4F,EAAK,MAAA;AACjB,MAAIj4F,GAAK;AACP,UAAMo4B,IAAUp4B,EAAI,UAAA;AACpB,QAAIiiJ,IAAgB;AACpB,QAAI7pH,GAAS;AACX,YAAMtI,IAAQsI,EAAQ,aAAA,GAAgB,QAAA;AACtC,MAAItI,MACFw2D,EAAQ,KAAK,GAAG06D,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa,CAAC,GACzGA,KAAiBh0E,GAAYn+C,CAAK;AAAA,IAEtC;AACA,eAAWkyH,KAAUhiJ,EAAI,cAAA,KAAmB,CAAA,GAAI;AAC9C,YAAM8vB,IAAQkyH,EAAO,aAAA,GAAgB,QAAA;AACrC,UAAIlyH,GAAO;AACT,cAAMoyH,IAAelB,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa;AAC7G,QAAIC,EAAa,SAAS,MAAGA,EAAa,CAAC,EAAE,eAAe,KAC5D57D,EAAQ,KAAK,GAAG47D,CAAY,GAC5BD,KAAiBh0E,GAAYn+C,CAAK;AAAA,MACpC;AAAA,IACF;AACA,UAAMuI,IAAYr4B,EAAI,YAAA;AACtB,QAAIq4B,GAAW;AACb,YAAMvI,IAAQuI,EAAU,aAAA,GAAgB,QAAA;AACxC,UAAIvI,GAAO;AACT,cAAMoyH,IAAelB,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa;AAC7G,QAAIC,EAAa,SAAS,MAAGA,EAAa,CAAC,EAAE,eAAe,KAC5D57D,EAAQ,KAAK,GAAG47D,CAAY;AAAA,MAC9B;AAAA,IACF;AACA;AAAA,EACF;AAGA,QAAMnpH,IAAMk/D,EAAK,MAAA;AACjB,MAAIl/D,GAAK;AACP,UAAMC,IAAWD,EAAI,WAAA;AACrB,QAAIkpH,IAAgB;AACpB,QAAIjpH,GAAU;AACZ,YAAMlJ,IAAQkJ,EAAS,aAAA,GAAgB,QAAA;AACvC,MAAIlJ,MACFw2D,EAAQ,KAAK,GAAG06D,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa,CAAC,GACzGA,KAAiBh0E,GAAYn+C,CAAK;AAAA,IAEtC;AACA,eAAWmJ,KAAcF,EAAI,aAAA,KAAkB,CAAA,GAAI;AACjD,YAAMjJ,IAAQmJ,EAAW,aAAA,GAAgB,QAAA;AACzC,UAAInJ,GAAO;AACT,cAAMoyH,IAAelB,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa;AAC7G,QAAIC,EAAa,SAAS,MAAGA,EAAa,CAAC,EAAE,eAAe,KAC5D57D,EAAQ,KAAK,GAAG47D,CAAY,GAC5BD,KAAiBh0E,GAAYn+C,CAAK;AAAA,MACpC;AAAA,IACF;AACA,UAAMoJ,IAAeH,EAAI,eAAA;AACzB,QAAIG,GAAc;AAChB,YAAMpJ,IAAQoJ,EAAa,aAAA,GAAgB,QAAA;AAC3C,UAAIpJ,GAAO;AACT,cAAMoyH,IAAelB,GAAUlxH,GAAOtG,GAAQ23H,GAAmBC,GAAc7wI,IAAQ,GAAG,MAAM0xI,CAAa;AAC7G,QAAIC,EAAa,SAAS,MAAGA,EAAa,CAAC,EAAE,eAAe,KAC5D57D,EAAQ,KAAK,GAAG47D,CAAY;AAAA,MAC9B;AAAA,IACF;AACA;AAAA,EACF;AACF;ACvTO,SAASC,GACdlrH,GACAsxC,GACA65E,GACqB;AACrB,QAAMzxJ,wBAAa,IAAA,GAGb0xJ,IAAwB,CAAC,CAAC,GAE1BC,IAA8B,CAAC,CAAC;AACtC,MAAIhgF,IAAW;AAIf,QAAMigF,IAAoC,CAAC,IAAI,GACzCC,IAAqC,CAAC,IAAI,GAE1CC,IAA+B,CAAC,EAAK,GAIrCC,IAA0B,CAAC,CAAC,GAI5BC,IAAgC,CAAC,EAAK;AAE5C,aAAW76C,KAAQ7wE,GAAY;AAC7B,UAAM1mB,IAAQu3F,EAAK;AAGnB,WAAOxlC,IAAW/xD,KAAO;AACvB,YAAMqyI,IAAaP,EAAY//E,CAAQ,KAAK,GACtCugF,IAAWN,EAAejgF,CAAQ,GAClCwgF,IAAYN,EAAgBlgF,CAAQ,GACpCygF,IAAaT,EAAkBhgF,CAAQ,KAAK,GAW5C0gF,IAAaJ,IAAaG,GAC1BE,IAAc,KAAK,IAAIF,IAAaX,GAAc,CAAC,GACnDc,IAAeF,IAAaC;AAClC,MAAIJ,KAAYK,IAAe,KAC7BvyJ,EAAO,IAAI,SAASkyJ,CAAQ,IAAIK,CAAY;AAI9C,YAAMC,IAAWV,EAAkBngF,CAAQ,KAAK;AAChD,MAAIugF,KAAYM,KACdxyJ,EAAO,IAAI,SAASkyJ,CAAQ,IAAI,CAAC;AAEnC,YAAMO,IAAYT,EAAmBrgF,CAAQ,KAAK;AAClD,MAAA+/E,EAAY,IAAA,GACZC,EAAkB,IAAA,GAClBC,EAAe,IAAA,GACfC,EAAgB,IAAA,GAChBC,EAAkB,IAAA,GAClBE,EAAmB,IAAA,GACnBD,EAAc,IAAA,GACdpgF,KAKIugF,KAAYC,MAAc,WAC5BT,EAAY//E,CAAQ,KAAK4gF,GAIrBE,MACFf,EAAY//E,CAAQ,KAAK;AAAA,IAG/B;AAGA,WAAOA,IAAW/xD;AAChB,MAAA+xD,KACA+/E,EAAY,KAAK,CAAC,GAClBC,EAAkB,KAAK,CAAC,GACxBC,EAAe,KAAK,IAAI,GACxBC,EAAgB,KAAK,IAAI,GACzBC,EAAkB,KAAK,EAAK,GAC5BE,EAAmB,KAAK,EAAK,GAC7BD,EAAc,KAAK,CAAC;AAMtB,IAAI56C,EAAK,gBAAgBv3F,IAAQ8xI,EAAY,WAC3CA,EAAY9xI,CAAK,IAAI,GACrB+xI,EAAkB/xI,CAAK,IAAI;AAK7B,QAAI8yI,IAAY;AAChB,aAASh6J,IAAI,GAAGA,KAAKknB,GAAOlnB;AAC1B,MAAAg6J,MAAchB,EAAYh5J,CAAC,KAAK,MAAMq5J,EAAcr5J,CAAC,KAAK;AAQ5D,QANAsH,EAAO,IAAIm3G,EAAK,KAAKu7C,CAAS,GAM1Bv7C,EAAK,SAAS,YAAY,CAACA,EAAK,QAAQ;AAC1C,YAAMw7C,IAAc/6E,EAAoB,uBAAuBu/B,EAAK,GAAG;AAEvE,UAAI,EAD0Bw7C,KAAeA,EAAY,SAAS,IACtC;AAC1B,cAAMC,KAAkBjB,EAAkB/xI,CAAK,KAAK,OAAO;AAC3D,QAAA8xI,EAAY9xI,CAAK,KAAK6xI,GACtBE,EAAkB/xI,CAAK,KAAK6xI,GAMxBmB,KAAkBF,MAAc,KAAKv7C,EAAK,oBAAoB,WAChE46C,EAAcnyI,CAAK,KAAKmyI,EAAcnyI,CAAK,KAAK,KAAK;AAAA,MAEzD;AAAA,IACF,MAAA,CAAWu3F,EAAK,SAAS,YAEnBv3F,IAAQkyI,EAAkB,WAC5BA,EAAkBlyI,CAAK,IAAI;AAU/B,SAAKu3F,EAAK,SAAS,UAAUA,EAAK,SAAS,eAAeA,EAAK,UAAU;AAGvE,YAAMs7C,IAAY,CAAC,CADJt7C,EAAK,UAAU,UAAA,GACD,gBAAgB,YAAa,CAACA,EAAK;AAEhE,MAAIv3F,IAAQ,IAAI+xD,KACdA,IAAW/xD,IAAQ,GACnB8xI,EAAY,KAAK,CAAC,GAClBC,EAAkB,KAAK,CAAC,GACxBC,EAAe,KAAKz6C,EAAK,GAAG,GAC5B06C,EAAgB,KAAK16C,EAAK,IAAI,GAC9B26C,EAAkB,KAAK,EAAK,GAC5BE,EAAmB,KAAKS,CAAS,MAEjCb,EAAehyI,IAAQ,CAAC,IAAIu3F,EAAK,KACjC06C,EAAgBjyI,IAAQ,CAAC,IAAIu3F,EAAK,MAClCu6C,EAAY9xI,IAAQ,CAAC,IAAI,GACzB+xI,EAAkB/xI,IAAQ,CAAC,IAAI,GAC/BkyI,EAAkBlyI,IAAQ,CAAC,IAAI,IAC/BoyI,EAAmBpyI,IAAQ,CAAC,IAAI6yI;AAAA,IAEpC;AAAA,EACF;AAGA,SAAO9gF,IAAW,KAAG;AACnB,UAAMsgF,IAAaP,EAAY//E,CAAQ,KAAK,GACtCugF,IAAWN,EAAejgF,CAAQ,GAClCwgF,IAAYN,EAAgBlgF,CAAQ,GACpCkhF,IAAgBlB,EAAkBhgF,CAAQ,KAAK,GAC/CmhF,IAAgBb,IAAaY,GAC7BE,IAAiB,KAAK,IAAIF,IAAgBpB,GAAc,CAAC,GACzDuB,IAAkBF,IAAgBC;AACxC,IAAIb,KAAYc,IAAkB,KAChChzJ,EAAO,IAAI,SAASkyJ,CAAQ,IAAIc,CAAe;AAEjD,UAAMC,IAAcnB,EAAkBngF,CAAQ,KAAK;AACnD,IAAIugF,KAAYe,KACdjzJ,EAAO,IAAI,SAASkyJ,CAAQ,IAAI,CAAC;AAEnC,UAAMgB,IAAelB,EAAmBrgF,CAAQ,KAAK;AACrD,IAAA+/E,EAAY,IAAA,GACZC,EAAkB,IAAA,GAClBC,EAAe,IAAA,GACfC,EAAgB,IAAA,GAChBC,EAAkB,IAAA,GAClBE,EAAmB,IAAA,GACnBrgF,KAEIugF,KAAYC,MAAc,WAC5BT,EAAY//E,CAAQ,KAAKqhF,GACrBE,MACFxB,EAAY//E,CAAQ,KAAK;AAAA,EAG/B;AAGA,SAAA3xE,EAAO,IAAI,iBAAiB0xJ,EAAY,CAAC,KAAK,CAAC,GAExC1xJ;AACT;ACjLO,SAASmzJ,GACdvhI,GACAkgD,GACA8F,GACAjpD,GACA6+H,GACqB;AACrB,QAAMlnH,IAAa8pH,GAAex+H,CAAW,GACvC8X,IAA8B,CAAA,GAC9B0pH,IAAgC,CAAA,GAChCC,IAAoC,CAAA,GACpCC,IAAgC,CAAA,GAChCC,IAAgC,CAAA,GAChCC,IAA4B,CAAA,GAC5BC,IAA8B,CAAA,GAC9BC,IAA8B,CAAA;AAEpC,MAAIC,IAAkB;AACtB,QAAM7wD,IAAehxB,EAAY,SAAA,GAC3BC,IAAkBD,EAAY,wBAAA,GAI9B8hF,wBAAsB,IAAA;AAC5B,aAAWrrJ,KAAK+9B;AACd,QAAI/9B,EAAE,QAAQ;AACZ,YAAMsrJ,IAAUtrJ,EAAE,OAAO,YAAY,GAAG,GAClCzW,IAAS+hK,KAAW,IAAItrJ,EAAE,OAAO,UAAU,GAAGsrJ,CAAO,IAAI,IACzDjD,IAAU,SAASroJ,EAAE,OAAO,UAAUsrJ,IAAU,CAAC,GAAG,EAAE,GACtDrvJ,KAAOovJ,EAAgB,IAAI9hK,CAAM,KAAK;AAC5C,MAAI8+J,IAAUpsJ,MAAMovJ,EAAgB,IAAI9hK,GAAQ8+J,CAAO;AAAA,IACzD;AAQF,QAAMkD,IAAYtC,GAAkBlrH,GAAYsxC,GADnB,EAC4D;AAEzF,aAAWu/B,KAAQ7wE,GAAY;AAC7B,UAAMooH,IAAQ92E,EAAoB,uBAAuBu/B,EAAK,GAAG;AACjE,QAAI,CAACu3C,EAAO;AACZ,UAAM76I,IAASigJ,EAAU,IAAI38C,EAAK,GAAG,KAAK;AAG1C,QAAIvxE;AAOJ,QANIuxE,EAAK,YACPvxE,IAAa,IAAIpB,GAAa2yE,EAAK,OAAO,IAKxCvxE,GAAY,QAAQuxE,EAAK,SAAS,YAAY;AAGhD,UAAI48C,IAAqB58C,EAAK;AAC9B,UAAIA,EAAK,SAAS,cAAcA,EAAK,QAAQA,EAAK,IAAI;AACpD,cAAM68C,IAAKliF,EAAY,YAAYqlC,EAAK,IAAI,GACtC88C,IAAKniF,EAAY,YAAYqlC,EAAK,EAAE;AAC1C,QAAI68C,IAAKC,MAAIF,IAAqB58C,EAAK;AAAA,MACzC;AACA,YAAM+8C,IAAWH,IACPjiF,EAAY,YAAYiiF,CAAkB,IAChD,IAEEvF,KAAsB,IAItB2F,KAAiBh9C,EAAK,yBAAyB,IACjD5iF,KAA4B,IAC5B,GAGE6/H,IAAkBxuH,EAAW,KAAK,UAAA,EAAY,WAAW,GAAG,IAAI,IAAI;AAC1E,MAAA8tH,EAAS,KAAK;AAAA,QACZ,GAAGQ,IAAWC,KAAiBC;AAAA,QAC/B,GAAG1F,EAAM,MAAM76I,IAAS26I;AAAA,QACxB,MAAM5oH,EAAW;AAAA,QACjB,OAAOunH,GAAcvnH,EAAW,YAAY;AAAA,MAAA,CAC7C;AAAA,IACH;AAGA,UAAMT,KAAeS,IAAaunH,GAAcvnH,EAAW,YAAY,IAAI;AAG3E,QAAIuxE,EAAK,SAAS,UAAUA,EAAK,SAAS,SAAS;AACjD,UAAIk9C,IAAcviF,EAAY,YAAYqlC,EAAK,IAAI;AACnD,YAAMm9C,IAAYxiF,EAAY,YAAYqlC,EAAK,EAAE,GAC3Co9C,KAAgBp9C,EAAK,SAAS,KAAK,IAGnCq9C,KAAmB5uH,GAAY,QAChCuxE,EAAK,SAAS,OAAO,MAAM;AAAA,CAAI,EAAE,UAAU,KAAK,KACjD,GACE/+B,IAAWs2E,EAAM,MAAM76I,IAAS2gJ,KAAmBD,KAAgB;AAQzE,UAAIp9C,EAAK,yBAAyB,KAAK,CAACA,EAAK,QAAQ;AACnD,cAAMv3F,IAAQu3F,EAAK,uBACbs9C,KAAY70I,IAAQ2U;AAE1B,QAAA8/H,IADcA,IAAQC,IAElBD,IAAQI,KACRJ,IAAQ9/H,MAA6B3U,IAAQ,KAAK2U;AAAA,MACxD;AAIA,YAAMmgI,IAAcv9C,EAAK,0BAA0BA,EAAK,sBAAsB,IAAI,IAC5Ew9C,IAAgBD,IAAcngI;AAEpC,UAAI4iF,EAAK,QAAQ;AAIf,cAAMy9C,IAAUz9C,EAAK,SAAS,SACxB09C,KAAc,GACdC,KAAYF,IAAU,KAAKtgI,IAE3BygI,IAAaH,IAAU,KAAKL,IAI5BS,IAAS79C,EAAK,yBAAyB,IACzCk9C,IAAQ9/H,MAA6B4iF,EAAK,wBAAwB,KAAK5iF,KACvE8/H;AACJ,QAAAjB,EAAU,KAAK;AAAA,UACb,GAAG4B;AAAA,UACH,GAAGtG,EAAM,MAAMmG,KAAcL;AAAA,UAC7B,OAAOM;AAAA,UACP,QAAQC;AAAA,UACR,OAAO59C,EAAK;AAAA,UACZ,YAAYy9C,IAAU,SAAS;AAAA,UAC/B,QAAQz9C,EAAK;AAAA,UACb,OAAOhyE;AAAA,QAAA,CACR;AAAA,MACH,OAAO;AAML,cAAM8vH,IAAQZ,IAAQC,GAChBY,KAAa/9C,EAAK,SAAS,UAAU,CAACA,EAAK,QAC3Cg+C,KAAiBh+C,EAAK,SAAS,WAAW,CAACA,EAAK,UAAUu9C,IAAc,GACxEU,IACJF,KACID,IACEX,IAAM//H,KAA4BogI,IAClCL,IAAM//H,KAA4BogI,IACtCQ,KACEF,IACEX,IAAMK,IACNL,IAAMK,IACRL;AAEN,QAAA5qH,EAAS,KAAK;AAAA,UACZ,OAAA2qH;AAAA,UACA,KAAKe;AAAA,UACL,GAAGh9E;AAAA,UACH,OAAO++B,EAAK;AAAA,UACZ,YAAYA,EAAK,SAAS,UAAU,SAAS;AAAA,UAC7C,QAAQ;AAAA,UACR,WAAWi+C,IAAWf;AAAA,UACtB,QAAQl9C,EAAK;AAAA,UACb,OAAOhyE;AAAA,QAAA,CACR;AAAA,MACH;AAGA,UAAIgyE,EAAK,SAAS,QAAQ;AACxB,cAAMk+C,IAAOf,IAAM//H,IACb+gI,KAAOl9E,IAAW;AAOxB,YAAIm9E,KAAY7G,EAAM,SAAS6F,KAAgBC,KAAmB;AAMlE,cAAMgB,IAAe,SAASr+C,EAAK,GAAG,IAChCs+C,IAAY3B,EAAU,IAAI0B,CAAY,KAAK;AACjD,QAAIC,IAAY,MACdF,MAAaE;AAIf,cAAMtgI,IADagiF,EAAK,UAAU,UAAA,GACH,aAAA;AAM/B,QAAIhiF,GAAY,YAAY,CAACgiF,EAAK,UAAUA,EAAK,aAC/Co+C,MAAa;AAWf,cAAMG,KAAeJ,KAAOC,KAAY;AAExC,YAAIA,KAAY,MACdlC,EAAY,KAAK;AAAA,UACf,GAAGgC;AAAA,UACH,GAAGC;AAAA,UACH,OAAOhhI;AAAA,UACP,QAAQihI;AAAA,UACR,iBAAiBp+C,EAAK;AAAA,QAAA,CACvB,GAGGhiF,GAAY,YAAY,CAACgiF,EAAK,SAAQ;AAMxC,gBAAM89C,KAAQZ,IAAQC,GAChBqB,KAAWV,KACbX,IAAM//H,KAA4BogI,IAAgB,IAClDL,IAAM//H,KAA4BogI,IAAgB;AAStD,cAAIiB,KAAUvB;AACd,UAAIl9C,EAAK,0BAA0B,IACjCy+C,MAAWX,KAAQtgI,KAAiB,IAAIA,KAC/BsgI,OACTW,MAAW;AAKb,gBAAMC,KAAqB1+C,EAAK,SAC5B,GAAGA,EAAK,MAAM,KAAKy8C,EAAgB,IAAIz8C,EAAK,MAAM,KAAK,KAAK,CAAC,KAC7D;AACJ,UAAAq8C,EAAQ,KAAK;AAAA,YACX,OAAOmC;AAAA,YAAU,KAAKC;AAAA,YAAS,GAAGF;AAAA,YAClC,OAAOvgI,EAAW;AAAA,YAAU,WAAWk/H,IAAQC;AAAA,YAAK,QAAQ;AAAA,YAC5D,QAAQuB;AAAA,UAAA,CACT,GACDlC,IAAkB,KAAK,IAAIA,GAAiB+B,KAAe,EAAE;AAAA,QAC/D;AAAA,MAEJ;AACA;AAAA,IACF;AAGA,QAAIv+C,EAAK,SAAS,YAAY;AAE5B,UAAIk9C,IAAcviF,EAAY,YAAYqlC,EAAK,IAAI;AACnD,YAAMm9C,KAAYxiF,EAAY,YAAYqlC,EAAK,EAAE;AAIjD,UAAIA,EAAK,yBAAyB,GAAG;AACnC,cAAMs9C,KAAYlgI,MAA6B4iF,EAAK,wBAAwB,KAAK5iF;AAEjF,QAAA8/H,IADcA,IAAQC,KACND,IAAQI,KAAYJ,IAAQI;AAAA,MAC9C;AAGA,YAAMqB,KAAoBnnI,EAAa,KAAK,QAAK34B,GAAE,SAASmhH,EAAK,EAAE,GAE7D/+B,IAAW09E,KACbA,GAAkB,IAAI7I,KAA4B,IAClDyB,EAAM,MAAM,KAAsB;AACtC,MAAIoH,MACFxC,EAAU,KAAK;AAAA,QACb,aAAawC;AAAA,QACb,SAAS;AAAA,UACP,OAAAzB;AAAA,UACA,KAAAC;AAAA,UACA,GAAGl8E;AAAA,UACH,OAAO++B,EAAK;AAAA;AAAA,UACZ,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,WAAWm9C,KAAMD;AAAA,UACjB,QAAQl9C,EAAK;AAAA,UACb,OAAOhyE;AAAA,QAAA;AAAA,MACT,CACD;AAIH,YAAMkwH,IAAOf,KAAM//H,IAEb+gI,IAAOQ,KACTA,GAAkB,IAAI7I,KAA4B,IAClDyB,EAAM,MAAM,KAAsB,GAGhC6G,IAAY,KAAK;AAAA,QACpB7G,EAAM,MAAMA,EAAM,SAAU4G;AAAA,QAC7BzgI;AAAA,MAAA;AAEF,UAAI0gI,IAAY,GAAG;AACjB,QAAAlC,EAAY,KAAK;AAAA,UACf,GAAGgC;AAAA,UACH,GAAGC;AAAA,UACH,OAAOhhI;AAAA,UACP,QAAQihI;AAAA,UACR,iBAAiBp+C,EAAK;AAAA,QAAA,CACvB;AAQD,cAAM4+C,KADc5+C,EAAK,UAAU,WAAA,GACC,aAAA;AACpC,YAAI4+C,IAAgB,UAAU;AAG5B,gBAAMC,IAAYV,IAAOC,IAAY,GAI/BU,IAAiBnkF,EAAY,YAAYqlC,EAAK,IAAI,GAClD89C,IAAQgB,IAAW3B,IACnB4B,IAAU3hI,IAIV4hI,KAAa,KAAK,IAAIh/C,EAAK,wBAAwB,GAAG,CAAC,IAAI5iF,IAC3D6hI,KAAaj/C,EAAK,yBAAyB,IAC7C8+C,IAAWE,MAAclB,IAAQiB,IAAU,IAAI,CAACA,KAChDD,GAIEI,KAAcpB,IAChBX,KAAM4B,IAAU,IAChB5B,KAAM4B,IAAU;AAGpB,UAAA1C,EAAQ,KAAK;AAAA,YACX,OAAO6C;AAAA,YAAa,KAAKD;AAAA,YAAY,GAAGJ;AAAA,YACxC,OAAOD,GAAe;AAAA,YAAU,WAAWM,KAAcD;AAAA,YAAY,QAAQ;AAAA,YAC7E,QAAQj/C,EAAK,SACT,GAAGA,EAAK,MAAM,KAAKy8C,EAAgB,IAAIz8C,EAAK,MAAM,KAAK,KAAK,CAAC,KAC7D;AAAA,UAAA,CACL,GACDw8C,IAAkB,KAAK,IAAIA,GAAiBqC,IAAY,EAAE;AAAA,QAC5D;AAAA,MACF;AACA;AAAA,IACF;AAGA,QAAI7+C,EAAK,SAAS,cAAcA,EAAK,cAAc;AACjD,YAAMm/C,IAAgB,EAAE,KAAK5H,EAAM,MAAM76I,GAAQ,QAAQ66I,EAAM,OAAA,GAGzD6H,IAAwB3wH,GAAY,QACrCuxE,EAAK,SAAS,OAAO,MAAM;AAAA,CAAI,EAAE,UAAU,KAAK,KACjD,GACEq/C,KAAiB/H;AAAA,QACrBt3C;AAAA,QACAm/C;AAAA,QACAxkF;AAAA,QACA8F;AAAA,QACA7F;AAAA,QACAy7E;AAAA,QACA+I;AAAA,QACA3wH,GAAY;AAAA,QACZA,GAAY,eAAeunH,GAAcvnH,EAAW,YAAY,IAAI;AAAA,QACpE8oH,EAAM,MAAM76I;AAAA,MAAA;AAEd,MAAI2iJ,OACFjD,EAAU,KAAKiD,GAAe,QAAQ,GAClCA,GAAe,WACjB9C,EAAS,KAAK8C,GAAe,OAAO;AAGxC;AAAA,IACF;AAGA,QAAIr/C,EAAK,SAAS,UAAU;AAC1B,YAAM8+C,IAAiBnkF,EAAY,YAAYqlC,EAAK,IAAI,GAClDs/C,IAAe3kF,EAAY,YAAYqlC,EAAK,EAAE,GAC9Cu/C,KAAYD,IAASR,GAMrBU,KAAax/C,EAAK;AACxB,UAAIk9C;AACJ,MAAIqC,KAEFrC,IAAQsC,OAAe,IACnBV,KACCU,MAAc,IAAIV,IAAWA,IAAW1hI,MAA6BoiI,KAAa,MAAMpiI,KAI7F8/H,IAAQ4B,IAAW1hI,KAA4BoiI,KAAa;AAG9D,YAAMC,IAAWz/C,EAAK,yBAAyB;AAC/C,UAAIm9C;AACJ,MAAIoC,KAEFpC,IAAMmC,IAASliI,KAA4BqiI,IAG3CtC,IAAMsC,MAAa,IACfH,KACCG,KAAY,IAAIH,IAASA,IAASliI,MAA6BqiI,IAAW,MAAMriI,IAOnFmiI,OACFpC,KAAO3/H;AAWT,YAAMkiI,IAAenI,EAAM,WAAW,IAAI,OAAO,MAC3CoI,KAAUpI,EAAM,MAAM76I,IAASgjJ;AACrC,MAAArD,EAAQ,KAAK;AAAA,QACX,OAAAa;AAAA,QACA,KAAAC;AAAA,QACA,GAAGwC;AAAA,QACH,OAAO3/C,EAAK;AAAA,QACZ,WAAAu/C;AAAA,QACA,QAAQv/C,EAAK;AAAA,QACb,QAAQA,EAAK;AAAA,MAAA,CACd;AACD,YAAM4/C,KAAkBrI,EAAM,WAAW,IAAI,OAAO;AACpD,MAAAiF,IAAkB,KAAK,IAAIA,GAAiBmD,KAAUC,EAAe;AACrE;AAAA,IACF;AAGA,QAAI5/C,EAAK,SAAS,WAAW;AAC3B,YAAM6/C,IAAa7/C,EAAK,MAAM,QAAQ,kBAAkB,EAAE,EAAE,KAAA;AAC5D,MAAAs8C,EAAS,KAAK;AAAA,QACZ,GAAG/E,EAAM,MAAM76I,IAAS66I,EAAM,SAAS;AAAA,QACvC,OAAO5rD;AAAA,QACP,OAAOqU,EAAK;AAAA,QACZ,YAAYvjF,GAA6BqQ,GAAmB+yH,CAAU,CAAC;AAAA,MAAA,CACxE;AACD;AAAA,IACF;AAAA,EACF;AAKA,QAAMC,IAAiB;AACvB,EAAAzD,EAAQ,KAAK,CAAC5kK,GAAGmY,MAAMnY,EAAE,IAAImY,EAAE,CAAC;AAChC,WAAShY,IAAI,GAAGA,IAAIykK,EAAQ,QAAQzkK;AAClC,IAAIykK,EAAQzkK,CAAC,EAAE,IAAIykK,EAAQzkK,IAAI,CAAC,EAAE,IAAIkoK,MACpCzD,EAAQzkK,CAAC,IAAI,EAAE,GAAGykK,EAAQzkK,CAAC,GAAG,GAAGykK,EAAQzkK,IAAI,CAAC,EAAE,IAAIkoK,EAAA;AAOxD,WAASloK,IAAI,GAAGA,IAAIskK,EAAY,QAAQtkK,KAAK;AAC3C,UAAMmoK,IAAQ7D,EAAYtkK,CAAC;AAC3B,QAAI6wB,IAAQ;AACZ,aAAShW,IAAI,GAAGA,IAAIypJ,EAAY,QAAQzpJ,KAAK;AAC3C,UAAI7a,MAAM6a,EAAG;AACb,YAAMutJ,KAAQ9D,EAAYzpJ,CAAC;AAC3B,MAAIutJ,GAAM,oBAAoBD,EAAM,mBAChCC,GAAM,KAAKD,EAAM,KACjBC,GAAM,IAAIA,GAAM,UAAUD,EAAM,IAAIA,EAAM,UAC5Ct3I;AAAA,IAEJ;AACA,IAAIA,IAAQ,MACVyzI,EAAYtkK,CAAC,IAAI,EAAE,GAAGmoK,GAAO,GAAGA,EAAM,IAAIt3I,IAAQ2U,GAAA;AAAA,EAEtD;AAEA,QAAM6iI,IAAkBtD,EAAU,IAAI,eAAe,KAAK;AAC1D,SAAO,EAAE,UAAApqH,GAAU,WAAA0pH,GAAW,aAAAC,GAAa,WAAAC,GAAW,WAAAC,GAAW,SAAAC,GAAS,UAAAC,GAAU,UAAAC,GAAU,iBAAA0D,GAAiB,iBAAAzD,EAAA;AACjH;ACnhBO,SAAS0D,GAAcn/I,GAA4C;AACxE,QAAM,EAAE,aAAA0Z,GAAa,aAAAkgD,GAAa,qBAAA8F,GAAqB,OAAAx7C,GAAO,aAAAoxH,MAAgBt1I,GACxE4f,IAAoBvC,GAAoB3D,CAAW,GACnD0lI,IAAc1/E,EAAoB,eAAA,GAIlC2/E,IAAsBzlF,EAAY,wBAAA,GAElCN,IADe,IAAIH,GAAakmF,CAA+B,EAC1C,SAAS3lI,CAAW,GACzC4lI,IAAc5lF,GAAYJ,CAAK,GAE/B7iD,IAAe2+H;AAAA,IACnBx1H;AAAA,IACAg6C;AAAA,IACA8F;AAAA,IACA41E;AAAA,EAAA,GAEIiK,IAActE;AAAA,IAClBvhI;AAAA,IACAkgD;AAAA,IACA8F;AAAA,IACAjpD;AAAA,IACA6+H;AAAA,EAAA,GAEI,EAAE,UAAA9jH,GAAU,WAAA0pH,GAAW,aAAAC,GAAa,WAAAC,GAAW,WAAAC,GAAW,SAAAC,GAAS,UAAAC,GAAU,UAAAC,EAAA,IAAa+D;AAQhG,MAAIC,IAAe,GACfC,IAAY;AAChB,aAAW5pK,KAAKslK,EAAa,CAAAqE,IAAe,KAAK,IAAIA,GAAc3pK,EAAE,IAAIA,EAAE,MAAM;AACjF,aAAW8mB,KAAK60B,EAAU,CAAAiuH,IAAY,KAAK,IAAIA,GAAW9iJ,EAAE,CAAC;AAC7D,aAAWtM,KAAK6qJ,EAAW,CAAAuE,IAAY,KAAK,IAAIA,GAAWpvJ,EAAE,IAAIA,EAAE,MAAM;AACzE,aAAW3I,KAAK0zJ,EAAW,CAAAqE,IAAY,KAAK,IAAIA,GAAW/3J,EAAE,QAAQ,IAAIqtJ,EAAyB;AAClG,aAAW/+J,KAAKqlK,EAAW,CAAAoE,IAAY,KAAK,IAAIA,GAAWzpK,EAAE,IAAIA,EAAE,MAAM;AACzE,aAAWwK,KAAK+6J,EAAU,CAAAkE,IAAY,KAAK,IAAIA,GAAWj/J,EAAE,CAAC;AAC7D,QAAMy+E,IAAgB,KAAK;AAAA,IACzBmgF,IAAc;AAAA,IACdI,IAAe;AAAA,IACfC,IAAY;AAAA,IACZF,EAAY;AAAA,EAAA,GAERG,IAAiBzgF,IAAgB81E,KAA4B,IAG7D4K,KAAY3J;AAAA,IAChBv/H;AAAA,IACAipI;AAAA,EAAA,GAQIrmF,IAAoBt4C,GAAyBrH,CAAW,GACxDkmI,IAAehmF,EAAY,wBAAA,GAC3BtqC,KAAkBswH,EAAa,KAAK,CAAA9hK,MAAKu7E,EAAkB,SAASv7E,CAAC,CAAC,KAAK,IAC3Eg8E,KAAmB8lF,EAAa,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA9hK,MAAKu7E,EAAkB,SAASv7E,CAAC,CAAC,KAAK,IAE9FuiC,IACJu5C,EAAY,SAAStqC,IAAiBwqC,EAAgB,IACtDF,EAAY,KAAKtqC,EAAe,IAChCsqC,EAAY,KAAKE,EAAgB,GAG7Bq9E,IADej6H,GAAYxD,CAAW,EAAE,OAAO,CAAA/c,MAAKA,EAAE,SAASA,EAAE,EAAE,EACxC;AAAA,IAAI,CAAAA,MACnCi9D,EAAY,gBAAgBj9D,CAAC,IAC7Bi9D,EAAY,SAASj9D,EAAE,QAAQwgB,IAAW28C,EAAgB,IAC1DF,EAAY,KAAKE,EAAgB;AAAA,EAAA,GAE7BG,IAA6B,KAAK,IAAI,GAAG,GAAGk9E,CAAW;AAE7D,MAAIvsD,KAAe,KAAK,IAAIvqE,GAAkBpE,EAAkB,IAAIg+C;AAGpE,MAAIq7E,GAAa;AAQf,eAAW95J,KAAOg2C,GAAU;AAC1B,YAAMquH,KAASvK,EAAY95J,EAAI,OAAOw+B,GAAS,cAAc,GAEvD8lI,MADQtkK,EAAI,QAAQA,EAAI,OAAO,IACVqkK,KAAS,IAAI;AACxC,MAAIC,KAAcl1D,OAAcA,KAAek1D;AAAA,IACjD;AACA,eAAWp2H,KAAO4xH,GAAS;AACzB,YAAMuE,KAASvK,EAAY5rH,EAAI,OAAO1P,GAAS,cAAc,GAEvD8lI,MADQp2H,EAAI,QAAQA,EAAI,OAAO,IACVm2H,KAAS,IAAI;AACxC,MAAIC,KAAcl1D,OAAcA,KAAek1D;AAAA,IACjD;AACA,eAAWC,KAAM3E,GAAW;AAC1B,YAAMyE,KAASvK,EAAYyK,EAAG,QAAQ,OAAO/lI,GAAS,cAAc,GAE9D8lI,MADQC,EAAG,QAAQ,QAAQA,EAAG,QAAQ,OAAO,IACxBF,KAAS,IAAI;AACxC,MAAIC,KAAcl1D,OAAcA,KAAek1D;AAAA,IACjD;AAAA,EACF;AAKA,aAAW9pK,KAAKqlK;AACd,IAAArlK,EAAE,KAAKspK,EAAY;AAErB,aAAW53J,KAAK8zJ;AACd,IAAI9zJ,EAAE,oBACJA,EAAE,KAAK43J,EAAY;AAOvB,QAAMU,yBAAiB,IAAA;AACvB,aAAWhB,KAAS3D,GAAW;AAC7B,QAAI4E,IAAY;AAChB,eAAWhB,MAAS5D;AAClB,MAAI4D,OAAUD,KACVC,GAAM,KAAKD,EAAM,KAAKC,GAAM,KAAKD,EAAM,KACvCC,GAAM,IAAIA,GAAM,SAASD,EAAM,IAAIA,EAAM,SACzCC,GAAM,IAAIA,GAAM,UAAUD,EAAM,IAAIA,EAAM,UAC5CiB;AAGJ,IAAAD,GAAW,IAAIhB,GAAOiB,CAAS,GAC/BjB,EAAM,KAAKiB,IAAYjkI;AAAA,EACzB;AAMA,QAAMkkI,IAAmBt1D,KAAe00D,EAAY;AACpD,aAAWtpK,KAAKqlK,GAAW;AACzB,UAAM8E,IAAKH,GAAW,IAAIhqK,CAAC,KAAK,GAC1BoqK,KAAcF,IAAmBC,IAAKnkI,IACtCqkI,KAAerqK,EAAE,IAAIA,EAAE;AAG7B,IAAIqqK,MAAgBD,KAAc,MAAMC,KAAeD,OACrDpqK,EAAE,QAAQoqK,KAAcpqK,EAAE;AAAA,EAE9B;AAGA,QAAMmgK,IAASF,GAAYx/H,GAAcwoD,CAAa;AAEtD,SAAO;AAAA,IACL,OAAO2rB;AAAA,IACP,QAAQ3rB;AAAA,IACR,iBAAiBqgF,EAAY;AAAA,IAC7B,kBAAkBA,EAAY;AAAA,IAC9B,OAAAp7H;AAAA,IACA,cAAAzN;AAAA,IACA,WAAAkpI;AAAA,IACA,UAAAnuH;AAAA,IACA,WAAA0pH;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAE;AAAA,IACA,SAAAD;AAAA,IACA,UAAAE;AAAA,IACA,QAAArF;AAAA,EAAA;AAEJ;ACjNA,MAAAmK,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;8CCAfC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;;;8CCAfC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;8CCAfC,KAAe;AAAA;AAAA;AAAA;;;8CCAfC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;8CC2BTC,yBAA8B,IAAI;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAASC,GAAY38H,GAA6B;AAChD,QAAMg7H,IAAQh7H,EAAI,MAAM,iBAAiB,IAAI,CAAC,GACxC48H,IAAU58H,EAAI,MAAM,oBAAoB,IAAI,CAAC,GAC7C+6H,IAAQ/6H,EAAI,MAAM,gCAAgC,IAAI,CAAC,GAAG,KAAA;AAChE,MAAI,CAACg7H,KAAS,CAAC4B,KAAW,CAAC7B;AACzB,UAAM,IAAI,MAAM,uBAAuB;AAGzC,QAAM9iH,IAAa,MAAM;AAAA,IACvB+iH,EAAM,SAAS,sBAAsB;AAAA,IACrC,CAAC,CAAA,EAAGtpI,GAAMv4B,CAAK,OAAO,EAAE,MAAAu4B,GAAM,OAAAv4B,EAAA;AAAA,EAAM,EAEnC,OAAO,CAAC,EAAE,MAAAu4B,QAAWgrI,GAAwB,IAAIhrI,CAAI,CAAC,EACtD,IAAI,CAAC,EAAE,MAAAA,GAAM,OAAAv4B,EAAA,MAAY,GAAGu4B,CAAI,KAAKv4B,CAAK,GAAG,EAC7C,KAAK,GAAG;AAEX,SAAO,EAAE,SAAAyjK,GAAS,YAAA3kH,GAAY,SAAS8iH,EAAA;AACzC;AAMO,MAAM8B,KAAwC;AAAA,EACnD,OAAOF,GAAYN,EAAQ;AAAA,EAC3B,UAAUM,GAAYH,EAAW;AAAA,EACjC,KAAKG,GAAYG,EAAM;AAAA,EACvB,QAAQH,GAAYI,EAAS;AAAA,EAC7B,eAAeJ,GAAYK,EAAgB;AAAA,EAC3C,KAAKL,GAAYM,EAAM;AAAA,EACvB,KAAKN,GAAYO,EAAM;AAAA,EACvB,KAAKP,GAAYQ,EAAM;AAAA,EACvB,UAAUR,GAAYL,EAAW;AAAA,EACjC,SAASK,GAAYJ,EAAU;AAAA,EAC/B,QAAQI,GAAYF,EAAS;AAC/B;AAMO,SAASW,GAAQjsK,GAAsD;AAC5E,MAAI,CAACA,EAAM;AACX,QAAMG,IAAMH,EAAK,YAAA;AACjB,SAAO0rK,GAAMvrK,CAAG;AAClB;ACpFO,SAAS+rK,GAAIjxJ,GAAmB;AACrC,SAAOA,EACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ;AAC3B;AAEO,SAASkxJ,GAAY1qH,GAAuC;AACjE,SAAO,OAAO,QAAQA,CAAK,EACxB,IAAI,CAAC,CAACr+C,GAAG6J,CAAC,MAAM,GAAGi/J,GAAI9oK,CAAC,CAAC,KAAK8oK,GAAIj/J,CAAC,CAAC,EAAE,EACtC,KAAK,IAAI;AACd;ACJA,MAAMm/J,KAAe,GACfC,KAAcD,KAAe,GAC7BE,KAAY,IACZC,KAAoB,GACpBC,KAAsB,GACtBC,KAAiB,GACjBC,KAA2B,IAC3BC,KAA6B,GAC7BC,KAAuB,IACvBC,KAA+B,MAC/BC,KAAwB;AAEvB,SAASC,GAAkBrkK,GAAgC;AAChE,MAAIA,EAAE,UAAW,QAAOskK,GAAyBtkK,CAAC;AAGlD,QAAMukK,IAAK,GACLx3J,IAAI/M,EAAE,IAAIA,EAAE,QAAQ,IAAI2jK,IACxBa,IAAQxkK,EAAE,IAAI2jK,IACdc,IAAQzkK,EAAE,QAAQ0jK,IAClBgB,IAAQ1kK,EAAE,SAAS0jK,IAEnBiB,IAAmB,sGAGnBvlD,IAAOmkD,GAAQvjK,EAAE,IAAI;AAC3B,MAAI4kK,IAAU,IACVC,IAAe,IACfC,IAAQ9kK,EAAE,GACV+kK,IAAiC;AAErC,QAAMC,IAAQhlK,EAAE,IAAIA,EAAE,SAAS,IAAI,MAC7BilK,IAASjlK,EAAE,aAAaglK,IAAQf,KAA6Be;AAEnE,MAAI5lD,GAAM;AACR,UAAM04C,IAAY93J,EAAE,cAAc,GAO5BklK,IAAallK,EAAE,QAAQg3J,KAA0B,GACjDmO,IAAavB,KAAYC,KAAoBG,KAA2BlM,IAAYoN,GACpFE,IAASplK,EAAE,IAAImlK,IAAa,GAC5BE,IAAQD,IAAStB,IACjBwB,IAAWtlK,EAAE,MAAM,YAAA,GACnBulK,KAAQvlK,EAAE,KAAKA,EAAE,SAAS4jK,MAAa,KAAK0B,MAAa,aAAanB,KAA+B;AAC3G,QAAInkK,EAAE,OAAO;AAKX,YAAMwlK,IAAaH,IAAQzB,KAAYC;AACvC,MAAAiB,IAAQU,IAAaxO,KAA0B,GAC/C6N,IAAe,YAAYW,CAAU,QAAQP,CAAM,iCAAiCN,CAAgB,8BAA8BnB,GAAIr1H,GAAgBnuC,EAAE,KAAK,CAAC,CAAC;AAAA,IACjK;AACE,MAAA8kK,IAAQM,IAASxB,KAAYC,KAAoBE;AAEnD,IAAAgB,IAAa;AAEb,UAAM,KAAKU,GAAKC,CAAG,KAAKtmD,EAAK,WAAW,aAAa,MAAM,GAAG,EAAE,IAAI,MAAM,GACpExwC,KAAQg1F,KAAY,KAAK,IAAI6B,GAAKC,CAAG,GACrCC,KAAYvmD,EAAK,aAAa,IAAIA,EAAK,UAAU,KAAK;AAE5D,IAAAwlD,IAAU,oDAAoDS,CAAK,KAAKE,EAAK,WAAW32F,EAAK,KAAK+2F,EAAS;AAAA,MACzGvmD,EAAK,OAAO;AAAA;AAAA,EAEhB,WAAWp/G,EAAE,OAAO;AAOlB,UAAM83J,IAAY93J,EAAE,cAAc,GAC5BmlK,IAAanO,KAA0B,IAAIc,GAC3C8N,IAAgB,KAAK,IAAIT,GAAYnlK,EAAE,mBAAmB,CAAC,GAC3DolK,IAASplK,EAAE,IAAI4lK,IAAgB,GAC/BJ,IAAaJ;AACnB,IAAAN,IAAQM,IAASpO,KAA0B,GAC3C+N,IAAa,SAEbF,IAAe,YAAYW,CAAU,QAAQP,CAAM,iCAAiCN,CAAgB,8BAA8BnB,GAAIr1H,GAAgBnuC,EAAE,KAAK,CAAC,CAAC;AAAA,EACjK;AAIA,MAAI6lK,IAAgB;AACpB,MAAI7lK,EAAE,YAAY;AAIhB,UAAM8lK,IAAU1mD,KAAQp/G,EAAE,cAAc,OACpC8kK,IAAQ9kK,EAAE,aAAa,IACvBA,EAAE,GACA+lK,IAAe,UACfC,IAAUhB,IAAQf;AACxB,IAAA4B,IAAgB,YAAYC,CAAO,QAAQE,CAAO,kBAAkBD,CAAY,qEAAqE7B,EAAoB,IAAI+B,GAAA,CAAsB,IAAIzC,GAAI,MAAMxjK,EAAE,aAAa,GAAG,CAAC;AAAA,EACtO;AAOA,QAAMkmK,IADgBlmK,EAAE,cAAc,QAAQA,EAAE,KAAK,SAAS,GAAG,IAE7D,gBAAgBA,EAAE,UAAU,6BAC5B,IAEE,EAAE,WAAAmmK,GAAW,WAAAz4H,EAAA,IAAc04H,GAAWpmK,EAAE,KAAK;AAMnD,SAAO,4CAA4CwjK,GAAIxjK,EAAE,IAAI,CAAC;AAAA,aACnD+M,CAAC,QAAQy3J,CAAK,YAAYC,CAAK,aAAaC,CAAK,SAASH,CAAE,4BAA4B4B,CAAS;AAAA,IAC1GvB,CAAO;AAAA,IACPC,CAAY;AAAA,IACZgB,CAAa;AAAA,aACJf,CAAK,QAAQG,CAAM,kBAAkBF,CAAU,0DAA0DmB,CAAc,GAAGx4H,CAAS,IAAiB81H,GAAIxjK,EAAE,KAAK,CAAC;AAAA;AAE7K;AA6DA,SAASskK,GAAyBtkK,GAAgC;AAChE,QAAMo/G,IAAOmkD,GAAQ,OAAO;AAC5B,MAAI,CAACnkD;AACH,WAAO;AAGT,QAAMmlD,IAAK,GACL8B,IAAOrmK,EAAE,IAAIA,EAAE,QAAQ,IAAI2jK,IAC3Ba,IAAQxkK,EAAE,IAAI2jK,IACdc,IAAQzkK,EAAE,QAAQ0jK,IAClBgB,IAAQ1kK,EAAE,SAAS0jK,IAGnB2B,IAAQrlK,EAAE,IAAI4jK,KAAY,IAAI,GAC9B2B,IAAQvlK,EAAE,KAAKA,EAAE,SAAS4jK,MAAa,GACvC,KAAK6B,GAAKC,CAAG,KAAKtmD,EAAK,WAAW,aAAa,MAAM,GAAG,EAAE,IAAI,MAAM,GACpExwC,IAAQg1F,KAAY,KAAK,IAAI6B,GAAKC,CAAG,GACrCC,IAAYvmD,EAAK,aAAa,IAAIA,EAAK,UAAU,KAAK;AAE5D,SAAO,gEAAgEokD,GAAIxjK,EAAE,IAAI,CAAC;AAAA,aACvEqmK,CAAI,QAAQ7B,CAAK,YAAYC,CAAK,aAAaC,CAAK,SAASH,CAAE;AAAA,qDACvBc,CAAK,KAAKE,CAAK,WAAW32F,CAAK,KAAK+2F,CAAS;AAAA,MAC5FvmD,EAAK,OAAO;AAAA;AAAA;AAGlB;AAMA,SAASknD,GAAkBnuI,GAAuB;AAEhD,SADUA,EAAM,WAAW,GAAG,IAAIA,IAAQ,IAAIA,CAAK;AAErD;AAKA,SAASiuI,GAAWjuI,GAAqE;AACvF,SAAKA,IAIE;AAAA,IACL,WAAW,gBAFDmuI,GAAkBnuI,CAAK,CAEH;AAAA,IAC9B,WAAW8tI,GAAA;AAAA,EAAqB,IALzB,EAAE,WAAW,IAAI,WAAW,GAAA;AAOvC;AAEA,SAASA,KAA+B;AACtC,SAAO,gBAAgB7B,EAAqB;AAC9C;ACvPO,SAASmC,GAAexzJ,GAA6B;AAE1D,QAAMhG,IAAIgG,EAAE,IAAI;AAChB,SAAO,aAAahG,CAAC,SAASgG,EAAE,IAAI,SAAShG,CAAC,SAASgG,EAAE,OAAO,wCAAwCA,EAAE,SAAS,QAAQ,MAAM,wBAAwBA,EAAE,SAAS,MAAM,GAAG;AAC/K;ACFO,SAASyzJ,GAAc3nJ,GAA4B;AAGxD,QAAMogJ,IAAQpgJ,EAAE,QAAQA,EAAE,KACpBw/I,IAAQY,IAAQpgJ,EAAE,QAAQ,IAAIA,EAAE,OAChCy/I,IAAMW,IAAQpgJ,EAAE,MAAMA,EAAE,MAAM,GAK9B4nJ,IAAY,KAAK,KAAK5nJ,EAAE,MAAMA,EAAE,KAAK,GACrC6nJ,KAAU7nJ,EAAE,QAAQA,EAAE,OAAO,IAAI4nJ,IAAY,MAAM,KACnDxB,IAASpmJ,EAAE,IAAI,KAEf8nJ,IAAW9nJ,EAAE,eAAe,WAAW,4BAA4B,IACnE+nJ,IAAY/nJ,EAAE,QAAQ,WAAW4kJ,GAAY5kJ,EAAE,KAAK,CAAC,MAAM,IAG3DgoJ,IAAU,KAAK,IAAIxI,GAAOC,CAAG,IAAI,GACjCwI,IAAYjoJ,EAAE,SAChB,YAAYgoJ,CAAO,QAAQ5B,CAAM,0CAA0CzB,GAAI3kJ,EAAE,MAAM,CAAC,YACxF,IAEEkoJ,IAAQloJ,EAAE,IAAI;AACpB,SAAO;AAAA,cACKw/I,CAAK,SAAS0I,CAAK,SAASzI,CAAG,SAASyI,CAAK,yBAAyBJ,CAAQ;AAAA,IACxFK,GAAgB1I,GAAKyI,GAAOloJ,EAAE,WAAWA,EAAE,UAAU,CAAC;AAAA,aAC7C6nJ,CAAM,QAAQzB,CAAM,+CAA+C2B,CAAS,IAAIpD,GAAIv1H,GAAmBpvB,EAAE,KAAK,CAAC,CAAC;AAAA,IACzHioJ,CAAS;AAAA;AAEb;AAEO,SAASG,GAAe10J,GAA6B;AAC1D,QAAM20J,IAAK30J,EAAE,GAIPqsJ,IAAUrsJ,EAAE,eAAe,QAC3Bm0J,IAASQ,IAAK,GACdjC,IAAS1yJ,EAAE,KAAKqsJ,IAAU,KAAK,KAM/BuI,IAAU50J,EAAE,IAAI,IAChBu0J,IAAYv0J,EAAE,SAChB,YAAY20J,IAAK,CAAC,QAAQC,CAAO,0CAA0C3D,GAAIjxJ,EAAE,MAAM,CAAC,YACxF,IAUE60J,IAAOF,IAAK,GACZG,IAAO90J,EAAE,KAAKqsJ,IAAU,KAAK;AAWnC,SAAO;AAAA,YACGwI,CAAI,QAAQC,CAAI;AAAA,yDARVzI,IAAU,UAAU,QAS0B;AAAA,8BAR9CA,IAAU,IAAI,CASK;AAAA;AAAA;AAAA,qBAPjBA,IACd,8BACA,6BAQwB,gDAXVA,IAAU,SAAS,MAWgD;AAAA;AAAA;AAAA;AAAA;AAAA,aAK1E8H,CAAM,QAAQzB,CAAM,8CAA8C1yJ,EAAE,QAAQ,WAAWkxJ,GAAYlxJ,EAAE,KAAK,CAAC,MAAM,EAAE,IAAIixJ,GAAIv1H,GAAmB17B,EAAE,MAAM,KAAA,CAAM,CAAC,CAAC;AAAA,IACvKu0J,CAAS;AAAA;AAEb;AAUA,SAASE,GACPM,GACAC,GACAC,GACAzuH,GACQ;AACR,QAAMiwD,IAAWjwD,MAAU,UAAUA,MAAU,UACzC0uH,IAAQz+D,IACV,gCACA,6BACE0+D,IAAW1+D,IAAW,SAAS,QAM/Bo+D,IAAOI,IAAaF,IAAOA,IAAO,GAClCD,IAAOE,IAAO;AAGpB,SAAO,WAAWH,CAAI,QAAQC,CAAI,iFAAiFr+D,IAAW,KAAK,aAAa;AAAA,QAF3Hw+D,IAAa,+CAA+C,EAG/D;AAAA,iBACHC,CAAK,iEAAiEC,CAAQ;AAAA;AAAA;AAG/F;ACxHO,SAASC,GAAiB5vK,GAA+B;AAM9D,SAAO,YADIA,EAAE,IAAI,CACI,QAAQA,EAAE,IAAI,CAAU,YAAYA,EAAE,QAAQ,CAAc,aAAaA,EAAE,SAAS,CAAc,iDAAiDyrK,GAAIzrK,EAAE,eAAe,CAAC;AAChM;ACNA,MAAM6vK,KAAgB,IAChBC,KAAgB,MAChBC,KAAa,GASbpE,KAAe,GACfC,KAAcD,KAAe;AAE5B,SAASqE,GAAe7vK,GAA6B;AAC1D,QAAM+rD,IAAkB,CAAA;AAIxB,EAAAA,EAAM;AAAA,IACJ,YAAY/rD,EAAE,IAAIyrK,EAAW,QAAQzrK,EAAE,IAAIyrK,EAAW,YAAYzrK,EAAE,QAAQwrK,EAAY,aAAaxrK,EAAE,SAASwrK,EAAY;AAAA,EAAA;AAK9H,QAAMsE,IAAU9vK,EAAE,IAAI,GAChB+vK,IAAU/vK,EAAE,SACZgwK,IAAUhwK,EAAE,QAAQ;AAC1B,EAAA+rD,EAAM;AAAA,IACJ,YAAY+jH,CAAO,QAAQC,CAAO,YAAYC,CAAO,aAAaN,EAAa;AAAA,EAAA;AAMjF,QAAMvC,IAAQ2C,IAAU,GAClBzC,IAAQ0C;AACd,EAAAhkH,EAAM,KAAKkkH,GAAgBjwK,EAAE,MAAMmtK,GAAOE,CAAK,CAAC;AAEhD,QAAM6C,IAAYC,GAAanwK,EAAE,IAAI,GAC/BwuK,IAASsB,IAAU;AAezB,MAdA/jH,EAAM;AAAA,IACJ,YAAYyiH,CAAM,QAAQuB,IAAUL,KAAgB,IAAI,GAAG,wDAAwDpE,GAAI4E,CAAS,CAAC;AAAA,EAAA,GAI/HlwK,EAAE,UACJ+rD,EAAM;AAAA,IACJ,YAAY/rD,EAAE,IAAI,CAAC,QAAQ+vK,IAAUL,KAAgB,IAAI,GAAG,sEAAsEpE,GAAItrK,EAAE,MAAM,CAAC;AAAA,EAAA,GAO/IA,EAAE,OAAO;AACX,UAAMowK,IAAQL,IAAUL,KAAgB;AACxC,IAAA3jH,EAAM,KAAKskH,GAAqBP,GAASM,GAAOpwK,EAAE,OAAOA,EAAE,YAAY,oBAAoB,CAAC;AAAA,EAC9F;AAGA,MAAIA,EAAE,SAAS,SAAS;AACtB,aAASa,IAAI,GAAGA,IAAIb,EAAE,SAAS,QAAQa,KAAK;AAC1C,YAAMk6C,IAAU/6C,EAAE,SAASa,CAAC,GACtBguK,IAAQ9zH,EAAQ,GAChBu1H,IAAazB,IAAQpD,IAErB8E,IAAQvwK,EAAE,IAAI,KAAK+6C,EAAQ,oBAAoB,IAC/Cy1H,IAAQxwK,EAAE,IAAIA,EAAE,QAAQ;AAM9B,UALA+rD,EAAM;AAAA,QACJ,aAAawkH,CAAK,SAASD,CAAU,SAASE,CAAK,SAASF,CAAU;AAAA,MAAA,GAIpEv1H,EAAQ,OAAO;AACjB,cAAMgyH,IAAS8B,IAAQ,IACjB4B,IAAY11H,EAAQ,MAAM,WAAW,SAAS;AAEpD,YADoB,CAAC,CAACA,EAAQ,cAAcA,EAAQ,UAAU,UAC7C;AACf,gBAAMyzH,IAASxuK,EAAE,IAAI;AACrB,UAAA+rD,EAAM;AAAA,YACJskH,GAAqB7B,GAAQzB,GAAQhyH,EAAQ,YAAaA,EAAQ,iBAAiB,wBAAwB;AAAA,UAAA;AAE7G;AAAA,QACF;AAEA,cAAM6mH,IAAW7mH,EAAQ,MAAM,QAAQ,GAAG;AAC1C,YAAI6mH,IAAW,KAAK,CAAC6O,GAAW;AAC9B,gBAAM1qF,IAAUhrC,EAAQ,WAAWA,EAAQ,MAAM,UAAU,GAAG6mH,CAAQ,GAChE15I,IAAY6yB,EAAQ,UAAUA,EAAQ,MAAM,UAAU6mH,IAAW,CAAC,GAClE8O,IAAe31H,EAAQ,gBAAgBgrC,EAAQ,SAAS,GACxD4qF,IAAW3wK,EAAE,IAAI,GACjB4wK,IAAaD,IAAWD,IAAed,KAAa,GAEpDiB,KAAW91H,EAAQ,gBAAgBgrC,EAAQ,SAAS,MAAMhrC,EAAQ,eAAe7yB,EAAU,SAAS,KAAK0nJ,KAAa;AAC5H,UAAA7jH,EAAM;AAAA,YACJ,8BACY4kH,IAAWf,EAAU,QAAQf,IAAQ,CAAC,YAAYgC,CAAO,uCACzDF,CAAQ,QAAQ5D,CAAM,gDAAgDzB,GAAIvlF,CAAO,CAAC,mBAClF6qF,CAAU,QAAQ7D,CAAM,gDAAgDzB,GAAIpjJ,CAAS,CAAC;AAAA,UAAA;AAAA,QAGtG,OAAO;AACL,gBAAM4oJ,IAAW9wK,EAAE,IAAI,GACjB+wK,IAAWhE;AACjB,cAAIhyH,EAAQ,UAAU,UAAU;AAC9B,YAAAgR,EAAM;AAAA,cACJ,YAAY+kH,CAAQ,QAAQC,CAAQ,oCAAoCzF,GAAIvwH,EAAQ,KAAK,CAAC;AAAA,YAAA;AAE5F;AAAA,UACF;AACA,gBAAM81H,KAAW91H,EAAQ,cAAcA,EAAQ,MAAM,SAAS,KAAK60H,KAAa,GAC1EoB,IAAMnC,IAAQ;AAEpB,UAAA9iH,EAAM;AAAA,YACJ,8BACY+kH,IAAWlB,EAAU,QAAQoB,CAAG,YAAYH,CAAO,uCACnDC,CAAQ,QAAQC,CAAQ,oCAAoCzF,GAAIvwH,EAAQ,KAAK,CAAC;AAAA,UAAA;AAAA,QAG9F;AAAA,MACF;AAAA,IACF;AAGF,SAAO,+BAA+B/6C,EAAE,IAAI;AAAA,IAAS+rD,EAAM,KAAK;AAAA,GAAM,CAAC;AAAA;AACzE;AAEA,SAASskH,GAAqBx7J,GAAWgzB,GAAWopI,GAAmBC,GAAqBC,IAAc,sBAA8B;AACtI,QAAMC,IAAqBF,KAAcD,EAAU,SAAS,GACtDI,IAASx8J,IAAI86J,KAAgBC,IAC7B0B,IAASD,IAASD,IAAqBxB;AAC7C,SACE,eACY/6J,CAAC,QAAQgzB,CAAC,YAAYspI,CAAG,sBACzBE,CAAM,QAAQxpI,CAAC,YAAYspI,CAAG,oBAAoB7F,GAAIv1H,GAAmBk7H,CAAS,CAAC,CAAC,mBACpFK,CAAM,QAAQzpI,CAAC,YAAYspI,CAAG;AAG9C;AAEA,SAAShB,GAAa7qE,GAAsB;AAC1C,UAAQA,GAAA;AAAA,IACN,KAAK;AAAO,aAAO;AAAA,IACnB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAO,aAAO;AAAA,IACnB,KAAK;AAAO,aAAO;AAAA,IACnB,KAAK;AAAY,aAAO;AAAA,IACxB,KAAK;AAAW,aAAO;AAAA,IACvB,KAAK;AAAO,aAAO;AAAA,IACnB,KAAK;AAAO,aAAO;AAAA,IACnB;AAAS,aAAOA,EAAK,OAAO,CAAC,EAAE,gBAAgBA,EAAK,MAAM,CAAC;AAAA,EAAA;AAE/D;AAEA,SAAS2qE,GAAgB3qE,GAAczwF,GAAWgzB,GAAmB;AAInE,UAAQy9D,GAAA;AAAA,IACN,KAAK;AACH,aAAO,WAAWzwF,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA,IAG9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA,IAG9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA;AAAA,IAI9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAK9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA,IAG9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA;AAAA,IAI9B,KAAK;AACH,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA,IAG9B,KAAK;AAAA,IACL;AAEE,aAAO,WAAWhzB,CAAC,QAAQgzB,CAAC;AAAA;AAAA;AAAA,EAA2B;AAI7D;ACxMO,SAAS0pI,GAAe7/J,GAA6B;AAC1D,QAAMiV,IAAIjV,EAAE,SACN5J,IAAI4J,EAAE,aAGN6oE,IAAQ5zD,EAAE,MAAMA,EAAE,OAClB6qJ,IAAcj3F,IAChBzyE,EAAE,IAAIA,EAAE,QAAQ,IAChBA,EAAE,IAAIA,EAAE,QAAQ,GAKdq+J,IAAQ5rF,IAAQ5zD,EAAE,QAAQA,EAAE,QAAQ,GACpCy/I,IAAcoL,GAKdhD,IAASrI,KAASC,IAAMD,KAAS,KAAK5rF,IAAQ,MAAM,KACpDwyF,IAASpmJ,EAAE,IAAI,GAEf+nJ,IAAY/nJ,EAAE,QAAQ,WAAW4kJ,GAAY5kJ,EAAE,KAAK,CAAC,MAAM,IAE3DgoJ,IAAU,KAAK,IAAIxI,GAAOC,CAAG,IAAI,GACjCwI,IAAYjoJ,EAAE,SAChB,YAAYgoJ,CAAO,QAAQ5B,CAAM,0CAA0CzB,GAAI3kJ,EAAE,MAAM,CAAC,YACxF,IAKE8qJ,IAAeC,GAAiB/qJ,EAAE,OAAO+nJ,CAAS;AAExD,SAAO;AAAA,cACKvI,CAAK,SAASx/I,EAAE,CAAC,SAASy/I,CAAG,SAASz/I,EAAE,CAAC;AAAA,IACnDgrJ,GAAgBvL,GAAKz/I,EAAE,GAAG4zD,CAAK,CAAC;AAAA,aACvBi0F,CAAM,QAAQzB,CAAM,gDAAgD0E,CAAY;AAAA,IACzF7C,CAAS;AAAA;AAEb;AAEA,SAAS8C,GAAiBluJ,GAAekrJ,GAA2B;AAClE,QAAM79J,IAAQ2S,EAAM,MAAM,UAAU;AACpC,MAAI3S,GAAO;AACT,UAAMm4J,IAAQn4J,EAAM,CAAC;AAIrB,WAAIm4J,MAAU,WACL,SAAS0F,CAAS,IAAIpD,GAAI9nJ,CAAK,CAAC,aAElC,SAASkrJ,CAAS,IAAIpD,GAAI,GAAG,CAAC,wBAAwBoD,CAAS,IAAIpD,GAAItC,CAAK,CAAC,wBAAwB0F,CAAS,IAAIpD,GAAI,GAAG,CAAC;AAAA,EACnI;AACA,SAAO,SAASoD,CAAS,IAAIpD,GAAI9nJ,CAAK,CAAC;AACzC;AAEA,SAASmuJ,GAAgBvC,GAAcC,GAAcC,GAA6B;AAKhF,QAAMN,IAAKI,KADCE,IAAa,IAAI,MACL,MAClBsC,IAAKvC,IAAO,MACZwC,IAAKxC,IAAO;AAClB,SAAO,qBAAqBL,CAAE,IAAI4C,CAAE,IAAIxC,CAAI,IAAIC,CAAI,IAAIL,CAAE,IAAI6C,CAAE;AAClE;ACjEO,SAASC,GAAarwJ,GAA2B;AACtD,MAAIA,EAAE;AACJ,WAAOswJ,GAAiBtwJ,CAAC;AAG3B,QAAMuwJ,IAAO,KAAK,IAAIvwJ,EAAE,OAAOA,EAAE,GAAG,GAI9BwwJ,IAAqB,KACrBzD,IAASwD,IAAO,KAAK,IAAIvwJ,EAAE,MAAMA,EAAE,KAAK,IAAI,KAC7CA,EAAE,YAAYwwJ,IAAqB,CAACA,IAGnCpD,IAAQ,KAAK,MAAMptJ,EAAE,CAAC,GAKtBsrJ,IAAS8B,IAAQ,GAGjBqD,IAAYzwJ,EAAE,KACdioD,IAAI,MACJyoG,IAAQ,MACR92D,IAAM55F,EAAE,YAAY,KAAK,GACzB2wJ,IAAMF,IAAY72D,IAAM3xC,GACxB2oG,IAAMxD,IAAQsD,GACdG,IAAMzD,IAAQsD,GAGdxD,IAAU,KAAK,IAAIltJ,EAAE,OAAOA,EAAE,GAAG,IAAI,GACrCmtJ,IAAYntJ,EAAE,SAChB,YAAYktJ,CAAO,QAAQ5B,CAAM,0CAA0CzB,GAAI7pJ,EAAE,MAAM,CAAC,YACxF;AAEJ,SAAO;AAAA,cACKA,EAAE,KAAK,SAASotJ,CAAK,SAASptJ,EAAE,GAAG,SAASotJ,CAAK;AAAA,sBACzCuD,CAAG,IAAIC,CAAG,IAAIH,CAAS,IAAIrD,CAAK,IAAIuD,CAAG,IAAIE,CAAG;AAAA,aACvD9D,CAAM,QAAQzB,CAAM,+CAA+CzB,GAAIv1H,GAAmBt0B,EAAE,KAAK,CAAC,CAAC;AAAA,IAC5GmtJ,CAAS;AAAA;AAEb;AAMA,SAASmD,GAAiBtwJ,GAA2B;AAMnD,QAAM0rJ,IAAQ1rJ,EAAE,QAAQ,GAClB4rJ,IAAQ5rJ,EAAE,IAAI,IACd+sJ,IAASrB,IAAQ,KAAW,GAC5BJ,IAAStrJ,EAAE,IAAI;AAGrB,SAAO;AAAA,4BACmB0rJ,CAAK,IAAIE,CAAK,WAAW,KAAW,GAAG;AAAA;AAAA;AAAA;AAAA,aAItDmB,CAAM,QAAQzB,CAAM,8CAA8CzB,GAAIv1H,GAAmBt0B,EAAE,KAAK,CAAC,CAAC;AAAA;AAE/G;ACnEA,MAAM8wJ,KAAQ,GACRC,KAAa;AAEZ,SAASC,GAAcjoK,GAA4B;AACxD,QAAMkoK,IAAWloK,EAAE,MAAM,QAAQ,kBAAkB,EAAE,EAAE,KAAA,GACjDgZ,IAAQuyB,GAAmB28H,CAAQ,GACnCnT,IAAU/0J,EAAE,QAAQ,GACpBo1J,IAAYp1J,EAAE,cAAcgZ,EAAM,SAAS,GAK3CmvJ,IAAc,GAEdzB,IADatR,IAAY2S,KAAQ,IAAII,IAAc,IACzBA,GAC1BC,IAAcJ,KAAaG,GAC3BxE,IAAO5O,IAAU2R,IAAa,GAC9B2B,IAAOroK,EAAE,IAAIooK,IAAc,GAC3BE,IAAY3E,IAAOwE,IAAc,GACjCI,IAAa5E,IAAO+C,IAAayB,IAAc,GAC/C7F,IAAQtiK,EAAE;AAEhB,SAAO;AAAA,qBACYA,EAAE,CAAC,SAASsoK,CAAS,SAAStoK,EAAE,CAAC;AAAA,cACxCuoK,CAAU,SAASvoK,EAAE,CAAC,SAASA,EAAE,KAAK,SAASA,EAAE,CAAC;AAAA,aACnD2jK,CAAI,QAAQ0E,CAAI,YAAY3B,CAAU,aAAa0B,CAAW;AAAA,aAC9DrT,CAAO,QAAQuN,CAAK,4EAA4ExB,GAAI9nJ,CAAK,CAAC;AAAA;AAEvH;ACtBA,SAASwvJ,GAAmBr6J,GAAwB;AAClD,QAAMkS,IAASqpB,GAAO,MAAMv7B,GAAM,EAAE,KAAK,IAAM,QAAQ,IAAM;AAC7D,SAAOs6J,GAAapoJ,CAAM;AAC5B;AAEA,SAASooJ,GAAapoJ,GAAsD;AAC1E,QAAM0rB,IAAoB,CAAC,EAAE,GAEvB28H,IAAe,CAACx5H,MAAqB;AACzC,IAAIA,KACFnD,EAAMA,EAAM,SAAS,CAAC,EAAE,KAAKmD,CAAQ;AAAA,EAEzC,GAEMy5H,IAAgB,MAAM;AAC1B,IAAA58H,EAAM,KAAK,EAAE;AAAA,EACf,GAEMvB,IAAa,CAACo+H,MAAkD;AACpE,IAAAA,EAAU,QAAQ,CAACz3J,GAAOpb,MAAU;AAClC,MAAA8yK,EAAU13J,CAAK,GAGbpb,IAAQ6yK,EAAU,SAAS,MAC1Bz3J,EAAM,SAAS,eAAeA,EAAM,SAAS,WAE9Cw3J,EAAA;AAAA,IAEJ,CAAC;AAAA,EACH,GAEME,IAAY,CAAC13J,MAA8B;AAC/C,YAAQA,EAAM,MAAA;AAAA,MACZ,KAAK;AACH,QAAAq5B,EAAWr5B,EAAM,UAAU,EAAE;AAC7B;AAAA,MACF,KAAK,QAAQ;AAEX,QADkBA,EAAM,KAAK,MAAM;AAAA,CAAI,EAC7B,QAAQ,CAACgN,GAAMpoB,MAAU;AACjC,UAAIA,IAAQ,KACV4yK,EAAA,GAEFD,EAAa,kCAAkC5H,GAAI3iJ,CAAI,CAAC,UAAU;AAAA,QACpE,CAAC;AACD;AAAA,MACF;AAAA,MACA,KAAK;AACH,QAAAuqJ,EAAa5H,GAAI3vJ,EAAM,IAAI,CAAC;AAC5B;AAAA,MACF,KAAK;AACH,QAAAu3J,EAAa,6BAA6BD,GAAat3J,EAAM,UAAU,CAAA,CAAE,EAAE,KAAK,EAAE,CAAC,UAAU;AAC7F;AAAA,MACF,KAAK;AACH,QAAAu3J,EAAa,8BAA8BD,GAAat3J,EAAM,UAAU,CAAA,CAAE,EAAE,KAAK,EAAE,CAAC,UAAU;AAC9F;AAAA,MACF,KAAK;AACH,YAAI,YAAYA,KAASA,EAAM,QAAQ;AACrC,UAAAq5B,EAAWr5B,EAAM,MAAM;AACvB;AAAA,QACF;AACA,QAAAu3J,EAAa5H,GAAI3vJ,EAAM,GAAG,CAAC;AAC3B;AAAA,MACF,KAAK;AACH,QAAAw3J,EAAA;AACA;AAAA,MACF,KAAK;AACH;AAAA,MACF;AACE,QAAAD,EAAa5H,GAAI3vJ,EAAM,OAAO,EAAE,CAAC;AAAA,IAAA;AAAA,EAEvC;AAEA,SAAAq5B,EAAWnqB,CAAM,GAEV0rB,EAAM,IAAI,CAAC5tB,MAASA,EAAK,KAAK,EAAE,CAAC;AAC1C;AAEO,SAAS2qJ,GAAc5hK,GAA4B;AACxD,QAAMg9J,IAAYh9J,EAAE,QAAQ,WAAW65J,GAAY75J,EAAE,KAAK,CAAC,MAAM,IAE3D6hK,IADQP,GAAmBthK,EAAE,IAAI,EAEpC;AAAA,IAAI,CAACiX,GAAMpoB,MACVA,MAAU,IACN,aAAamR,EAAE,CAAC,QAAQA,EAAE,CAAC,KAAKiX,KAAQ,GAAG,aAC3C,aAAajX,EAAE,CAAC,aAAaiX,KAAQ,GAAG;AAAA,EAAA,EAE7C,KAAK,EAAE;AACV,SAAO,6BAA6B+lJ,CAAS,IAAI6E,CAAM;AACzD;ACxFO,SAASC,GAAYrqG,GAA0B;AAQpD,QAAMsqG,IAAQtqG,EAAE,IAAI,KACdmjG,IAAQnjG,EAAE,IAAI,IAAK,GACnBojG,IAAQpjG,EAAE,QAAQ,GAClBqjG,IAAQrjG,EAAE,SAAS,IAAK,KAGxBuqG,IAASvqG,EAAE,IAAI,KAAiB,IAAI,GACpCwqG,IAAYxqG,EAAE,OAAOmiG,GAAIniG,EAAE,IAAI,IAAI,IAGnCyqG,IAAMzqG,EAAE,IAAI,KACZ0qG,IAAMvH,IAAQ,KACdwH,IAAU3qG,EAAE,QAAQ,GACpB4qG,IAAW,KAAqB;AACtC,SAAO;AAAA,aACIN,CAAK,QAAQnH,CAAK,YAAYC,CAAK,aAAaC,CAAK;AAAA,IAC9DmH,IAAY,YAAYC,CAAG,QAAQC,CAAG,YAAYC,CAAO,aAAaC,CAAQ,+BAA+B,EAAE;AAAA,IAC/GJ,IAAY,YAAYxqG,EAAE,IAAIA,EAAE,QAAQ,CAAC,QAAQuqG,CAAM,8EAA8EC,CAAS,YAAY,EAAE;AAAA;AAEhK;ACGA,MAAMK,KAAsB,IACtBC,KAAsB,GAEtBC,KAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCtB,SAASC,GAAYhxI,GAAcz3B,GAAuC;AAE/E,QAAMg4B,IAAcG,GAAYV,CAAI;AACpC,MAAI,CAACO;AACH,WAAO,EAAE,KAAK,eAAe,UAAU,IAAI,OAAO,GAAG,QAAQ,GAAG,SAAS,WAAW,UAAU,OAAA;AAIhG,QAAMkgD,IAAc,IAAI16C,GAAYxF,GAAaoB,EAAqB,GAChE4kD,IAAsB,IAAIpuC,GAAoB5X,CAAW,GAGzDsY,IAAetY,EAAY,QAAA,GAC3B63B,IACJvf,KAAgB,OAAQA,EAAqB,WAAY,aACpDA,EAAqB,YACtB,QACA9N,IAAQqtB,IAAWxlB,GAAmBwlB,CAAQ,IAAI,QAGlD64G,IAAWjL,GAAc;AAAA,IAC7B,aAAAzlI;AAAA,IACA,aAAAkgD;AAAA,IACA,qBAAA8F;AAAA,IACA,OAAAx7C;AAAA,IACA,aAAapJ;AAAA,EAAA,CACd;AAGD,SAAO,EAAE,GAAGuvI,GAAWD,CAAiB,GAAG,UAAAA,EAAA;AAC7C;AAEA,SAASC,GAAWlrG,GAAoBz9D,GAAuC;AAG7E,QAAM4oK,IAAUN,IAGVO,IAAoB,KAAcprG,EAAE,iBACpCqrG,IAAYrrG,EAAE,QAAQorG,IAAoB,KAAUprG,EAAE,mBAAmB,GACzEsrG,IAAatrG,EAAE,SAAS,KAAcmrG,IAAU,GAEhDvoH,IAAkB,CAAA;AAGxB,aAAW2oH,KAAOvrG,EAAE;AAClB,IAAApd,EAAM,KAAKynH,GAAYkB,CAAG,CAAC;AAI7B,aAAW75J,KAAKsuD,EAAE;AAChB,IAAApd,EAAM,KAAKsiH,GAAexzJ,CAAC,CAAC;AAK9B,QAAM85J,IAAgB,IAAI,IAAIxrG,EAAE,UAAU,IAAI,CAAAz3D,MAAKA,EAAE,YAAY,IAAI,CAAC;AACtE,aAAW5J,KAAKqhE,EAAE;AAChB,IAAKwrG,EAAc,IAAI7sK,EAAE,IAAI,KAC3BikD,EAAM,KAAKogH,GAAkBrkK,CAAC,CAAC;AAKnC,aAAWjI,KAAKspE,EAAE;AAChB,IAAApd,EAAM,KAAK0jH,GAAiB5vK,CAAC,CAAC;AAIhC,aAAWiI,KAAKqhE,EAAE;AAChB,IAAIwrG,EAAc,IAAI7sK,EAAE,IAAI,KAC1BikD,EAAM,KAAKogH,GAAkBrkK,CAAC,CAAC;AAKnC,aAAW6e,KAAKwiD,EAAE;AAChB,IAAApd,EAAM,KAAKuiH,GAAc3nJ,CAAC,CAAC;AAI7B,aAAWtM,KAAK8uD,EAAE;AAChB,IAAApd,EAAM,KAAKgjH,GAAe10J,CAAC,CAAC;AAI9B,aAAW3I,KAAKy3D,EAAE;AAChB,IAAApd,EAAM,KAAKwlH,GAAe7/J,CAAC,CAAC;AAI9B,aAAW+P,KAAK0nD,EAAE;AAChB,IAAApd,EAAM,KAAK+lH,GAAarwJ,CAAC,CAAC;AAI5B,aAAWzhB,KAAKmpE,EAAE;AAChB,IAAApd,EAAM,KAAK8jH,GAAe7vK,CAAC,CAAC;AAI9B,aAAWwK,KAAK2+D,EAAE;AAChB,IAAApd,EAAM,KAAK0mH,GAAcjoK,CAAC,CAAC;AAI7B,aAAWkH,KAAKy3D,EAAE;AAChB,IAAApd,EAAM,KAAKunH,GAAc5hK,CAAC,CAAC;AAI7B,QAAM+P,IAAIwyJ,IACJW,IAAW;AAAA,IACf,uDAAuDJ,CAAS,aAAaC,CAAU,SAAShzJ,CAAC;AAAA,IACjG,uDAAuD+yJ,IAAY,CAAC,aAAaC,IAAa,CAAC,SAAS,KAAK,IAAI,GAAGhzJ,IAAI,CAAC,CAAC;AAAA,EAAA,EAC1H,KAAK;AAAA,CAAI,GAELozJ,IAAcP,IADM,GAEpBQ,IAAkBD,IAAc,KAChCE,IAAgB,8CAA8CD,CAAe,SAASN,IAAY,CAAC,SAASM,CAAe,OAC3HE,IAAW7rG,EAAE,QACf,kBAAkB2rG,IAAkB,CAAC,qDAAqDG,GAAO9rG,EAAE,KAAK,CAAC,YACzG,IAEE0hG,IAAU,OAAO2J,CAAS,IAAIC,CAAU,IAExCjwH,IAAO;AAAA,WAAoB0vH,EAAoB;AAAA,UAC/C5wF,IAAQ,GAAGsxF,CAAQ;AAAA,EAAKG,CAAa;AAAA,EAAKC,CAAQ,IAClDriI,IAAU,2BAA2B4hI,CAAiB,KAAKM,CAAW;AAAA,EAAQ9oH,EAAM,KAAK;AAAA,CAAI,CAAC;AAAA,OAC9FmpH,IAAW,GAAG1wH,CAAI;AAAA,EAAK8+B,CAAK;AAAA,EAAK3wC,CAAO;AAI9C,SAAO,EAAE,KAFG,kDAAkD6hI,CAAS,aAAaC,CAAU,cAAc5J,CAAO;AAAA,EAAOqK,CAAQ;AAAA,SAEpH,UAAAA,GAAU,OAAOV,GAAW,QAAQC,GAAY,SAAA5J,EAAA;AAChE;AAEA,SAASoK,GAAO56J,GAAmB;AACjC,SAAOA,EACJ,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ;AAC3B;AClLA,MAAM7Y,KAASK,GAAa,MAAM,EAAE,MAAM,QAAQ;AA0ClD,MAAqBszK,GAA0B;AAAA,EAC7C,OAAgB,UAAUjsD;AAAA;AAAA;AAAA,EAG1B,OAAgB,UAAUisD;AAAA;AAAA,EAET;AAAA,EACT;AAAA,EACA;AAAA,EACS;AAAA,EACT;AAAA,EACA,iCAAiC;AAAA,EACjC,gBAAgB;AAAA,EACxB,YAAYl3G,GAA0Bm3G,IAAiB,IAAO;AAC5D,SAAK,KAAK,OAAOn3G,KAAO,WAAW,SAAS,cAAcA,CAAE,IAAKA,GACjE,KAAK,QAAQ7vD,GAAA,GAEb,KAAK,MAAM,IAAIiuC,IAAW,MAAM;AAC9B,WAAK,MAAM,IAAIwB,EAAiB,EAAE;AAAA,QAChC,OAAO,KAAK,MAAM,IAAIxB,EAAS;AAAA,QAC/B,QAAQ,KAAK,MAAM,IAAIC,EAAuB;AAAA,MAAA,CAC/C;AAAA,IACH,CAAC,GAED+4H,cAAW,KAAK,EAAE,EAAE;AAAA,MAClBv8G,gBAAAA,EAAAA,IAACw8G,EAAAA,cACC,UAAAx8G,gBAAAA,EAAAA,IAACrkD,IAAA,EAAS,OAAO,KAAK,OAMpB,UAAAqkD,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,UACb,gCAACkwD,IAAA,EACE,UAAAosD,0BAAShuD,IAAA,CAAA,CAAW,0BAAMO,IAAA,CAAA,CAAa,EAAA,CAC1C,EAAA,CACF,EAAA,CACF,EAAA,CACF;AAAA,IAAA,GAEF,KAAK,qBAAA;AAAA,EACP;AAAA;AAAA;AAAA,EAIQ,uBAA6B;AACnC,UAAM4tD,IAAoB,SAAS,cAAc,KAAK;AACtD,IAAAA,EAAkB,KAAK,0BACvBA,EAAkB,YAAY,UAC9BA,EAAkB,OAAO,SAAS,cAAc,KAAK,CAAC,GACtD,SAAS,KAAK,OAAOA,CAAiB;AAAA,EACxC;AAAA,EAEA,gBAAgBtwJ,GAAyB;AACvC,SAAK,MAAM,IAAIk3B,IAAkBl3B,CAAI;AAAA,EACvC;AAAA,EAEA,MAAM,OACJke,GACA9jC,GACkB;AAClB,WAAI,KAAK,oBACPmC,GAAO,MAAM,wBAAwB,GACrC,aAAa,KAAK,eAAe,IAEnCA,GAAO,MAAM,aAAa2hC,GAAM9jC,CAAM,GACtC,KAAK,QAAQ8jC,MAAS,SAAY,KAAK,QAAQA,GAC/C,KAAK,SAAS9jC,GAAQ,SAAS,KAAK,QACpC,KAAK,MAAM,IAAIg+C,IAAkBh+C,GAAQ,gBAAgB,CAAC,GAC1D,KAAK,MAAM,IAAIg9C,IAAW,KAAK,UAAU,SAAS,GAClD,KAAK,MAAM;AAAA,MACTC;AAAA,MACAj9C,GAAQ,uBAAuB;AAAA,IAAA,GAEjC,KAAK,MAAM,IAAI09C,IAAU19C,GAAQ,QAAQw8C,GAAW,OAAO,GAIvD,KAAK,iBACP,KAAK,gBAAgB,IACrB,MAAM,KAAK,SAASx8C,CAAM,KAE1B,KAAK,kBAAkB;AAAA,MACrB,YAAY,MAAM,KAAK,SAASA,CAAM;AAAA,MACtC,KAAK,8BAAA;AAAA,IAA8B,GAIhC;AAAA,EACT;AAAA,EAEA,MAAM,SAASA,GAA4B;AACzC,IAAAmC,GAAO,MAAM,iBAAiB;AAC9B,UAAMkZ,IAAQivG,GAAA;AA0Bd,QAzBAplF,GAAA,GACA,KAAK,MAAM,IAAIoZ,IAAqBt+C,GAAQ,oBAAoB,MAAM;AAAA,IAAC,EAAE,GACzE,KAAK,MAAM,IAAIw+C,IAAmBx+C,GAAQ,kBAAkB,MAAM;AAAA,IAAC,EAAE,GACrE,KAAK,MAAM,IAAIy+C,IAAiBz+C,GAAQ,gBAAgB,MAAM;AAAA,IAAC,EAAE,GAC7DA,GAAQ,qBAAqB,UAC/B,KAAK,MAAM,IAAIm9C,IAAsBn9C,GAAQ,gBAAgB,GAE3DA,GAAQ,+BAA+B,UACzC,KAAK,MAAM;AAAA,MACT29C;AAAA,MACA39C,EAAO;AAAA,IAAA,GAGPA,GAAQ,2BAA2B,UACrC,KAAK,MAAM,IAAI49C,IAA4B59C,EAAO,sBAAsB,GAEtEA,GAAQ,2BAA2B,UACrC,KAAK,MAAM,IAAI69C,IAA4B79C,EAAO,sBAAsB,GAEtEA,GAAQ,kCAAkC,UAC5C,KAAK,MAAM;AAAA,MACT89C;AAAA,MACA99C,EAAO;AAAA,IAAA,GAGP,KAAK,UAAU,KAAK,MAAM,IAAIy8C,EAAQ;AACxC,aAAO;AAEP,UAAM,IAAI,QAAQ,CAACzmC,MAAY;AAC7B,WAAK,MAAM,IAAI8oC,IAAmB,CAAA,CAAE,GACpC,KAAK,MAAM,IAAIC,IAAoB,MAAM;AACvC,QAAI,KAAK,MAAM,IAAIA,EAAkB,KACnC/oC,EAAQ,EAAI;AAAA,MAEhB,CAAC,GACD,KAAK,MAAM,IAAIymC,IAAU,KAAK,SAAS,EAAE;AAAA,IAC3C,CAAC,GAEH,WAAW,MAAM;AACf,WAAK,iCAAiC0tE;AAAA,QACpC;AAAA,QACA9uG;AAAA,MAAA;AAAA,IAEJ,GAAG,CAAC;AAAA,EACN;AAAA,EAEA,gCAAwC;AACtC,QAAI86J,IAAW,KAAK;AACpB,WAAIA,IAAW,QAAMA,IAAW,MAChCh0K,GAAO,MAAM,yBAAyBg0K,IAAW,IAAI,GAC9CA;AAAA,EACT;AAAA,EAEA,IAAI,OAA2B;AAC7B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,QAA4B;AAC9B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAMC,GAA0C;AAC9C,WAAO,IAAI,QAAQ,CAACpgK,MAAY;AAC9B,UAAI;AAEFkiB,QAAAA,GAAO,aAAa,SAAS;AAC7B,cAAMzlB,IAASylB,GAAO,YAAYk+I,CAAU;AAC5C,QAAAj0K,GAAO,MAAM,UAAU+1B,GAAO,YAAY;AAC1C,cAAM9tB,IAAS,CAAC,GAAG8tB,GAAO,YAAY;AAGtC,YADAA,GAAO,aAAa,SAAS,GACzB9tB,EAAO,SAAS,KAAKqI,MAAW,MAAM;AAMxC,UAAAuD,EAJiC;AAAA,YAC/B,MAAM;AAAA,YACN,cAAc5L;AAAA,UAAA,CAEG;AACnB;AAAA,QACF;AAKA,QAAA4L,EAJiC;AAAA,UAC/B,MAAM;AAAA,UACN,cAAc,CAAA;AAAA,QAAC,CAEE;AAAA,MACrB,QAAQ;AAKN,QAAAA,EAJiC;AAAA,UAC/B,MAAM;AAAA,UACN,cAAc,CAAA;AAAA,QAAC,CAEE;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,SAA0B;AAC9B,WAAO8yG,GAAkB,KAAK,IAAI;AAAA,MAChC,iBAAiB;AAAA,MACjB,QAAQ,CAAC/0F,MACA,CAACA,GAAM,WAAW,SAAS,aAAa;AAAA,IACjD,CACD;AAAA,EACH;AAAA,EAEA,MAAM,SAA0B;AAC9B,WAAOg1F,GAAkB,KAAK,IAAI;AAAA,MAChC,QAAQ,CAACh1F,MACA,CAACA,GAAM,WAAW,SAAS,aAAa;AAAA,IACjD,CACD;AAAA,EACH;AACF;","x_google_ignoreList":[0,1,2,3,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,176,204,205,206,207,208,209,210,211,212,213,214,215,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,349,350,366,367,368,369,370,371,409,410,426,427,428,429]}